NFS掛載根文件系統

今天很有成就感,沒想到一天就把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就可以用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章