Estou tentando fazer com que um sistema de arquivos NFS raiz (e inicialização) remoto funcione corretamente e estou atingindo os limites do meu conhecimento. Gostaria de saber se alguém pode me indicar a direção certa.
Servidor
Tanto o TFTP quanto o NFS são servidos por um roteador Linksys WRT 1900 ACS executando o OpenWRT 19.07. Este dispositivo também possui um SSD externo que é usado como sistema de arquivos raiz de sobreposição.
https://openwrt.org/docs/guide-user/additional-software/extroot_configuration.
Cada cliente possui um arquivo de sistema raiz neste diretório (Ubuntu 21.04)
/nfs/exports/tftp/
e um diretório de inicialização em
/tftp/tftpboot/
E aqui está o conteúdo de /etc/exports:
/overlay/upper/nfs/exports/ *(rw,sync,no_subtree_check,no_root_squash) /overlay/upper/tftp/tftpboot/ *(rw,sync,no_subtree_check,no_root_squash)
Se eu não adicionar o prefixo /overlay/upper/ então não poderei montar o diretório exportado
Clientes
Os clientes inicializam com sucesso o PXE e carregam o sistema operacional (Ubuntu 21.04), posso fazer login, SSH etc. No entanto, isso não acontece sem ver erros durante a inicialização ou se eu tentar fazer uma atualização do apt-get.
O primeiro erro que vejo durante a inicialização é este:
[Failed] Failed to start Remount Root and Kernel File System
então mais tarde eu vejo
[Failed] Failed to mount /boot
ainda assim, uma vez logado, /boot parece estar montado.
Aqui está o fstab de um cliente
10.1.0.1:/overlay/upper/nfs/exports/tftp/68fe97e5 / nfs defaults,_netdev,nfsvers=4.1,proto=tcp 0 0
10.1.0.1:/overlay/upper/tftp/tftpboot/68fe97e5 /boot nfs defaults,_netdev,nfsvers=4.1,proto=tcp 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0
tmpfs /var/run tmpfs defaults 0 0
(desculpe pela formatação)
E /boot/cmdline.txt
net.ifnames=0 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/nfs nfsroot=10.1.0.1:/overlay/upper/nfs/exports/tftp/68fe97e5,tcp ip=dhcp elevator=deadline rootwait fixrtc rw cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory
Quando olho para systemctl systemd-remount-fs.service vejo esta linha
May 27 15:10:08 rdg-clust-01 systemd-remount-fs[317]: mount.nfs: an incorrect mount option was specified
Alguém pode apontar qual opção estou errando?
Responder1
Veja como isso funciona no KickStart, JumpStart ou no antigo RoboInstaller. A imagem do kernel miniroot é servida por TFTP e o sistema de arquivos é servido por NFS. Era também assim que os clientes UNIX sem disco funcionavam antigamente. Tenho certeza de que você não pode servir um sistema de arquivos inteiro com TFTP. Simplesmente não é assim que o protocolo é projetado.
Há vários documentos on-line que podem ajudar a orientá-lo para uma configuração bem-sucedida do sistema sem disco:
https://www.xmodulo.com/diskless-boot-linux-machine.html
http://mirror.internode.on.net/pub/ldp/en/Diskless-root-NFS-HOWTO/Diskless-root-NFS-HOWTO.pdf