我正在尝试使用 NFSv4 在 Raspberry Pi 4B (RPi4) 上通过网络启动 Ubuntu 22.04。我已经尝试了好几个月(之前使用的是 20.04)。我开始怀疑这是否是 Ubuntu 中的一个错误,并希望得到一些帮助来确定是否是这种情况。
我的 NFSv4 服务器是 Synology NAS。如果我使用 Ubuntu 22.04 从 SD 卡启动我的 RPi4,我可以使用 NFSv4 挂载我的系統啟動和可写来自 NFSv4 服务器的分区。
但是,我发现成功执行网络启动的唯一方法是告诉 TFTP 使用 NFSv3。我目前的工作命令行看起来像这样:
net.ifnames=0 dwc_otg.lpm_enable=0
console=serial0,115200 console=tty1
root=/dev/nfs
nfsrootdebug
nfsroot=192.168.8.20:/volume3/nfs/RPi4/Ubuntu/jammy/root
nfsvers=4
rootfstype=nfs4
rw ip=dhcp rootwait
(换行符只是为了便于阅读。)
如您所见,我尝试通过指定来指定我想使用 NFSv4nfsvers=4和rootfstype=nfs4,但这些都被坚决忽略了(这里可能是因为nfsroot具体来说是 NFSv3 – 见下文)。
这是我的/etc/exports在 NAS 服务器上:
/volume3/nfs *(fsid=0,rw,no_subtree_check,sync)
/volume3/nfs/RPi4 *(rw,async,no_wdelay,crossmnt,insecure,no_root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100)
/volume3/nfs/RPi4/Ubuntu/jammy/boot *(rw,async,no_wdelay,crossmnt,insecure,no_root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100)
/volume3/nfs/RPi4/Ubuntu/jammy/root *(rw,async,no_wdelay,crossmnt,insecure,no_root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100)
(这些参数主要由 Synology 管理界面生成,我倾向于在编辑时复制并粘贴它们远程控制)。
对于 NFSv4,正确的规范nfsroot文件夹是:
/RPi4/Ubuntu/jammy/root
但如果我尝试在命令行上面的服务器给了我没有权限消息。这让我想到,无论读什么命令行仅理解 NFSv3。
如果不明显的话,我对 NFSv4 并不完全熟悉,因此我希望得到帮助来确定这是否是一个错误。
史蒂夫
答案1
Ubuntu 使用 nfsmount 在 initrd 中挂载 NFS 远程目录。nfsmount(由 klibc-utils 提供)不支持 NFSv4。请参阅