建立根文件系統(tǒng)的步驟

根文件系統(tǒng)的制作

1、建立根文件系統(tǒng)及目錄

1.1 創(chuàng)建目錄

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

1.2 創(chuàng)建設(shè)備文件

Linux系統(tǒng)中,絕大部分的設(shè)備通過文件來操作,通過文件讀寫來實(shí)現(xiàn)對(duì)設(shè)備的讀寫

dev目錄下存放各種設(shè)備文件,console文件和null目錄必需的,用mknod創(chuàng)建設(shè)備文件

cd rootfs/dev
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3

c代表的是字符設(shè)備,5是主設(shè)備號(hào),1是次設(shè)備號(hào)

1.3 加入配置文件

首先需要下載etc.tar.gz文件

tar etc.tar.gz

把解壓后的所有文件拷貝到rootfs文件下

mv etc/* rootfs/etc/ -rf

1.4 添加內(nèi)核模塊

往根文件系統(tǒng)中添加內(nèi)核模塊

進(jìn)入內(nèi)核代碼

cd …/linux

編譯內(nèi)核模塊

make modules ARCH=arm CROSS_COMPILE=arm-linux-

把編譯好的內(nèi)核模塊復(fù)制到rootfs目錄下(...為rootfs目錄前綴)

make modules_install ARCH=arm INSTALL_MOD_PATH=…/rootfs

1.5 編譯busybox

Busybox: 嵌入式開發(fā)中的瑞士軍刀,提供嵌入式開發(fā)中很多的的命令、小工具

先下載busybox源代碼,解壓后進(jìn)去文件夾中

配置busybox

make menuconfig

在Busybox Settings àbuild Options->

選中 “Build busybox as a static binary”, 靜態(tài)鏈接

Cross Compiler prefix (arm-linux-)配置成arm-linux-

Installation Options->

選中 “Don‘t use /usr”, 選中該項(xiàng)可以避免busybox 被安裝到宿主系統(tǒng)的/usr目錄下,破壞宿主系統(tǒng)

Busybox Installation Prefix (/xxx/rootfs)

該選項(xiàng)表明編譯后的busybox的安裝位置

開始編譯

make
make install

進(jìn)入rootfs->bin目錄

可以看到包含了很多命令,說明編譯安裝成功

2、掛載根文件系統(tǒng)到內(nèi)核

2.1 掛載方式

文件系統(tǒng)類型有很多,主要有:

initramfs、NFS、Yaffs2、UbiF5、Jffs2、Ramdisk

2.2 掛載initramfs文件系統(tǒng)

基于內(nèi)存的文件系統(tǒng),主要用于產(chǎn)品,優(yōu)點(diǎn)是訪問速度快,缺點(diǎn)是根文件系統(tǒng)發(fā)生變化時(shí)都要重新制作一遍,下面是建立initramfs文件系統(tǒng)的步驟

進(jìn)入rotfs創(chuàng)建軟連接,名字叫做init

cd …/rootfs/
ln –s ./bin/busybox init

配置Linux內(nèi)核,支持initramfs,運(yùn)行

make menuconfig ARCH=arm

選擇->General setup->Initial RAM *****

配置下面目錄為根文件系統(tǒng)目錄****/rootfs/

編譯內(nèi)核

make uImage ARCH=arm CROSS_COMPILE=arm-linux-

拷貝uImage到/tftpboot/目錄下

進(jìn)入到U-boot,配置環(huán)境變量,U-boot通過bootargs告訴內(nèi)核以什么樣的方式啟動(dòng)

setenv bootargs noinitrd console=ttySAC0,115200

下載并啟動(dòng)linux內(nèi)核:

tftp 31000000 uImage
bootm 31000000

到這里根文件系統(tǒng)就掛載成功了

initramfs編譯出來的內(nèi)核由2部分構(gòu)成,一部分是真正的內(nèi)核,另一部分是文件系統(tǒng)在制作initramfs時(shí)會(huì)把rootfs文件目錄的文件壓縮貼在uImage文件上,uImage在啟動(dòng)時(shí)會(huì)把文件系統(tǒng)解壓到內(nèi)存中運(yùn)行。

2.3 掛載NFS文件系統(tǒng)

基于網(wǎng)絡(luò)的文件系統(tǒng),主要用于開發(fā)階段,通過NFS可以非常方便的往開發(fā)板中添加文件

首先需要對(duì)內(nèi)核進(jìn)行配置

make menuconfig ARCH=arm

進(jìn)入General setup,取消掉Initial RAM *****,然后進(jìn)入File system選中Network File Systems,保證Root file system on NFS是選上的,Network File Systems也要選上

進(jìn)行內(nèi)核編譯

make uImage ARCH=arm CROSS_COMPILE=arm-linux-

進(jìn)入到U-boot,配置環(huán)境變量

setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.1.3:/home/unix/NO.3/3-rootfs/rootfs ip=192.168.1.4:192.168.1.3:192.168.1.1:255.255.255.0::eth0:off

console的配置表示使用串口作為控制臺(tái),波特率為115200

root表示使用/dev/nfs作為根文件系統(tǒng)

nfsroot用來指明NFS服務(wù)器的地址,即Linux的地址,后面的冒號(hào)是制作的根文件系統(tǒng)的路徑

要選擇和自己相符的路徑,

ip第一項(xiàng)是啟動(dòng)后自己的ip地址,第二項(xiàng)是NFS服務(wù)器地址,第三項(xiàng)是網(wǎng)關(guān),第四項(xiàng)是掩碼,中間可以給

開發(fā)板取主機(jī)名,這里空掉,eth0表示啟動(dòng)后把ip地址賦值給eth0網(wǎng)卡,off表示關(guān)閉動(dòng)態(tài)ip獲取功能

保存環(huán)境變量

saveenv

啟動(dòng)前需要保證Linux啟動(dòng)了NFS并配置了,NFS的啟動(dòng)及配置見

http://blog.csdn.net/u013181595/article/details/72566910

下載并啟動(dòng)linux內(nèi)核:

tftp 31000000 uImage
bootm 31000000

驗(yàn)證

在Linux主機(jī)制作的rootfs目錄下新增一個(gè)測(cè)試文件,然后查看開發(fā)板中是否新增了該文件,如果增加成功

說明NFS文件系統(tǒng)也就制作成功了!

這種方式下的文件系統(tǒng)使用網(wǎng)絡(luò),虛擬機(jī)和開發(fā)板的文件系統(tǒng)保持一致,開發(fā)階段使用非常方便。

http://blog.csdn.net/u013181595/article/details/72629958


建立根文件系統(tǒng)的步驟:
1.創(chuàng)建根文件系統(tǒng)目錄。
2.創(chuàng)建各種必要的系統(tǒng)文件目錄。
3.創(chuàng)建設(shè)備文件。
4.建立啟動(dòng)相關(guān)的配置文件。
5.編譯安裝庫文件glibc/uclibc。
6.編譯busybox,安裝系統(tǒng)軟件和應(yīng)用。
這里重點(diǎn)要建立啟動(dòng)相關(guān)的配置文件(Linux-2.6):

創(chuàng)建/etc/inittab

::sysinit:/etc/init.d/rcS
::respawn:/sbin/getty 115200 s3c2410_serial0
::restart:/sbin/init
::shutdown:/bin/umount -a -r

創(chuàng)建/etc/init.d文件

#!/bin/sh
mount -a
/etc/init.d/udev start
mkdir /dev/pts
mount -t devpts devpts /dev/pts
hwclock --hctosys
ifup eth0
ifup lo
/etc/init.d/sshd start
thttpd -C /etc/thttpd.conf

建立開發(fā)板上的文件系統(tǒng)配置文件/etc/fstab

proc /proc proc defaults 0 0
sys /sys sysfs defaults 0 0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容