使用U-Boot的NFS(远程/网络用户空间)
Posted wanglouxiaozi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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的默认启动选择:
The default boot selection will start in 3 seconds
将主机PC的IP地址保存到“serverip”环境变量:
VExpress64# set serverip <host_pc_ip_address> VExpress64# saveenv
接下来修改U-Boot的引导args,使用NFS找到根文件系统:
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找到根文件系统。
恢复到默认启动行为的办法:
VExpress64# set bootargs "$origbootargs"
以上是关于使用U-Boot的NFS(远程/网络用户空间)的主要内容,如果未能解决你的问题,请参考以下文章