自己用busybox做了一个文件系统,然后建了个home目录,在里面开发应用程序,应用程序大概是这样做的:
在Ubuntu虚拟机中用交叉编译器编译写好的应用程序,然后用arm-none-linux-gnueabi-readelf看应用程序运行需要哪些动态库,把他们拷贝到自己做的文件系统中的lib目录中就可以。
中途,我这样想过,把整个的交叉编译器都放到自己的文件系统中去,这样在自己的开发板上编译,再运行,也不需要拷贝什么动态库,这个突发的想象据说可以的,毕竟现在都是一二G的内存了吗,但实际上需要的动态库和动态链接加载器就那么六七个文件,还好。
但让人不爽的就是:没改一次应用,都要重新用fastboot烧录一下文件系统,来验证,这样既缩短了flash的使用寿命,也浪费时间,于是nfs网络文件系统是一个不错的选择。以前玩过,但自己来做就又是一回事,经过好几天的折腾,终于弄出来了,现把经验总结如下:
要想以NFS方式挂载文件系统,需要做以下几个工作:
一、编译内核,以支持使用NFS
参考文章:http://blog.chinaunix.net/uid-24219701-id-3029945.html
在编译内核的过程中,也出了点小问题,就是有个不需要的触摸屏驱动程序有问题,编译不过,于是修改了.config文件,把那个GT9XX的触摸屏的配置用#注释掉了,再编译的时候选择n,就编译出了我们需要的zImage。
二、U-boot中bootargs的设置
启动开发板后迅速敲空格键使得开发板停留在u-boot命令行终端,然后设置bootargs参数:
setenv bootargs root=/dev/nfs console=ttySAC2,115200n8 init=/linuxrc nfsroot=192.168.1.20:/home/cxy/linux_AP/_install ip=192.168.1.12:192.168.1.20:192.168.1.1:255.255.255.0::eth0:on
saveenv
注意:ip设置中,第一个是目标板IP,第二个是nfs服务器主机的IP,后面的是目标板的,但是要注意这里目标板的要和主机的配置一样,网关地址要一样,我就在这里忽视啦。
至于主机上nfs服务器的安装,我用的是Ubuntu 12.04.5的虚拟机,我的nfs服务器就安装了两个软件:
sudo apt-get install nfs-kernel-server
sudo apt-get install nfs-common
用sudo /etc/init.d/nfs-kernel-server restart重启nfs服务。
showmount -e查看输出的共享目录