通过网络linux开机自动挂载nfs 跟通过nfslinux开机自动挂载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 : N1
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/nfs
这将启动 nfs 服务,可以输入以下命令检验 nfs 该服务是否启动。
# mount -t nfs 192.168.50.72:
/opt/FriendlyARM/mini2440/root_qtopia
如 果 没 有 出 现 错 误 信 息 , 您 将 可 以 浏 览 到 /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监控串口,如出现乱码,可将波特率调高点,我调的是
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
这里我刚开始遇到了一个问题,以为为什么开发板不能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
[root@FriendlyARM /]# mkdir mnt
[root@FriendlyARM /]# ls
[root@FriendlyARM /]# mount -t nfs -o nolock
192.168.50.72:/opt/FriendlyARM/mini
2440/root_qtopia
[root@FriendlyARM /]# cd /mnt/
[root@FriendlyARM /mnt]# ls
mount成功后你进入到/mnt目录下就可以看到你主机root_nfs目录下的内容了.
至此我成功在ARM开发板上挂载NFS网络文件系统.from:
网络文件系统(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注意:
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
mountd:ALL
rquotad:ALL
3、配置/etc/hosts.allow
允许那些你想要的主机和你的NFS服务器建立连接。
下列步骤将允许任何IP地址以192.168.1开头的主机连接到NFS服务器上,具体要看你目标板的端口地址,也可以指定特定的IP地址。在该文件中加
### NFS DAEMONS
portmap: 192.168.1.
192.168.1.
192.168.1.
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共享的常用参数:
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
$ 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
/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文件。通常都是在内部局域网中进行开发,再安装系统时最好不要安装防火墙等网络安全软件,以方便使用时的配置。
如果你有防火墙,请确保3和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 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也确实已经取消挂载了。
那么出现上面错误提示的可能原因是:
mount默认选项包括文件锁,依赖于portmap提供的动态端口分配功能。
简单的解决方法:kill文件锁(lockd)或者使用mount -o
nolock命令。
上面说的文件锁具体是什么原因,目前还没有找到更好的解决办法。不过,如果主机防火墙有设置时,也可能导致目标板无法正常访问。
想要使用命令端口,只要进入MINICOM(主意用笔记本的话,你的端口不能用TTY0而是TTYUSB0)进入,ENTER
后就可以输入命令了。然后直接,挂载。可以用。但是你的ETH0肯定会和你的无限冲突。自己觉得改了恐怕不行。因为他会不是别你的网卡,导致NFS不能连
NFS挂载到其他机器的详细步骤
挂载NFS的两种方法
常见嵌入式工具的配置和使用 (minicom, dnw, nfs等)
NFS挂载的2种方式
Linux访问远程服务器文件——NFS+mount挂载
Linux 挂载(nfs)
NFS文件系统操作命令
NFS服务器设置及mount命令挂载
Hodoop HDFS NFS GateWay 挂载到其他机器深入详解
nfs挂载和取消挂载命令
没有更多推荐了,设备:一台服务器和一台客户端,这里我们把装在PC机上的RedHat作为服务器,而客户端则是嵌入式linux开发板。
环境:开发板已启动,连接好串口和网线,串口用于下发命令控制开发板,网线则用于NFS
1、确认Redhat上装好了NFS软件包,在终端输入
[root@localhost&examples]#&rpm&-q&nfs-utilsnfs-utils-1.0.9-24.el5如果出现以上结果,表示已经安装好了NFS,否则,请先安装nfs-utils软件包。
2、配置NFS服务器
[root@localhost&examples]#&vi&/etc/exports打开配置文件后,一般空空如也,自己写,写入以下配置信息:
/home/example/rootfs&192.168.2.*(rw,sync,no_root_squash)
/home/example/rootfs&&&&&&&&&&--&共享的文件夹路径
192.168.2.*&&&&&&&&&&&&&&&&&&&&&&&&&--&允许访问的IP号,当然也可以具体指定一个,比如192.168.2.11
&(rw,sync,no_root_squash)&&--&权限等,具体参数的意思可以百度
所以配置信息还是比较简单。
3、启动/重启NFS服务器
不管NFS事先有没有启动,都可以用重启命令,如下:
[root@localhost&examples]#&/etc/init.d/nfs&restart
OK,至此服务器端配置完毕,接下来在客户端开发板上使用,即所谓的挂载文件系统。
在挂载之前,需确认网络是否通了。将网线连上,通过ping命令确保网络正常,比如服务器IP设置为192.168.2.22,开发板IP设置为192.168.2.11,
两者子网掩码均为255.255.255.0,这样在开发板上通过命令ping&192.168.2.22即能看到响应。
4、挂载文件系统
在开发板上的mnt文件夹下新建nfs文件夹,用于映射服务器上共享的文件夹,当然你也可以在其他地方建,只要输入命令正确,命令如下:mount&-t&nfs&192.168.2.22:/home/example/rootfs&/mnt/nfs
mount&-t&nfs&&&&&&&&&&&&--&挂载命令,表示挂载NFS共享的文件夹
192.168.2.22:/home/example/rootfs&&--&服务器端共享的文件夹路径,格式为&IP:/共享文件夹路径
/mnt/nfs&&&&&&&&&&&&&&&&&&--&映射到本地的文件夹,即客户端开发板上的文件夹。
注:如果输入命令,出现如下错误&svc:&failed&to&register&lockdv1&RPC&service&(errno&111)&&&,则改用如下命令:
&&&&&&&mount&-t&nfs&-o&nolock&192.168.2.22:/home/example/rootfs&/mnt/nfs
5、挂载完毕,使用
挂载完毕后,在服务端对共享文件夹里的操作,均能在客户端中映射的文件夹中看见。
&往服务端共享文件夹中拷贝一个文件,[root@localhost&examples]#&cp&test.c&&rootfs/
&则在客户端能也看见,在客户端命令:[root@localhost&led]#&cd&/mnt/nfs/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&[root@localhost&nfs]#&ls
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&test.c
OK,至此挂载完毕,其实就是通过NFS共享了一个文件夹。
阅读(...) 评论()NFS挂载的2种方式
在第一期视频 :
第0课第7节_刚接触开发板之制作根文件系统及初试驱动.wmv ,因为要测试驱动,所以必须要把驱动程序弄到开发板里才行。
于是韦老师介绍了两种方式:
1 仅用flash上的根文件系统启动后,手工MOUNT NFS
使用NFS作为根文件系统来启动
视频中只介绍了开发板这端uboot参数的设置,并未介绍Ubuntu端 NFS服务器的设置,这就导致很多学员学习时遇到难以逾越的问题:NFS挂载,从而影响学习进度和热情。此帖就是解决NFS相关的问题,希望对初学者有所帮助。先介绍:1 仅用flash上的根文件系统启动后,手工MOUNT NFS, 前提条件:
1. 开发板上要烧写好文件系统
2. 能正常开机进入Linux系统
3.uboot中启动参数类似这种
bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
大概说下步骤:
1.搭建(下载)、配置和重启NFS服务器
2.Ping 通服务器
3.执行挂载命令
NFS是什么?
NFS:Network File System(网络文件系统),NFS只是一种文件系统,本身并没有传输功能,是基于RPC协议实现的,为C/S架构。也就是说,NFS也只是文件系统而已,与jffs2,yaffs,ext4等是一类东西。但是NFS的特殊之处在于,它可以通过网络来挂载,而不用烧写到设备上。这就跟网吧里使用PXE启动来搭建无盘系统一样:每台电脑并没有安装硬盘,而是直接通过PXE启动服务器上的系统,看起来每台电脑都有硬盘,其实都是挂载服务器上的硬盘。
NFS怎么用?
前边已经介绍过,NFS是C/S架构,也就是说,使用NFS需要搭建服务器和客户端。客户端很简单,自带的uboot已经添加了对NFS客户端的支持,我们只需要管NFS服务器。这个服务器其实跟TFTP、Samba服务器、Ftp服务器也是一类的东西,直接在Ubuntu上使用命令安装即可,
先下载NFS服务器,演示如下:
sudo apt-get install nfs-kernel-server
很显然,我已经安装过了,在提供的Ubuntu9.10里也安装过了,继续往下走——–配置NFS服务器
sudo vi /etc/exports
默认状态下是没有配置的,可以参考给出的例子或者百度来决定配置信息
例如,可以配置成这样:
就是在文件里添加了
*(rw,sync,no_root_squash)
/var/lib/tftpboot
*(rw,sync,no_root_squash)
然后保存,重启NFS服务器或者Ubuntu(如果不重启,配置不会生效),命令如下:
sudo /etc/init.d/nfs-kernel-server restart
简单解释各个参数的意义:
:允许客户端挂载的目录,可添加任意多个,如果不设置,服务器将不允许客户端挂载。
:允许所有IP的主机挂载该目录
:一些权限设置,比如是否能够读写(可百度,更详尽)
现在NFS服务器就可以用了。
1.查看开发板和Ubuntu的IP,设置开发板IP并ping通NFS服务器
2.把你想拷贝到开发板上的文件都复制到刚才设置的目录里,例如拷贝到 /work/nfs,然后在开发板上执行挂载命令
nolock,vers=2
10.0.0.147:/work/nfs
解释一下:
:使用的协议
: 使用的NFS版本号
: NFS服务器的IP(NFS服务器运行在哪个系统上,就是哪个系统的IP)
/work/nfs: 要挂载的目录(Ubuntu的目录)
: 要挂载到的目录(开发板上的目录,注意挂载成功后,/mnt下原有数据将会被隐藏,无法找到)
3.现在进入开发板上的/mnt目录,就可以看到Ubuntu上要传输的文件了
4.测试驱动,测试应用程序都可以在/mnt目录下进行,并且这个/mnt目录也不会占用开发板的Flash空间,很方便。
1 仅用flash上的根文件系统启动,手工MOUNT NFS 介绍完毕
强烈推荐这种方式,因为简单。随时想挂载就挂载,Ubuntu系统即使不开机(前提是ubuntu ip没变)也不影响开发板的启动。而 7.2 使用NFS作为根文件系统来启动 ,若Ubuntu未启动或者文件系统有问题,开发板根本无法开机,严重影响体验。
可能遇到的问题
典型的网络不通,检查彼此的IP,保证网络通畅。
很多初学者以为,在uboot状态下设置完IP能ping通Ubuntu那么开发板进入Linux后也一定能ping通Ubuntu,这是不对的。两种状态下的IP互不影响,也就是说uboot的IP不会传递给Linux,如果需要使用网络都需要分别设置IP。
解决方法:
①检查要挂载的目录/work/test是否在/etc/exports中声明过,如果没有,是没有挂载权限的,就参考前边的例子添加
在Ubuntu上执行命令 showmount -e 即可查看已经声明过的可被挂载的目录
②检查NFS服务器是否在运行
在Ubuntu上执行命令 sudo /etc/init.d/nfs-kernel-server status 即可查看nfsd是否正在运行,如果没有运行就参考前面的命令使其运行
使用NFS作为根文件系统来启动
如果你仅仅是想要让开发板跟Ubuntu共享文件,那么强烈建议你用前面所提供的方式,因为 2 使用NFS作为根文件系统来启动 比较麻烦,这种启动方式主要用在制作文件系统上。下面详细说明!
视频一开始就教大家怎么重烧整个系统,怎么编译uboot,怎么编译内核都讲了,就是没有讲怎么制作文件系统。制作文件系统属于进阶内容,被放到了第11节。但是视频中又提前的介绍了NFS启动,这就导致很多紧跟视频操作不敢有丝毫遗漏的同学陷入深深的苦恼当中,无法在自己的开发板上复现视频中的现象是不可容忍的,有些同学甚至因此放弃了嵌入式的学习,这对一个过来人来说感觉是相当可惜的。现在我就慢慢引入为什么需要NFS启动吧。
大家都知道,开发板要想运行应用程序,文件系统是必不可少的,在光盘里有提供文件系统
参考视频的烧写方法,很容易能够烧写成功。但是这个文件系统是怎么制作出来的?只能看第11节的视频了,会发现步骤非常多。为了避免出错,需要时时看制作的效果。如果每做一步都用mkyaffs2image制作一个文件系统fs.yaffs2烧写到开发板上显然效率太低,此时NFS启动的优势就很明显了—–可以通过NFS启动的方式来实时看效果。
使用NFS启动的前提条件
编译内核和制作文件系统所用的交叉编译器必须相同(如果你用2.6.22.6的内核去挂载毕业班、第三期视频的NFS文件系统,肯定无法挂载)
1.将制作的文件系统放到/work/nfs/jz2440目录下
2.参考上一个帖子的方式,添加路径
/work/nfs/jz2440
到文件 /etc/exports 中,以保证开发板有挂载这个目录的权限
3.重启nfs服务器
4.再次确认刚才设置的目录是否生效
5.查看Ubuntu的IP和开发板的IP,等会设置uboot启动参数时会用到
6.设置uboot启动参数
set bootargs noinitrd root=/dev/nfs nfsroot=10.0.0.147:/work/nfs/jz2440 ip=10.0.0.10:10.0.0.147:10.0.0.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
1.如果你的文件系统制作的没有问题,那么重启开发板后应当能够进入Linux系统。如果挂载失败,就用光盘里提供的文件系统试试
注意:光盘提供的文件系统中etc/init.d/rcS文件中已经默认添加了设置开发板IP的命令,如果你不需要这个IP或者跟你的网段不同,可以修改以符合自己的需要。光盘里提供的文件系统都是用arm-linux-gcc(3.4.5版本制作的),因此你必须使用2.6.22.6的内核来启动,否则无法挂载文件系统。
2.使用NFS启动你会发现一个问题,如果开发板跟Ubuntu之间的网络不通,那么你的开发板就启动不了。想想也很正常,客户端跟服务器网络不通是无法登陆的。如果你制作的文件系统经过测试没有任何问题,那就可以制作成yaffs2文件系统烧写到开发板上,不用每次都得打开Ubuntu,插上网线,再启动开发板了。
在第一期视频第0课第7节03:40处有演示,
其实就是将NFS文件系统使用mkyaffs2image工具制作生成yaffs2格式的文件系统。至此,NFS全部挂载方式分析完毕。
NFS服务器配置和autofs自动挂载
SuSE linux NFS挂载失败案例处理:mount.nfs: access denied
linux的mount(挂载)NFS 共享,命令详解
Linux访问远程服务器文件——NFS+mount挂载
nfs挂载和取消挂载命令
NFS服务器配置与挂载
挂载NFS的两种方法
NFS客户端mount挂载优化
NFS服务器设置及mount命令挂载
NFS挂载到其他机器的详细步骤
没有更多推荐了,

我要回帖

更多关于 android 挂载 nfs 的文章

 

随机推荐