基本概述
在適當的位置增加如下關於S3C2410的代碼:i.修改arch/arm/kernel/setup.c檔案,此檔案中的setup_arch非常關鍵,用來完成與體系結構相關的初始化:j.修改arch/arm/mm/mm-armv.c檔案(arch/arm/mm/目錄中的檔案完成與ARM相關的MMU處理)修改為檔案系統是基於被劃分的存儲設備上的邏輯上單位上的一種定義檔案的命名、存儲、組織及取出的方法。如果一個Linux沒有根檔案系統,它是不能被正確的啟動的。因此,我們需要為Linux創建根檔案系統,我們將其創建在K9S1208NANDFLASH上 Linux的根檔案系統可能包括如下目錄(或更多的目錄)
(1)/bin(binary):包含著所有的標準命令和應用程式;
(2)/dev(device):包含外設的檔案接口,在Linux下,檔案和設備採用同種地方法訪問的,系統上的每個設備都在/dev里有一個對應的設備檔案;
(3)/etc(etcetera):這個目錄包含著系統設定檔案和其他的系統檔案,例如/etc/fstab(FileSystemtable)記錄了啟動時要mount的filesystem;(4)/home:存放用戶主目錄;(5)/lib(library):存放系統最基本的庫檔案;(6)/mnt:用戶臨時掛載檔案系統的地方;(7)/proc:linux提供的一個虛擬系統,系統啟動時在記憶體中產生,用戶可以直接通過訪問這些檔案來獲得系統信息;(8)/root:超級用戶主目錄;(9)/sbin:這個目錄存放著系統管理程式,如fsck、mount等;10)/tmp(temporary):存放不同的程式執行時產生的臨時檔案;(11)/usr(user):存放用戶應用程式和檔案。採用BusyBox是縮小根檔案系統的好辦法,因為其中提供了系統的許多基本指令但是其體積很小。眾所周知,瑞士軍刀以其小巧輕便、功能眾多而聞名世界,成為各國軍人的必備工具,並廣泛套用於民間,而BusyBox也被稱為嵌入式Linux領域的"瑞士軍刀"。此地址可以下載BusyBox:http://www.busybox.net,當前最新版本為1.1.3。編譯好busybox後,將其放入/bin目錄,若要使用其中的命令,只需要建立link,如:ln-s./busyboxlsln-s./busyboxmkdir4.1cramfs在根檔案系統中,為保護系統的基本設定不被更改,可以採用cramfs格式,它是一種唯讀的快閃記憶體檔案系統。製作cramfs檔案系統的方法為:建立一個目錄,將需要放到檔案系統的檔案copy到這個目錄,運行"mkcramfs目錄名image名"就可以生成一個cramfs檔案系統的image檔案。例如如果目錄名為rootfs,則正確的命令為:mkcramfsrootfsrootfs.ramfs我們使用下面的命令可以mount生成的rootfs.ramfs檔案,並查看其中的內容:mount-oloop-tcramfsrootfs.ramfs/mount/point此地址可以下載mkcramfs工具:http://sourceforge.net/projects/cramfs/。
4.2jfss2對於cramfs快閃記憶體檔案系統,如果沒有ramfs的支持則只能讀,而採用jfss2(TheJournallingFlashFileSystemversion2)檔案系統則可以直接在快閃記憶體中讀、寫數據。jfss2是一個日誌結構(log-structured)的檔案系統,包含數據和原數據(meta-data)的節點在快閃記憶體上順序地存儲。jfss2記錄了每個擦寫塊的擦寫次數,當快閃記憶體上各個擦寫塊的擦寫次數的差距超過某個預定的閥值,開始進行磨損平衡的調整。調整的策略是,在垃圾回收時將擦寫次數小的擦寫塊上的數據遷移到擦寫次數大的擦寫塊上以達到磨損平衡的目的。
與mkcramfs類似,同樣有一個mkfs.jffs2工具可以將一個目錄製作為jffs2檔案系統。假設把/bin目錄製作為jffs2檔案系統,需要運行的命令為:mkfs.jffs2-d/bin-ojffs2.img4.3yaffsyaffs是一種專門為嵌入式系統中常用的快閃記憶體設備設計的一種可讀寫的檔案系統,它比jffs2檔案系統具有更快的啟動速度,對快閃記憶體使用壽命有更好的保護機制。為使Linux支持yaffs檔案系統,我們需要將其對應的驅動加入到核心中fs/yaffs/,並修改核心配置檔案。使用我們使用mkyaffs工具可以將NANDFLASH中的分區格式化為yaffs格式(如/bin/mkyaffs/dev/mtdblock/0命令可以將第1個MTD塊設備分區格式化為yaffs),而使用mkyaffsimage(類似於mkcramfs、mkfs.jffs2)則可以將某目錄生成為yaffs檔案系統鏡像。
嵌入式Linux還可以使用NFS(網路檔案系統)通過乙太網掛接根檔案系統,這是一種經常用來作為調試使用的檔案系統啟動方式。通過網路掛接的根檔案系統,可以在主機上生成ARM交叉編譯版本的目標檔案或二進制執行檔,然後就可以直接裝載或執行它,而不用頻繁地寫入flash。
採用不同的檔案系統啟動時,要注意通過第二章介紹的BootLoader修改啟動參數,如廣州友善之臂的demo提供如下三種啟動方式:
(1)從cramfs掛接根檔案系統:root=/dev/bon/2();
(2)從移植的yaffs掛接根檔案系統:root=/dev/mtdblock/0;
(3)從乙太網掛接根檔案系統:root=/dev/nfs。