转自http://blog.csdn.net/qingyu2431/article/details/6925354
linux安装在vmware虚拟机中
linux操作系统版本:ubuntu9.10开发板:飞凌ok6410
开发板上的操作系统:linux2.6.36,文件系统类型是yaffs
串口上位机:windows超级终端
当我们编译好程序后需要下载到开发板运行测试,如果开发板上运行的是飞凌提供的linux2.6.28系统则可以用超级终端通过串口下载。但是linux2.6.36则不支持这种方式。通过nfs下载程序则是一种比较通用的方式,因此学会如何利用nfs下载程序到开发板是非常有必要的。
基本原理:将pc机上vmware中的linux的nfs服务器配置好,配置过程中会要求设置一个共享目录,把需要下载到开发板的程序放到这个共享目录中。开发板上的linux操作系统就可以通过一根网线将这个共享目录挂载到自己的根目录下,将之前放置于这个共享目录中的程序“复制”到其他目录即是实现了从pc机下载程序到开发板。
pc机上linux的配置:
1、安装并启动nfs服务器,ubuntu默认是不安装的,具体的安装过程见沧海猎人的博客http://blog.csdn.net/embedded_hunter/article/details/6871196中的1-->6步。
2、设置ip等信息:
首先选vmware的vm-->settings-->Network Adapter选择为Bridge(桥接)方式。
然后运行你的开发板,进入系统后在超级终端中敲入命令:ifconfig会显示如下类似的信息:
eth0 Link encap:Ethernet HWaddr 08:90:90:90:90:90
inet addr:192.168.0.232 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:422 errors:0 dropped:0 overruns:0 frame:0
TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:36547 (35.6 KiB) TX bytes:2958 (2.8 KiB)
Interrupt:108 Base address:0x6000
其中inet addr是你的开发板的ip地址,Bcast是默认网关,Mask是子网掩码。根据这些信息设置pc机的ip
在pc机linux中打开一个终端,输入指令:gedit /etc/network/interfaces把打开的文件中编辑成成如下:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.111
netmask 255.255.255.0
gateway 192.168.0.255
其中子网掩码(netmask)和默认网关(gateway)要与上面开发板中严格保持一致,ip地址只需要保持在同一个网段即可。即ip的前三个段一样,最后一段不同即可。在此例中即192.168.0.xxx(当然xxx要小于255)。
接着重启pc机中linux的网络配置,在pc机的终端中输入如下指令:sudo /etc/init.d/networking restart。可以输入ifconfig检查一下是否设置正确。
最再重启一下pc机的nfs,在终端中输入:sudo /etc/init.d/nfs-kernel-server restart 。到此,pc机上的设置就基本完成了,接下来在开发板上就可以挂载了。
当然以上的整个安装和配置过程只需进行一次即可,并不是说每次挂载都需要重新这样来一遍。
在开发板上挂载nfs:
首先用一根网上将开发板和板子连接起来,这是前提。
然后在开发板运行起来后在windows超级终端中输入:
mount -o nolock 192.168.0.111:/nfsroot /mnt -------- 其中192.168.0.111是你在pc机上设置的那个ip地址;/nfsroot是你在配置pc机linux的nfs服务器的时候设置的共享目录;/mnt是你开发板上linux中的目录。-o的意思是mount命令带有参数,后面的nolock就是所带的参数,至于为什么要带这个参数,参考“ 关于mount nfs时-o nolock的问题 ”
挂载成功之后进入mnt目录就可以看到pc机上nfsroot目录中的内容。以后当你需要下载程序到开发板,只需在pc机上把程序放到共享目录,板子就可以通过挂载共享目录把程序下载到开发板。
需要卸载的时候输入命令umount / mnt即可。
由上可见,这里采用的方法主要是更改pc机上linux的ip地址等信息,使其与开发板上的ip等信息相匹配。当然也可以更改开发板上的ip地址来匹配pc机上的ip,但在这里不讨论,可以参见 http://bbs.witech.com.cn/viewthread.php?tid=4569&highlight=uboot%2B%C9%E8%D6%C3ip。
另外需要注意的是:
1、开发板的实际ip是进入操作系统后在windows超级终端中输入ifconfig看到的,并不是在uboot中输入printenv打印的环境变量中显示的。我在实际的配置中发现我开发板的环境变量中的ip信息就与ifconfig看到的不同,但开发板真正的ip是ifconfig看到的,我也不理解这是为什么。
2、如果不能正常挂载,可能还需要修改/etc/NetworkManager/nm-system-settings.conf
[main]
plugins=ifupdown,keyfile
[ifupdown]
managed=false
将managed=ture改为false。
然后执行sudo /etc/init.d/network-manager restart,重新配置一下。