Gentoo Archives: gentoo-embedded

From: chris@××××××××××××.com
To: gentoo-embedded@l.g.o
Subject: Re: [gentoo-embedded] gentoo baselayout "Attempted to kill init"
Date: Fri, 22 Apr 2011 14:04:45
In Reply to: Re: [gentoo-embedded] gentoo baselayout "Attempted to kill init" by "Jörg Faschingbauer"
On Fri, 22 Apr 2011 08:00:35 +0200, Jörg Faschingbauer 
 <joerg.faschingbauer@×××.at> wrote:
> On Thu, 2011-04-21 at 16:18 -0500, chris@××××××××××××.com wrote: >> I've got a filesystem created with the following toolchain: (from >> crossdev) >> >> arm-unknown-linux-gnu- >> >> with >> >> arm-unknown-linux-gnu-emerge system >> arm-unknown-linux-gnu-emerge baselayout >> >> I created the kernel separately, and was able to boot it with >> another >> filesystem that was created by somebody else. >> >> During the boot process the kernel says "Attempted to kill init" >> because the /init program exited for some reason. >> The problem is that I can't get any other error from the init >> program. >> I have no idea why it's exiting. It could be a missing library, >> segfault >> or bad invocation, so I have no idea where to start. > > Provided that /init is an executable: > > If the instruction set that the root filesystem was compiled for > doesn't > match your architecture's, then it's an "illegal instruction" signal > that bites init. This usually happens quite early, before any > configuration error is seen. > > You can verify this by building your own busybox-only tree with the > same > toolchain you built the kernel with. Choose a static build > (CONFIG_STATIC, "Busybox Settings"/"Build Options"/"blah static > blah"). > Copy init and all that it needs (glibc?) over from your real rootfs > into > your small tree. Boot the kernel into the small tree, passing it > init=/bin/sh (which is busybox). Call /init and see what happens. > > Alternatively, you could augment your tree with busybox, by > installing > it into it. Boot into the tree, but with init=/bin/sh (the augmented > busybox). > > Have fun, > Joerg
You were right about the "Illegal Instruction". I booted the working filesystem and chrooted into the new one where I was able to play around with the "broken" init file. I'm guessing I stuck a bad flag in make.conf, since the same compiler was able to produce a working kernel. Thanks.