现在的位置: 首页 > 综合 > 正文

【SEP4020】Linux开发推荐挂载NFS作为根文件系统

2013年08月01日 ⁄ 综合 ⁄ 共 2507字 ⁄ 字号 评论关闭

转载自:http://hi.baidu.com/aokikyon/blog/item/86d1640fb3b7ca226059f390.html

以前陆陆续续写过很多挂载NFS相关的内容,现在把他们整理一下,看起来方便些。

 

之前使用cramfs或yaffs作为根文件系统,开发起来很不方便,需要修改一点文件都要重新烧写nand,在开发时推荐挂载虚拟机下的nfs分区作为根文件系统。
NFS文件系统可以虚拟pc机的一个目录作为嵌入式linux的文件系统,非常适合开发时使用:

1)首先要能够正确配置虚拟机的NFS服务,将文件系统放在虚拟机/NFS目录里。
我们提供的虚拟机已经配置好了,新安装虚拟机配置见附录。

2)IP分配:
虚拟机采用桥接模式设置IP!见参考文章2
主机XP:192.168.0.1
SEP4020开发板:192.168.0.2
vmware虚拟机Linux:192.168.0.3


3)正确设置u-boot的启动参数(如果有兴趣可以学习一下Linux传参机制和参数的含义):
set bootargs root=/dev/nfs rw nfsroot=192.168.0.3:/nfs ip=192.168.0.2:192.168.0.3:255.255.255.0 console=ttyS0,115200 mem=32mb

4)Linux内核要支持NFS分区,编译时在File system里面选择,我们提供的SEP4020 Linux2.6.16已经选好了;

5)加载vmlinux.img,才能从u-boot里正确传递信息,zimage不可以;

启动时出现若出现如下信息,说明加载成功:
IP-Config: Guessing netmask 255.255.255.0
IP-Config: Gateway not on directly connected network.
Looking up port of RPC 100003/2 on 192.168.0.3
Looking up port of RPC 100005/1 on 192.168.0.3
VFS: Mounted root (nfs filesystem).
Mounted devfs on /dev
Freeing init memory: 104K
init started: BusyBox v1.9.2 (2008-08-15 10:15:54 CST)
starting pid 701, tty '': '/etc/init.d/rcS'

********************************
SEU 4020 ARM Linux-2.6.16    
********************************

# mount all...........
# Starting mdev.........
starting pid 709, tty '': '/bin/sh'
/ # 


附录 NFS分区挂载及使用方法

[技术]
为何要挂载NFS分区?
答:可以将PC机的一个目录虚拟,通过网络共享给2410开发板载linux使用,省去了将程序烧入flash的烦恼

介绍下如何挂载NFS分区
准备工作
1)安装nfs-kernel-server 
ubuntu下执行apt-get install nfs-kernel-server
2)在根目录建立nfs文件夹,也可以建立在其他地方
3)Linux的IP为192.168.0.3
4) 开发板的IP为192.168.0.2

开始
1)修改 /etc/exports文件
添加以下内容

/nfs 192.168.0.2(rw,sync,no_root_squash)

2)在终端中执行以下指令
#exportfs -rav

# '/etc/init.d/nfs-kernel-server' restart

第二条指令我是把那个文件拖到终端上才能执行的,奇怪

返回如下
* Stopping NFS kernel daemon                                                                                  [ OK ] 
* Unexporting directories for NFS kernel daemon...                                                             [ OK ] 
* Exporting directories for NFS kernel daemon...                                                                      exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.1.241:/nfs".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x

                                                                                                               [ OK ]
* Starting NFS kernel daemon                                                                                  [ OK ] 
root@kyon-desktop:/etc/init.d# 

NFS服务启动完毕

3)进入开发板控制台操作
输入
mount -t nfs -o nolock 192.168.0.3:/nfs /tmp

意思是把nfs目录虚拟到开发板的tmp目录中
如果没有错误提示,恭喜你成功了
去看看tmp目录有没有原来nfs目录里的东西吧,比如我就在nfs目录里建立了一个helloworld文体

4)结束挂载,使用命令
umount /tmp





其他参考文章:


1)[NFS]VM虚拟机下挂载NFS分区
http://hi.baidu.com/aokikyon/blog/item/a6b418f58a1ffe23bd3109e1.html
2) [ubuntu]如何在VM虚拟Ubuntu中同时使用双网卡

抱歉!评论已关闭.