使用NFS把程序放到开发板上

 

1.首先把开发板的IP配置成和主机在一个局域网内(开发板的原始IP是192.168.1.6),这样主机就既能连网,又能连开发板了。

#ifconfig eth0 192.168.0.102 netmask 255.255.255.0 up

#route add default gw 192.168.0.1

#ping -c 3 192.168.0.100 测试可以成功

这个IP开发板不能保存,每次重启开发板时都做这项工作。

事实上在开发板上操作:开始|EmbedSky|网络配置,就可以更改开发板的IP。

所以把上面的命令写在shell文件里,每次开机执行一下shell文件就行了

#!/bin/sh                                                                       

ifconfig eth0 192.168.0.102 netmask 255.255.255.0 up                            

route add default gw 192.168.0.1

mount -o nolock -t nfs 192.168.0.100:/opt/EmbedSky/nfsboot/program/Today /mnt

保存为文件init。增加可执行的权限chmod +x init

开机执行./init

 

2.安装nfs服务器端和客户端

服务器端:sudo apt-get install portmap nfs-kernel-server

客户机端:sudo apt-get install portmap nfs-common

sudo apt-get install nfs-kernel-server会自动安装nfs-common和portmap

注:nfs-common和nfs-kernel-server都依赖于portmap!

 

3.建立共享文件夹

sudo mkdir /opt/EmbedSky/nfsboot

sudo mkdir /opt/EmbedSky/nfsboot/root             #用于存放文件系统,使用NFS挂载文件系统时用到

sudo mkdir /opt/EmbedSky/nfsboot/program  #用于存放一些程序

#echo “/opt/EmbedSky/nfsboot 192.168.0.102(rw,sync,no_root_squash)”>/etc/exports

通过echo命令我们向/etc/exports文件写入了 “/opt/EmbedSky/nfsboot 192.168.0.102(rw,sync,no_root_squash)”这保有话,当然也可以先gedit打开该文件再编辑。

“/opt/EmbedSky/nfsboot 192.168.0.102(rw,sync,no_root_squash)”的意思是向IP为 192.168.0.102的主机(这是我们开发板的IP)开放读写和同步的权利,并且由 no_root_squash指定信任客户端。更省事但不安全的做法是“/opt/EmbedSky/nfsboot *(rw,sync)”所有主机都可以访问该共享文件。

然后把TQ2440测试程序和Linux资源/Linux源码包/apps里的程序放到/opt/EmbedSky/nfsboot/program里面。

若更改了/etc/exports, 运行 $ sudo exportfs -r 更新。运行 $ showmount -e 查看NFS server的export list.

 

4.测试共享

orisun@zcypc:~$ showmount -e

Export list for zcypc:

/opt/EmbedSky/nfsboot 192.168.0.100,192.168.0.102

因为我设置的开发板和本机都可以访问/opt/EmbedSky/nfsboot,所以不防先测试一下本地主机能不能访问/opt/EmbedSky/nfsboot

sudo mount 192.168.0.100:/opt/EmbedSky/nfsboot/program/Hello-C /mnt

然后你ls /mnt一下,发现Hello-C在/mnt下就说明NFS安装成功并已经启动了

$ sudo umount /mnt

如果 出现 permission deny:

试一试 :sudo mount -o nolock -t nfs 59.64.195.97:/home/warmbupt/arm/nfs /mnt搞定。

 

5.要挂载的程序是用arm-linux-gcc编译生成的

arm-linux-gccX86版本的gcc编译hello.c得到的二进制文件是不一样的,我们可以用file命令查看可执行文件的属性如图:



6.正式挂载

从PC telnet到开发板上telnet 192.168.0.102(当然也可以直接用串口登录)

然后把PC上的可执行文件挂载到开发板上mount 192.168.0.100:/opt/EmbedSky/nfsboot/program/Hello-C/hello-c /mnt(我试过了,这种方法不行,得用下面的)

mount -o nolock -t nfs 192.168.0.100:/opt/EmbedSky/nfsboot/program/Hello-C /mnt        #挂载的不能是文件,只能是路径

最后执行这个文件吧#/mnt/hello-c

 

 

对于很长的路径每次Type起来很麻烦,可以建立一个软链接sudo ln -s /opt/EmbedSky/nfsboot/program/Today /Today

这样mount -o nolock -t nfs 192.168.0.100:/Today /Today就可以了

 

 

如果有问题,使用nfs时经常出现server not respond,可以直接用minicom传输文件,参见我的另一篇博客http://www.cnblogs.com/zhangchaoyang/articles/1926848.html

 

7.NFS挂载文件系统

解压文件系统原文件root_qtopia_2.2.0_2.6.30.4_20100601.tar.bz2,然后将其复制为名为“root_nfs”;

修改“etc/init.d/rcS”文件,屏蔽掉 net_set &这行,改为“#net_set &”;

在“dev/”目录下的“console”和“null”就不存在了,还需要重新建立,命令如下:

#cd /opt/EmbedSky/root_nfs/dev

#mknod console c 5 1

#mknod null c 1 3

然后就是NFS的使用了,注意开发板上也要设置boot parameter,设置成从NFS启动开以板。

posted @ 2011-01-10 16:22  张朝阳  阅读(3519)  评论(1编辑  收藏  举报