El sistema de files raíz NFS no se monta en el arranque

Este es un dispositivo integrado con un kernel personalizado (ver a continuación la configuration correspondiente). Es un arranque de máquina x86-32 como este: coreboot-> uboot-> linux. Puedo montar el recurso compartido de NFS en Linux si uso el almacenamiento a bordo para los rootfs. Estoy bastante seguro de que Linux está autoconfigurando correctamente la networking en el arranque usando ip=dhcp (nota: esto es usando el server DHCP de la networking, simplemente está entregando direcciones IP, y no tiene nada que ver con BOOTP ni nada de eso). También intenté establecer explícitamente parameters con ip= , los resultados son los mismos que para ip=dhcp .

Esto es lo que se ejecuta en 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} 

Aquí está la networking que viene en 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 

Pánico de Linux cuando no puede montar los rootfs:

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

Configuración relevante del 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 

NFS se puede montar en Linux con

 mount.nfs 204.54.80.195:/yukon /mnt 

Probablemente me esté perdiendo algo obvio. Estoy buscando ideas y errores comunes.


Actualizaciones:

  • El parámetro kernel nfsrootdebug no tiene ningún efecto.
  • Aunque hay un initrd, no se usa. Definitivamente no es necesario para el arranque con almacenamiento a bordo. Todos los controlleres necesarios se comstackn en el kernel, no como modules.

Aparte: he determinado que usar ethernet en uboot lo hace inutilizable en Linux; ese es otro error que debo resolver, pero puedo evitar usar la networking en uboot, así que no debería ser un problema.

Sugiero que compruebe / etc / exports, /etc/hosts.deny, /etc/hosts.allow en el server para ver si se permite la dirección asignada por dhcp (204.54.80.37).

Estaba muy cerca. Necesitaba habilitar no_root_squash en / 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) 

Y aunque mount.nfs $serverip:/yukon /mnt tanto mount.nfs $serverip:/yukon /mnt como mount.nfs $serverip:/srv/nfs/yukon /mnt , necesitaba la ruta completa para la command-line de Linux:

 console=ttyS0,115200 rootwait rw nfsroot=$serverip:/srv/nfs/yukon ip=dhcp root=/dev/nfs