O boot do NFS rootfs falha silenciosamente no ARM do painel imx53

1

Estou tentando montar meus rootfs no NFS. Eu tenho essas configurações de kernel ativadas:

CONFIG_NFS_FS=y     (NFS support)
CONFIG_IP_PNP=y     (configure IP at boot time)
CONFIG_ROOT_NFS=y   (support for NFS as rootfs)

Esta é a linha de comando do meu kernel:

debug nfsrootdebug loglevel=8 console=ttymxc1,115200 imx-fbdev.legacyfb_depth=32 consoleblank=0 ip=10.42.102.244:10.42.102.5::255.255.255.0::eth0: root=/dev/nfs nfsroot=10.42.102.5:/srv/nfs/dc10,v3,tcp noinitrd

Aqui estão as partes relevantes das mensagens de inicialização:

libphy: 63fec000.etherne:01 - Link is Up - 100/Full
IP-Config: Complete:
     device=eth0, hwaddr=00:d0:93:2a:6c:8e, ipaddr=10.42.102.244, mask=255.255.255.0, gw=255.255.255.255
     host=10.42.102.244, domain=, nis-domain=(none)
     bootserver=10.42.102.5, rootserver=10.42.102.5, rootpath=
ALSA device list:
  #0: imx53-mba53-sgtl5000
Freeing init memory: 6332K
Welcome to Buildroot 2013.05!

Eu estava esperando ver linhas sobre comunicação RPC e montagem VFS sobre nfs, mas nada disso e nenhuma mensagem de erro foi impressa, depsite fornecendo "debug" "nfsrootdebug" e "loglevel = 8" como parâmetros do kernel.

Eu verifiquei com o tcpdump no lado do servidor nfs que nenhum pacote está sendo enviado.

Quando a placa inicializar, posso conectar-me ao computador que está executando o servidor nfs usando ssh.

Alguém tem alguma sugestão de o que está errado ou como posso depurar isso ainda mais?

    
por Daniel Näslund 02.09.2016 / 11:10

1 resposta

1

Eu não trabalhei com o ARM especificamente, mas geralmente para o NFS root a linha de comando deve parecer com root=nfs:[Server IP]:/[Directory],[options] (então para você seria root=nfs:10.42.102.5:/srv/nfs/dc10,v3,tcp ) e o initrd irá analisar as informações sobre a raiz. Usar root=/dev/nfs é geralmente obsoleto (o arquivo /dev/nfs não é realmente usado no processo de montagem, é apenas uma sugestão de que o NFS deve ser usado, mas nem sempre existe em initrds mais recentes.

Eu vi na sua linha de comando que você usa noinitrd , há uma razão para isso? O papel de um initrd é melhorar a flexibilidade para montar sua partição raiz e é exatamente perfeito para esse tipo de cenário (montar um dispositivo raiz que não seja um HD interno).

Além disso, a linha de comando do kernel vem de uma partição no disco local? Ou isso é um sistema sem disco (inicialização via PXE para uma raiz NFS)? Se possível, seria útil remover o disco local durante a depuração para ver o que acontece, mas se a linha de comando do kernel estiver vindo de uma partição boot no disco local que não é muito viável.

    
por 02.09.2016 / 14:03