Ubuntu16.04下NFS调试rootfs

来源:互联网 发布:左轮吉他淘宝网 编辑:程序博客网 时间:2024/06/10 14:58

1. 检查内核是否开启NFS

1)进入内核源码目录make menuconfig,进入菜单Networking support->Networking options-> TCP/IP networking。确保nfs的功能已经被打开

IP:BOOTP support

2)进入File systems->Network File Systems 确保nfs加载可以被使用

Root file system on NFS

2. 搭建NFS服务器

1)安装NFS

apt-get install nfs-kernel-server
apt-get install nfs-common

2) 创建共享目录,我在home/lz下创建了一个/nfs/rootfs,将其作为共享目录。并修改权限

chmod 777 -R /home/lz/nfs/rootfs

3) 配置NFS,打开配置文件并在最后一行添加

sudo gedit etc/exports

在最后一行添加
/home/lz/nfs/rootfs *(rw,sync,no_root_squash,no_subtree_check)

其中
/home/lz/nfs/rootfs:与nfs服务客户端共享的目录,这个路径必须和你前面设置的文件的路径一致!
*:允许所有的网段访问,也可以使用具体的IP

rw:挂接此目录的客户端对该共享目录具有读写权限

sync:资料同步写入内存和硬盘

no_root_squash:root用户具有对根目录的完全管理访问权限。

no_subtree_check:不检查父目录的权限

4)重启NFS服务

执行命令:sudo /etc/init.d/portmap restart

sudo /etc/init.d/portmap restart

重启portmap服务。nfs是一个RPC程序,使用它前,需要映射好端口,通过portmap设定。

注意:Ubuntu 14.04以后,要使用sudo /etc/init.d/rpcbind restart 重启rpcbind 服务。所以执行

sudo /etc/init.d/rpcbind restart

然后执行命令:

sudo /etc/init.d/nfs-kernel-server restart 

重启nfs服务。并执行

showmount localhost -e

查询是否成功。

3. nfs用作嵌入式linux的文件系统

1) 设置u-boot启动参数

在U-Boot中设置启动参数

U-Boot>setenv bootargs root=/dev/nfs nfsroot=192.168.1.2:/home/lz/nfs/rootfs ip=192.168.1.3:192.168.1.2:192.168.1.10:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200

其中:
root=/dev/nfs 并非真的设备,而是一个告诉内核要通过网络取得根文件系统。
nfsroot=你的主机IP:根文件系统路径
ip=你的开发板ip地址,注意开发板的ip地址只要和主机ip地址在一个网段内就可。
/home/lz/nfs/rootfs是主机的共享目录(即rootfs),192.168.1.2代表的是主机ip,192.168.1.3代表开发板ip,192.168.1.10是网关,eth0是主机和开发板相接的网卡。注意这是一整行没有换行,改完save一下。

U-Boot>sa

保存后,用boot启动linux

U-Boot>boot

2)挂载nfs文件系统

在linux系统里也可以挂载nfs文件

sudo mount -t nfs  192.168.1.2:/home/lz/nfs/rootfs /nfs/test
0 0