當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]關(guān)于Linux啟動(dòng)時(shí)掛載rootfs的幾種方式

一直對(duì)Linux啟動(dòng)時(shí)掛載根文件系統(tǒng)的過(guò)程存在著很多疑問(wèn),今天在水木精華區(qū)找到了有用的資料,摘錄如下:

1、Linux啟動(dòng)時(shí),經(jīng)過(guò)一系列初始化之后,需要mount 根文件系統(tǒng),為最后運(yùn)行init進(jìn)程等做準(zhǔn)備,mount 根文件系統(tǒng)有這么幾種方式:

1)文件系統(tǒng)已經(jīng)存在于硬盤(pán)(或者類(lèi)似的設(shè)備)的某個(gè)分區(qū)上了,kernel根據(jù)啟動(dòng)的命令行參數(shù)(root=/dev/xxx),直接進(jìn)行mount。 這里有一個(gè)問(wèn)題,在root文件系統(tǒng)本身還不存在的情況下,kernel如何根據(jù)/dev/xxx來(lái)找到對(duì)應(yīng)的設(shè)備呢?注意:根文件系統(tǒng)和其他文件系統(tǒng)的mount方式是不一樣的,kernel通過(guò)直接解析設(shè)備的名稱來(lái)獲得設(shè)備的主、從設(shè)備號(hào),然后就可以訪問(wèn)對(duì)應(yīng)的設(shè)備驅(qū)動(dòng)了。所以在init/main.c中有很長(zhǎng)一串的root_dev_names(如hda,hdab,sda,sdb,nfs,ram,mtdblock……),通過(guò)這個(gè)表就可以根據(jù)設(shè)備名稱得到設(shè)備號(hào)。注意,bootloader或內(nèi)核中設(shè)定的啟動(dòng)參數(shù)(root=/dev/xxx)只是一個(gè)代號(hào),實(shí)際的根文件系統(tǒng)中不一定存在這個(gè)設(shè)備文件!

2)從軟驅(qū)等比較慢的設(shè)備上裝載根文件系統(tǒng),如果kernel支持ramdisk,在裝載root文件系統(tǒng)時(shí),內(nèi)核判斷到需要從軟盤(pán)(fdx)mount(root=/dev/fd0),就會(huì)自動(dòng)把文件系統(tǒng)映象復(fù)制到ramdisk,一般對(duì)應(yīng)設(shè)備ram0,然后在ram0上mount根文件系統(tǒng)。 從源碼看,如果kernel編譯時(shí)沒(méi)有支持ramdisk,而啟動(dòng)參數(shù)又是root=/dev/fd0,系統(tǒng)將直接在軟盤(pán)上mount,除了速度比較慢,理論上是可行的(沒(méi)試過(guò),不知道是不是這樣?)

3)啟動(dòng)時(shí)用到initrd來(lái)mount根文件系統(tǒng)。注意理解ramdisk和initrd這兩個(gè)概念,其實(shí)ramdisk只是在ram上實(shí)現(xiàn)的塊設(shè)備,類(lèi)似與硬盤(pán)操作,但有更快的讀寫(xiě)速度,它可以在系統(tǒng)運(yùn)行的任何時(shí)候使用,而不僅僅是用于啟動(dòng);initrd(boot loaderinitialized RAMdisk)可以說(shuō)是啟動(dòng)過(guò)程中用到的一種機(jī)制,具體的實(shí)現(xiàn)過(guò)程也使用ramdisk技術(shù)。就是在裝載linux之前,bootloader可以把一個(gè)比較小的根文件系統(tǒng)的映象裝載在內(nèi)存的某個(gè)指定位置,姑且把這段內(nèi)存稱為initrd(這里是initrd所占的內(nèi)存,不是ramdisk,注意區(qū)別),然后bootloader通過(guò)傳遞參數(shù)的方式告訴內(nèi)核initrd的起始地址和大小(也可以把這些參數(shù)編譯在內(nèi)核中),在啟動(dòng)階段就可以暫時(shí)的用initrd來(lái)mount根文件系統(tǒng)。initrd的最初的目的是為了把kernel的啟動(dòng)分成兩個(gè)階段:在kernel中保留最少最基本的啟動(dòng)代碼,然后把對(duì)各種各樣硬件設(shè)備的支持以模塊的方式放在initrd中,這樣就在啟動(dòng)過(guò)程中可以從initrd所mount的根文件系統(tǒng)中裝載需要的模塊。這樣的一個(gè)好處就是在保持kernel不變的情況下,通過(guò)修改initrd中的內(nèi)容就可以靈活的支持不同的硬件。在啟動(dòng)完成的最后階段,根文件系統(tǒng)可以重新mount到其他設(shè)備上,但是也可以不再 重新mount(很多嵌入式系統(tǒng)就是這樣)。initrd的具體實(shí)現(xiàn)過(guò)程是這樣的:bootloader把根文件系統(tǒng)映象裝載到內(nèi)存指定位置,把相關(guān)參數(shù)傳遞給內(nèi)核,內(nèi)核啟動(dòng)時(shí)把initrd中的內(nèi)容復(fù)制到ramdisk中(ram0),把initrd占用的內(nèi)存釋放掉,在ram0上mount根文件系統(tǒng)。從這個(gè)過(guò)程可以看出,內(nèi)核需要對(duì)同時(shí)對(duì)ramdisk和initrd的支持(這種需要都編入內(nèi)核,不能作為模塊)。

2、嵌入式系統(tǒng)根文件系統(tǒng)的一種實(shí)現(xiàn)方法:對(duì)于kernel和根文件系統(tǒng)都存儲(chǔ)在flash中的系統(tǒng),一般可以利用linux啟動(dòng)的initrd的機(jī)制。具體的過(guò)程前面已經(jīng)比較清楚了,還有一點(diǎn)就是在啟動(dòng)參數(shù)中傳遞root=/dev/ram0,這樣使得用initrd進(jìn)行mount的根文件系統(tǒng)不再切換,因?yàn)檫@個(gè)時(shí)候?qū)嶋H的設(shè)備就是ram0。還有就是initrd的起始地址參數(shù)為虛擬地址,需要和bootloader中用的物理地址對(duì)應(yīng)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉