用NFS方式挂載根檔案系統
由于原來的核心是用ATBOOT的方式下載下傳的,不知道怎麼傳遞參數(好像不能,網上查的nfs方式都是用U-boot的方式挂載的),是以決定用u-boot重新下載下傳核心。
1.下載下傳u-boot和核心
1.1編譯核心
1.1.1由于闆子CD光牒自帶的核心觸摸屏驅動不是配套的,要修改驅動的一個宏定義
LCD driver info */
//#define TFT3
#define TFT_NEW3 //這是闆子配套觸摸屏的參數
//#define vga800480 //這是預設的參數,需要注釋掉
//#define vga1024
//#define vga800600
1.1.2修改參數
在arch/arm/mach-s3c2410/common-smdk.c 裡的
static struct s3c2410_platform_nand smdk_nand_info = {
.tacls = 10,
.twrph0 = 30,
.twrph1 = 10,
...
原來是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了