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