Initramfs integrado en el kernel de Linux personalizado no se está ejecutando

Estoy creando una imagen personalizada de initramfs que estoy construyendo como un archivo CPIO en el kernel de Linux (3.2).

El problema que tengo es que no importa lo que intente, el kernel no parece siquiera intentar ejecutarse desde el initramfs.

Los archivos que tengo en mi archivo CPIO:

<code>cpio -it < initramfs.cpio
.
init
usr
usr/sbin
lib
lib/libcrypt.so.1
lib/libm.so
lib/libc.so.6
lib/libgcc_s.so
lib/libcrypt-2.12.2.so
lib/libgcc_s.so.1
lib/libm-2.12.2.so
lib/libc.so
lib/libc-2.12.2.so
lib/ld-linux.so.3
lib/ld-2.12.2.so
lib/libm.so.6
proc
sbin
mnt
mnt/root
root
etc
bin
bin/sh
bin/mknod
bin/mount
bin/busybox
sys
dev
4468 blocks
</code>

Init es muy simple, y solo debe iniciar dispositivos y generar un shell (por ahora):

<code>#!/bin/sh

mount -t devtmpfs none /dev
mount -t proc none /proc
mount -t sysfs none /sys
/bin/busybox --install -s
exec /bin/sh
</code>

En el kernel .config tengo:

<code>CONFIG_INITRAMFS_SOURCE="../initramfs.cpio"
CONFIG_INITRAMFS_ROOT_UID=0
CONFIG_INITRAMFS_ROOT_GID=0
CONFIG_BLK_DEV_INITRD=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=1
CONFIG_BLK_DEV_RAM_SIZE=32768
</code>

El núcleo se compila y el tamaño de uImage es mayor dependiendo del tamaño de initramfs, así que sé que la imagen se está empaquetando. Sin embargo obtengo esta salida cuando arranco:

<code>console [netcon0] enabled
netconsole: network logging started
omap_rtc omap_rtc: setting system clock to 2000-01-02 00:48:38 UTC (946774118)
Warning: unable to open an initial console.
Freeing init memory: 1252K
mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new high speed SDHC card at address e624
mmcblk0: mmc0:e624 SU08G 7.40 GiB
 mmcblk0: p1
Kernel panic - not syncing: Attempted to kill init!
[<c000d518>] (unwind_backtrace+0x0/0xe0) from [<c0315cf8>] (panic+0x58/0x188)
[<c0315cf8>] (panic+0x58/0x188) from [<c0021520>] (do_exit+0x98/0x6c0)
[<c0021520>] (do_exit+0x98/0x6c0) from [<c0021e88>] (do_group_exit+0xb0/0xdc)
[<c0021e88>] (do_group_exit+0xb0/0xdc) from [<c0021ec4>] (sys_exit_group+0x10/0x18)
[<c0021ec4>] (sys_exit_group+0x10/0x18) from [<c00093a0>] (ret_fast_syscall+0x0/0x2c)
</code>

Desde esa salida, no parece que esté intentando extraer el archivo CPIO como initramfs. Espero ver esta salida de printk, que está presente en el código de Linux init / initramfs.c:

<code>printk(KERN_INFO "Trying to unpack rootfs image as initramfs...\n");
</code>

Intenté el sistema de archivos una vez que se completó el arranque (usando chroot) y funciona bien ... así que creo que el sistema de archivos / bibliotecas están en su sano juicio.

¿Podría alguien darme algunos consejos sobre lo que puedo tener incorrecto? ¡Gracias de antemano por cualquier ayuda!

Respuestas a la pregunta(1)

Su respuesta a la pregunta