? ? ? 嵌入式Linux系統(tǒng)由 Linux內(nèi)核 + 根文件系統(tǒng) 兩部分組成
一個(gè)完整的嵌入式Linux系統(tǒng)組成:bootloader + boot parameters + kernel + root filesystem
嵌入式Linux系統(tǒng)使用的是Linux內(nèi)核,制作方法基本和X86平臺(tái)的Linux內(nèi)核一致,下面介紹制作運(yùn)行于micro2440開發(fā)板的內(nèi)核和根文件系統(tǒng)。
嵌入式Linux內(nèi)核的制作:
1,到www.kernel.org下載源代碼,解壓,進(jìn)入內(nèi)核源代碼目錄。
2,清除原有的配置與中間文件
x86: make distclean
arm: make distclean
3,配置內(nèi)核:
x86: make menuconfig ARCH=i386
arm: make menuconfig ARCH=arm //配置完畢在內(nèi)核源代碼目錄生成.config文件,建議參考arch/arm/configs/s3c2410_defconfig .config、
4,編譯內(nèi)核:
x86: make bzImage
arm: make uImage ARCH=arm CROSS_COMPILE=arm-linux- //編譯成功在arch/arm/boot/目錄下產(chǎn)生zImage內(nèi)核映像
5,使用tftp下載到開發(fā)板運(yùn)行即可
根文件系統(tǒng)的制作:
根文件系統(tǒng)是Linux啟動(dòng)時(shí)使用的第一個(gè)文件系統(tǒng),就像PC機(jī)上的文件目錄
6,創(chuàng)建根文件系統(tǒng)的目錄(目錄名隨便取)
mkdir?rootfs
cd rootfs
mkdir?bin dev etc lib proc sbin sys usr mnt tmp var
mkdir?usr/bin usr/lib usr/sbin lib/modules
7,創(chuàng)建設(shè)備文件
cd?dev/
mknod -m 666?console?c 5 1
mknod -m 666?null?c 1 3
8,安裝/etc(隨便拷貝點(diǎn)/etc/目錄下的文件到該etc目錄下)
9,編譯內(nèi)核模塊
cd Linux 2.6.29 //進(jìn)入Linux內(nèi)核目錄
make modules ARCH=arm CORSS_COMPILE=arm-linux-
10,安裝內(nèi)核模塊(把編譯好的內(nèi)核模塊拷貝到創(chuàng)建的這個(gè)文件系統(tǒng))
make modules_install ARCH=arm INSTALL_MOD_PATH=/***/rootfs //生成rootfs/lib/modules/2.6.29.4-FriendlyARM
busybox的配置-編譯-安裝:
11,配置busybox(Linux下面是用的一整套的命令和工具的集合)
解壓busybox,進(jìn)入busybox根目錄
make menuconfig
選擇需要使用的工具
進(jìn)入 busybox settings->build option->
選中 “build busybox as a static binary”,靜態(tài)鏈接
更改Cross Compiler prefix 為(arm-linux-)
進(jìn)入installation option->
選中“do not use /usr”,可以避免busybox被安裝到宿主系統(tǒng)的/usr目錄下,破壞宿主系統(tǒng)
更改busybox installation prefix位置為(/xxx/rootfs)
12,編譯,安裝busybox(把相關(guān)的命令/文件拷貝到這個(gè)正在創(chuàng)建的文件系統(tǒng))
在busybox根目錄下
make ARCH=arm CROSS_COMPILE=arm-linux- /*等...........等*/
make install //執(zhí)行的是busybox這個(gè)可執(zhí)行文件/*rootfs/bin/目錄下多了好多文件*/
13,至此根文件系統(tǒng)制作完成
由根文件系統(tǒng)制作ramdisk
14,需要一個(gè)軟件genext2fs,為制作ramdisk的工具,
下載地址http://download.chinaunix.net/download.php?id=6874&ResourceID=3625
安裝方法:
解壓genext2fs
#cd genext2fs
#./configure
#make
#make install
15,利用genext2fs制作ramdisk
#genext2fs -b 8192 -d /***/rootfs ramdisk ?//根文件系統(tǒng)的所有內(nèi)容變成了ramdisk=8192=8MB
gzip -9 -f ramdisk //對(duì)ramdisk進(jìn)行壓縮,將此壓縮文件放到開發(fā)板即 可作為根文件系統(tǒng)啟動(dòng)起來
開發(fā)板可運(yùn)行的文件系統(tǒng):
NFS文件系統(tǒng):文件系統(tǒng)在PC機(jī)上,開放給開發(fā)板運(yùn)行
ramdisk文件系統(tǒng):下載到開發(fā)板的內(nèi)存中運(yùn)行
Linux支持的文件系統(tǒng):
ext2,ext3,vfat,jffs,romfs,nfs,這些不同的文件系統(tǒng)由虛擬文件系統(tǒng)VFS統(tǒng)一管理
嵌入式Linux支持的文件系統(tǒng):
jffs2,yaffs,cramfs,ramdisk,ramfs
jffs2:用于NorFlash上,可讀寫,支持?jǐn)?shù)據(jù)壓縮
yaffs2:用于NandFlash上,不支持?jǐn)?shù)據(jù)壓縮,可讀寫
cramfs:既可以用于NorFlash上,又可以用于NandFlash上,只讀,支持?jǐn)?shù)據(jù)壓縮
ramdisk:用一部分固定大小的內(nèi)存作為分區(qū)來使用,并非是一個(gè)實(shí)際的文件系統(tǒng),方便內(nèi)核啟動(dòng)
NFS:文件系統(tǒng)在PC機(jī)上,通過網(wǎng)絡(luò)共享
?
評(píng)論