亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
1.根文件系統(tǒng)" >1.根文件系統(tǒng)
2.主要的根文件系統(tǒng)" >2.主要的根文件系統(tǒng)
3.Ramdisk制作" >3.Ramdisk制作
4.Cramfs制作" >4.Cramfs制作
5.其他根文件系統(tǒng)的制作" >5.其他根文件系統(tǒng)的制作
6.BusyBox編譯制作" >6.BusyBox編譯制作
首頁 系統(tǒng)教程 操作系統(tǒng) Linux根文件系統(tǒng)的秘密

Linux根文件系統(tǒng)的秘密

Feb 15, 2024 pm 01:42 PM
linux linux教程 linux系統(tǒng) linux操作系統(tǒng) linux命令 外殼腳本 嵌入式linux linux入門 linux學(xué)習(xí)

Linux是一種開源、可移植、可定制的操作系統(tǒng),它廣泛應(yīng)用于各種領(lǐng)域,如服務(wù)器、桌面、嵌入式設(shè)備等。Linux的核心是內(nèi)核,它負(fù)責(zé)管理硬件資源和提供基本的服務(wù)。但是,內(nèi)核并不是一個獨(dú)立的實(shí)體,它需要一個文件系統(tǒng)來存儲和訪問各種數(shù)據(jù)和程序。文件系統(tǒng)是一種組織和管理文件的方法,它定義了文件的名稱、位置、屬性、權(quán)限等信息。在Linux中,有許多不同類型的文件系統(tǒng),如ext4、xfs、btrfs等,它們各有特點(diǎn)和優(yōu)勢。但是,在所有的文件系統(tǒng)中,有一個特殊的文件系統(tǒng),它是Linux系統(tǒng)的基礎(chǔ)和核心,它就是根文件系統(tǒng)(rootfs)。那么,根文件系統(tǒng)是什么?它有什么作用?它又是如何創(chuàng)建和管理的呢?本文將從以下幾個方面進(jìn)行解答:

Linux根文件系統(tǒng)的秘密

1.根文件系統(tǒng)

文件系統(tǒng)是包括在一個磁盤(包括光盤、軟盤、閃盤及其它存儲設(shè)備)或分區(qū)的目錄結(jié)構(gòu);一個可應(yīng)用的磁盤設(shè)備可以包含一個或多個文件系統(tǒng);如果您想進(jìn)入一個文件系統(tǒng),首先您要做的是掛載(mount)文件系統(tǒng);為了掛載(mount)文件系統(tǒng),您必須指定一個掛載點(diǎn)。

注:對于我們應(yīng)用開發(fā)來說,購買開發(fā)板的時候,廠家會提供好現(xiàn)成的根文件系統(tǒng)和BootLoader等,如果需要,我們可以改變其中的命令而無需從頭開始制作一個新的根文件系統(tǒng)。不過這兒的制作過程可以讓我們更深一點(diǎn)理解Linux的文件系統(tǒng)。

2.主要的根文件系統(tǒng)

* Linux 中,rootfs 是必不可少的。PC 上主要實(shí)現(xiàn)有 ramdisk 和直接掛載 HD(Harddisk,硬盤)上的根文件系統(tǒng);嵌入式中一般不從 HD 啟動,而是從 Flash 啟動,最簡單的方法是將 rootfs load 到 RAM 的RAMDisk,稍復(fù)雜的就是直接從Flash 讀取的 Cramfs,更復(fù)雜的是在 Flash 上分區(qū),并構(gòu)建 JFFS2 等文件系統(tǒng)。

* RAMDisk 將制作好的 rootfs 壓縮后寫入 Flash,啟動的時候由 Bootloader load 到RAM,解壓縮,然后掛載到 /。這種方法操作簡單,但是在 RAM 中的文件系統(tǒng)不是壓縮的,因此需要占用許多嵌入式系統(tǒng)中稀有資源 RAM。

ramdisk 就是用內(nèi)存空間來模擬出硬盤分區(qū),ramdisk通常使用磁盤文件系統(tǒng)的壓縮存放在flash中,在系統(tǒng)初始化時,解壓縮到SDRAM并掛載根文件系統(tǒng), 在linux系統(tǒng)中,ramdisk有二種,一種就是可以格式化并加載,在linux內(nèi)核2.0/2.2就已經(jīng)支持,其不足之處是大小固定;另一種是 2.4的內(nèi)核才支持,通過,ramfs來實(shí)現(xiàn),他不能被格式化,但用起來方便,其大小隨所需要的空間增加或減少,是目前l(fā)inux常用的ramdisk技 術(shù)。

* initrd 是 RAMDisk 的格式,kernel 2.4 之前都是 image-initrd,Kernel 2.5 引入了 cpio-initrd,大大簡化了 Linux 的啟動過程,附合 Linux 的基本哲學(xué):Keep it simple, stupid(KISS). 不過cpio-initrd 作為新的格式,還沒有經(jīng)過廣泛測試,嵌入式 Linux 中主要采用的還是 image-initrd。

* Cramfs 是 Linus 寫的很簡單的文件系統(tǒng),有很好的壓縮綠,也可以直接從 Flash 上運(yùn)行,不須 load 到 RAM 中,因此節(jié)約了 RAM。但是 Cramfs 是只讀的,對于需要運(yùn)行時修改的目錄(如: /etc, /var, /tmp)多有不便,因此,一般將這些目錄做成ramfs 等可寫的 fs。

* SquashFS 是對 Cramfs 的增強(qiáng)。突破了 Cramfs 的一些限制,在 Flash 和 RAM 的使用量方面也具有優(yōu)勢。不過,據(jù)開發(fā)者介紹,在性能上可能不如 Cramfs。這也是一種新方法,在嵌入式系統(tǒng)采用之前,需要經(jīng)過更多的測試。

3.Ramdisk制作

RAMDisk的制作方法如下:
(1) 在PC機(jī)的Linux操作系統(tǒng)環(huán)境下,生成可以虛擬成塊設(shè)備的文件,假設(shè)文件名為init.img。

$?dd?if=/dev/zero?of=init.img?bs=4096?count=1024

其中bs*count為塊設(shè)備大?。▎挝唬鹤止?jié)),生成init.img文件以后,還必須對該文件進(jìn)行格式化。

$?mke2fs?–m0?–F?init.img

(2) 新建一個文件夾ram,并將init.img掛接到ram目錄。

$?mkdir?ram
$?mount?init.img?ram/?-o?loop

這時,讀寫ram目錄,等效于讀寫init.img文件。用戶可以將根文系統(tǒng)所需的文件寫入到ram目錄中。往ram目錄寫完文件以后,還需要使用umount ram命令卸載init.img,才能將已寫入的文件保存到init.img中。

(3)添加完畢,需要umount ram

4.Cramfs制作

CramFS(Compressed Rom File System)是Linux Torvalds在Transmeta任職時,所參與開發(fā)的文件系統(tǒng)。它是針對Linux內(nèi)核2.4之后的版本所設(shè)計的一種新型只讀文件系統(tǒng),采用了zlib 壓縮,壓縮比一般可以達(dá)到1:2,但仍可以作到高效的隨機(jī)讀取,Linux系統(tǒng)中,通常把不需要經(jīng)常修改的目錄壓縮存放,并在系統(tǒng)引導(dǎo)的時候再將壓縮文件 解開。因?yàn)镃ramfs不會影響系統(tǒng)的讀取文件的速度,而且是一個高度壓縮的文件系統(tǒng)。因此非常廣泛應(yīng)用于嵌入式系統(tǒng)中。

在嵌入式的 環(huán)境之下,內(nèi)存和外存資源都需要節(jié)約使用。如果使用RAMDISK方式來使用文件系統(tǒng),那么在系統(tǒng)運(yùn)行之后,首先要把Flash上的映像文件解壓縮到內(nèi)存 中,構(gòu)造起RAMDISK環(huán)境,才可以開始運(yùn)行程序。但是它也有很致命的弱點(diǎn)。在正常情況下,同樣的代碼不僅在Flash中占據(jù)了空間(以壓縮后的形式存 在),而且還在內(nèi)存中占用了更大的空間(以解壓縮之后的形式存在),這違背了嵌入式環(huán)境下盡量節(jié)省資源的要求。

使用CramFS文件 系統(tǒng)就是一種解決這個問題的方式。CramFS是一個壓縮格式的文件系統(tǒng),它并不需要一次性地將文件系統(tǒng)中的所有內(nèi)容都解壓縮到內(nèi)存之中,而只是在系統(tǒng)需 要訪問某個位置的數(shù)據(jù)的時候,馬上計算出該數(shù)據(jù)在CramFS中的位置,將它實(shí)時地解壓縮到內(nèi)存之中,然后通過對內(nèi)存的訪問來獲取文件系統(tǒng)中需要讀取的數(shù) 據(jù)。CramFS中的解壓縮以及解壓縮之后的內(nèi)存中數(shù)據(jù)存放位置都是由CramFS文件系統(tǒng)本身進(jìn)行維護(hù)的,用戶并不需要了解具體的實(shí)現(xiàn)過程,因此這種方 式增強(qiáng)了透明度,對開發(fā)人員來說,既方便,又節(jié)省了存儲空間。

但是Cramfs也有其缺點(diǎn):延遲、小于16MB、不支持寫,只支持PAGE_CREATE_SIZE=4096的內(nèi)核。

制作的命令:(root文件夾中存放著文件系統(tǒng))

#mkcramfs?root?cramfs.img

5.其他根文件系統(tǒng)的制作

制作yaffs文件系統(tǒng):?mkyaffsimage?myroots?myroots.img
制作squashfs:?mksquashfs?$(FS_DIR)?$(FS_NAME)?-noappend?-be?-lzma?-no-fragments?–noI

6.BusyBox編譯制作

建立目標(biāo)板空根目錄文件夾及根目錄下的文件夾:

[root@190?friendly-arm]#?mkdir?myroots
[root@190?friendly-arm]#pwd
/friendly-arm/myroots
[root@190?friendly-arm]#cd?myroots
[root@190?myroots]#?mkdir?bin?sbin?usr?lib?dev?mnt?opt?root?etc?home?proc?tmp?var
[root@190?myroots]#?mkdir?etc/init.d

進(jìn)入etc/init.d目錄下,建立一個腳本文件,并命名為rcS,用gedit打開,添加如下內(nèi)容:

#!?/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask?022
export?PATH?runlevel?prevlevel
#
#?Trap?CTRL-C?&c?only?in?this?shell?so?we?can?interrupt?subprocesses.
#
trap?":"?INT?QUIT?TSTP

創(chuàng)建 dev 中的節(jié)點(diǎn)
如果使用“l(fā)inux 2.6.xx”的內(nèi)核,應(yīng)該事先創(chuàng)建節(jié)點(diǎn)“console”、“null”。否則在系統(tǒng)啟動時內(nèi)容會提示以下錯誤:

Warning:?unable?to?open?an?initial?console.
Kernel?panic?-?not?syncing:?Attempted?to?kill?init!

創(chuàng)建節(jié)點(diǎn)的命令如下:

#?mknod?dev/console?c?5?1
#?mknod?dev/null?c?1?3?移植Busybox:

進(jìn)入到壓縮文件存放的目錄下,并解壓。然后進(jìn)入解壓后的busybox目錄文件夾,隨后配置busybox 。

[root@190?busybox-1.2.0]#?make?menuconfig

由于每個版本的配置選項(xiàng)組織有所不同。不管怎樣,我們注意以下選項(xiàng)就行了:

1)?Support?for?devfs
2)?Build?BusyBox?as?a?static?binary?(?no?shared?libs?)?//將busybox編譯成靜態(tài)鏈接
3)?Do?you?want?to?build?busybox?with?a?Cross?Compile?
(/usr/local/arm/3.3.2/bin/arm-linux-)?Cross?Compile?prefix?//指定交叉編譯器
4)?init
5)?Support?reading?an?inittab?file?//支持init讀取/etc/inittab?配置文件
6)?(X)?ash選中ash?//建立的rcS腳本才能執(zhí)行
7)ash
8)cp?cat?ls?mkdir?mv?//可執(zhí)行命令工具的選擇,自己看著辦吧,需要用到的就選上
9)?mount
10)?umount
11)?Support?loopback?mounts
12)?Support?for?the?old?/etc/mtab?file
13)?insmod
14)?Support?version?2.2.x?to?2.4.x?Linux?kernels
15)?Support?version?2.6.x?Linux?kernels
16)?vi
17)don’t?use?user

以上內(nèi)容必須選上,其他可按默認(rèn)值;如果要支持其他功能,如網(wǎng)絡(luò)支持等,可按需選擇,英語不是很爛的話,這些都沒有問題。
配置好之后,保存退出。然后對其編譯和安裝到剛才建立的根文件系統(tǒng)目錄下:

[root@190?busybox-1.2.0]?make?TARGET_ARCH=arm?CROSS=arm-linux-?\?PREFIX=/friendly-arm/myroots/?all?install

安裝好之后,將相應(yīng)的二進(jìn)制文件拷貝到根文件系統(tǒng)相應(yīng)的目錄下:
拷貝一些管理員控制程序到/sbin目錄下,最重要的就是要包含一個init命令;
拷貝應(yīng)用程序運(yùn)行時所需要的庫到/lib,庫文件可以從PC機(jī)上的交叉編譯工具安裝目錄下拷貝,如libc-2.2.2.so、libcryt-2.2.2.so、libm-2.2.2.so、libutil-2.2.2.so等,為部分相應(yīng)庫建立快捷方式,提供一些應(yīng)用程序按快 捷方式名稱調(diào)用。值得注意的是C庫要采用C庫的版本glibc, glibc位于/lib/libc.so.6

通過上述分析,我們可以看到,根文件系統(tǒng)是Linux系統(tǒng)的重要組成部分,它包含了Linux系統(tǒng)啟動和運(yùn)行所需的關(guān)鍵文件和目錄。根文件系統(tǒng)通常被掛載在/(根)目錄下,并且可以包含其他文件系統(tǒng)的掛載點(diǎn)。根文件系統(tǒng)可以使用不同類型的文件系統(tǒng)格式,并且可以通過一些工具來創(chuàng)建和管理。例如,我們可以使用mkfs命令來格式化一個分區(qū)或設(shè)備為根文件系統(tǒng),我們可以使用mount命令來掛載或卸載一個根文件系統(tǒng),我們可以使用df命令來查看一個根文件系統(tǒng)的使用情況等??傊募到y(tǒng)是Linux系統(tǒng)的秘密所在,它為Linux系統(tǒng)提供了穩(wěn)定和靈活的基礎(chǔ)。

以上是Linux根文件系統(tǒng)的秘密的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
如何與Windows一起安裝Linux(雙啟動)? 如何與Windows一起安裝Linux(雙啟動)? Jun 18, 2025 am 12:19 AM

安裝Linux和Windows雙系統(tǒng)的關(guān)鍵是分區(qū)和啟動設(shè)置。1.準(zhǔn)備工作包括備份數(shù)據(jù)并壓縮現(xiàn)有分區(qū)騰出空間;2.使用Ventoy或Rufus制作Linux啟動U盤,推薦Ubuntu;3.安裝時選擇“與其他系統(tǒng)并存”或手動分區(qū)(/至少20GB,/home剩余空間,swap可選);4.勾選安裝第三方驅(qū)動以避免硬件問題;5.安裝后若未進(jìn)入Grub引導(dǎo)菜單,可用boot-repair修復(fù)引導(dǎo)或調(diào)整BIOS啟動順序。只要步驟清晰、操作得當(dāng),整個過程并不復(fù)雜。

如何啟用EPEL(企業(yè)Linux的額外軟件包)存儲庫? 如何啟用EPEL(企業(yè)Linux的額外軟件包)存儲庫? Jun 17, 2025 am 09:15 AM

啟用EPEL倉庫的關(guān)鍵在于根據(jù)系統(tǒng)版本選擇正確的安裝方式。首先,確認(rèn)系統(tǒng)類型和版本,使用命令cat/etc/os-release獲取信息;其次,在CentOS/RockyLinux上通過dnfinstallepel-release啟用EPEL,8和9版本命令相同;第三,在RHEL上需手動下載對應(yīng)版本的.repo文件并安裝;第四,遇到問題時可重新導(dǎo)入GPG密鑰,注意舊版本可能不被支持,也可考慮啟用epel-next獲取測試包。完成上述步驟后,使用dnfrepolist驗(yàn)證是否成功添加EPEL倉庫。

如何為初學(xué)者選擇Linux發(fā)行版? 如何為初學(xué)者選擇Linux發(fā)行版? Jun 19, 2025 am 12:09 AM

新手選擇Linux發(fā)行版應(yīng)先明確使用需求。1.日常使用選Ubuntu或LinuxMint;編程開發(fā)適合Manjaro或Fedora;老舊設(shè)備用Lubuntu等輕量系統(tǒng);學(xué)習(xí)底層原理推薦CentOSStream或Debian。2.穩(wěn)定性優(yōu)先考慮UbuntuLTS或Debian;追求新功能可選Arch或Manjaro。3.社區(qū)支持方面,Ubuntu和LinuxMint資源豐富,Arch文檔偏技術(shù)向。4.安裝難度上,Ubuntu、LinuxMint較簡單,Arch適合有基礎(chǔ)者。建議先試用再決定。

如何向Linux添加新磁盤 如何向Linux添加新磁盤 Jun 27, 2025 am 12:15 AM

添加新硬盤到Linux系統(tǒng)步驟如下:1.確認(rèn)硬盤被識別,使用lsblk或fdisk-l檢查;2.用fdisk或parted分區(qū),如fdisk/dev/sdb創(chuàng)建分區(qū)并保存;3.格式化分區(qū)為文件系統(tǒng),如mkfs.ext4/dev/sdb1;4.臨時掛載使用mount命令,如mount/dev/sdb1/mnt/data;5.修改/etc/fstab實(shí)現(xiàn)開機(jī)自動掛載,需先測試掛載確保無誤。操作前務(wù)必確認(rèn)數(shù)據(jù)安全,避免硬件連接問題。

修復(fù)無法在Windows Google Chrome上傳文件 修復(fù)無法在Windows Google Chrome上傳文件 Jul 08, 2025 pm 02:33 PM

在GoogleChrome中上傳文件時遇到問題?這可能很煩人,對吧?無論您是將文檔附加到電子郵件、在社交媒體上共享圖像,還是提交工作或?qū)W校的重要文件,流暢的文件上傳過程都是至關(guān)重要的。因此,如果您的文件上傳在WindowsPC上的Chrome中持續(xù)失敗,可能會令人沮喪。如果您還沒有準(zhǔn)備好放棄您最喜歡的瀏覽器,這里有一些提示修復(fù)無法在WindowsGoogleChrome上傳文件1.從通用修復(fù)開始在我們了解任何高級故障排除技巧之前,最好先嘗試下面提到的一些基本解決方案。排除互聯(lián)網(wǎng)連接問題:互聯(lián)網(wǎng)連

Linux中的系統(tǒng)日志在哪里? Linux中的系統(tǒng)日志在哪里? Jun 24, 2025 am 12:15 AM

Linux系統(tǒng)中的日志通常存儲在/var/log目錄中,該目錄包含多種關(guān)鍵日志文件,如syslog或messages(記錄系統(tǒng)日志)、auth.log(記錄認(rèn)證事件)、kern.log(記錄內(nèi)核消息)、dpkg.log或yum.log(記錄軟件包操作)、boot.log(記錄啟動信息);可通過cat、tail-f或journalctl等命令查看日志內(nèi)容;應(yīng)用日志也常位于/var/log下的子目錄,如Apache的apache2或httpd目錄、MySQL的日志文件等;同時需注意日志權(quán)限通常需要s

什么是sudo命令,我什么時候應(yīng)該使用它? 什么是sudo命令,我什么時候應(yīng)該使用它? Jul 02, 2025 am 12:20 AM

sudo代表“substituteuserdo”或“superuserdo”,允許用戶以其他用戶(通常是root)的權(quán)限運(yùn)行命令。其核心用途包括:1.執(zhí)行系統(tǒng)級操作如安裝軟件或編輯系統(tǒng)文件;2.訪問受保護(hù)目錄或日志;3.管理服務(wù)如重啟nginx;4.修改全局設(shè)置如/etc/hosts。使用時系統(tǒng)會檢查/etc/sudoers配置并驗(yàn)證用戶密碼,提供臨時權(quán)限而非持續(xù)以root身份登錄,確保安全性。最佳實(shí)踐包括:僅必要時使用、避免盲目執(zhí)行網(wǎng)絡(luò)命令、用visudo編輯sudoers文件、連續(xù)操作可考慮

如何在Linux上管理組 如何在Linux上管理組 Jul 06, 2025 am 12:02 AM

管理Linux用戶組需掌握查看、創(chuàng)建、刪除、修改及用戶歸屬調(diào)整等操作。查看用戶組信息可用cat/etc/group或getentgroup,查看用戶所屬組用groups[用戶名]或id[用戶名];創(chuàng)建組使用groupadd,可加-g指定GID;刪除空組用groupdel;添加用戶到組用usermod-aG,修改主組用usermod-g;從組移除用戶可通過編輯/etc/group或使用vigr命令;修改組屬性用groupmod-n(改名)或groupmod-g(改GID),并記得更新相關(guān)文件權(quán)限。

See all articles