在6410上挂载NFS服务器


硬件平台:OK6410 虚拟机操作系统:ubuntu

Step1:pc端安装nfs服务器 在Ubuntu 上新建一个终端,依次输入以下命令:

apt-get install nfs-kernel-server

apt-get install portmap

*先查看有没有安装nfs-utils的安装包,命令:#rpm -q nfs-utils

如果没有安装包,需要挂载linux的安装包

nfs查看已连接客户端_nfs查看已连接客户端


接着 #mount /dev/cdrpm /mnt/ 将安装包挂载到/mnt的目录下

安装命令:#rpm -ivh nfs-utils-1.0.9-24.el5.i386.rpm


Step2:ip配置

1.命令格式为:ifconfig eth1 IP地址 netmask 子网掩码 up ;

2.虚拟机需要改为桥接模式:

nfs查看已连接客户端_IP_02

3.Vmnet和本地网卡的ip可以不用设置,只设置虚拟机的和开发板的,保证两者能ping通即可。如本例设施主机ip:192.168.2.1/24 开发板ip:192.168.2.10/24

(查看虚拟机的ip:在终端输入ifconfig命令;查看开发板的ip:把开发板和网线、串口线和电源接起来,打开DNW

nfs查看已连接客户端_IP_03

,同样输入ifconfig,可以查看开发板的ip)

//保持虚拟机、宿主机与开发板的IP在同一网段,并且能够ping通。(重要)

nfs查看已连接客户端_防火墙_04

                                                                     (*VMnet1的IP不能和虚拟机的IP一样,但要在同一个网段)

nfs查看已连接客户端_IP_05

nfs查看已连接客户端_防火墙_06

*如果是有多张网卡的,要在虚拟机的“Edit-Virtual Network Editor”那里设置,把桥接那里的选项选择为当前使用的网卡(如果只有一张网卡就不用设置,默认为Automatic),否则会出现本地电脑能和虚拟机ping通,但虚拟机也无法和本地电脑ping通的情况

nfs查看已连接客户端_nfs_07


4.Windows杀软与防火墙需关掉,不然会出现mount之后长时间没反应;

关闭虚拟机的防火墙:ufw disable。


Step3: pc端配置

1.修改/etc/exports,在末尾添加:/home 192.168.0.*(rw,sync,no_root_squash)

nfs查看已连接客户端_nfs_08


nfs查看已连接客户端_服务器_09




//共享目录是Linux下的home文件夹(可自定义)

// 192.168.0.* 允许访问nfs服务器共享目录的ip范围,可自定义

// rw客户机对共享目录权限

// sync同步写入存储器,可选

// no_root_squash允许客户机享有主机root身份,可选

// 括号中的三个参数之间不可有空格

// /root/nfs与 192.168.2.*间有一个空格

2.重启nfs服务:service nfs-kernel-server restart

service portmap restart

**注:

service nfs-kernel-server restart——重启NFS服务

service nfs-kernel-server start——启动NFS服务

service nfs-kernel-server stop——停止NFS服务

redhat下为nfs;ubuntu下为nfs-kernel-server;不加restart、start或stop会出现* Usage: nfs-kernel-server {start|stop|status|reload|force-reload|restart}这样的错误提示。

*检查服务是否已经运行:
#service portmap status
#service nfs-kernel-server status
3.使以上改动生效:exportfs –a

exportfs:-a:全部挂载(或卸载和-u连用时)/etc/exports文件内的设置
-r :重新挂载/etc/exports里面的设置,此外,亦同步更新/etc/exports及/var/lib/nfs/xtab的内容
-u:卸载某一目录
-v :在export的时候,将分享的目录显示到屏幕上

exportfs -arv重新挂载一次 /etc/exports的设置
exportfs –auv全部卸载

Step4:开发板挂载

在DNW上输入mount -t nfs -o olock 192.168.0.1:/home /temp

(*192.168.0.1是虚拟机的IP,home是虚拟机系统下要共享的文件,temp是开发板上存放共享文件的文件夹)

命令执行成功后,开发板的/temp目录就和Linux宿主机的 /home 目录建立了共享关系,在超级终端或DNW中执行 ls -al /temp ,可以看到宿主机/home 文件目录下的所有内容。另外可以在PC Linux上编译应用程序,放到PC机的/home目录,在超级终端或DNW 中执行cd /temp 命令进入到temp目录下面,执行应用程序,这样会加快开发


Tips:

如果不成功主要考虑:

1.共享目录权限;

2.Ip设置;

3.防火墙与杀软;

4.是否重复挂载;

5.虚拟机与windows间的共享目录不能被挂载;

6.有些情况下挂载命令不加“-o nolock”会报错。



首先挂载前,请仔细检查以下硬件设备是否都连接好:

1、电源线插上;

2、串口线连接好开发板COM0和PC机;

3、USB电缆连接开发板和PC机;

4、网线插上。

如果网线没接上,就会出现这样的问题

rpcbind: server x.x.x.x not responding, timed out

Root-NFS: Unable to get mountd port number from server, using default

Root-NFS: Server returned error -5 while mounting /home/glorin/sharetmp/filesys

针对这种问题,有两个地方要注意,除了上面的网线没有插上外,另外的就是主机IP(我的是虚拟机中的Ubuntu的IP)和开发板的IP不在同一个网段内。

解决方法

1.改主机IP;

先在DNW查看开发板的IP,接着把主机和虚拟机的IP网段设置和开发板的一样。

开始->控制面板->网络和共享中心->

nfs查看已连接客户端_IP_10


点击本地连接->属性->

nfs查看已连接客户端_nfs查看已连接客户端_11

点击TCP/IPv4,把IP设置在同一个网段

nfs查看已连接客户端_nfs_12

对于VMware Network Adapter VMnet1的IP也设置在和主机同样的网段,操作一样。


2.改开发板IP

那么怎么才知道开发板IP?


正确的查看你开发板上的IP地址是在设置uboot启动参数后利用printenv,在显示你的设置uboot参数之前,前面几行会有显示

ipaddress=x.x.x.x

serverip=x.x.x.x

......

这其中的ipaddress才是你开发板上真正的ip地址,即便你在setenv中改了,也是没有改过来!你会发现这两个ip是在同一个网段的。

好,这就是你要设置的两个ip。既然如此,那就更改ip吧。(已经改好的不用改)

更改主机IP方法:

$ sudo vim etc/network/interfaces

然后设置:

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet static

address 192.168.1.20(参考,请写刚才与ipaddress同一网段内,或者干脆写serverip中的IP)

netmask 255.255.255.0

gateway 192.168.1.1(参考,这个应该知道该怎么设置吧)

修改后重启网络配置:

sudo /etc/init.d/networking restart

完了保证设置完全正确,对于使用ubuntu系统的人,请修改/etc/NetworkManager/nm-system-settings.conf

[main]

plugins=ifupdown,keyfile

[ifupdown]

managed=false

将managed=ture改为false。

然后执行sudo /etc/init.d/network-manager restart,重新配置一下。(对于DNS,设置的话:sudo /etc/resolv.conf即可)

至此主机IP地址设置完成。

或者你不想修改主机IP,说我还想上网的。这个关系也不大,成功挂载及烧写文件系统成功后再改回去就是了。

好吧,那就改开发板上的IP,这个你的先能够进入开发板环境