嵌入式linux QQ交流群:175159209,歡迎愛好者加入交流技術問題!
嵌入式Linux系統由 Linux內核 + 根文件系統 兩部分組成
一個完整的嵌入式Linux系統組成:bootloader + boot parameters + kernel + root filesystem
嵌入式Linux系統使用的是Linux內核,製作方法基本和X86平臺的Linux內核一致,下面介紹製作運行於micro2440開發板的內核和根文件系統。
嵌入式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/目錄下產生zImage內核映像
5,使用tftp下載到開發板運行即可
根文件系統的製作:
根文件系統是Linux啟動時使用的第一個文件系統,就像PC機上的文件目錄
6,創建根文件系統的目錄(目錄名隨便取)
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,創建設備文件
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,安裝內核模塊(把編譯好的內核模塊拷貝到創建的這個文件系統)
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」,靜態連結
更改Cross Compiler prefix 為(arm-linux-)
進入installation option->
選中「do not use /usr」,可以避免busybox被安裝到宿主系統的/usr目錄下,破壞宿主系統
更改busybox installation prefix位置為(/xxx/rootfs)
12,編譯,安裝busybox(把相關的命令/文件拷貝到這個正在創建的文件系統)
在busybox根目錄下
make ARCH=arm CROSS_COMPILE=arm-linux- /*等.等*/
make install //執行的是busybox這個可執行文件/*rootfs/bin/目錄下多了好多文件*/
13,至此根文件系統製作完成
由根文件系統製作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 //根文件系統的所有內容變成了ramdisk=8192=8MB
gzip -9 -f ramdisk //對ramdisk進行壓縮,將此壓縮文件放到開發板即 可作為根文件系統啟動起來
開發板可運行的文件系統:
NFS文件系統:文件系統在PC機上,開放給開發板運行
ramdisk文件系統:下載到開發板的內存中運行
Linux支持的文件系統:
ext2,ext3,vfat,jffs,romfs,nfs,這些不同的文件系統由虛擬文件系統VFS統一管理
嵌入式Linux支持的文件系統:
jffs2,yaffs,cramfs,ramdisk,ramfs
jffs2:用於NorFlash上,可讀寫,支持數據壓縮
yaffs2:用於NandFlash上,不支持數據壓縮,可讀寫
cramfs:既可以用於NorFlash上,又可以用於NandFlash上,只讀,支持數據壓縮
ramdisk:用一部分固定大小的內存作為分區來使用,並非是一個實際的文件系統,方便內核啟動
NFS:文件系統在PC機上,通過網絡共享