第二步:配置NFS
1、配置portmap
方法1:编辑/etc/default/portmap,将"-i 127.0.0.1"去掉;
方法2:$ sudo dpkg-reconfigure portmap,出现“正在设定portmap”软件包设置界面,对Should portmap be bound to the loopback address?选择“否(No)”。
第三步:创建共享目录
例如我们采用/home/localhost/arm6410/root作为NFS共享目
$ sudo mkdir arm6410
$ cd arm6410
$ sudo mkdir root
$ chmod 777 arm6410 (更改文件权限,这个一定要改,不然很可能后面会出问题)
$ chmod 777 root (更改文件权限,这个一定要改,不然很可能后面会出问题)
第四步:配置共享目录及yaffs2文件
修改主机上/etc/exports文件的内容,添加一行:/home/localhost/arm6410/root *(rw,sync,no_root_squash)
$ sudo vim /home/localhost/arm6410/root *(rw,sync,no_root_squash)
注:后面设置uboot启动参数的时候,目录名要和这个一样。
其中:
/home/localhost/arm6410/root 表示NFS共享目录,它可以通过NFS挂接作为开发板的根文件系统;
* 表示所有的客户机都可以挂接此目录,当然你也可以指定具体的IP,如192.168.x.x;
rw 表示挂接此目录的客户机对该目录有读写的权力;
sync 表示所有数据在请求时写入共享,即数据同步写入内存和硬盘;
no_root_squash 表示允许挂接此目录的客户机享有该主机的root身份;
配置好文件共享目录后,将yaffs2文件放置在共享目录下,然后解压即可。
第五步:启动NFS服务
在完成前面的配置后,首先需要启动portmap和NFS这两个服务,并且 portmap服务一定要先于NFS服务启动。
$ sudo /etc/init.d/portmap start
$ sudo /etc/init.d/nfs-kernel-server start
其他可能要用到了:
停止NFS服务
在停止NFS服务的时候,需要先停止NFS服务再停止portmap服务,如果系统中还有其他服务需要使用portmap服务,则可以不停止 portmap服务。
$ sudo /etc/init.d/nfs-kernel-server stop
$ sudo /etc/init.d/portmap stop
重新启动portmap和NFS服务
$ sudo /etc/init.d/portmap restart
$ sudo /etc/init.d/nfs-kernel-server restart
检查portmap和NFS服务状态
$ sudo /etc/init.d/portmap status
$ sudo /etc/init.d/nfs-kernel-server status
第六步:配置目标板和主机(我的是虚拟机中Ubuntu)IP
这两个IP一定要在同一个网段内,否则会出现很多的问题,很多像Root-NFS: Server returned error -5 while mounting /forlinx/root的问题就是由此引起。
假设:
主机IP:192.168.1.20
目标板IP:192.168.1.10
关于怎么知道目标板的IP,在你设置uboot环境变量后,使用printenv,既可以查看到目标板的IP信息。
那么这一步就有两种选择:1是更改主机IP,这个相对简单。(当然以后为了上网可以再改回去)
$ sudo vim etc/network/interfaces
然后设置:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.1
保存后重启
sudo /etc/init.d/networking restart