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

本文转自: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开发。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值