用NFS方式掛載根文件系統
由於原來的內核是用ATBOOT的方式下載的,不知道怎麼傳遞參數(好像不能,網上查的nfs方式都是用U-boot的方式掛載的),因此決定用u-boot重新下載內核。
1.下載u-boot和內核
1.1編譯內核
1.1.1由於板子光盤自帶的內核觸摸屏驅動不是配套的,要修改驅動的一個宏定義
- 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了