天天看點

嵌入式 根檔案 系統

建立根目錄

嵌入式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、下載下傳核心、啟動系統。

繼續閱讀