嵌入式linux內核制作、根文件系統制作


嵌入式系統構成:

主要由bootloader、kernel、以及根文件系統三部分組成。

 

內核制作步驟:

制作嵌入式平台使用的linux內核制作方法與pc平台上的linux內核基本一致

1.清除原有配置與中間文件

x86:make distclean

arm:make distclean

2.配置內核

x86:make menuconfig

arm: make menuconfig ARCH=arm

3編譯內核4

x86:make bzImage

arm:make uImage ARCH=arm CROSS_COMPILE=arm-linux-

注意make zImage與make uImage的區別

make uImage會先產生zImage,然后再產生uImage(再zImage的基礎上加上48字節的頭,包括壓縮方式等)

 

用tftp下載時,需要把zImage拷貝到/tftp文件夾下

 

根文件系統制作

文件系統包含兩個層次的含義:

1、按照固定格式組織的目錄與文件(看的見)

2、在特定的存儲介質上管理這些目錄和文件需要的數據(看不見)

制作文件系統步驟:

1、創建目錄和文件

2、位創建好的目錄和文件建立管理數據

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

2.創建設備文件

cd dev/
mknod -m 666 console c 5 1     //mknod:創建設備文件
mknod -m 666 null c 1 3

3、安裝/etc

tar etc.tar.gz  -C  /XXX/rootfs

4、編譯內核模塊

進入linux內核目錄下

make modules ARCH=arm  CROSS_COMPILE=arm-linux-           //編譯的結果,內核模塊.ko文件散落在各個角落中

5、安裝內核模塊

make modules_install ARCH=arm INSTALL_MOD_PATH=../rootfs  //把.ko文件copy到lib/modules中

 

安裝/編譯busybox

Busybox: 嵌入式開發中的瑞士軍刀

1.配置busybox
#make menuconfig    //進入busybox目錄下
a、進入Busybox Settings ->build Options->
選中 “Build busybox as a static binary”, 靜態鏈接

Cross Compiler prefix (arm-linux-)
Installation Options->
選中 “Don‘t use /usr”, 選中該項可以避免busybox 被安裝到宿主系統的/usr目錄下,破壞宿主系統

Busybox Installation Prefix (/xxx/rootfs)
該選項表明編譯后的busybox
的安裝位置

 

編譯安裝busybox

make:編譯

make install   //安裝

 

文件系統類型

linux引入虛擬文件系統VFS(Virtual File System)。

在嵌入式linux應用中,主要的存儲設備為RAM和FLASH。常用的基於存儲設備的文件系統類型包括:jffs2,yaffs,cramfs,ramdisk,ramfs等。 

jffs2:日志閃存文件系統版本2,用於NOR flash,可讀寫、支持數據壓縮的日志文件系統。

yaffs/ubitFS:用於nand flash設計的一種日志型文件系統,不支持數據壓縮。

Cramfs:只讀的壓縮文件系統。(用的越來越少)

Ramdisk:將部分固定大小的內存當做塊設備來使用。

Initramfs:將內存當做塊設備用(現在用的多)

NFS:網絡文件系統。 (開發階段使用)

 

把zImagecopy到/tftp下

tftp 31000000 zImage

nand erase 200000 300000(offset  size)

nand write 31000000 200000 300000(內存addr offset  size)

利用Initramfs特點:每次添加一個功能都需要重新編譯內核,重新下載。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM