建立根目錄
嵌入式linux系統可以包含多個檔案系統,但是必須包含根檔案系統,“根”的意思就是“第一個”,必須要有第一個檔案系統。
檔案系統包含兩層含義,一是系統中的一系列檔案目錄,二是嵌入式系統挂載檔案目錄的方式。
建立目錄:
建立目錄非常簡單,隻是批量建立出一系列的檔案夾。
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
建立裝置檔案:
相關的裝置在系統中以檔案的方式存在。
cd rootfs/dev
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3
建立兩個必須的裝置檔案。c 代表字元裝置,然後分别為主裝置号,次裝置号。
加入配置檔案:
配置檔案與系統無關,可以采用軟體包。
tar etc.tar.gz
mv etc/* …/rootfs/etc/ -rf
添加核心子產品
cd …/linux進入核心代碼檔案
make modules ARCH=arm CROSS_COMPILE=arm-linux-
make modules_ install ARCH=arm INSTALL_ MOD_ PATH=…/rootfs制作的根檔案系統路徑,将編譯好的核心子產品.ko檔案搬移到根檔案目錄中的/lib/modules/目錄下。
編譯/安裝busybox
Busybox:嵌入式開發中的瑞士軍刀,可以為根檔案系統提供Linux中的相關指令。
1、配置busybox
解壓busybox壓縮包,進入busybox檔案根目錄,執行指令:make menuconfig
在圖形界面下對如下選項進行配置:
Busybox Settings - - - -> build Options- - - ->
- 選中 “Build busybox as a static binary”, 靜态連結
- Cross Compiler prefix (arm-linux-)
Busybox Settings- -> Installation Options- ->
- 選中 “Don‘t use /usr”, 選中該項可以避免busybox 被安裝到宿主系統的/usr目錄下,破壞宿主系統。
- Busybox Installation Prefix (/xxx/rootfs) 該選項表明編譯後的busybox的安裝位置。
如下圖所示:

2. 編譯、安裝busybox
編譯:make
安裝:make install
挂載根檔案系統
根據儲存設備的硬體特性、系統需求,不同的檔案系統類型有不同的應用場合。在嵌入式Linux應用中,主要的儲存設備為 RAM 和FLASH,常用的基于儲存設備的檔案系統類型包括:jffs2, yaffs2, ubifs, ramdisk等
檔案系統類型
可以多種檔案系統複用。
使用Initramfs方式來挂載檔案系統
1、 cd …/rootfs/
ln –s ./bin/busybox init 建立軟連接配接init,它連接配接到bin檔案下的busybox
2、配置Linux核心,使核心支援initramfs
在 general setup –> 中
還要設定根檔案系統目錄的路徑,如下圖所示:
3、 編譯核心,将核心檔案拷貝到需要的地方,把核心下載下傳到開發闆中。
4、 利用嵌入式系統中的uboot指令來設定環境變量,
setenv bootargs noinitrd console=ttySAC0,115200
這樣就可以将根檔案系統挂載到linux系統中。
使用NFS方式挂載檔案系統
network file system 網絡檔案系統,根據上面的步驟,如果采用initramfs方式,不采用網絡的方式,如果檔案系統發生改變則需要重新編譯核心,如果在開發階段每次修改檔案就重新編譯核心就非常麻煩,采用NFS方式就可以變得很簡單。
1、配置Linux核心,使核心支援initramfs
注意在 general setup –> 中,去掉上一部分選中的initramfs選項。
在 file system- - >network file system- -> 中
2、編譯核心
3、在uboot界面設定環境變量啟動參數
setenv bootargs noinitrd
console=ttySAC0,115200 init=/init (序列槽)
root=/dev/nfs rw (采用nfs裝置)
nfsroot=192.168.1.3:/home/xxxx,proto=tcp,nfsvers=3
(nfs伺服器的ip位址:根檔案系統rootfs的路徑)
ip=192.168.1.6:192.168.1.3:192.168.1.1:255.255.255.0::eth0:off
(開發闆的ip位址:伺服器的ip位址:網關:掩碼:網卡名不寫:将ip位址給eth0:關閉動态ip擷取)
注意:上面的粗體字為需要根據實際來進行修改的内容。
4、確定作為伺服器的Linux主機的NFS伺服器是開啟的。
5、下載下傳核心、啟動系統。