Problema
Eu tenho um sistema embarcado que não consigo inicializar via NFS usando uma imagem de kernel do Embedded Linux e rootfs, ambos colocados no meu laptop (que serve como servidor NFS e também como servidor TFTP).
Informações úteis
Meu / etc / exports do meu laptop:
/tftpboot/rootfs_arm-gnueabi *(rw,sync,insecure_locks,no_root_squash,no_all_squash)
Caminho da imagem do Linux (myImage): / tftpboot / Caminho do sistema de arquivos raiz (rootfs): / tftpboot /
Servidor TFTP e IP do servidor NFS: 10.3.70.116
My Embedded system IP: 10.3.70.181
Comandos que uso para reiniciar meus servidores NFS e TFTP
sudo /etc/init.d/nfs-kernel-server restart
sudo /etc/init.d/xinetd restart
Detalhes
Quando eu inicio pela máquina embarcada, o U-Boot inicializa e então o sistema inicia o carregamento de 'myImage' e finalmente ele tenta acessar o rootfs via NFS enquanto imprime alguns caracteres estranhos, como mostrado no final da seguinte citação.
Filename 'myImage'.
Load address: 0x2000000
Loading: *#################################################################################################################
doneBytes transferred = 1181188 (120604 hex)
Booting image at 02000000 ...
Image Name: Linux-2.6.22.18
Created: 2010-12-07 6:01:19 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1181124 Bytes = 1.1 MB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK
OK
Checking for Linux kernel endianess at 0x02000040 = 0xe1a00000
Linux Kernel is LE
Starting kernel in LE mode ...
Uncompressing Linux............................................................................... done, booting the kernel.
üààààüàààààüüààüüàü
Eu rodei o Wireshark e capturei os pacotes para ver que pacotes estão indo e voltando do servidor e da máquina incorporada. Ao fazer isso, descobri que em algum momento algum erro NFSERR_NOENT está aparecendo. e parece que o erro surge ao acessar / carregar ld.so.preload
A seguir estão alguns pacotes organizados como "Informações do protocolo de destino da fonte de tempo". Desculpe pela visão desordenada. Eu não pude evitar. :)
4776 20.482764 10.3.70.181
10.3.70.116 NFS V2 LOOKUP Call (Reply In 4777), DH:0xf4f053a1/etc4777 20.482838 10.3.70.116
10.3.70.181 NFS V2 LOOKUP Reply (Call In 4776), FH:0x468d1c144778 20.483000 10.3.70.181
10.3.70.116 NFS V2 LOOKUP Call (Reply In 4779), DH:0x468d1c14/ld.so.preload4779 20.483443 10.3.70.116
10.3.70.181 NFS V2 LOOKUP Reply (Call In 4778) Error:NFSERR_NOENT4780 20.483712 10.3.70.181
10.3.70.116 NFS V2 LOOKUP Call (Reply In 4781), DH:0x468d1c14/ld.so.cache4781 20.483839 10.3.70.116
10.3.70.181 NFS V2 LOOKUP Reply (Call In 4780) Error:NFSERR_NOENT
Se você leu até agora :) e tem alguma pista, ficarei encantado em saber o que acha que está dando errado.
Muito obrigado.
Tags nfs wireshark linux embedded-linux