From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/6775 Path: news.gmane.org!not-for-mail From: Isaac Dunham Newsgroups: gmane.linux.lib.musl.general Subject: Re: Failed to execute /init (error -2) for system-wide musl libc Date: Wed, 31 Dec 2014 13:55:50 -0800 Message-ID: <20141231215549.GF1809@newbook> References: <20141231194014.GE1809@newbook> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1420062965 8618 80.91.229.3 (31 Dec 2014 21:56:05 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 31 Dec 2014 21:56:05 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-6788-gllmg-musl=m.gmane.org@lists.openwall.com Wed Dec 31 22:56:00 2014 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1Y6RFI-000192-24 for gllmg-musl@m.gmane.org; Wed, 31 Dec 2014 22:56:00 +0100 Original-Received: (qmail 5913 invoked by uid 550); 31 Dec 2014 21:55:59 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 5905 invoked from network); 31 Dec 2014 21:55:58 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=5ZYFZGIY2Flg+/ctcLNTjeEbjjJhU/IYDRVrEQO4FjY=; b=zMOpmmGXUoh1NRfxqky0wj67xFge52v8jqkbcEsl8U+vwklIBtBqXRFQ3B1iI8CPAu GlklW41ff2qAe4EhQxrvqLuimoAXZRI9SUwdIrl/ggggJToFS7J2fLlE5MmojvAsya03 09S4x1/nSWjGYRmQC3qP0sXZSKcH4LWtV/7Pi4sQM4zggthzV7UP9JxghBsb7q+en/tq JeHzxmnaHaHJpDaWn5NAkO4dNhptrzwDtafkbl0GkcxrvQ/FKye0om6thWshqdUwWvsa xKhPBAAAAW2yjF+ehX1IOSJOVwvAQbjYgtO6DRidBUgooA+54K/3WAhAZpWfPUuZ8TFs atnA== X-Received: by 10.68.189.71 with SMTP id gg7mr108019665pbc.21.1420062946760; Wed, 31 Dec 2014 13:55:46 -0800 (PST) Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) Xref: news.gmane.org gmane.linux.lib.musl.general:6775 Archived-At: On Wed, Dec 31, 2014 at 09:17:06PM +0100, piranna@gmail.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