07步:挂载NFS根文件系统
7.1 NFS的安装、配置
前面的根文件系统是.ext3镜像格式,不方便开发调试。为了方便开发,我们可以将开发板的根文件系统设置成NFS网络文件系统,这样我们级不需要往开发板往复拷贝文件了,直接在主机上操作NFS即可。
NFS安装使用apt就可以,很方便
# sudo apt install nfs-kernel-server
我们前面配置busybox的根文件系统目录为/home/nfs。我们将开发板的根文件系统挂载路径设置到这里就可以了:设置挂载目录路径的配置文件为/etc/exports。打开这个文件:
# sudo gedit /etc/exports
加入内容:
/home/nfs *(rw,sync,no_root_squash,no_subtree_check)
重启NFS服务器
# sudo /etc/init.d/rpcbind restart
# sudo /etc/init.d/nfs-kernel-server restart
7.2 NFS的兼容问题
方法一:重新编译内核,使之支持NFS V4
位置: File System —> Network File Systems—>NFS client support for NFS version 4
但是更改以后可能出现下面这个错误:
这里报错是因为内核大小超出了5M,后面加载的设备树文件覆盖了内核镜像,内核在5M的位置被覆盖,通不过CRC校检导致的。解决方法:将设备树文件加载到内存的地址往后移动,移动到从0x60500000移动到0x60800000。
方法二:设置Ubuntu20.04的NFS,使之兼容NFS-V2和NFS-V3
这个方法相对就容易很多,修改文件/etc/default/nfs-kernel-server,加入NFS的2,3,4的所有支持,加入调试功能,即
sudo gedit /etc/default/nfs-kernel-server
输入以下内容
RPCSVCGSSDOPTS="--nfs-version 2,3,4 --debug --syslog"
改好了记得把NFS重启一下
# sudo /etc/init.d/rpcbind restart
# sudo /etc/init.d/nfs-kernel-server restart
7.3 最终测试
修改启动脚本start.sh:
qemu-system-arm \
-M vexpress-a9 \
-kernel u-boot \
-nographic \
-m 512M \
-nic tap
执行脚本:
# cd /home/nfs
# touch test-nfs
# cd /home/tftpboot/
# su root
# ./start.sh
启动以后,快速按空格,输入以下的启动指令:
# tftp 0x60003000 uImage;tftp 0x60800000 vexpress-v2p-ca9.dtb;setenv bootargs 'root=/dev/nfs rw nfsroot=192.168.33.145:/home/nfs,proto=tcp,nfsvers=3,nolock init=/linuxrc ip=192.168.33.144 console=ttyAMA0';bootm 0x60003000 - 0x60800000;
即可完成NFS的引导,如果想设置为自动引导,需要将bootcmd修改成这个就好
挂载成功示例:
综上,所有 Ubunt20.04+QEMU 的环境配置工作完成
不用买开发板,使用QEMU就可以学习的Linux内核开发实战视频教程:《Linux内核编程》,具有一线芯片原厂开发经验的驱动工程师录制,详情点击:王利涛老师个人淘宝店:Linux内核编程