Home » Uncategorized » xorg intel driver error in x86_64-linux-musl

xorg intel driver error in x86_64-linux-musl


> (EE) Failed to load /usr/lib/xorg/modules/drivers/intel_drv.so: Error
> relocating /usr/lib/xorg/modules/drivers/intel_drv.so: fbPolyPoint: symbol
> not found
> (II) UnloadModule: "intel"
> (II) Unloading intel
> (EE) Failed to load module "intel" (loader failed, 7)
> ....
> (EE) No drivers available.

I believe the issue is that xorg lacks proper dependency information
between modules, so unless they're loaded in the correct order,
symbols will be missing. This bug gets overlooked with glibc because
many (but not all) symbol references can be deferred until the first
time they're used (lazy binding); musl intentionally does not support
lazy binding.
normal xorg couldn't be built for now, (static xorg server with musl?)
but kdrive is ok.

vi xserver/hw/kdrive/linux/linux.c
- __uid_t u;
- __gid_t g;
+ uid_t u;
+ gid_t g;


cat /etc/rc
mount -t proc proc /proc
mount -o remount,rw /
mount -t sysfs sysfs /sys
mount -t devpts devpts /dev/pts
echo /bin/mdev > /proc/sys/kernel/hotplug
hostname $(cat /etc/hostname)
# network setup
ifconfig lo
ifconfig eth0
ifconfig eth0 netmask
ifconfig eth0 broadcast
ifconfig eth0 down
ifconfig eth0 up
route add default gw
# dns.c: Asynchronous DNS and SPF Resolver
# http://25thandclement.com/~william/projects/dns.c.html
# dns //busybox dnsd works. this is optional.

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <err.h>

#include "dns.c"

#define panic(...) errx(EXIT_FAILURE, __VA_ARGS__)

int main(int argc, char *argv[]) {
	struct dns_resolv_conf *conf;
	struct dns_hosts *hosts;
	struct dns_hints *hints;
	struct dns_resolver *res;
	struct dns_addrinfo *air;
	struct sockaddr_in google;
	int i, error;

	if (!(conf = dns_resconf_open(&error)))
		panic("oops: %s", dns_strerror(error));

	if (!(hosts = dns_hosts_open(&error)))
		panic("oops: %s", dns_strerror(error));

	if (!(hints = dns_hints_open(conf, &error)))
		panic("oops: %s", dns_strerror(error));

	memset(&google, 0, sizeof google);
	google.sin_family = AF_INET;
	google.sin_addr.s_addr = inet_addr("");
	google.sin_port = htons(53);

	if ((error = dns_hints_insert(hints, ".", (void *)&google, 1)))
		panic(" %s", dns_strerror(error));

	if (!(res = dns_res_open(conf, hosts, hints, NULL, dns_opts(), &error)))
		panic("oops: %s", dns_strerror(error));

	for (i = 1; i < argc; i++) {
		struct addrinfo hints = {
			.ai_family = PF_UNSPEC, 
			.ai_socktype = SOCK_STREAM,
			.ai_flags = AI_CANONNAME,
		struct addrinfo *ent = 0;
		char pretty[512];

		if (!(air = dns_ai_open(argv[i], "25", DNS_T_MX, &hints, res, &error)))
			panic("%s: %s", argv[i], dns_strerror(error));

		do {
			switch ((error = dns_ai_nextent(&ent, air))) {
			case ENOENT:
			case 0:
				dns_ai_print(pretty, sizeof pretty, ent, air);
				fputs(pretty, stdout);
			case EAGAIN:
				dns_ai_poll(air, 1);
				panic("%s: %s", argv[i], dns_strerror(error));
		} while (error != ENOENT);



	return 0;
} /* main() */
vi apr-1.4.6/include/apr_time.h
#define __tm_gmtoff tm_gmtoff

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s