服务器端
1. 安装ubuntu 18.04 nfs服务器
# apt install nfs-kernel-server
2. 加载nbd内核模块并使用qemu-nbd加载vhd文件(假设vhd文件包含三个分区),在/dev下生成nbd0p[1-3]三个分区,第三个分区为根分区
# modprobe nbd
# qemu-nbd -c /dev/nbd0 /path/to/pim_file
3. 将/dev/nbd0p3挂载到需要共享的目录(例:/srv/nfs/root)
# mount /dev/nbd0p3 /srv/nfs/root
4. 配置nfs server服务器/etc/exports配置文件
/srv/nfs/root *(rw,sync,no_subtree_check,no_root_squash)
*:允许所有的网段访问,也可以使用具体的IP
rw:挂接此目录的客户端对该共享目录具有读写权限
sync:资料同步写入内存和硬盘
no_root_squash:root用户具有对根目录的完全管理访问权限
no_subtree_check:不检查父目录的权限
5. 重启nfs server并使用showmount -e查看是否成功
# systemctl restart nfs-kernel-server
6. 修改已挂载根分区中的fstab文件,注释其中所有内容
nfs客户端测试
1. 安装ubuntu 18.04 nfs client
# apt install nfs-common
2. 查看服务器端共享的nfs目录
# showmount -e 192.168.1.111
Export list for 192.168.1.111:
/srv/nfs/root *
3. 新建本地挂载目录并挂载
# mkdir -p /mnt/nfs
# mount -t nfs 192.168.1.111:/srv/nfs/root /mnt/nfs
客户端机器
1. 使用livecd iso,修改grub.cfg中引导项,添加nfs引导需要的内核参数
root=/dev/nfs rootfstype=nfs nfsroot=192.168.1.111:/srv/nfs/root ip=192.168.1.155:192.168.1.111:192.168.1.1:255.255.255.0::eth0:off
2. 如果需要保证客户端机器的网络设备名为eth0, 可以在引导的内核参数上添加参数:net.ifnames=0 biosdevname=0
参考
通过NFS(nfsroot)启动linux系统 - kinglongmee - 博客园Mounting the root filesystem via NFS (nfsroot)英文原文位于inux内核源代码中的"Documentation/filesystems/nfs/nhttps://www.cnblogs.com/kinglongmee/p/5043656.htmlubuntu nfs-server/client安装配置_rick_zyl的博客-CSDN博客NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以像访问本地文件一样透明地读写位于远端NFS服务器上的文件。配置NFS服务器:1)安装nfs serverapt-get install nfs-kernel-server2)配置https://blog.csdn.net/rick_zyl/article/details/79051696