您的位置 首页 解答

ARM开发板怎么挂载NFS开发环境的办法过程(mini2440无盘发动)

这个部分还是比较不好弄的。想象要是不能通过nfs挂载网盘的话,他提出这个方法也就没什么用了。这样看的话,是比较完美了。在你实验之前你

这个部分仍是比较不好弄的。幻想要是不能经过nfs挂载网盘的话,他提出这个办法也就没什么用了。这样看的话,是比较完美了。在你试验之前你能够现挂载一下(用busybox生成文件体系后不用编译就能够了)承认没问题在编译下载镜像文件。还有在作qt文件应用程序的时分很大用这种办法,信任不用考虑编译和削减的状况下就能够直接运转了。

首要介绍一下我的开发环境:
PC环境是ubuntu9。04,开发板为友善之臂的MINI2440
主机IP:192.168.50.72 网关:192.168.50.1 子网掩码:255.255.255.0
开发板IP:192.168.50.168网关:192.168.50.1 子网掩码:255.255.255.0
为了能和主机树立起衔接我有必要得把开发板IP改成和主机一个网段的 .
这儿首要要阐明的是ubuntu的静态IP设置问题:
默许装置完成后,右上角的网络装备上 wired ..和eth0为灰色。不能点选 。
然后禁用networdmanager发动network以太网设置静态IP的时分,不管怎样设置,子网掩码都和网关相同,
比方说:地址:192.168.0.22
子网掩码: 192.168.0.1 //不管怎样输入255.255.255.0 ,都不可!
网关: 192.168.0.1 //这儿改了255.255.255.0的话,上面就也成255.255.255.0了。(auto ethernet是能够联上网的)。所以就上GG找答案,找解决办法。
进入FC10,履行终端指令(也能够用VI修正)
$ su -c ‘gedit /etc/sysconfig/networking/devices/ifcfg-eth0′
直接修正文件中的子网掩码信息就能够
代码为:
# Broadcom Corporation NetXtreme BCM5752 Gigabit Ethernet PCI Express
DEVICE=eth0
HWADDR=00:16:e6:db:c2:96
ONBOOT=yes
BOOTPROTO=static //这个应该是“static”,而不是“dhcp”或“none”;
USERCTL=yes
PEERDNS=yes
IPV6INIT=no
NM_CONTROLLED=yes//这个应该是“yes”,如不修正,链接仍是disconnected;
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=192.168.50.72
GATEWAY=192.168.50.1
然后从头激活下网卡就能够了.
#service network restart
设置完成后,右上角的网络装备上System eth0与auto ethernet就能够点选了.
需求阐明的是由于我之前没有设置静态IP之前经过 NFS 发动体系发动不了.
衔接主机和开发板
我挑选了串口线和网线衔接起了主机和开发板
衔接好电源,串口线,网线,翻开串口终端
装备minicom(在FC10终端输入指令minicom -s)
进入到minicom装备界面后挑选 :Serial port setup
然后按照下面的设置下就OK了
A – Serial Device : :/dev/ttyS0
B – Lockfile Location : /var/lock
C – Callin Program :
D – Callout Program :
E – Bps/Par/Bits : 115200 8N1
F – Hardware Flow Control : No
G – Software Flow Control : No
树立和装备 NFS 服务
(1)设置同享目录
运转指令
#gedit /etc/exports
修正 nfs 服务的装备文件(留意:第一次翻开时该文件是空的),增加以下内容:
/opt/FriendlyARM/mini2440/root_qtopia *(rw,sync,no_root_squash)
其间:
/opt/FriendlyARM/mini2440/root_qtopia 表明 nfs 同享目录,它能够作为开发板的根文件体系经过 nfs 挂接;
* 表明一切的客户机都能够挂接此目录
rw 表明挂接此目录的客户机对该目录有读写的权利
no_root_squash 表明答应挂接此目录的客户机享有该主机的 root 身份
(2)经过指令发动和中止 nfs 服务
在指令行下运转:
#/etc/init.d/nfsrestart
这将发动 nfs 服务,能够输入以下指令查验 nfs 该服务是否发动。
# mount -t nfs 192.168.50.72: /opt/FriendlyARM/mini2440/root_qtopia/mnt/
如 果 没 有 出 现 错 误 信 息 , 您 将 可 以 浏 览 到 /mnt 目 录 中 的 内 容和
/opt/FriendlyARM/mini2440/root_qtopia 是共同的。
运用这个指令能够中止 nfs 服务:
#/etc/init.d/nfs stop
检查nfs服务器是否敞开:#service nfs status
重启对应的2个服务: #service portmap restart
#service nfs restart
检查防火墙看是否屏蔽了nfs端口
#service iptables stop
#service iptables status
经过 NFS 发动体系
当 NFS 服务设置好并发动后,咱们就能够把 NFS 作为根文件体系来发动开发板了。经过运用 NFS 作为根文件体系,开发板的“硬盘”就能够变得很大,由于您运用的是主机的硬盘,这是运用 linux 作为开发常常运用的办法,
设置方针板发动形式为 Nand Flash 发动,衔接好电源,串口线,网线;翻开串口终端,在开机或许复位的时分迅速按下 PC 机的空格键,这样咱们就进入了 vivi 形式,输入以下指令:
Supervivi> param set linux_cmd_line “console=ttySAC0 root=/dev/nfs
nfsroot=192.168.50.72:/opt/FriendlyARM/mini2440/root_qtopia
ip=192.168.50.168:192.168.50.72:192.168.50.1:255.255.255.0:mini2440:eth0:off”
(1,假如经过minicom监控串口,如呈现乱码,可将波特率调高点,我调的是
115200 2,输入指令过长的话,发现minicom无法
换行,其实也能够设置一下:一起按下CTRL+A松开后按W换行开关)
留意:要是你用的是usb转串口console=ttyUSB0。还有便是你要把你想挂载的文件体系放在同享的文件里边(root_qtopia)
其间 ,param set linux_cmd_line 是设置发动 linux 时的指令参数。其各参数的意义如下:
nfsroot 后边是自己开发主机的 IP 地址。
“ip=”后边:
第一项(192.168.50.168)是方针板的暂时 IP(留意不要和局域网内其他 IP 抵触);
第二项(192.168.50.72)是开发主机的 IP;
第三项(192.168.50.1)是方针板上网关(GW)的设置;
第四项(255.255.255.0)是子网掩码;
第五项是开发主机的姓名(一般无关紧要,可随意填写)
eth0 是网卡设备的称号
然后输入 boot,按回车就能够经过 nfs 发动体系了。
在开发板上挂载NFS网络文件体系(Linux 中最常用的办法便是选用 NFS 来履行各种程序,这样能够不用花费许多时刻下载程序,尽管在此下载 hello 程序用不了多久,一旦您的应用程序变得越来越大,您就会发现运用 NFS 运转的便利地点。)
经过NFS发动体系后,在开发板终端输入
[root@FriendlyARM /]# mount -t nfs -o nolock 192.168.50.72:/opt/FriendlyARM/mini2440/root_qtopia /mnt/
这儿我刚开始遇到了一个问题,认为为什么开发板不能mount,由于提示如下过错信
息: mount: mounting
192.168.50.72:/opt/FriendlyARM/mini2440/root_qtopia on /mnt/ failed: No
such file or directory
所以我就ls看了一下,发现没有mnt文件夹,所以就自己创立了一个.再次mount就没有问题了.
[root@FriendlyARM /]# ls
bin etc home linuxrcproc sbin tmp var
dev hello lib opt root sys usr www
[root@FriendlyARM /]# mkdir mnt
[root@FriendlyARM /]# ls
bin hello linuxrcproc sys var
dev home mnt root tmp www
etc lib opt sbin usr
[root@FriendlyARM /]# mount -t nfs -o nolock 192.168.50.72:/opt/FriendlyARM/mini
2440/root_qtopia/mnt/
[root@FriendlyARM /]# cd /mnt/
[root@FriendlyARM /mnt]# ls
bin hello linuxrcproc sys var
dev home mnt root tmp www
etc lib opt sbin usr
mount成功后你进入到/mnt目录下就能够看到你主机root_nfs目录下的内容了.
至此我成功在ARM开发板上挂载NFS网络文件体系.
from:
http://www.cembed.com/bbsxp/ShowPost.asp?ThreadID=6579
下边是我转载的完美的完成ubuntu的nfs办法过程:
网络文件体系(NFS)
一、NFS简介
1、NFS便是Network File
System的缩写,它的最大功用便是能够经过网络让不同的机器,不同的操作体系互相同享文件(share
files)——能够经过NFS挂载长途主机的目录,拜访该目录就像拜访本地目录相同,所以也能够简略的将它看作一个文件服务器(File
Server)。
留意:一般来说,运用NFS服务能够便利地使各unix-like体系之间完成同享,但假如需求在unix-like和windows体系之间同享,那就得运用samba了。
2、NFS是经过网络进行数据传输,那么NFS运用哪些端口呢,答案是……不知道,由于NFS传输数据时运用的端口是随机的,仅有的约束便是小于1024,客户端怎样知道服务器运用的是哪个端口,此刻就要用到长途过程调用RPC。
其实,NFS运转在SUN的RPC(Remote Procedure
Call,长途过程调用)基础上,RPC界说了一种与体系无关的办法来完成进程间通讯,由此,NFS Server也能够看作是RPC
Server。正
由于NFS是一个RPC服务程序,所以在运用它之前,先要映射好端口——经过portmap设定。比方:某个NFS
Client建议NFS服务恳求时,它需求先得到一个端口(port),所以它先经过portmap得到port
number(不仅是NFS,一切的RPC服务程序发动之前,都需求先设定好portmap)。
留意:在发动RPC服务(比方NFS)之前,需求先发动portmap服务。
3、NFS答应体系将其目录和文件同享给网络上的其他体系。经过NFS,用户和应用程序能够拜访长途体系上的文件,就像它们是本地文件相同。那么NFS最值得留意的长处有:
(1)本地工作站能够运用更少的磁盘空间,由于常用数据能够被保存在一台机器上,并让网络上的其他机器能够拜访它。
(2)不需求为用户在每台网络机器上放一个用户目录,由于用户目录能够在NFS服务器上设置并使其在整个网络上可用。
(3)存储设备如软盘、光驱及USB设备能够被网络上其它机器运用,这或许能够削减网络上移动设备的数量。
二、与NFS相关的几个文件和指令
1、/etc/exports
对NFS服务的拜访是由exports来同意,它枚举了若干有权拜访NFS服务器上文件体系的主机名。
2、/sbin/exportfs
保护NFS的资源同享,能够经过它从头设定/etc/exports的同享目录,卸载NFS
Server同享的目录或许从头同享等。
3、/usr/sbin/showmount
上面的文件首要用在NFS
Server端,而showmount则首要用在Client端,showmount能够用來检查NFS同享的目录资源。
4、/var/lib/nfs/xtab
NFS的记载文档:经过它能够检查有哪些Client衔接到NFS主机的记载。
下面这几个并不直接担任NFS,实践上它们是担任一切的RPC。
5、/etc/default/portmap
实践上,portmap担任映射一切的RPC服务端口,它的内容十分十分之简略。
6、/etc/hosts.deny
设定回绝portmap服务的主机,即制止拜访的客户端IP列表。
7、/etc/hosts.allow
设定答应portmap服务的主机,即答应拜访的客户端IP列表。
三、NFS装置
在主机上装置NFS服务软件,由于Debian/Ubuntu上默许是没有装置的。
1、装置端口映射器portmap(可选)
$
sudo apt-get install portmap
2、在终端提示符后键入以下指令装置NFS服务器
$ sudo apt-get install nfs-kernel-server
3、装置NFS客户端(可选)
$ sudo apt-get install nfs-common
留意:nfs-
kernel-server和nfs-common都依赖于portmap。别的,在一些文档中提出还需求运用apt-get来手动装置NFS的客户端
nfs-common,以及端口映射器portmap,但其实这是没有必要的,由于在装置nfs-kernel-server时,apt会主动把它们装置
好。
这样,宿主机就相当于NFS
Server。相同地,方针体系作为NFS的客户端,需求装置NFS客户端程序。假如是Debian/Ubuntu体系,则需求装置nfs-common(第3步)。
四、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)”。
2、装备/etc/hosts.deny
制止任何host(主机)能和你的NFS服务器进行NFS衔接。在该文件中参加:
### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
3、装备/etc/hosts.allow
答应那些你想要的主机和你的NFS服务器树立衔接。
下列过程将答应任何IP地址以192.168.1最初的主机衔接到NFS服务器上,详细要看你方针板的端口地址,也能够指定特定的IP地址。在该文件中参加:
### NFS DAEMONS
portmap: 192.168.1.
lockd:
192.168.1.
rquotad:
192.168.1.
mountd:
192.168.1.
statd: 192.168.1.
经过/etc/hosts.deny和/etc/hosts.allow设置对portmap的拜访,选用这两个配
置文件有点相似”mask”的意思。先在/etc/hosts.deny中制止一切用户对portmap的拜访,再在/etc/hosts.allow中
答应某些用户对portmap的拜访。
然后重启portmap daemon:
$
sudo /etc/init.d/portmap restart
4、装备/etc/exports
(1)同享的NFS目录在/etc/exports中列出,这个文件操控对目录的同享(NFS挂载目录及权限由该文件界说),书写规则是每个同享为一行)。
格局:[同享目录] [主机名或IP](参数,参数…)
第一个参数是要让客户机拜访的目录,第二个是你答应的主机IP,最终的()内是拜访操控办法。
留意:客户端能够运用主机名或许IP地址指定,在主机名中能够运用通配符(*),IP地址后也能够跟掩码段(/24),但出于安全原因这种状况应该尽量防止。客户端的阐明后可在圆括号中参加一系列参数。很重要的一点,不要在最终一个客户端声明的后边留下任何空白或许没封闭括号,由于空白都被解说成客户端的分隔符。
例如我要将/opt/FriendlyARM/mini2440/root_nfs目录让用户的IP同享,则在该文件结尾增加下列句子:
/opt/FriendlyARM/mini2440/root_nfs
*(rw,sync,no_root_squash)
其间:
/opt/FriendlyARM/mini2440/root_nfs
表明NFS同享目录,它能够作为开发板的根文件体系经过NFS挂接;
* 表明一切的客户机都能够挂接此目录;
rw 表明挂接此目录的客户机对该目录有读写的权利;
sync 表明一切数据在恳求时写入同享,即数据同步写入内存和硬盘;
no_root_squash 表明答应挂接此目录的客户机享有该主机的root身份。
留意:能够用主机名来替代*,尽量指定主机名以便使那些不想其拜访的体系不能拜访NFS挂载的资源。别的,最好加上sync,
不然$ sudo exportfs -r时会给出正告,sync是NFS的默许选项。
(2)下面是一些NFS同享的常用参数:
ro
只读拜访
rw 读写拜访
sync 一切数据在恳求时写入同享
async NFS在写入数据前能够相应恳求
secure NFS经过1024以下的安全TCP/IP端口发送
insecure NFS经过1024以上的端口发送
wdelay 假如多个用户要写入NFS目录,则归组写入(默许)
no_wdelay 假如多个用户要写入NFS目录,则当即写入,当运用async时,无需此设置
hide 在NFS同享目录中不同享其子目录
no_hide 同享NFS目录的子目录
subtree_check 假如同享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默许)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 同享文件的UID和GID映射匿名用户anonymous,合适共用目录
no_all_squash 保存同享文件的UID和GID(默许)
root_squash root用户的一切恳求映射成如anonymous用户相同的权限(默许)
no_root_squash root用户具有根目录的彻底办理拜访权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID
(3)检查NFS Server的export
list:
$ sudo showmount -e
若更改了/etc/exports,运转以下指令进行更新:
$ sudo exportfs -r
然后重启NFS服务:
$ sudo /etc/init.d/nfs-kernel-server restart
五、发动和中止NFS服务
1、发动NFS的办法和发动其他服务器的办法相似,首要需求发动portmap和NFS这两个服务,并且portmap服务一定要先于NFS服务发动。
$ sudo /etc/init.d/portmap start
$ sudo
/etc/init.d/nfs-kernel-server start
2、中止NFS服务
在中止NFS服务的时分,需求先中止NFS服务再中止portmap服务,假如体系中还有其他服务需求运用portmap服务,则能够不中止portmap服务。
$ sudo /etc/init.d/nfs-kernel-server stop
$ sudo /etc/init.d/portmap stop
3、从头发动portmap和NFS服务
$ sudo /etc/init.d/portmap restart
$
sudo /etc/init.d/nfs-kernel-server restart
4、检查portmap和NFS服务状况
$ sudo /etc/init.d/portmap status
$ sudo /etc/init.d/nfs-kernel-server status
5、设置主动发动NFS服务
(1)检查NFS的运转等级:
$ sudo chkconfig –list portmap
$ sudo chkconfig –list nfs-kernel-server
(2)在实践运用中,假如每次敞开核算机之后都手艺发动NFS服务是十分费事的,此刻能够设置体系在指定的运转等级主动发动portmap和NFS服务。
$ sudo chkconfig –level 235 portmap on
$ sudo chkconfig –level 235 nfs-kernel-server on
六、NFS客户端装备(NFS测验)
1、在NFS服务器发动后,还需求检查Linux服务器的防火墙设置(一般需求封闭防火墙服务),保证没有屏蔽
NFS运用的端口和答应通讯的主机,首要是检查Linux服务器iptables、ipchains等选项的设置,以及/etc/hosts.deny,
/etc/hosts.allow文件。一般都是在内部局域网中进行开发,再装置体系时最好不要装置防火墙等网络安全软件,以便利运用时的装备。
假如你有防火墙,请保证32771、111和2049端口坚持敞开。
2、手动挂载
运用mount指令来挂载其他机器同享的NFS目录。
格局:$ sudo mount [Server IP]:/[share dir] [local
mount point]
例如:
$ sudo mount -t nfs [-o nolock]
localhost:/opt/FriendlyARM/mini2440/root_nfs /mnt/root_nfs 或
$ sudo mount -t nfs -o nolock
192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs
/mnt/root_nfs
其间,localhost能够是详细的IP地址,一起挂载点/mnt/root_nfs目录有必要现已存在,并且在/mnt/root_nfs目录中没有文件或子目录。
3、主动挂载
(1)另一个挂载其他机器的NFS同享的办法便是在/etc/fstab文件中增加一行,该行有必要指明NFS服务器的主机名、服务器输出的目录名以及挂载NFS同享的本机目录,一起有必要是根用户才干修正/etc/fstab文件。
格局:server.mydomain.com:/usr/local/pub /pub nfs
rsize=8192,wsize=8192,timeo=14,intr
留意:能够依据实践状况修正NFS服务器同享文件夹”servername.mydomain.com:/usr/local/pub”和在本机的挂载点”/pub”,一起挂载点/pub在客户端机器上有必要存在。
(2)NFS常见挂载参数:
timeo 假如超时,客户端等候的时刻,以十分之一秒核算
retrans 超时测验的次数
bg 后台挂载(很有用)
hard 假如server端没有响应,那么客户端一向测验挂载
rsize 读块巨细
wsize 写块巨细
4、运用autofs来挂载NFS
(1)挂载NFS同享的第三种办法是运用autofs,它运用automount看护进程来办理挂载点,只在文件体系被拜访时才动态地挂载。
autofs拜访主映射装备文件/etc/auto.master来决定要界说哪些挂载点,然后运用适用于各个挂载
点的参数来发动automount看护进程。主映射装备中的每一行都界说一个挂载点,一个分隔的映射文件界说在该挂载点下要挂载的文件体系。如/etc
/auto.misc文件或许会界说/misc目录中的挂载点,这种联系在/etc/auto.master文件中会被界说。
(2)/etc/auto.master文件中的每个项目都有3个字段,第1个字段是挂载点;第2个字段是映射文件的方位;第3个字段可选,能够包含超时数值之类的信息。
例如:要在机器上的/misc/myproject挂载点上挂载长途机penguin.example.net中的/project52目录。
在/etc/auto.master文件中增加以下行:
/misc /etc/auto.misc –timeout 60
在/etc/auto.misc文件中增加以下行:
myproject -rw,soft,intr,rsize=8192,wsize=8192
penguin.example.net:/proj52
/etc/auto.misc中的第1个字段是/misc子目录的称号,该目录被automount动态地创立,它不应该在客户端机器上实践存在;第2个字段包含挂载选项,如rw代表读写拜访权,第3个字段是要导出的NFS的方位,包含主机名和目录。
(3)autofs是一种服务,要发动这项服务,在shell提示下键入以下指令:
$ sudo /sbin/service autofs restart
要检查活泼的挂载点,在shell提示下键入以下指令:
$ sudo /sbin/service autofs status
假如在autofs运转时修正了/etc/auto.master装备文件,则有必要在shell提示下键入以下指令来告诉automount看护进程从头载入装备文件:
$ sudo /sbin/service autofs reload
5、能够运转df指令检查是否挂载成功:
$ sudo df
撤销挂载的指令如下:
$ sudo umount /mnt/root_nfs
七、方针板NFS装备操作
主机IP:192.168.1.101
方针板IP:192.168.1.230
将USB转串口衔接上,在终端输入minicom与板子连起,作为“超级终端”运用。
发动方针板并连通网络后,首要检查方针板kernel本身是否支撑NFS,在minicom中输入cat
/proc/filesystems指令检查其间是否有NFS一行,若没有则表明内核不支撑NFS,就需求从头编译和烧写内核;有则OK,接下来就能够直接进行mount操作了。
详细指令是:
# mount -t
nfs -o nolock
192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs
/mnt/root_nfs
无任何提示表明成功,这时能够进入/mnt/root_nfs目录,对文件进行cp、mv等操作。
可是假如运用指令mount -t nfs
192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs
/mnt/root_nfs,则会有如下的过错提示(也便是省去了”-o
nolock”):
# mount -t
nfs 192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs
/mnt/root_nfs
portmap: server localhost
not responding, timed out
RPC: failed to contact portmap (errno -5).
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
lockd_up: makesock failed, error=-5
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
这时假如运用ls
/mnt/root_nfs指令检查该目录内容时,你会发现此刻NFS确的确实现已挂载成功了。
然后撤销挂载的时分会呈现如下的过错提示:
#
umount /mnt/root_nfs/
lockd_down: no lockd running.
而成功撤销挂载时没有任何提示,相同此刻NFS也的确现已撤销挂载了。
那么呈现上面过错提示的或许原因是:
nfs
mount默许选项包含文件锁,依赖于portmap供给的动态端口分配功用。
简略的解决办法:kill文件锁(lockd)或许运用mount -o
nolock指令。
上面说的文件锁详细是什么原因,现在还没有找到更好的解决办法。不过,假如主机防火墙有设置时,也或许导致方针板无法正常拜访。
想要运用指令端口,只需进入MINICOM(主见用笔记本的话,你的端口不能用TTY0而是TTYUSB0)进入,ENTER
后就能够输入指令了。然后直接,挂载。能够用。可是你的ETH0肯定会和你的无限抵触。自己觉得改了恐怕不可。由于他会不是别你的网卡,导致NFS不能衔接

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/263428.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部