使用U-Boot的NFS(远程/网络用户空间)
前提条件
假设您的主机PC运行的是Ubuntu 14.04.1 LTS或更高版本,并且与您的开发平台在同一个本地网络上;为了简单起见,我们假设网络上也有DHCP服务器。
如果使用Juno,请确保使用的是前端以太网端口。
设置NFS服务器
在主机上安装以下软件包:
sudo apt-get update && sudo apt-get install nfs-kernel-server rpcbind
切换到超级用户:
sudo su -
创建一个根“/export/”目录,我们将使用它作为存放文件系统的目录:
mkdir /export/
设置文件系统的权限,并在'/etc/exports'文件末尾添加以下行:
/export/ *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
为了避免潜在的文件权限问题,我们将避免使用NFSv4。通过编辑' /etc/default/ ns -kernel-server',将默认值设置为NFSv3,如下所示:
# Number of servers to start up # To disable nfsv4 on the server, specify `--no-nfs-version 4' here #RPCNFSDCOUNT=8 RPCNFSDCOUNT="--no-nfs-version 4"
然后重启nfs-kernel-server服务:
service nfs-kernel-server restart
现在检查一下,“portmapper”、“nfs”和“mountd”都同时运行在“tcp”和“udp”上:
#rpcinfo -p program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 43672 status 100024 1 tcp 56293 status 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 2 tcp 2049 100227 3 tcp 2049 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 2 udp 2049 100227 3 udp 2049 100021 1 udp 53079 nlockmgr 100021 3 udp 53079 nlockmgr 100021 4 udp 53079 nlockmgr 100021 1 tcp 50750 nlockmgr 100021 3 tcp 50750 nlockmgr 100021 4 tcp 50750 nlockmgr 100005 1 udp 50127 mountd 100005 1 tcp 48215 mountd 100005 2 udp 49557 mountd 100005 2 tcp 46457 mountd 100005 3 udp 36349 mountd 100005 3 tcp 54121 mountd
接下来,将您需要的根文件系统提取到“/export/”目录中,也可以选择将其放在子目录中。在本例中,我们将根文件系统提取为“/export/juno/fs/”。
挂载主机目录到juno板
mount -t nfs 192.168.1.101:/export/ /mnt -o nolock
挂载完成以后你就可以在开发板上/mnt目录下看到主机/export目录下的内容,可以使用cp命令把主机/export目录下的内容拷贝到开发板上。
使用网络文件系统启动
打开Juno板并中断U-Boot的默认启动选择:
1 | The default boot selection will start in 3 seconds |
将主机PC的IP地址保存到“serverip”环境变量:
1 2 | VExpress64 # set serverip <host_pc_ip_address> VExpress64 # saveenv |
接下来修改U-Boot的引导args,使用NFS找到根文件系统:
1 2 3 | VExpress64 # set origbootargs "$bootargs" VExpress64 # set bootargs "console=ttyAMA0,115200n8 root=/dev/nfs ip=dhcp nfsroot=${serverip}:/export/juno/fs rw rootwait earlyprintk=pl011,0x7ff80000 debug" VExpress64 # saveenv |
然后重新启动juno板, 它应该会使用NFS找到根文件系统。
恢复到默认启动行为的办法:
1 | VExpress64 # set bootargs "$origbootargs" |
本文来自博客园,作者:闹闹爸爸,转载请注明原文链接:https://www.cnblogs.com/wanglouxiaozi/p/9577676.html
分类:
arm-linux
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)