2025-02-10
在嵌入式Linux
开发的调试过程中,如果需要频繁的更新文件系统中的内容是一个很麻烦的过程。所以Linux
内核提供了能够通过使用nfs
文件系统启动的功能,这样就不需要频繁的制作文件系统。在Linux
内核启动后挂载远端的nfs
文件系统,需要更新文件只需要将文件放到远端的目录下,就会自动同步到开发板的文件系统中。大大提高了开发和调试效率。
ubuntu版本:24.04
宿主机安装nfs-kernel-server
:sudo apt install nfs-kernel-server
nfs-kernel-server
编辑/etc/exports
文件。在最后添加/mnt/rootfs *(rw,sync,no_root_squash,no_subtree_check)
创建/mnt/rootfs
: sudo mkdir /mnt/rootfs
,并复制文件到/mnt/rootfs
目录
启动nfs-kernel-server
: sudo systemctl start nfs-kernel-server
测试nfs
文件系统是否挂载成功:
tmp
目录: mkdir tmp
sudo mount -t nfs 127.0.0.1:/mnt/rootfs tmp
,查看rootfs
目录是否成功挂载到tmp
目录运行make menuconfig
Networking support
->Networking options
->TCP/IP networking
->IP: kernel level autoconfiguration
->1) IP: DHCP support, 2) IP: BOOTP support, 3) IP: RARP support
3个选项都启用
File systems
->Network File Systems
->NFS client support
下的所有子选项都启用
File systems
->Network File Systems
-> Root file system on NFS
启用
qemu-system-x86_64 -kernel bzImage \
-append "root=/dev/nfs rw \
nfsroot=192.168.31.192:/mnt/rootfs,v3,tcp \
ip=192.168.31.193:192.168.31.192:192.168.31.1:255.255.255.0::eth0:off \
init=/linuxrc console=ttyS0" \
-serial mon:stdio -nographic
nfsroot=192.168.31.192
为宿主机的网络,你需要修改成你自己的ip
地址
ip=192.168.31.193:192.168.31.192:192.168.31.1:255.255.255.0
为ip=qemu中为内核分配的ip地址:宿主机的ip地址:网关地址:子网掩码
eth0:off
: qemu
为内核分配的网络接口,并且关闭DHCP
qemu
中内核无法挂载宿主机的/mnt/rootfs
目录。
ip地址
冲突了。qemu
的网络无法和宿主机的网络进行通讯。希望对你有所帮助。