Estoy construyendo una imagen de initramfs personalizada que estoy creando como un archivo de CPIO en el kernel de Linux (3.2).Initramfs integrado en kernel de Linux personalizado no se está ejecutando
El problema que estoy teniendo es que no importa lo que intento, el kernel no parece siquiera intentar ejecutar desde el initramfs.
Los archivos que tengo en mi archivo cpio:
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
init es muy simple, y sólo debe dispositivos de inicialización y generar un shell (por ahora):
#!/bin/sh
mount -t devtmpfs none /dev
mount -t proc none /proc
mount -t sysfs none /sys
/bin/busybox --install -s
exec /bin/sh
en el núcleo. config que tengo:
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
núcleos que haya construido y el tamaño uImage es mayor dependiendo del tamaño initramfs, por lo que k ahora la imagen está siendo empacada. Sin embargo consigo esta salida cuando arranco:
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)
Desde que la producción, que no se ve como que está incluso tratando de extraer el archivo cpio como initramfs. Espero ver esta salida printk, que está presente en el código de Linux init/initramfs.c:
printk(KERN_INFO "Trying to unpack rootfs image as initramfs...\n");
probé el sistema de archivos, una vez se haya completado el arranque (usando chroot) y funciona bien ... así que creo que la sistema de archivos/bibliotecas son sanos.
¿Alguien podría darme algunos consejos sobre lo que puedo tener incorrecto? ¡Gracias de antemano por cualquier ayuda!
Me parece que su kernel está fallando por un motivo posiblemente no relacionado, ya sea durante la inicialización de los dispositivos mmcblk o entre eso y lo que sea que luego genere un mensaje de salida. ¿Puedes obtener algunas impresiones adicionales para informar el progreso? ¿Cuán seguro está de que las fuentes de su kernel son apropiadas para esta placa? ¿Ha realizado cambios para adaptarlas (como la creación de instancias codificadas de las cosas de mmcblk) en las que podría haber errores? –
Funciona bien con este núcleo, menos el initramfs (usando el sistema de archivos más grande que he flasheado en NAND). Entonces dudo que sea un problema de la junta. Estoy trabajando para conseguir algunas copias impresas allí, pero esperaba que alguien pudiera señalar algo obviamente erróneo en mi enfoque antes de volverme loco con eso. – dag