Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAKfGGh3wYDUkHLnTnDAnP38QrJpMKDtP1Zkvm_4G_AQguWjwRg@mail.gmail.com>
Date: Wed, 31 Dec 2014 21:17:06 +0100
From: "piranna@...il.com" <piranna@...il.com>
To: musl@...ts.openwall.com
Subject: Re: Failed to execute /init (error -2) for system-wide musl libc

> 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... :-/


> The libraries are ordinarily symlinks to the real ones:
> $ ls -l /usr/lib/libstdc++.so*
> lrwxrwxrwx    1 root     root            19 Dec 30 15:27 /usr/lib/libstdc++.so -> libstdc++.so.6.0.20
> lrwxrwxrwx    1 root     root            19 Dec 30 15:24 /usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.20
> -rwxr-xr-x    1 root     root        845592 Dec 12 01:38 /usr/lib/libstdc++.so.6.0.20
>
>
> If they are symlinks, check that the symlink target is also present.
>
>> Greetings, and Happy New Year :-)
>>
>> Jesús Leganés Combarro "piranna"
>
> And Happy New Year to you, also!

Thank you! ^^

-- 
"Si quieres viajar alrededor del mundo y ser invitado a hablar en un
monton de sitios diferentes, simplemente escribe un sistema operativo
Unix."
– Linus Tordvals, creador del sistema operativo Linux

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.