nfs掛載根文件系統


 1075人閱讀 評論(0) 收藏 舉報

目錄(?)[+]

用NFS方式掛載根文件系統

由於原來的內核是用ATBOOT的方式下載的,不知道怎麼傳遞參數(好像不能,網上查的nfs方式都是用U-boot的方式掛載的),因此決定用u-boot重新下載內核。

1.下載u-boot和內核

1.1編譯內核

1.1.1由於板子光盤自帶的內核觸摸屏驅動不是配套的,要修改驅動的一個宏定義

 

 

  1.  LCD driver info */  
  2. //#define TFT3  
  3. #define TFT_NEW3     //這是板子配套觸摸屏的參數  
  4. //#define vga800480  //這是默認的參數,需要註釋掉  
  5. //#define vga1024  
  6. //#define vga800600  

1.1.2修改參數

在arch/arm/mach-s3c2410/common-smdk.c 裏的

[c-sharp] view plaincopy
  1. static struct s3c2410_platform_nand smdk_nand_info = {  
  2. .tacls = 10,  
  3. .twrph0 = 30,  
  4. .twrph1 = 10,  
  5. ...  
 

原來是20,60,20,但這個參數會找不到nand flash,需要修改爲上面幾個。否則得到的uImage 文件會下載運行不了。

1.1.3修改交叉編譯器

vi Makefile 找到 CROSS_COMPILE ?= arm-linux

這一行,將arm-linux-修改爲交叉編譯器的路徑(Linux系統上交叉編譯工具的路徑爲下)

/usr/local/arm/3.4.1/bin/arm-linux-

輸入:wq 保存並退出。

1.1.4編譯

make clean

make uImage

(在執行命令之前要執行make menuconfig,進行配置內核:

networking options-》IP:kernel level autoconfiguralion項
選中file systems-》network file systems-》下的root file system on nfs和nfs file system support

由於我解壓的是板子自帶的內核,發現這些都已經選中了,因此直接編譯即可,執行make uImage後,最後會提示一個錯誤,說不能創建某個文件,但我發現uImage已經生成了,就沒理會錯誤,直接拿來用了)

 

1.2下載u-boot和內核

1.2.1下載u-boot

1.2.1.1  SJF2440 環境設置(見前面部分圖文介紹)

 

下載u-boot用板子自帶工具SJF2440.exe,安裝其驅動,具體見說明文檔

 

1.2.1.2  燒寫u-boot.bin 到Nand flash 中

新建D:/atboot,把sjf2440.exe 和u-boot.bin複製到文件夾內

(sjf2440.exe 和u-boot.bin 必須在同一目錄下)

 

具體見說明文檔

1.2.1.3  利用u-boot下載uImage和文件系統到arm板上

由於板子自帶是用autoflash.img自動下載uImage和文件系統到arm板上,現在我還不太明白具體的地址,因此就自動把文件系統也下載上去了,但是這個文件系統不用,下面將用nfs掛載linux主機上的文件系統rootfs文件

具體見說明文檔

2. 用nfs掛載根文件系統

2.1  在虛擬機Linux上建立文件夾

/home/water/rootfs

把板子自帶的系統直接拷進rootfs文件夾內

 

2.2linux主機 配置nfs 文件系統

 

修改/etc/exports 文件,格式爲共享目錄開發板ip 地址(權限設置):cat <<EOM >/etc/exports

 

/home/water/rootfs *(rw,sync,insecure,no_root_squash)

 

重啓nfs 服務器:

/etc/init.d/nfs restart

 

 

2.3  IP設置

XP:192.168.1.100

linux:192.168.1.128

arm:192.168.1.7(這個一會用U-boot給內核傳遞)

 

 

2.4 給u-boot傳遞參數

啓動u-boot,在倒計時結束前,按下空格鍵,進入輸入參數界面

輸入:

AVANTECH# set bootargs root=/dev/nfs nfsroot=192.168.1.128:/home/water/rootfs rw noinitrd init=/linuxrc ip=192.168.1.7:192.168.1.128:192.168.1.128:255.255.255.0:avantech:eth0:off console=ttySAC0,115200

 

(注:上面爲一行代碼,只是可能自動換行的緣故,因此輸入是可以一部分一部分的複製)

AVANTECH# saveenv

AVANTECH# reset

 

2.5然後就ok了

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