NFS挂载根文件系统

来源:互联网 发布:淘宝精品推荐入口 编辑:程序博客网 时间:2024/05/22 03:06

今天很有成就感,没想到一天就把NFS搞定了,顺带还移植了CS8900的驱动。下面将移植的过程记录下来。这里要说明的一点是,由于在整个过程中,我参考了不同的资料,可能有些步骤并不是必要的,但也在此列出。

(1)按照《构建嵌入式LINUX系统》一书,首先设置DHCP监控程序。先来看看DHCP监控程序是否存在:

$rpm -q dhcp

如已安装,将显示版本,若未安装,需要重新去光盘中找到DHCP的rpm包(dhcp-3.0pl1-23.i386.rpm),然后rpm -ivh dhcp-3.0pl1-23.i386.rpm即可。建立或者编辑/etc/dhcpd.conf文件,我的如下:

ddns-update-style interim;
ignore client-updates;

subnet 192.168.0.0 netmask 255.255.255.0 {    

# --- default gateway
option routers    192.168.0.7;              
option subnet-mask   255.255.255.0;   

# option ntp-servers   192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;

range dynamic-bootp 192.168.0.2 192.168.0.255;
default-lease-time 21600;
max-lease-time 43200;

# we want the nameserver to appear at a fixed address
host ns {
  next-server 192.168.0.7;                   
   hardware ethernet 08:00:3e:26:0a:5b;  
   fixed-address 192.168.0.55;          
                filename "/home/mike/linux-2.6.14.1/vmlinux";
                option root-path "/home/mike/newroot";

}
}
最后别忘了启动DHCP,/etc/init.d/dhcpd start

TFTP服务器设置

配置过程如下: 首先查看宿主机上tf tp 软件包是否安装rpm - q tftp-server , 如果没有安装则安装tf tp 软件包; 然后编辑TFTP 的配置文件/etc/xinetd.d/tftp , 令disab le= no。

N FS 服务器的设置
使用N FS 方式可在宿主机和目标机间共享文件,因此N FS 在嵌入式开发中得到了广泛的应用。按如下步骤设置N FS 服务器:
(1) 进入到保存网络脚本的目录。Redhat 系统中,这个目录是/etc/rc.d/init.d。
(2) 输入命令./portmap status随后会看到一条消息, 指出portmap正在运行。否则, 输入./portmap start 并按下回车。
(3) 输入命令./nfs status 随后会看到消息, 指出rpc.mounted和nfsd 正在运行。否则, 输入./nfs start并按下回车。
(4) 设置导出目录。用编辑器打开/etc/exports, 在一个空白行上输入导出的宿主机目录名称、目标板IP以及导出选项, 如/home/mike/newroot 192.168.0.7( rw ,sync, no_ roo t_ squash)。
经过这些步骤后, 宿主机就可以让目标板使用/home/mike/newroot目录。

最后一点:system settings--->service setting---->service,取消掉iptables的选项。设成无防火墙。

下面该目标板了,先来看uboot环境变量的设置。

netmask=255.255.255.0
ipaddr=192.168.0.55
serverip=192.168.0.7
rootpath=/home/mike/newroot
kernel_addr=30008000
gatewayip=192.168.0.1
bootcmd=tftp 30008000 zImage; go 30008000
bootargs=root=/dev/nfs rw nfsroot=192.168.0.7:/home/mike/newroot nfsaddrs=192.16
8.0.55:192.168.0.7:192.168.0.7:255.255.255.0 console=ttySAC0,115200 mem=64M

这里主要是bootcmd和bootargs。有关bootargs的详细信息可参考:http://blog.csdn.net/imj060336/archive/2007/12/16/1942235.aspx

接下来要移植cs8900的驱动

http://download.csdn.net/source/191401,不仅提供了源码,还有移植说明,但是要注意根据自己的开发板修改 arch/arm/mach-s3c2410/mach-smdk2410.c的物理地址,比如说我的就是0x19000000,另外一点就是修改 cs8900.h文件时,#define SMDK2410_ETH_IRQ IRQ_EINT8,根据我的开发板改为IRQ_EINT9。做完以上工作后,编译时会出现一个错误,提示在265行左右的地方少了",这是因为排版的问题引起的,找到错误的地方,会发现两个双引号之间的内容分写在两行,中间有空格,去掉空格就可以了。

这里再提供几个移植cs8900驱动的帖子,由于我的整个移植过程比较顺利,还没来得及仔细研究。http://blog.csdn.net/wu7104/archive/2007/05/08/1600190.aspx

最后就是修改/home/mike/newroot下的内容了,这是我自己的目标板的问题了,修改/usr/etc/rc.local,/sbin/ifconfig 192.168.0.55 up。

这样之后,NFS就可以用了。

原创粉丝点击