溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux內(nèi)核與根文件系統(tǒng)有什么關(guān)系

發(fā)布時(shí)間:2021-07-15 09:28:10 來源:億速云 閱讀:178 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要為大家展示了“Linux內(nèi)核與根文件系統(tǒng)有什么關(guān)系”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Linux內(nèi)核與根文件系統(tǒng)有什么關(guān)系”這篇文章吧。

Linux內(nèi)核與根文件系統(tǒng)的關(guān)系 開篇題外話:對(duì)于Linux初學(xué)者來說,這是一個(gè)很糾結(jié)的問題,但這也是一個(gè)很關(guān)鍵的問題!

一語破天機(jī): “盡管內(nèi)核是 Linux 的核心,但文件卻是用戶與操作系統(tǒng)交互所采用的主要工具。這對(duì) Linux 來說尤其如此,這是因?yàn)樵?UNIX 傳統(tǒng)中,它使用文件 I/O 機(jī)制管理硬件設(shè)備和數(shù)據(jù)文件?!?/p>

一.什么是文件系統(tǒng)

文件系統(tǒng)指文件存在的物理空間,linux系統(tǒng)中每個(gè)分區(qū)都是一個(gè)文件系統(tǒng),都有自己的目錄層次結(jié)構(gòu)。

Linux文件系統(tǒng)中的文件是數(shù)據(jù)的集合,文件系統(tǒng)不僅包含著文件中的數(shù)據(jù)而且還有文件系統(tǒng)的結(jié)構(gòu),所有Linux 用戶和程序看到的文件、目錄、軟連接及文件保護(hù)信息等都存儲(chǔ)在其中。這種機(jī)制有利于用戶和操作系統(tǒng)的交互。

每個(gè)實(shí)際文件系統(tǒng)從操作系統(tǒng)和系統(tǒng)服務(wù)中分離出來,它們之間通過一個(gè)接口層:虛擬文件系統(tǒng)或VFS來通訊。VFS使得Linux可以支持多個(gè)不同的文件系統(tǒng),每個(gè)表示一個(gè)VFS 的通用接口。由于軟件將Linux 文件系統(tǒng)的所有細(xì)節(jié)進(jìn)行了轉(zhuǎn)換,所以Linux核心的其它部分及系統(tǒng)中運(yùn)行的程序?qū)⒖吹浇y(tǒng)一的文件系統(tǒng)。Linux 的虛擬文件系統(tǒng)允許用戶同時(shí)能透明地安裝許多不同的文件系統(tǒng)。

在Linux文件系統(tǒng)中,EXT2文件系統(tǒng)、虛擬文件系統(tǒng)、/proc文件系統(tǒng)是三個(gè)具有代表性的文件系統(tǒng)。

二.什么是根文件系統(tǒng)

根文件系統(tǒng)首先是一種文件系統(tǒng),該文件系統(tǒng)不僅具有普通文件系統(tǒng)的存儲(chǔ)數(shù)據(jù)文件的功能,但是相對(duì)于普通的文件系統(tǒng),它的特殊之處在于,它是內(nèi)核啟動(dòng)時(shí)所掛載(mount)的第一個(gè)文件系統(tǒng),內(nèi)核代碼的映像文件保存在根文件系統(tǒng)中,系統(tǒng)引導(dǎo)啟動(dòng)程序會(huì)在根文件系統(tǒng)掛載之后從中把一些初始化腳本(如rcS,inittab)和服務(wù)加載到內(nèi)存中去運(yùn)行。我們要明白文件系統(tǒng)和內(nèi)核是完全獨(dú)立的兩個(gè)部分。在嵌入式中移植的內(nèi)核下載到開發(fā)板上,是沒有辦法真正的啟動(dòng)Linux操作系統(tǒng)的,會(huì)出現(xiàn)無法加載文件系統(tǒng)的錯(cuò)誤。

那么根文件系統(tǒng)在系統(tǒng)啟動(dòng)中到底是什么時(shí)候掛載的呢?先將/dev/ram0掛載,而后執(zhí)行/linuxrc.等其執(zhí)行完后。切換根目錄,再掛載具體的根文件系統(tǒng).根文件系統(tǒng)執(zhí)行完之后,也就是到了Start_kernel()函數(shù)的最后,執(zhí)行init的進(jìn)程,也就第一個(gè)用戶進(jìn)程。對(duì)系統(tǒng)進(jìn)行各種初始化的操作。

根文件系統(tǒng)之所以在前面加一個(gè)”根“,說明它是加載其它文件系統(tǒng)的”根“,既然是根的話,那么如果沒有這個(gè)根,其它的文件系統(tǒng)也就沒有辦法進(jìn)行加載的。它包含系統(tǒng)引導(dǎo)和使其他文件系統(tǒng)得以掛載(mount)所必要的文件。根文件系統(tǒng)包括Linux啟動(dòng)時(shí)所必須的目錄和關(guān)鍵性的文件,例如Linux啟動(dòng)時(shí)都需要有init目錄下的相關(guān)文件,在 Linux掛載分區(qū)時(shí)Linux一定會(huì)找/etc/fstab這個(gè)掛載文件等,根文件系統(tǒng)中還包括了許多的應(yīng)用程序bin目錄等,任何包括這些Linux 系統(tǒng)啟動(dòng)所必須的文件都可以成為根文件系統(tǒng)。Linux啟動(dòng)時(shí),第一個(gè)必須掛載的是根文件系統(tǒng);若系統(tǒng)不能從指定設(shè)備上掛載根文件系統(tǒng),則系統(tǒng)會(huì)出錯(cuò)而退出啟動(dòng)。成功之后可以自動(dòng)或手動(dòng)掛載其他的文件系統(tǒng)。因此,一個(gè)系統(tǒng)中可以同時(shí)存在不同的文件系統(tǒng)。在 Linux 中將一個(gè)文件系統(tǒng)與一個(gè)存儲(chǔ)設(shè)備關(guān)聯(lián)起來的過程稱為掛載(mount)。使用 mount 命令將一個(gè)文件系統(tǒng)附著到當(dāng)前文件系統(tǒng)層次結(jié)構(gòu)中(根)。在執(zhí)行掛裝時(shí),要提供文件系統(tǒng)類型、文件系統(tǒng)和一個(gè)掛裝點(diǎn)。根文件系統(tǒng)被掛載到根目錄下“/”上后,在根目錄下就有根文件系統(tǒng)的各個(gè)目錄,文件:/bin /sbin /mnt等,再將其他分區(qū)掛接到/mnt目錄上,/mnt目錄下就有這個(gè)分區(qū)的各個(gè)目錄,文件。

三.什么是內(nèi)核

Linux內(nèi)核就像人的心臟,靈魂,指揮中心。內(nèi)核是一個(gè)操作系統(tǒng)的核心,它負(fù)責(zé)管理系統(tǒng)的進(jìn)程,內(nèi)存,設(shè)備驅(qū)動(dòng)程序,文件和網(wǎng)絡(luò)系統(tǒng),決定著系統(tǒng)的性能和穩(wěn)定性。內(nèi)核以獨(dú)占的方式執(zhí)行最底層任務(wù),保證系統(tǒng)正常運(yùn)行。協(xié)調(diào)多個(gè)并發(fā)進(jìn)程,管理進(jìn)程使用的內(nèi)存,使它們相互之間不產(chǎn)生沖突,滿足進(jìn)程訪問磁盤的請(qǐng)求等.

操作系統(tǒng)是一個(gè)用來和硬件打交道并為用戶程序提供一個(gè)有限服務(wù)集的低級(jí)支撐軟件。一個(gè)計(jì)算機(jī)系統(tǒng)是一個(gè)硬件和軟件的共生體,它們互相依賴,不可分割。計(jì)算機(jī)的硬件,含有外圍設(shè)備、處理器、內(nèi)存、硬盤和其他的電子設(shè)備組成計(jì)算機(jī)的發(fā)動(dòng)機(jī)。但是沒有軟件來操作和控制它,自身是不能工作的。完成這個(gè)控制工作的軟件就稱為操作系統(tǒng),在Linux的術(shù)語中被稱為“內(nèi)核”,也可以稱為“核心”。Linux內(nèi)核的主要模塊(或組件)分以下幾個(gè)部分:存儲(chǔ)管理、CPU和進(jìn)程管理、文件系統(tǒng)、設(shè)備管理和驅(qū)動(dòng)、網(wǎng)絡(luò)通信,以及系統(tǒng)的初始化(引導(dǎo))、系統(tǒng)調(diào)用等。

四.內(nèi)核與文件系統(tǒng)的關(guān)系

技術(shù)上說Linux是一個(gè)內(nèi)核。“內(nèi)核”指的是一個(gè)提供硬件抽象層、磁盤及文件系統(tǒng)控制、多任務(wù)等功能的系統(tǒng)軟件。一個(gè)內(nèi)核不是一套完整的操作系統(tǒng)。一套基于Linux內(nèi)核的完整操作系統(tǒng)叫作Linux操作系統(tǒng),或是GNU/Linux。

文件系統(tǒng)是kernel的一部分。文件系統(tǒng)實(shí)現(xiàn)了系統(tǒng)上存儲(chǔ)介質(zhì)和其他資源的交互。kernel tree中的fs目錄都是關(guān)于文件系統(tǒng)的,可以說它是kernel的一個(gè)大子系統(tǒng)。

嵌入式系統(tǒng)在flash中分配了存放內(nèi)核、根文件系統(tǒng)的區(qū)域。bootloader加載了內(nèi)核,內(nèi)核啟動(dòng),加載文件系統(tǒng),進(jìn)入Linux系統(tǒng)。

整個(gè)嵌入式系統(tǒng)而言,可以分為三個(gè)部分1.uboot 2.kernel 3.文件系統(tǒng)。其中kernel中以VFS去支持各種文件系統(tǒng),如yaffs,ext3,cramfs等等。yaffs/yaffs2是專為嵌入式系統(tǒng)使用NAND型閃存而設(shè)計(jì)的一種日志型文件系統(tǒng)。在內(nèi)核中以VFS來屏蔽各種文件系統(tǒng)的接口不同,以VFS向kernel提供一個(gè)統(tǒng)一的接口。如打開一個(gè)文件時(shí)統(tǒng)一使用open,寫時(shí)采用write,而不用去考慮是那種文件系統(tǒng),也不用去考慮文件系統(tǒng)是如何將數(shù)據(jù)寫入物理介質(zhì)的。其中 kernel中的配置,只是讓VFS支持這種接口。

以上是“Linux內(nèi)核與根文件系統(tǒng)有什么關(guān)系”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI