使用最新版工具重新编译出内核映像,文件系统映像
Ubuntumini2440开发板配置NFS服务
这篇日志就是在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下进行配置。
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)

  rootfs_qtopia_解压所得到的root_qtopia_qt4目录下的所有文件及目录拷贝到/opt/FriendlyARM/mini2440/root_qtopia中,并且在/opt/FriendlyARM/mini2440/root_qtopia/dev目录下执行:
mknod  console  c  5  1
其中,“/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 的权限提示。另外还有值得注意的是,目录和后面的“*”之间有空格)
如果修改了linux系统安装步骤csdn/etc/exports后,并不需要重启nfs服务,只要用exportfs重新扫描一次/etc/exports,并且重新加载即可
语法: exportfs [-aruv]
-a: 全部挂载(或卸载) /etc/exports档案内的设定
-r: 重新挂载/etc/exports里面的设定,也同步的更新/etc/exports/var/lib/nfs/xtab里面的内容
-u:卸载某一目录
-v:export的时候,将分享的目录显示到荧屏上.
例子
#exportfs -rv //重新export一次
#exportfs -au //全部卸载

  然后配置访问权限(这些东西可以省略,但是前面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

  如果运行结果如下:
  [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

  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

 
  完成上面的配置后,连接好开发板,然后打开minicom,给开发板上电,从NAND Flash启动,在上电或复位的一刹那间(有时候手气不好,得复位好几次),按下开发板上的K1~K6键,进入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: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.254255.255.0.0


  (6 “sbc2440.arm9” 主机(也就是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,

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

 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。