當前位置:首頁 » 電腦資訊 » 為什麼需要根文件系統

為什麼需要根文件系統

發布時間: 2022-06-21 01:16:29

❶ uboot、內核、操作系統、根文件系統他們之間到底是什麼關系,求大神指點!!

uboot是個引導啟動程序。BIOS自檢完成後就把電腦控制權交給uboot,由uboot來載入並引導操作系統運行。
內核就是最最最核心的那部份。操作系統內核就是操作系統的最最最最核心的那些程序。新安裝的操作系統中,一些自帶的小工具啊,小游戲啊,甚至連鍵盤滑鼠控制功能,這些都不屬於內核。內核是不包括硬體驅動程序的。
操作系統就是控制計算機硬體的軟體系統。它與內核的區別是它包含硬體驅動和一些基本的實用功能。
根文件系統這個名詞很少出現在windows中。在計算機存儲中,目錄結構都是以樹形結構表示的,根就是指這棵樹的根部。其他所有目錄都是在這個「根」上面逐級分配而來。「根文件系統」因為你加了「系統」二字,所以可以解釋為是指「整棵樹」,整個「樹形結構的文件系統」
它們之間的關系是:BIOS自檢---uboot引導----載入內核----操作系統啟動---啟動完成,系統待機。這幾個步驟所需要用到的文件與程序什麼的全部存貯在文件系統中。在這幾個名詞來說,文件系統可以獨立存在,但其他幾樣則無法脫離文件系統而存在。

❷ 為什麼需要根文件系統它有什麼作用

根文件系統?沒聽說。是說系統啟動時載入的文件吧??????

❸ 根文件系統的講解

Linux引導啟動時,默認使用的文件系統是根文件系統。其中一般都包括這樣一些子目錄:
/etc/, /dev/, /usr/, /usr/bin/, /bin/, /var/等。
etc/目錄主要含有一些系統配置文件;dev/含有設備特殊文件,用於使用文件操作語句操作設備;/usr/存放庫函數、手冊和其它一些文件。bin/存放執行程序;var/用於存放系統運行時可變的數據或者是日誌等信息。
存放文件系統的設備就是文件系統設備。比如,對於一般使用的windows 2000操作系統,硬碟C盤就是文件系統設備,而硬碟上按一定規則存放的文件就組成文件系統,windows 2000有NTFS或FAT32等文件系統。

❹ grub.conf 為什麼要指定根文件系統,initrd中的init腳本可以直接chroot過去的

chroot過去雖然可以,但是效率並不好,而且理論上不會切換init進程,這對於臨時構建也許有必要,但是大多數已載入的庫不會因根文件系統的切換而改變,initrd為了減少體積,是不會完善自身庫介面的,這意味著少數函數的高級功能可能會異常,但是通過引導參數直接定義是沒有問題的,執行完了必要工作後,會卸載所有已載入的函數庫等待init進程掛載新的文件系統並重新初始化函數,雖然後期可以通過腳本做到,但是卻沒有利用init自身的函數直接,再說initrd里很多介面只是用來載入物理根文件系統的,多餘介面比系統運行需要的介面都要多,多少會有安全隱患

❺ Linux內核中有文件系統模塊, 那它和根文件系統什麼關系哦

linux內核是linux的真實的操作系統,所有的操作系統的相關功能都是由用戶介面程序傳遞到內核由內核來完成的。
linux文件系統是指linux操作系統對整個系統中的所有的數據、文件的管理的一種實現方式。
簡單點說:像windows它的文件系統是NTFS文件系統或者FAT文件系統,通過這種方式將windows的各種文件保存在磁碟上,用於存儲和訪問了。
而linux系統則使用ext這種文件系統來實現。

❻ 什麼是根文件系統

文件系統:File System => FS;
根文件系統:Root File System => RFS。

首先你考慮一點描述語句:根文件系統也是一種「文件系統」,可以認為是一種「特殊的」「文件系統」,為什麼是叫「特殊的」呢?因為這種「根文件系統」承載著某些「特殊的功能」(其實「文件系統」相同的話,所具備的功能都是一樣的),那就是「操作系統」可能需要通過某種「布局」來管理相關設備的,諸如軟盤設備、硬碟設備、虛擬磁碟設備等等,這里可能就是用了一種已被定義好了「數據結構」的「布局」,即「文件系統」,而出現的「根文件系統」,可能是用來擔當主要或重要角色。

形象點來說,Windows下的C盤分區是有一定文件系統的,如FAT32、NTFS,這當然也都是文件系統呀。在安裝Windows操作系統時,會要求你先「格式化」C盤[當然我們目前考慮操作系統是被安裝在C盤中],採用一種「文件系統」比如NTFS、FAT32等,這一步呀,就類似於安裝「根文件系統」,也就是說在C盤中的NTFS文件系統會被稱作是「根文件系統」,而在D盤等中的NTFS文件系統會被稱作是「文件系統」或你想加上前綴名稱也不是不可以,比如「普通文件系統」,而我們從名稱上來說的話,因為這里出現了一個字眼「根」,所以我們就有兩種名稱的叫法了,自然就是FS與RFS,所以這種名稱叫法就會讓人感覺很是「雲里霧里」,而後「不知所雲」的],這個「格式化」過程就是將C盤上的存儲空間按預先定義好的一種FS的「數據結構」去「初始化」這些磁碟,[這里假設MINIX FS也可被Windows用來「格式化」C盤呀]比如建立引導塊、建立超級塊、建立兩類點陣圖塊、建立i節點點陣圖塊、建立好數據區塊等)也就是說,這個磁碟分區必須已經按一定數據結構的方式把磁碟空間「組織」好,以便「某種系統」(OS或FS,好象是FS更准確吧)能「訪問」該分區,所以在 0.11內核中會有兩種區分:mount_root() 和 sys_mount(),分別指「掛載根文件系統」、「掛載文件系統」[這里我覺得不應該用一個詞:安裝!我所理解的意思是,「安裝」就是指把某種東西 「放」到另一種東西上面去,比如你要安裝某種軟體到C盤,這種軟體的安裝程序可能在D盤,這時你會啟動D盤上該軟體的安裝程序,然後安裝程序就會把軟體默認安裝到C盤上,所以這個過程會叫做「安裝」,安裝前C盤上沒有該軟體的任何信息,安裝後C盤上就會有該軟體的信息啦],所以呢,要使用 sys_mount()功能,某種設備(具體來說就是某一分區)必須已經被某種FS的格式「安裝」好,然後該設備才會被「掛載」(mount)到「一個地 方」去。

那我們就以MINIX FS和FAT FS來分析吧。

在0.11內核代碼中,從mount_root(void)中的注釋可知,該函數會被「系統調用函數」sys_setup()調用,而在系統開機初始化設置時函數sys_setup()會被調用。為什麼不會調用sys_mount()呢?那我們又何時使用sys_mount()函數呢?其實 sys_mount()函數也是「系統調用函數」。我們在linux系統中,當你在某個shell的命令行中輸入mount後回車,你會看到以下提示信 息:
mount: usage: mount dev dir
你大概應該清楚了,而這是「正確的提示信息」,因為我們用錯mount用法了(另外,在/bin目錄下,可以看到有mount這樣一個文件,mount應 該就是一個單獨的程序了吧:-),好多地方都說mount是shell內部命令,而我更可能會認為cd才是shell的內部命令之一)。
那我們從sys_mount()函數的注釋中可以知道,該函數是「安裝文件系統調用函數」(我個人覺得這句話不太好理解),而我知道函數的功能,所以我會這么理解:這個函數是一「系統調用函數」,其功能是「將一個『文件系統』即FS『掛載』到(現有『根文件系統』即RFS的)一個「目錄」上,即目錄文件的i節點。所以呢,這個就與「mount dev dir」這樣的提示信息對應起來了;另外,我們需要知道,dev表示的是某個設備上的一個分區,而dir表示的是某一個「現有的」文件系統中的「目錄文件」,注意一定是「現有的」,在這里就是我們說的「根文件系統」,所以,你要使用mount功能,就得有以下條件:
1、在一個現有「文件系統」(根文件系統RFS)下面
2、該RFS中已經有了一些設備文件的存在,比如 /dev 下面的 hd0,hd1,等等
3、2中的/dev其實就是由RFS來管理的
4、還需要有一個目錄存在,而該目錄也是在該RFS中的即由RFS來管理的
5、當然你要有實際的磁碟設備存在(/dev/hd0隻是表示一個「虛」的設備文件名而已)且該設備已被「FS」格式化好了
6、最後你就會用mount dev dir這樣的方式,將實際的磁碟分區「掛載」到dir中

假如,你有一個硬碟(假設大小是512MB),就只是一個分區,該分區中的FS是 FAT FS(假設unix可以直接訪問,大不了看成是與minix fs是一樣的,只是名稱不同而已,以下就是把它看成就是一個minix fs來分析的)。

所以當你啟動了「0.11系統」(這個說法比較簡化,意思就是你進入了sh命令行)後,其實RFS就已經被「自動」「掛載」好了(就是 mount_root()),這時,你需要在該「0.11系統」中訪問那個硬碟,假設硬體上你已經安裝好了硬碟了,然後你會在sh命令行中進行「安裝」過 程了,假如是:
mount /dev/hd0 /mnt/fatc
即將第一個硬碟的第一個分區(目前只有一個分區)「掛載」到「RFS」中的根目錄下的mnt目錄中的fatc目錄上。所以,你可以直接「進入」到 fatc目錄中去訪問該硬碟里的文件了。
成功了!掛載成功,大功告成!

因為你了解內核代碼,所以你應該知道mount一系列過程的,你要知道以下幾點:
1、/dev/hd0, /mnt/fatc都是RFS中的「文件」(統稱),前者是設備文件,後者是目錄文件。
[體現在i節點結構中,就是各自的inode->i_mode中會區分是「設備類型文件」還是「目錄類型文件」,且前者的 inode->zone[0]存有該設備的設備號(還有inode->i_dev也是設備號,但實際含義不一樣),後者的 inode->i_mount就被置位啦,注意因為這個i節點就是一個「被『安裝』/『掛載』好了FS的i節點]

2、/這是目錄,但這個是RFS的目錄,且是根目錄。

3、/mnt/fatc 「相當於」就是那個硬碟分區中FS的根目錄。但其實該硬碟中的根目錄也是/。
[假設當你去訪問那個分區「根」目錄(其實也是/,但你能直接進去嗎?)中的某個文件hello.c,時,你會在現有sh命令行中,cd /mnt/fatc回車後 ls hello* -l,然後你會發現有hello.c這個文件,其實你就應該需要知道RFS是怎麼「定位」尋找到該hello.c文件的,當中有一個重要的過程就是需要取 每一個文件的inode信息即iget()函數,該函數中發現某文件的inode->i_mount被置位時,就「特別小心」了,為什麼?因為該 inode表示被「掛載」了一個文件系統,所以RFS會「切換」到那個FS的根目錄中去(使用了ROOT_INO,super_block.s_dev這樣的參數),然後再在該FS中按正常的過程繼續尋找所需要的文件,所以你能找到]

「正常的過程」就是指:要麼從一個FS的根目錄中開始查找文件,要不從一個文件系統當前用戶進程的當前工作目錄中開始查找文件。

所以就有一個重要的說法(我是這么理解的):跨文件系統訪問文件。這一過程涉及面較廣,主要數據結構有:i節點、超級塊。

4、最後,當你不需要使用該分區或是你想把硬碟拿走,則你會使用 umount 功能啦,這就對應 sys_umount()這一「系統調用函數」,那你就要知道該函數做了些什麼事了。

最後,總的來說:
mount_root()掛載了一個MINI FS又被稱為是RFS。
然後你可以在該RFS中再掛載別的FS。RFS與系統「共存亡」,自動被「掛載」,自動被「卸載」。
所以,FAT等也可以是根文件系統,當然也是文件系統。

所以,當你在你電腦上安裝了多操作系統時,假設在C盤(FAT32 FS)被裝了 win98,在D盤(NTFS FS)被安裝了winxp,那麼,當你進入了win98時,你FAT32好象就是RFS,那麼NTFS就是FS了;當你進入了winxp時,NTFS好象就是RFS,那麼FAT32就是FS了。
(為什麼C盤是要FAT32呢,因為win98不支持ntfs fs,而你又是裝的win98)

❼ 根文件系統的簡介

首先要明白的是「什麼是文件系統」,文件系統是對一個存儲設備上的數據和元數據進行組織的機制。這種機制有利於用戶和操作系統的交互。在一篇oracle的技術文章中看到這樣一句話「盡管內核是 Linux 的核心,但文件卻是用戶與操作系統交互所採用的主要工具。這對 Linux 來說尤其如此,這是因為在 UNIX 傳統中,它使用文件 I/O 機制管理硬體設備和數據文件」,這句話我是這樣理解的,在Linux沒有文件系統的話,用戶和操作系統的交互也就斷開了,例如我們使用最多的交互shell,包括其它的一些用戶程序,都沒有辦法運行。在這里可以看到文件系統相對於Linux操作系統的重要性。下面是Linux文件系統組件的體系結構。
用戶空間包含一些應用程序(例如,文件系統的使用者)和 GNU C 庫(glibc),它們為文件系統調用(打開、讀取、寫和關閉)提供用戶介面。系統調用介面的作用就像是交換器,它將系統調用從用戶空間發送到內核空間中的適當端點。
VFS 是底層文件系統的主要介面。這個組件導出一組介面,然後將它們抽象到各個文件系統,各個文件系統的行為可能差異很大。有兩個針對文件系統對象的緩存(inode 和dentry)。它們緩存最近使用過的文件系統對象。
每個文件系統實現(比如 ext2、JFS 等等)導出一組通用介面,供 VFS 使用。緩沖區緩存會緩存文件系統和相關塊設備之間的請求。例如,對底層設備驅動程序的讀寫請求會通過緩沖區緩存來傳遞。這就允許在其中緩存請求,減少訪問物理設備的次數,加快訪問速度。以最近使用(LRU)列表的形式管理緩沖區緩存。注意,可以使用 sync 命令將緩沖區緩存中的請求發送到存儲媒體(迫使所有未寫的數據發送到設備驅動程序,進而發送到存儲設備)。
當我們在Windows下,提到文件系統時,你的第一反應是想到的是什麼?是不是Windows下的一些Fat32、NTFS等的文件系統的類型。而在Linux中,你可能會想到Ext2、Ext3,但你還必須要有一個根文件系統的概念。根文件系統首先是一種文件系統,該文件系統不僅具有普通文件系統的存儲數據文件的功能,但是相對於普通的文件系統,它的特殊之處在於,它是內核啟動時所掛載(mount)的第一個文件系統,內核代碼的映像文件保存在根文件系統中,系統引導啟動程序會在根文件系統掛載之後從中把一些初始化腳本(如rcS,inittab)和服務載入到內存中去運行。我們要明白文件系統和內核是完全獨立的兩個部分。在嵌入式中移植的內核下載到開發板上,是沒有辦法真正的啟動Linux操作系統的,會出現無法載入文件系統的錯誤。
那麼根文件系統在系統啟動中到底是什麼時候掛載的呢?先將/dev/ram0掛載,而後執行/linuxrc.等其執行完後。切換根目錄,再掛載具體的根文件系統.根文件系統執行完之後,也就是到了Start_kernel()函數的最後,執行init的進程,也就第一個用戶進程。對系統進行各種初始化的操作。如果要弄明白這里的過程的話,可要好好的看看Linux內核源碼了。下圖展示了VFS,內核,文件系統的層次結構:
根文件系統之所以在前面加一個」根「,說明它是載入其它文件系統的」根「,既然是根的話,那麼如果沒有這個根,其它的文件系統也就沒有辦法進行載入的。它包含系統引導和使其他文件系統得以掛載(mount)所必要的文件。根文件系統包括Linux啟動時所必須的目錄和關鍵性的文件,例如Linux啟動時都需要有init目錄下的相關文件,在 Linux掛載分區時Linux一定會找/etc/fstab這個掛載文件等,根文件系統中還包括了許多的應用程序bin目錄等,任何包括這些Linux 系統啟動所必須的文件都可以成為根文件系統。
Linux啟動時,第一個必須掛載的是根文件系統;若系統不能從指定設備上掛載根文件系統,則系統會出錯而退出啟動。成功之後可以自動或手動掛載其他的文件系統。因此,一個系統中可以同時存在不同的文件系統。
在 Linux 中將一個文件系統與一個存儲設備關聯起來的過程稱為掛載(mount)。使用 mount 命令將一個文件系統附著到當前文件系統層次結構中(根)。在執行掛裝時,要提供文件系統類型、文件系統和一個掛裝點。根文件系統被掛載到根目錄下「/」上後,在根目錄下就有根文件系統的各個目錄,文件:/bin /sbin /mnt等,再將其他分區掛接到/mnt目錄上,/mnt目錄下就有這個分區的各個目錄,文件。
Linux根文件系統中一般有如下圖的幾個目錄:
1./bin目錄
該目錄下的命令可以被root與一般賬號所使用,由於這些命令在掛接其它文件系統之前就可以使用,所以/bin目錄必須和根文件系統在同一個分區中。
/bin目錄下常用的命令有:cat、chgrp、chmod、cp、ls、sh、kill、mount、umount、mkdir、[、test等。其中「[」命令就是test命令,我們在利用Busybox製作根文件系統時,在生成的bin目錄下,可以看到一些可執行的文件,也就是可用的一些命令。
2./sbin 目錄
該目錄下存放系統命令,即只有系統管理員(俗稱最高許可權的root)能夠使用的命令,系統命令還可以存放在/usr/sbin,/usr/local/sbin目錄下,/sbin目錄中存放的是基本的系統命令,它們用於啟動系統和修復系統等,與/bin目錄相似,在掛接其他文件系統之前就可以使用/sbin,所以/sbin目錄必須和根文件系統在同一個分區中。
/sbin目錄下常用的命令有:shutdown、reboot、fdisk、fsck、init等,本地用戶自己安裝的系統命令放在/usr/local/sbin目錄下。
3、/dev目錄
該目錄下存放的是設備與設備介面的文件,設備文件是Linux中特有的文件類型,在Linux系統下,以文件的方式訪問各種設備,即通過讀寫某個設備文件操作某個具體硬體。比如通過dev/ttySAC0文件可以操作串口0,通過/dev/mtdblock1可以訪問MTD設備的第2個分區。比較重要的文件有/dev/null, /dev/zero, /dev/tty, /dev/lp*等。
4./etc目錄
該目錄下存放著系統主要的配置文件,例如人員的賬號密碼文件、各種服務的其實文件等。一般來說,此目錄的各文件屬性是可以讓一般用戶查閱的,但是只有root有許可權修改。對於PC上的Linux系統,/etc目錄下的文件和目錄非常多,這些目錄文件是可選的,它們依賴於系統中所擁有的應用程序,依賴於這些程序是否需要配置文件。在嵌入式系統中,這些內容可以大為精減。
5./lib目錄
該目錄下存放共享庫和可載入(驅動程序),共享庫用於啟動系統。運行根文件系統中的可執行程序,比如:/bin /sbin 目錄下的程序。
6./home目錄
系統默認的用戶文件夾,它是可選的,對於每個普通用戶,在/home目錄下都有一個以用戶名命名的子目錄,裡面存放用戶相關的配置文件。
7./root目錄
系統管理員(root)的主文件夾,即是根用戶的目錄,與此對應,普通用戶的目錄是/home下的某個子目錄。
8./usr目錄
/usr目錄的內容可以存在另一個分區中,在系統啟動後再掛接到根文件系統中的/usr目錄下。裡面存放的是共享、只讀的程序和數據,這表明/usr目錄下的內容可以在多個主機間共享,這些主要也符合FHS標準的。/usr中的文件應該是只讀的,其他主機相關的,可變的文件應該保存在其他目錄下,比如/var。/usr目錄在嵌入式中可以精減。
9./var目錄
與/usr目錄相反,/var目錄中存放可變的數據,比如spool目錄(mail,news),log文件,臨時文件。
10./proc目錄
這是一個空目錄,常作為proc文件系統的掛接點,proc文件系統是個虛擬的文件系統,它沒有實際的存儲設備,裡面的目錄,文件都是由內核
臨時生成的,用來表示系統的運行狀態,也可以操作其中的文件控制系統。
11./mnt目錄
用於臨時掛載某個文件系統的掛接點,通常是空目錄,也可以在裡面創建一引起空的子目錄,比如/mnt/cdram /mnt/hda1 。用來臨時掛載光碟、移動存儲設備等。
12. /tmp目錄
用於存放臨時文件,通常是空目錄,一些需要生成臨時文件的程序用到的/tmp目錄下,所以/tmp目錄必須存在並可以訪問。
那我們利用Busybox製作根文件系統就是創建這上面的這些目錄,和這些目錄下面的各種文件。
對於嵌入式Linux系統的根文件系統來說,一般可能沒有上面所列出的那麼復雜,比如嵌入式系統通常都不是針對多用戶的,所以/home這個目錄在一般嵌入式Linux中可能就很少用到,而/boot這個目錄則取決於你所使用的BootLoader是否能夠重新獲得內核映象從你的根文件系統在內核啟動之前。一般說來,只有/bin,/dev,/etc,/lib,/proc,/var,/usr這些需要的,而其他都是可選的。
根文件系統一直以來都是所有類Unix操作系統的一個重要組成部分,也可以認為是嵌入式Linux系統區別於其他一些傳統嵌入式操作系統的重要特徵,它給 Linux帶來了許多強大和靈活的功能,同時也帶來了一些復雜性。我們需要清楚的了解根文件系統的基本結構,以及細心的選擇所需要的系統庫、內核模塊和應用程序等,並配置好各種初始化腳本文件,以及選擇合適的文件系統類型並把它放到實際的存儲設備的合適位置,下面是幾中比較常用的文件系統。

❽ 為什麼嵌入式系統需要嵌入式文件系統,有什麼具體作用,不用不行嗎

您這個問題問的很外行,您如果說的在具體一點,我很願意幫忙。

嵌入式系統啟動時,第一個必須掛載的是根文件系統;若系統不能從指定設備上掛載根文件系統,則系統會出錯而退出啟動。之後可以自動或手動掛載其他的文件系統。因此,一個系統中可以同時存在不同的文件系統。

不同的文件系統類型有不同的特點,因而根據存儲設備的硬體特性、系統需求等有不同的應用場合。在嵌入式Linux應用中,主要的存儲設備為RAM(DRAM, SDRAM)和ROM(常採用FLASH存儲器),常用的基於存儲設備的文件系統類型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。

不知道能不能解答你的問題

❾ 操作系統一定需要有根文件系統嗎

不是一個系統,inux的文件系統就是一棵大樹根目錄就是一個斜杠,這就是跟根目錄,文件系統都是建立在根目錄之上的。

❿ Linux 根文件系統 為什麼 重要

因為它相當於Linux的文件系統的根目錄,所有的文件都放在它的下面啊。把它給刪了相當於把硬碟給格了。

熱點內容
為什麼淘寶上的手錶那麼便宜 發布:2025-05-17 21:48:56 瀏覽:11
為什麼我覺得崩壞三不好玩 發布:2025-05-17 21:47:58 瀏覽:703
淘寶郵費為什麼有的過分離譜 發布:2025-05-17 21:45:05 瀏覽:139
結婚生孩子為什麼會有怨婦 發布:2025-05-17 21:21:04 瀏覽:973
為什麼itunes同步軟體不能顯示 發布:2025-05-17 21:21:00 瀏覽:540
蘋果手機為什麼找不到sim卡聯系人 發布:2025-05-17 21:19:09 瀏覽:615
男人為什麼願意給美女花錢 發布:2025-05-17 21:16:45 瀏覽:822
蘋果8換個指紋鍵為什麼壞排線 發布:2025-05-17 21:12:36 瀏覽:939
女孩子說她為什麼不想結婚 發布:2025-05-17 21:11:50 瀏覽:671
女人為什麼要比男人自私些 發布:2025-05-17 20:44:32 瀏覽:970