您的位置:首页 > 其它

在Ubuntu为mini2440开发板配置NFS服务(转)

2014-01-15 09:35 211 查看
本文转自:http://www.sxlongda.com/sbw3/20100811/5996.htm

今天花了一早晨的时间为mini2440开发板配置了NFS服务,之所以花了这么长时间,是因为在一开始浪费了很长时间在虚拟机上,结果发现,在虚拟机上 配置这些东西实在是得不偿失,所以,又该在了纯Linux的环境下。呵呵,我现在是反过来了,在Linux下跑windows的虚拟机,这篇日志就是在
Linux环境下的windows虚拟机上写的。下面就开始给各位讲讲我的NFS配置过程。

先交代一下我的基本配置:

我是通过一个路由器,连接了电脑和开发板。电脑的IP地址为:172.16.19.132,开发板的IP地址 为:172.16.19.110,网关为:172.16.19.254,子网掩码为:255.255.0.0 。开发板和电脑都可以上网。没有路由器的朋友可以将电脑和开发板设置到同一个网段内,及子网掩码,网关都相同,IP地址前面3段相同,最后一段不同(比如
我上面的那样),然后直接拿交叉网线(不是普通的网线)将电脑和开发板相连,但是不能上网(有无线的网的,配置以下无线,还可以上网,不管怎么样,只要开 发板和电脑能互相ping通就可以了)。

(注* 我个人比较喜欢直接用root用户在Linux下进行配置。所以下面的命令都没有加sudo,如果你的用户权限不是root权限,记得加sudo,然后输入root密码)

1.下载安装必要的软件:

apt-get install nfs-kernel-server

apt-get install nfs-common

apt-get portmap

2.开始配置:

首先配置共享目录:

vim /etc/exports

输入以下内容:

/opt/FriendlyARM/mini2440/root_qtopia *(rw,sync,no_root_squash)

其中,“/opt/FriendlyARM/mini2440/root_qtopia”是你要共享的目录,“*”代表所有的IP地 址都可以访问,“rw”表示挂载了该目录的用户对该目录有读写的权限,no_root_squash表示,如果挂载了该目录的用户以root权限登录,在 在该目录中,也具有root权限。(注*
我现在也还没有搞清楚,为什么在设定可以访问该目录的IP段的时候,只能用*,而不能使用网上诸多的IP段设定方法,如172.16.19.* 或 172.16.19.3/233 等,如果设定了这些IP段,在挂载是就会出现如下的错误:mount.nfs: access denied by server while mounting xxxx : yyyyy 的权限提示。另外还有值得注意的是,目录和后面的“*”之间有空格,我今天就因为没有打这个空格,花了近半个小时)

然后配置访问权限(这些东西可以省略,但是前面IP段使用了*,所以这里还是推荐配置以下,安全!):

vim hosts.deny

输入以下内容:

portmap:ALL

lockd:ALL

mountd:ALL

rquotad:ALL

statd:ALL

然后保存退出(这里是禁止了所有IP地址)

vim hosts.allow

输入以下内容:

portmap: 172.16.19.

lockd: 172.16.19.

rquotad: 172.16.19.

mountd: 172.16.19.

statd: 172.16.19.

保存退出(这里有开放了一条通道,让以172.16.19打头的IP地址通过,这里根据自己的情况改写IP)

然后把你你要共享的目录的权限改成777(是我偷懒了,没有算,这样不太好,你可以自己算一下)命令如下:

chomod -R 777 /opt/FriendlyARM/mini2440/root_qtopia

到这里,要配置的东西就都配置完了。之后就是启动,验证服务了。

运行命令:

/etc/init.d/portmap start

/etc/init.d/nfs-kernel-server start

如果运行结果如下:(在这里不方便截图,所以只好把运行的结果直接复制给各位了,加粗的是命令行,没有加粗的是结果。为了我自己的隐私,呵呵,我把主机名用XXXX代替了)

[B# /etc/init.d/portmap start

Rather than invoking init scripts through /etc/init.d, use the service(8)

utility, e.g. service portmap start

Since the script you are attempting to invoke has been converted to an

Upstart job, you may also use the start(8) utility, e.g. start portmap

[B# /etc/init.d/nfs-kernel-server start

* Exporting directories for NFS kernel daemon...

exportfs: /etc/exports [3]: Neither 'subtree_check' or 'no_subtree_check' specified for export " *:/opt/FriendlyARM/mini2440/root_qtopia". Assuming
default behaviour ('no_subtree_check').

NOTE: this default has changed since nfs-utils version 1.0.x

[ OK ]

* Starting NFS kernel daemon [ OK ]

然后进行测试,看共享目录是否存在,命令如下:

showmount -e

如果出现和下面类似的结果,则说明共享目录配置成功了。

[B# showmount -e

Export list for XXXX :

/opt/FriendlyARM/mini2440/root_qtopia *

看到这样的结果,如果不出意外的话,下面的步骤都是可以成功的:

运行mount命令,将刚才的目录挂载都自己的电脑上试试看。

[B# mount -t nfs localhost:/opt/FriendlyARM/mini2440/root_qtopia/ /mnt/

[B# ls /mnt/

bin etc lib mnt proc sbin test_nfs usr www

dev home linuxrc opt root sys tmp var

呵呵,激动不?这样的结果就说明前面的心血没有白花,如果你按我说的做了,出现了问题,那么请不要怨我啊,因为Linux系统的差异 性太大了,每个人的都不一样。所以,请你耐心点,上Google搜搜看(中国的网站,外国的网站上有很多关于这方面的问题解决方案,推荐上国外的网站,虽 然是英语的,但是解决的步骤详细,讲解耐心,细致)

完成上面的配置后,连接好开发板,然后打开minicom,给开发板上电,从NAND Flash启动,在上电或复位的一刹那间(这是友善之臂官方给的,原话岁然不是这样,但大致的意思就是这样,这一点做的很垃圾,有时候手气不好,得复位好 几次),按下开发板上的任意一个键,进入supervivi模式,按下“q”键,在supervivi的命令行模式下,输入:

param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=172.16.19.132:/opt/FriendlyARM/mini2440/root_qtopia ip=172.16.19.110:172.16.19.132:172.16.19.254:255.255.0.0:sbc2440.arm9.net:eth0:off"

这段命令的意思分解如下:

(1) “param set linux_cmd_line”设置Linux的命令行;

(2) “console=ttySAC0” 终端设置为ttySAC0;

(3) “root=/dev/nfs” 根目录为/dev/nfs

(4) “nfsroot=172.16.19.132:/opt/FriendlyARM/mini2440/root_qtopia ” NFS服务的目录是IP为“172.16.19.132”

主机下的“/opt/FriendlyARM/mini2440/root_qtopia”目录

(5) “ip=172.16.19.110:172.16.19.132:172.16.19.254:255.255.0.0”开发板的IP地址为172.16.19.110,主机的IP为

172.16.19.132,开发板和主机的网关与子网掩码分别为172.16.19.254和255.255.0.0

(6) “sbc2440.arm9.net” 主机(也就是PC机)的主机名,这个无所谓,写什么都可以

(7) “eth0” 开发板的网络设备(也就是所选择的网卡)

(8) “off” 至于这个off,我现在也还没有搞清楚到底要关闭什么东西,希望那个高手能给个指点

上面的解释都是我自己的理解,官方是没有说明的,如果我的理解有错误,请在留言板给予指正。

输入命令后,就可以按下回车,然后输入boot,让开发板从主机上的NFS目录下启动了。

Supervivi> boot

Copy linux kernel from 0x00060000 to 0x30008000, size = 0x00500000 ... done

zImage magic = 0x016f2818

Setup linux parameters at 0x30000100

linux command line is: "console=ttySAC0 root=/dev/nfs nfsroot=172.16.19.132:/op"

MACH_TYPE = 1999

NOW, Booting Linux......

呵呵,到这里,NFS的配置就完成了。以后开发的时候,就可以直接从NFS启动开发板,在主机上编写,编译程序,然后直接到开发板下 运行,验证,而不用将程序通过其他方式下载到开发板中,并且,在开发板下对系统做的修改都是永久性的,不会因为开发板重启,掉电等丢失东西,这对开发较大 型的工程是很有好处的。

今天就做到这里了,从明天开始将依次配置FTP,HTTPD,TELNET,Samba服务。之后就是实质的ARM开发。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: