




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第第頁Linux系統(tǒng)中根文件系統(tǒng)構(gòu)建基本方式1.根文件系統(tǒng)布局
(嵌入式)(Linux)根文件系統(tǒng)布局,建議還是按照FHS標(biāo)準(zhǔn)來安排,事實(shí)上大多數(shù)嵌入式Linux都是這樣做的。但是,(嵌入式系統(tǒng))可能并不需要桌面/服務(wù)器那樣龐大系統(tǒng)的全部目錄,可以酌情對系統(tǒng)進(jìn)行精簡,以簡化Linux的使用。如嵌入式Linux文件系統(tǒng)中通常不會放置內(nèi)核源碼,因而存的常不會放置內(nèi)核源碼,因而存的常不會放置內(nèi)核源碼,因而存放源碼的/usr/src目錄是不必要的,甚至連頭文件也不需要,即/usr/include目錄也不必要;但是/bin、/dev、/etc、/lib、/proc、/sbin、/usr幾個目錄是不可或缺的。
所以,允許嵌入式Linux對系統(tǒng)目錄結(jié)構(gòu)進(jìn)行精簡,以適應(yīng)具體用場合的需求,一個典型的嵌入式Linux根文件系統(tǒng)目錄如下所示:
(./_install)
Destination
path
for
'make
install'
(NEW)
2-2-4.編譯安裝
退出保存后,執(zhí)行編譯make,大概幾分鐘后編譯完成,執(zhí)行makeinstall,很快就會安裝完成:
新建一個目錄用來存放制作的根文件系統(tǒng),可以命名為rootfs。將利用BusyBox生成的二進(jìn)制文件及目錄,即_install目錄下的所有文件及目錄復(fù)制到rootfs目錄下。
3.構(gòu)建根文件系統(tǒng)
使用BusyBox編譯后,僅有bin、sbin、usr這3個目錄和軟鏈接linuxrc,目錄里都是二進(jìn)制命令工具,這還不足以構(gòu)成一個可用的根文件系統(tǒng),必須進(jìn)行其它完善工作,才能構(gòu)建一個可用的根文件系統(tǒng)。
3-1.完善目錄結(jié)構(gòu)
根據(jù)典型嵌入式Linux根文件系統(tǒng)目錄,在rootfs目錄中創(chuàng)建其他目錄
$
mkdir
dev
etc
lib
proc
sys
tmp
var
3-2.添加C運(yùn)行庫文件
庫文件可直接從交叉工具鏈獲取,一般在工具鏈的libc/lib/目錄下。我這里是在ubuntu下安裝的Linaro的交叉工具鏈:
庫文件是在/usr/(arm)-linux-gnueabihf/lib/目錄下,拷貝動態(tài)鏈接庫文件(.so文件)到新制作的根文件系統(tǒng)根目錄下/lib目錄里:
$
cp
-a
/usr/arm-linux-gnueabihf/lib/*so*
./lib/
這里只是拷貝動態(tài)鏈接庫。一般開發(fā)程序使用動態(tài)編譯需要板子上動態(tài)庫的支持才能運(yùn)行,所以拷貝動態(tài)庫。而靜態(tài)庫一般在靜態(tài)編譯的時候用到,由于交叉編譯的工作放在了PC上所以板子上不需要靜態(tài)庫,所以沒有必要拷貝,這樣還可以減小根文件系統(tǒng)的體積。
一般使用gcc編譯后的可執(zhí)行文件、目標(biāo)文件和動態(tài)庫都帶有調(diào)試信息和符號信息,這些在調(diào)試的時候用到,但是卻增大了文件的大小。通常在PC上調(diào)試,或者調(diào)試時使用這些帶有調(diào)試信息和符號信息的庫文件,程序發(fā)布后使用去掉這些信息的庫文件,可以大大縮小根文件系統(tǒng)的體積。這里我們?nèi)サ暨@些信息,方法是使用strip工具:
$
arm-linux-gnueabihf-strip
./*
3-3.添加初始化配置腳本
初始化配置腳本放在在/etc目錄下,用于系統(tǒng)啟動所需的初始化配置腳本。BusyBox提供了一些初始化范例腳本,在examples/bootfloppy/etc/目錄下。將這些配置文件復(fù)制到”目錄下。將這些配置文件復(fù)制到”目錄下。將這些配置文件復(fù)制到新制作的根文件系統(tǒng)etc目錄下
cp
-a
../busybox/busybox-1.29.3/examples/bootfloppy/etc/*
etc/
添加后如圖所示:
3-3-1.修改/etc/inittab文件
/etc/inittab文件是init進(jìn)程解析的配置文件,通過這個配置文件決定執(zhí)行哪個進(jìn)程,何時執(zhí)行。將文件修改為:
#
系統(tǒng)啟動時:/etc/init.d/rcS#
系統(tǒng)啟動按下En(te)r鍵時:-/bin/sh#
按下Ctrl+Alt+Del鍵時:/sbin/reboot#
系統(tǒng)關(guān)機(jī)時:/sbin/swapoff
-a:/bin/umount
-a
-r#
系統(tǒng)重啟時:/sbin/init
以上內(nèi)容定義了系統(tǒng)啟動時,關(guān)機(jī)時,重啟時,按下Ctrl+Alt+Del鍵時執(zhí)行的進(jìn)程。
3-3-2.修改/etc/init.d/rcS文件
#!
/bin/sh#
掛載
/etc/fstab
中定義的所有文件系統(tǒng)/bin/mount
-a#
掛載虛擬的devpts文件系統(tǒng)用于用于偽終端設(shè)備/bin/mkdir
-p
/dev/pts/bin/mount
-t
devpts
devpts
/dev/pts#
使用mdev動態(tài)管理u盤和鼠標(biāo)等熱插拔設(shè)備/bin/echo
/sbin/mdev
>
/proc/sys/kernel/hotplug#
掃描并創(chuàng)建節(jié)點(diǎn)/sbin/mdev
-s
3-3-3.修改/etc/fstab文件
/etc/fstab文件存放的是文件系統(tǒng)信息。在系統(tǒng)啟動后執(zhí)行/etc/init.d/rcS文件里/bin/mount-a命令時,自動掛載這些文件系統(tǒng)。內(nèi)容如下:
#
proc
/proc
proc
defaults
0
0sysfs
/sys
sysfs
defaults
0
0tmpfs
/tmp
tmpfs
defaults
0
0tmpfs
/dev
tmpfs
defaults
0
0
注:這里我們掛載的文件系統(tǒng)有三個proc、sysfs和tmpfs,在內(nèi)核中proc和sysfs默認(rèn)都支持,而tmpfs是沒有支持的,我們需要添加tmpfs的支持。
3-3-4.修改/etc/profile文件
/etc/profile文件作用是設(shè)置環(huán)境變量,每個用戶登錄時都會運(yùn)行它。將文件內(nèi)容修改為:
#
主機(jī)名export
HOSTNAME=zyz#
用戶名export
USER=root#
用戶目錄export
HOME=/root#
終端默認(rèn)提示符export
PS1="[$USER@$HOSTNAME:$PWD]#
"
#
環(huán)境變量export
PATH=/bin:/sbin:/usr/bin:/usr/sbin#
動態(tài)庫路徑export
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
因?yàn)橹付藃oot用戶的家目錄為/root,所以需要創(chuàng)建該目錄,否則執(zhí)行cd~時會失敗
$
mkdir
root
登錄系統(tǒng)后效果為:
...Please
press
Enter
to
activate
this
console.[root@zyz:/]#[root@zyz:/]#
cd
~[root@zyz:/root]#[root@zyz:/root]#
echo
$PATH/bin:/sbin:/usr/bin:/usr/sbin
至此,根文件系統(tǒng)就基本構(gòu)建好了。
4.制作根文件系統(tǒng)鏡像
4-1.根文件系統(tǒng)類型
如果文件系統(tǒng)已經(jīng)布局完成,則可以發(fā)到目標(biāo)中了。通常會制作一個鏡像然后通過某種方式固化到目標(biāo)系統(tǒng)中,具體采用什么樣的形發(fā)布需要根據(jù)資源狀況、內(nèi)核情況和系統(tǒng)需求等方面進(jìn)行裁決:
(1)(硬件)方面,至少需要考慮主存儲介質(zhì)的類型和大小如Flash是NORFlash還是NANDFlash,(RAM)的大小等。
(2)內(nèi)核方面,則需考慮所裁剪后的支持哪些文件系統(tǒng)采用中最合適,能滿足性、速度等要求。
(3)系統(tǒng)需求方面,要考慮運(yùn)行速度、是否可寫壓縮等因素。常見的可用于根文件系統(tǒng)類型有ramdisk、cramfs、jffs2、yaffs/yaffs2和ubifs等,各類型的特性如表所列。
盡管文件系統(tǒng)固件以某一種文件系統(tǒng)的鏡像發(fā)布,但是整個文件系統(tǒng)實(shí)際上還是并存多種邏輯文件系統(tǒng)的。例如,一個系統(tǒng)根文件系統(tǒng)以ubifs掛載,但是/dev目錄卻是以tmpfs掛載的、/sys目錄掛載的是sysfs文件系統(tǒng)?,F(xiàn)在,似乎ubifs是一種趨勢。
4-2.制作UBIFS根文件系統(tǒng)鏡像
Linux下制作UBIFS的命令有兩個,mkfs.ubifs和ubinize。mkfs.ubifs,將一個目錄制作為UBIFS文件系統(tǒng)。使用范例:
$
mkfs.ubifs
-m
2048
-e
128KiB
-c
4096
-r
./rootfs
-o
rootfs.ubifs
其中:
-r,
-d,
--root=DIR
build
file
system
from
directory
DIR(目錄)-m,
--min-io-size=SIZE
minimum
I/O
unit
size(最小輸入輸出單元大?。?e,
--leb-size=SIZE
(logic)al
erase
block
size(邏輯擦除塊大?。?c,
--max-leb-cnt=COUNT
(maxim)um
logical
erase
block
count(最大邏輯擦除塊數(shù)目)-o,
--output=FILE
output
to
FILE(輸出文件)
所以制作ubifs鏡像文件,需要知道3個關(guān)鍵參數(shù),即最小輸入輸出單元大小,邏輯擦除塊大小,最大邏輯擦除塊數(shù)目,其中最大邏輯擦除塊數(shù)目可由Flash分區(qū)大小和邏輯擦除塊大小計算出來,這些信息可以通過u-boot命令查看:
=>
mtdparts
default=>
ubi
part
rootfs
ubinize,將mkfs.ubifs制作的UBIFS文件系統(tǒng)制作成含有卷標(biāo)的可以直接燒寫在Flash上的鏡像。使用范例:
$
ubinize
-m
2048
-p
128KiB
ubinize.cfg
-o
rootfs_ubifs.img
其中:
-o,
--output=
output
file
name(輸出文件)-p,
--peb-size=
size
of
the
physical
eraseblock
of
the
flash(物理擦除塊大?。?/p>
this
UBI
image
is
created
for
in
bytes,
kilobytes
(KiB),
or
megabytes
(MiB)
(mandatory
parameter)-m,
--min-io-size=
minimum
input/output
unit
size
of
the
flash
in
bytes
這里需要兩個參數(shù)物理擦除塊大小和最小輸入輸出單元大小。ubinize.cfg是配置文件,內(nèi)容如下:
[ubifs]mode=ubiimage=rootfs.ubifsvol_id=0vol_size=1024MiBvol_type=dynamicvol_name=rootfsvol_flags=auto
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 亞馬遜加盟合同范本
- 2024年秋新滬教牛津版英語三年級上冊 Unit 5 第3課時(Grammar in use) 教學(xué)課件
- 2025年數(shù)控銑工技能競賽參考試指導(dǎo)題庫500題(含答案)
- 輸液港相關(guān)護(hù)理
- 產(chǎn)品品牌加盟合同范本
- 2025至2030年中國抗單鏈DNA數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國康婦特栓數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國左右后門內(nèi)飾板帶卡扣總成數(shù)據(jù)監(jiān)測研究報告
- 小學(xué)生配音課課件視頻
- 2025至2030年中國雙歧因子奶數(shù)據(jù)監(jiān)測研究報告
- 高中數(shù)學(xué)選擇性必修3 教材習(xí)題答案
- 智能語音技術(shù)與應(yīng)用-基于Python實(shí)現(xiàn)(高職)全套教學(xué)課件
- 北師大版二年級下冊數(shù)學(xué)第一單元 除法教案
- 2024年兒童托管行業(yè)分析報告及未來發(fā)展趨勢
- 野生動植物保護(hù)
- 2024年安徽省合肥熱電集團(tuán)招聘筆試參考題庫含答案解析
- 商品條碼使用許可協(xié)議
- 2023德佑房屋租賃合同
- PI形式發(fā)票范文模板
- 華文版一年級下冊書法教案
- 2023光伏電站無人機(jī)智能巡檢技術(shù)標(biāo)準(zhǔn)
評論
0/150
提交評論