使用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-gcc和X86版本的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启动开以板。
本文来自博客园,作者:张朝阳,转载请注明原文链接:https://www.cnblogs.com/zhangchaoyang/articles/1931735.html