O sistema de arquivos raiz NFS não é montado na inicialização

2

Este é um dispositivo embutido com um kernel personalizado (veja abaixo a configuração relevante). É uma máquina x86-32 inicializando assim: coreboot- > uboot- > linux. Eu posso montar o compartilhamento NFS no Linux se eu usar o armazenamento on-board para o rootfs. Tenho certeza que o linux está configurando corretamente a rede na inicialização usando ip=dhcp (nota: isso está usando o servidor DHCP da rede; está apenas distribuindo endereços IP e não tem nada a ver com o BOOTP ou qualquer coisa assim). Eu também tentei definir parâmetros explicitamente com ip= , os resultados são os mesmos que para ip=dhcp .

Veja o que é executado no uboot:

set ethaddr 02:00:00:10:00:43; set serverip 204.54.80.195; set ipaddr 204.54.80.37
set bootargs rootwait raid=noautodetect rw console=ttyS0,115200 root=/dev/nfs nfsroot=$serverip:/yukon ip=dhcp
ext4load mmc 0 ${kernel_addr} ${kernel_path} ; ext4load mmc 0 ${initrd_addr} ${initrd_path} ; zboot ${kernel_addr} 0 ${initrd_addr}

Aqui está a rede chegando no linux:

Sending DHCP requests ., OK
IP-Config: Got DHCP answer from 204.54.80.10, my address is 204.54.80.37
IP-Config: Complete:
     device=eth0, hwaddr=02:00:00:10:00:43, ipaddr=204.54.80.37, mask=255.255.255.0, gw=204.54.80.1
     host=204.54.80.37, domain=jdnet.deere.com, nis-domain=(none)
     bootserver=0.0.0.0, rootserver=204.54.80.195, rootpath=
     nameserver0=204.54.84.14, nameserver1=164.121.15.220

Linux entra em pane quando não é possível montar o rootfs:

VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0): error -6

Configuração relevante do kernel:

root@localhost:~# zgrep -E NFS\|IP_PNP /proc/config.gz
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_PNP_RARP=y
CONFIG_NFS_FS=y
CONFIG_NFS_V2=y
CONFIG_NFS_DEF_FILE_IO_SIZE=4096
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
CONFIG_NFS_V4=y
# CONFIG_NFS_SWAP is not set
# CONFIG_NFS_V4_1 is not set
CONFIG_ROOT_NFS=y
# CONFIG_NFS_USE_LEGACY_DNS is not set
CONFIG_NFS_USE_KERNEL_DNS=y
# CONFIG_NFSD is not set
CONFIG_NFS_COMMON=y

O NFS pode ser montado no linux com

mount.nfs 204.54.80.195:/yukon /mnt

Eu provavelmente estou sentindo falta de algo óbvio. Estou à procura de ideias e erros comuns.

Atualizações:

  • O parâmetro do kernel nfsrootdebug não tem nenhum efeito.
  • Embora haja um initrd, ele não é usado. Definitivamente não é necessário para iniciar com armazenamento on-board. Todos os drivers necessários são compilados no kernel, não como módulos.

Além disso: Eu determinei que usar o ethernet no uboot o torna inutilizável no linux; isso é outro bug para eu resolver, mas eu posso evitar usar a rede no uboot, então isso não deveria ser um problema.

    
por jpkotta 21.05.2015 / 18:37

2 respostas

0

Eu estava muito perto. Eu precisava ativar no_root_squash em / etc / exports:

/srv/nfs       204.54.0.0/16(rw,fsid=0,insecure,no_subtree_check,async,no_root_squash)
/srv/nfs/yukon 204.54.0.0/16(rw,nohide,insecure,no_subtree_check,async,no_root_squash)

E, embora os mount.nfs $serverip:/yukon /mnt e mount.nfs $serverip:/srv/nfs/yukon /mnt funcionassem, eu precisava do caminho completo para o cmdline do Linux:

console=ttyS0,115200 rootwait rw nfsroot=$serverip:/srv/nfs/yukon ip=dhcp root=/dev/nfs
    
por 04.09.2015 / 01:10
0

Eu sugiro verificar / etc / exports, /etc/hosts.deny, /etc/hosts.allow no servidor para ver se o endereço alocado pelo dhcp (204.54.80.37) é permitido.

    
por 29.07.2015 / 18:28