You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无盘启动(Diskless Booting)- grub.cfg配置与NFS根文件系统参数传递问题

无盘启动(Diskless Booting)- grub.cfg配置与NFS根文件系统参数传递问题

看起来你已经走完了无盘启动准备的核心步骤——搭好PXE服务器、导出NFS根文件系统,现在卡在grub参数配置和initrd的疑问上了,我来帮你梳理清楚关键要点:

一、NFS根文件系统的参数传递位置

你需要把根文件系统的相关参数添加到**linux行(也就是vmlinuz所在的那一行)**,而非initrd行。内核启动时需要先明确根文件系统的位置和类型,这些参数是直接传递给内核的,不是给initrd的。

具体要添加的核心参数包括:

  • root=/dev/nfs:告诉Linux内核,根文件系统通过NFS挂载
  • nfsroot=<NFS服务器IP>:<根文件系统的NFS共享路径>:指定NFS服务器IP和共享出去的根文件系统路径,比如nfsroot=192.168.0.134:/srv/nfs/ubuntu2204-rootfs
  • ip=dhcp:让无盘客户端通过DHCP获取IP(无盘环境下没有本地网络配置)
  • rw:将根文件系统挂载为读写模式(如果需要只读可换成ro)

二、关于initrd的问题

你当前用的是Ubuntu ISO自带的initrd,它是为安装介质设计的,并不适配无盘NFS启动场景——它不会自动挂载NFS根文件系统,所以必须替换为适配无盘启动的initrd。

获取适配initrd的方法:
从你用来制作根文件系统的那个Ubuntu客户端系统中,提取/boot目录下对应内核版本的initrd文件(比如initrd.img-5.15.0-xx-generic),把它上传到PXE服务器的对应路径下,替换原来的initrd。

三、修改后的grub.cfg示例

把你现有menuentry部分修改成如下样子:

menuentry 'Ubuntu 22.04 Diskless Client' {
    gfxmode $linux_gfx_mode
    # 这里添加了NFS根文件系统的核心参数
    linux /distros/ubuntu22.04/vmlinuz root=/dev/nfs nfsroot=192.168.0.134:/srv/nfs/ubuntu2204-rootfs ip=dhcp rw quiet splash
    # 替换为适配无盘启动的initrd
    initrd /distros/ubuntu22.04/initrd.img-5.15.0-xx-generic
}

额外注意事项

  • 确认NFS服务器的/etc/exports配置正确,比如共享路径的条目可以是/srv/nfs/ubuntu2204-rootfs 192.168.0.0/24(rw,sync,no_subtree_check,no_root_squash),配置后记得重启NFS服务(systemctl restart nfs-server)
  • 确保客户端和NFS服务器之间的网络通畅,防火墙不要拦截NFS相关端口(主要是2049,以及rpcbind的端口)
  • 根文件系统中需要预先安装nfs-common包,保证NFS挂载相关的工具和模块存在

备注:内容来源于stack exchange,提问作者Mubeen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 11:43:04