手把手帶你實(shí)現(xiàn)linux內(nèi)核根文件系統(tǒng)的制作?。ǔ?jí)詳細(xì)~)
一、根文件系統(tǒng)預(yù)備知識(shí)
嵌入式Linux中都需要構(gòu)建根文件系統(tǒng),構(gòu)建根文件系統(tǒng)的規(guī)則在FHS(Filesystem Hierarchy Standard)文檔中,下面是根文件系統(tǒng)頂層目錄。
目錄 內(nèi)容
bin 存放所有用戶都可以使用的、基本的命令。?
sbin 存放的是基本的系統(tǒng)命令,它們用于啟動(dòng)系統(tǒng)、修復(fù)系統(tǒng)等。?
usr 里面存放的是共享、只讀的程序和數(shù)據(jù)。?
proc 這是個(gè)空目錄,常作為proc文件系統(tǒng)的掛載點(diǎn)。?
dev 該目錄存放設(shè)備文件和其它特殊文件。?
etc 存放系統(tǒng)配置文件,包括啟動(dòng)文件。?
lib 存放共享庫(kù)和可加載塊(即驅(qū)動(dòng)程序),共享庫(kù)用于啟動(dòng)系統(tǒng)、運(yùn)行根文件系統(tǒng)中的可執(zhí)行程序。?
boot 引導(dǎo)加載程序使用的靜態(tài)文件?
home 用戶主目錄,包括供服務(wù)賬號(hào)鎖使用的主目錄,如FTP?
mnt 用于臨時(shí)掛接某個(gè)文件系統(tǒng)的掛接點(diǎn),通常是空目錄。也可以在里面創(chuàng)建空的子目錄。?
opt 給主機(jī)額外安裝軟件所擺放的目錄。?
root root用戶的主目錄 tmp 存放臨時(shí)文件,通常是空目錄。 var 存放可變的數(shù)據(jù)。
1、建立根文件系統(tǒng)目錄
進(jìn) 入到/opt/studyarm目錄,新建建立根文件系統(tǒng)目錄的腳本文件create_rootfs_bash,使用命令chmod +x create_rootfs_bash改變文件的可執(zhí)行權(quán)限,./create_rootfs_bash運(yùn)行腳本,就完成了根文件系統(tǒng)目錄的創(chuàng)建。
改變了tmp目錄的使用權(quán),讓它開(kāi)啟 sticky位,為tmp目錄的使用權(quán)開(kāi)啟此位,可確保tmp目錄底下建立的文件,只有建立它的用戶有權(quán)刪除。盡管嵌入式系統(tǒng)多半是單用戶,不過(guò)有些嵌入 式應(yīng)用不一定用root的權(quán)限來(lái)執(zhí)行,因此需要遵照根文件系統(tǒng)權(quán)限位的基本規(guī)定來(lái)設(shè)計(jì)。
2、建立動(dòng)態(tài)鏈接庫(kù)
動(dòng)態(tài)鏈接庫(kù)直接用友善之臂的,先解壓友善之臂的根文件包,拷貝lib的內(nèi)容到新建的根文件目錄lib內(nèi)。
3、交叉編譯Bosybox
Bosybox是一個(gè)遵循GPL v2協(xié)議的開(kāi)源項(xiàng)目,它在編寫(xiě)過(guò)程總對(duì)文件大小進(jìn)行優(yōu)化,并考慮了系統(tǒng)資源有限(比如內(nèi)存等)的情況,使用Busybox可以自動(dòng)生成根文件系統(tǒng)所需的bin、sbin、usr目錄和linuxrc文件。
1、解壓busybox
cd /mnt/hgfs/share tar –zxvf busybox-1.13.3.tar.tgz –C /opt/studyarm
2、進(jìn)入源碼,修改Makefile文件:
修改:
【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【891587639】整理了一些個(gè)人覺(jué)得比較好的學(xué)習(xí)書(shū)籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。?!前100名進(jìn)群領(lǐng)取,額外贈(zèng)送一份價(jià)值699的內(nèi)核資料包(含視頻教程、電子書(shū)、實(shí)戰(zhàn)項(xiàng)目及代碼)? ??


4、配置busybox
輸入make menuconfig進(jìn)行配置
(1)、Busybox Settings---> ?General Configuration--->
(2)、Linux Module Utilities---> ?
(/lib/modules)Default directory containing modules
(modules.dep)Default name of modules.dep
(3)、在busybox中配置對(duì)dev下設(shè)備類型的支持
dev的創(chuàng)建有三種方法:
手動(dòng)創(chuàng)建:在制作根文件系統(tǒng)的時(shí)候,就在dev目錄下創(chuàng)建好要使用的設(shè)備文件,系統(tǒng)掛接根文件系統(tǒng)后,就可以使用dev目錄下的設(shè)備文件了。
使用devfs文件系統(tǒng):這種方法已經(jīng)過(guò)時(shí),具有不確定的設(shè)備映射、沒(méi)有足夠的主/次設(shè)備號(hào)、devfs消耗大量的內(nèi)存。
udev:它是個(gè)用戶程序,能根據(jù)系統(tǒng)中硬件設(shè)備的狀態(tài)動(dòng)態(tài)的更新設(shè)備文件,包括設(shè)備文件的創(chuàng)建、刪除等。它的操作相對(duì)復(fù)雜,但靈活性很高
mdev 是busybox自帶的一個(gè)簡(jiǎn)化版的udev,適合于嵌入式的應(yīng)用埸合。其具有使用簡(jiǎn)單的特點(diǎn)。它的作用,就是在系統(tǒng)啟動(dòng)和熱插拔或動(dòng)態(tài)加載驅(qū)動(dòng)程序時(shí), 自動(dòng)產(chǎn)生驅(qū)動(dòng)程序所需的節(jié)點(diǎn)文件。在以busybox為基礎(chǔ)構(gòu)建嵌入式linux的根文件系統(tǒng)時(shí),使用它是最優(yōu)的選擇。下面的選項(xiàng)將增加對(duì)mdev的支持。
5、編譯busybox
編譯busybox到指定目錄: cd /opt/studyarm/busybox-1.13.3 make CONFIG_PREFIX=/opt/studyarm/rootfs install 在rootfs目錄下會(huì)生成目錄bin、sbin、usr和文件linuxrc的內(nèi)容。
建立etc目錄下的配置文件
etc/mdev.conf文件,內(nèi)容為空。
拷貝主機(jī)etc目錄下的passwd、group、shadow文件到rootfs/etc目錄下。
etc/sysconfig目錄下新建文件HOSTNAME,內(nèi)容為”MrFeng”。
etc/inittab文件:
6、etc/init.d/rcS文件:
使用以下命令改變r(jià)cS的執(zhí)行權(quán)限:
7、etc/fstab文件:
8、etc/profile文件:
制作根文件系統(tǒng)映像文件
使用以下命令安裝好yaffs文件系統(tǒng)制作工具:
在/opt/studyarm目錄下,使用命令mkyaffs2image rootfs rootfs.img生成根文件系統(tǒng)映像文件。
二、啟動(dòng)系統(tǒng)
將前面兩章生成的內(nèi)核映像文件和根文件系統(tǒng)映像文件下載到mini2440開(kāi)發(fā)板,查看啟動(dòng)信息。我成功移植啟動(dòng)信息如下:
基于S3C2440的Linux內(nèi)核移植和yaffs2文件系統(tǒng)制作.pdfourdev_464685.rar(文件大小:64K) (原文件名:基于S3C2440的Linux內(nèi)核移植和yaffs2文件系統(tǒng)制作.rar)
