使用最新版工具重新编译出内核映像,文件系统映像
在Ubuntu为mini2440开发板配置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下进行配置。
先交代一下我的基本配置:
通过一个路由器,连接了电脑和开发板。电脑的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
输入以下内容:
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段使用了*,所以这里还是推荐配置以下,安全!):
语法: 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地址)
输入以下内容:
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
然后把你你要共享的目录的权限改成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
[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
如果出现和下面类似的结果,则说明共享目录配置成功了。
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"
这段命令的意思分解如下:
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.254和255.255.0.0
(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” 主机(也就是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启动开发板,在主机上编写,编译程序,然后直接到开发板下运行,验证,而不用将程序通过其他方式下载到开发板中,并且,在开发板下对系统做的修改都是永久性的,不会因为开发板重启,掉电等丢失东西,这对开发较大型的工程是很有好处的。
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小时内删除。
发表评论