1 |
On 04/21/2011 02:18 PM, chris@××××××××××××.com wrote: |
2 |
> I've got a filesystem created with the following toolchain: (from crossdev) |
3 |
> |
4 |
> arm-unknown-linux-gnu- |
5 |
> |
6 |
> with |
7 |
> |
8 |
> arm-unknown-linux-gnu-emerge system |
9 |
> arm-unknown-linux-gnu-emerge baselayout |
10 |
> |
11 |
> I created the kernel separately, and was able to boot it with another |
12 |
> filesystem that was created by somebody else. |
13 |
> |
14 |
> During the boot process the kernel says "Attempted to kill init" because the |
15 |
> /init program exited for some reason. |
16 |
> The problem is that I can't get any other error from the init program. I have |
17 |
> no idea why it's exiting. It could be a missing library, segfault or bad |
18 |
> invocation, so I have no idea where to start. |
19 |
> |
20 |
> |
21 |
|
22 |
Beyond emerging system and baselayout, there will be some hand tweaking and |
23 |
sysadmin chores involved with getting a working bootable root filesystem. |
24 |
|
25 |
The error you see is very common with what you are doing and usually caused by |
26 |
missing libraries required by the init process. You can check which libraries |
27 |
are needed by a particular utility by running (on the build host): |
28 |
readelf -d /path/to/target/utility | grep NEEDED |
29 |
|
30 |
I recommend creating a separate minimal rootfs and building it into the kernel |
31 |
as an initramfs. The minimal filesystem need only contain a statically built |
32 |
busybox and a simple /init shell script that does a few things like mounting |
33 |
/proc and /sys and then execs the shell. |
34 |
See http://en.gentoo-wiki.com/wiki/Initramfs for some guidance. Once this has |
35 |
succesfully booted, you can mount and chroot into your real rootfs and |
36 |
troubleshoot it. |
37 |
|
38 |
HTH |
39 |
Mike |