1 |
On Thu, 2011-04-21 at 16:18 -0500, chris@××××××××××××.com wrote: |
2 |
> I've got a filesystem created with the following toolchain: (from |
3 |
> crossdev) |
4 |
> |
5 |
> arm-unknown-linux-gnu- |
6 |
> |
7 |
> with |
8 |
> |
9 |
> arm-unknown-linux-gnu-emerge system |
10 |
> arm-unknown-linux-gnu-emerge baselayout |
11 |
> |
12 |
> I created the kernel separately, and was able to boot it with another |
13 |
> filesystem that was created by somebody else. |
14 |
> |
15 |
> During the boot process the kernel says "Attempted to kill init" |
16 |
> because the /init program exited for some reason. |
17 |
> The problem is that I can't get any other error from the init program. |
18 |
> I have no idea why it's exiting. It could be a missing library, segfault |
19 |
> or bad invocation, so I have no idea where to start. |
20 |
|
21 |
Provided that /init is an executable: |
22 |
|
23 |
If the instruction set that the root filesystem was compiled for doesn't |
24 |
match your architecture's, then it's an "illegal instruction" signal |
25 |
that bites init. This usually happens quite early, before any |
26 |
configuration error is seen. |
27 |
|
28 |
You can verify this by building your own busybox-only tree with the same |
29 |
toolchain you built the kernel with. Choose a static build |
30 |
(CONFIG_STATIC, "Busybox Settings"/"Build Options"/"blah static blah"). |
31 |
Copy init and all that it needs (glibc?) over from your real rootfs into |
32 |
your small tree. Boot the kernel into the small tree, passing it |
33 |
init=/bin/sh (which is busybox). Call /init and see what happens. |
34 |
|
35 |
Alternatively, you could augment your tree with busybox, by installing |
36 |
it into it. Boot into the tree, but with init=/bin/sh (the augmented |
37 |
busybox). |
38 |
|
39 |
Have fun, |
40 |
Joerg |