O initramfs incorporado no kernel Linux customizado não está em execução
Eu estou construindo uma imagem initramfs personalizada que estou construindo como um arquivo CPIO no kernel do Linux (3.2).
O problema que estou tendo é que não importa o que eu tente, o kernel não parece sequer tentar rodar a partir do initramfs.
Os arquivos que tenho no meu arquivo 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>
O init é muito simples, e deve apenas iniciar dispositivos e gerar um shell (por enquanto):
<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>
No kernel .config eu tenho:
<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>
O kernel é compilado e o tamanho do uImage é maior dependendo do tamanho do initramfs, portanto, sei que a imagem está sendo empacotada. No entanto, recebo essa saída quando inicializo:
<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>
Dessa saída, não parece que esteja tentando extrair o arquivo CPIO como initramfs. Espero ver esta saída do printk, que está presente no código linux init / initramfs.c:
<code>printk(KERN_INFO "Trying to unpack rootfs image as initramfs...\n"); </code>
Eu tentei o sistema de arquivos uma vez que a inicialização está completa (usando o chroot) e funciona bem ... então eu acredito que o sistema de arquivos / bibliotecas são sãs.
Alguém poderia me dar algumas dicas sobre o que eu posso ter incorreto? Agradecemos antecipadamente por qualquer assistência!