主要记录下如何在ARM开发板上挂载NFS根文件系统。
PC主机:Ubuntu 和redhat 9.0
目标板:TQ2440开发板,linux内核2.6.32
1.PC上安装NFS服务
sudo apt-get install nfs-kernel-server
sudo apt-get install portmap nfs-common
2. 编辑/etc/exports文件
yj423@ubuntu:~$ cat /etc/exports
/home/yj423/nfswork *(rw,sync,no_root_squash)
设置/home/yj423/nfswork为被挂载的文件目录
3.启动NFS服务
sudo /etc/init.d/nfs-kernel-server start
sudo /etc/init.d/portmap start
NOTE:确保每次Ubunu重启时都要启动这两个服务,否则NFS根文件不能挂载。
4.配置开发板Linux内核,
首先,开启NFS客户端和NFS根文件系统。
接着,打开DHCP服务。
5.使用Uboot修改内核命令行参数
启动Uboot后,设置环境变量bootargs,输入命令
setenv bootargs noinitrd console=ttySAC0 root=/dev/nfs ip=dhcp nfsroot=192.168.1.102:/home/yj423/nfswork
说明:root表示根文件系统所在的位置,这里为NFS根文件系统。
nfsroot表示NFS根文件系统所在的位置。192.168.1.102为PC机的IP地址,/home/yj423/nfswork即为NFS根文件所在的路径。
6.启动内核
.......
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
Sending DHCP requests ., OK
IP-Config: Got DHCP answer from 0.0.0.0, my address is 192.168.0.103
IP-Config: Complete:
device=eth0, addr=192.168.0.103, mask=255.255.255.0, gw=192.168.0.1,
host=192.168.0.103, domain=, nis-domain=(none),
bootserver=0.0.0.0, rootserver=192.168.0.102, rootpath=, mtu=576
Looking up port of RPC 100003/2 on 192.168.0.102
Looking up port of RPC 100005/1 on 192.168.0.102
VFS: Mounted root (nfs filesystem) on device 0:12.
Freeing init memory: 156K
[01/Jan/1970:00:00:14 +0000] boa: server version Boa/0.94.13
[01/Jan/1970:00:00:14 +0000] boa: server built Jul 29 2009 at 14:27:34.
[01/Jan/1970:00:00:14 +0000] boa: starting server pid=920, port 80
Please press Enter to activate this console.
[root@yj423 /]#
NFS根文件系统挂载已经完成。
看一下根目录:
[root@yj423 /]#ls
bin dev home linuxrc proc sbin tmp var
boot etc lib mnt root sys usr
NOTE:在TQ2440的rcS文件中会启动一个脚本net_set,该脚本将会设置ip地址,子网掩码等网络参数,在挂载根文件系统时必须禁止该脚本的运行,否则系统会出现异常,导致系统无法继续运行。
2013.04.15 修改内核为2.6.32,更换图片。