NFS是个什么东东,我就不细说了,定义如下:网络文件系统(NFS,
Network
File
System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。更具体的,请自行百度、谷歌。
NFS需要服务端和客户端,Ubuntu上需要开启nfs server,JZ2440上需要nfs client。
Ubuntu 9.10安装和配置nfs
执行以下命令安装nfs服务,安装后即会自动运行:
sudo apt-get install nfs-kernel-server portmap
它的配置文件为/etc/exports,在里面增加一下内容,以后通过网络文件系统访问/sj_work/fs_root/fs_mini目录:
/sj_work/fs_root/fs_mini *(rw,sync,no_root_squash)
修改完毕后,执行以下命令重启NFS服务:
sudo /etc/init.d/nfs-kernel-server restart
如修改/etc/exports时提示只有管理员才有权限可以执行:sudo vim /etc/exports命令后再修改!
以上命令的含义,请自行百度、谷歌。
JZ2440配置和使用nfs
网卡驱动:
使用前需要确保对应开发板上的网卡工作OK,JZ2440上用的是DM9000CEP,此网卡通DM9000A几乎差不多,但也有一点不同,DM9000驱动可以参考《嵌入式Linux应用开发完全手册》中的相关章节或自行百度下。
但有一点需要说明,在linux 2.6.22中Dm9000.c文件中的函数static int
dm9000_open(struct net_device *dev)里,需要在
dm9000_reset(db);
dm9000_init_dm9000(dev);
之前添加如下代码:
iow(db, DM9000_GPR, 0);
mdelay(20);
即预先使能PHY。
不加此代码之前,我的网卡工作有时正常,有时异常。这个是针对DM9000CEP的,别的型号的网卡请自行尝试。
U-boot传递给linux内核的启动参数:
setenv bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
--->
这个是默认的启动参数
setenv bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.101:/sj_work/fs_root/fs_mini ip=192.168.1.133:192.168.1.101:192.168.1.1:255.255.255.0::eth0:on init=/linuxrc console=ttySAC0
--->
这个是使用NFS的启动参数
NFS的启动参数格式说明见:linux源代码中Documentation\nfsroot.txt
linux内核配置:
我使用的是linux 2.6.22中的arch\arm\configs\s3c2410_defconfig作为默认配置,即使用下面命令
cp arch\arm\configs\s3c2410_defconfig .config
之后输入
make menuconfig
既可在s3c2410_defconfig配置的基础上进行操作。
需要确保
Networking -->
Networking options
[*] TCP/IP networking
[*]
IP: kernel level autoconfiguration
[ ]
IP: DHCP support
[*]
IP: BOOTP support
[ ]
IP: RARP support
需要确保
File systems -->
Network File Systems
<*> NFS file system support
[*]
Provide NFSv3 client support
[*]
Provide client support for the NFSv3 ACL protocol extension
[*]
Provide NFSv4 client support (EXPERIMENTAL)
[*]
Allow direct I/O on NFS files
[*] Root file system on NFS
[*] Support for rpcbind versions 3 & 4 (EXPERIMENTAL)
之后执行make uImage(因为是使用的bootloader用的是u-boot,所以需要生成uImage的内核镜像。),之后下载sudo dnw arch/arm/boot/uImage。