Date: Wed, 31 Dec 2014 13:55:50 -0800 From: Isaac Dunham <ibid.ag@...il.com> To: musl@...ts.openwall.com Subject: Re: Failed to execute /init (error -2) for system-wide musl libc On Wed, Dec 31, 2014 at 09:17:06PM +0100, piranna@...il.com wrote: > > I'm not clear what your root filesystem for qemu looks like > > (the contents of /lib are the interesting part). > > It's being generated by a cpio.txt file (it's being bundle into Linux > kernel to be used as initramfs). You can check it at > https://github.com/NodeOS/NodeOS/pull/89/files#diff-2 > > > > An ls -l of that directory would be useful. > > > > It *should* look like this: > > /lib > > /lib/ld-musl-i386.so.1 # either file or -> /lib/libc.so > > /lib/libc.so # only if ld-musl-i386.so.1 is symlink > > /lib/libstdc++.so.6 > > /lib/libgcc_s.so.1 > > > > Note the version numbers. > > > > All of these should be chmod 0755. > > Does this to be mandatory? As you can see, I'm using a 0555 permission > on libc.so (because it's an executable) and 0444 for the other libs, > and 0111 for the directories. This is on purposse, both for security > and to keep users eyes out of ugly things and internal implementation > details (they should only worry about Node.js APIs). > > Anyway, this gave me and idea and reviewing the cpio.txt file I've > found this line: > > #dir /lib 0111 0 0 > > I uncommented it and the Hello World init has written to the console, > so I've just recompile using Node.js as /init, and... > > > [ 2.255765] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input3 > [ 2.863453] Switched to clocksource tsc > 1 +1 > 2 > > Date() > 'Wed Dec 31 2014 20:08:31 GMT+0000 (GMT)' > > > > /me head banging in the wall X-D I'll do some more tests, but seems > that was the issue X-D If so, probably it's a bug on the Linux kernel > initramfs builder (gen_init_cpio), because the .cpio.gz file is being > correctly generated and include the libraries without raising an > error... :-/ Glad you figured it out. This is one of the arcane details of cpio: as originally designed, every input that you specify corresponds to exactly one record, and every record creates at most one file/directory. The Linux kernel follows this approach; if you create /lib/file but not /lib in your initrd, the non-existence of /lib will result in /lib/file not being created. Thanks, Isaac Dunham
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.