Kernel panic - não sincronizando: Nenhum init encontrado. Enquanto arranca a partir do U-Boot

5

O kernel montou o sistema de arquivos raiz, mas não consegue encontrar nenhum script de inicialização. Tenho certeza que esse script existe no meu ramdisk.img!

Também verifiquei este e o software GE863-PRO3 U-BOOT Guia do usuário 1VV0300777 Rev. 6 - 2010-01-25.

Alguma ideia ou documentação alternativa?

Meu ambiente: versão GE863-PRO3 128/64

U-Boot 1.2.0 (Aug 18 2010 - 12:16:10)- 221 Telit

DRAM:  64 MB

Bank #1
Flash:NAND Numonyx NAND01G-B2B 128MB 1.8V 8-bit
Hardware ECC (ECC data size = 512 bytes)
Nb min erasable unit:   1024
min erasable Size: 131072
Size=134217728 bytes
Logical address: 0x40000000
No bad block detected
Area 0: 40000000 to 403BFFFF (RO)  Primary Bootstrap
Area 1: 403C0000 to 4043FFFF (RO)  U-Boot code
Area 2: 40440000 to 404BFFFF (RO)  U-Boot Environment
Area 3: 404C0000 to 407BFFFF       User Area 1
Area 4: 407C0000 to 47FFFFFF       User Area 2

Comandos U-BOOT:

setenv bootargs console=ttyS0,115200 mem=64M ver=4384k icofat=257k rootfstype=jffs2 root=/dev/mtdblock1 rw mtdparts=at91_nand:7936k(ARMboot)ro,-@7936k(root) init=/bin/busybox
ethinit 192.168.122.3
erase 404C0000 47FFFFFF
tftp 20200000 ramdisk.img
cp.b 20200000 0x407c0000 14cd78
tftp 20200000 uImage
bootm

saída de inicialização:

VFS: Mounted root (jffs2 filesystem).
Freeing init memory: 96K
Setting DMA Console
Failed to execute /bin/busybox.  Attempting defaults...
Kernel panic - not syncing: No init found.  Try passing init= option to kernel.
Function entered at [<c01de28c>] from [<c01de304>]
Function entered at [<c01de2a0>] from [<c0020398>]
 r3:c3c1ac40 r2:c3c1ac40 r1:c3c1deb0 r0:c01c3cab
Function entered at [<c00202dc>] from [<c00085e0>]
 r4:c020d2c0
Function entered at [<c00083b8>] from [<c003a454>]
    
por arreche 09.05.2011 / 18:17

3 respostas

2

Seu problema está aqui:

setenv bootargs console=ttyS0,115200 mem=64M ver=4384k icofat=257k rootfstype=jffs2 root=/dev/mtdblock1 rw mtdparts=at91_nand:7936k(ARMboot)ro,-@7936k(root) init=/bin/busybox

O Busyboxy é como um camaleão. Isso muda seu comportamento dependendo de como você o chama. Para fazê-lo agir como init , você precisa chamá-lo de init . Mude para init=/sbin/init .

Você também precisa ter certeza de que /sbin/init é um link simbólico ou link para /bin/busybox dentro de seu ramdisk.img.

    
por 06.08.2011 / 18:38
1

Não estou interessado em criar o initrd, mas é possível definir as permissões dentro do initrd? Talvez /bin/busybox/ não tenha permissão executável.

    
por 09.05.2011 / 19:40
1

/dev/null ou /dev/console estão faltando? Eu tive problema semelhante quando esses dois arquivos estavam faltando.

    
por 05.08.2011 / 21:44