六月丁香五月婷婷,丁香五月婷婷网,欧美激情网站,日本护士xxxx,禁止18岁天天操夜夜操,18岁禁止1000免费,国产福利无码一区色费

學(xué)習(xí)啦>學(xué)習(xí)電腦>操作系統(tǒng)>Linux教程>

什么是initrd

時(shí)間: 若木635 分享

  什么是initrd

  initrd 的英文含義是 boot loader initialized RAM disk,就是由 boot loader 初始化的內(nèi)存盤。

  在 linux內(nèi)核啟動(dòng)前, boot loader 會(huì)將存儲(chǔ)介質(zhì)中的 initrd 文件加載到內(nèi)存,內(nèi)核啟動(dòng)時(shí)會(huì)在訪問真正的根文件系統(tǒng)前先訪問該內(nèi)存中的 initrd 文件系統(tǒng)。

  在 boot loader 配置了 initrd 的情況下,內(nèi)核啟動(dòng)被分成了兩個(gè)階段,第一階段先執(zhí)行 initrd 文件系統(tǒng)中的"某個(gè)文件",完成加載驅(qū)動(dòng)模塊等任務(wù),第二階段才會(huì)執(zhí)行真正的根文件系統(tǒng)中的 /sbin/init 進(jìn)程。

  這里提到的"某個(gè)文件",Linux2.6 內(nèi)核會(huì)同以前版本內(nèi)核的不同,所以這里暫時(shí)使用了"某個(gè)文件"這個(gè)稱呼,后面會(huì)詳細(xì)講到。

  第一階段啟動(dòng)的目的是為第二階段的啟動(dòng)掃清一切障愛,最主要的是 加載根文件系統(tǒng)存儲(chǔ)介質(zhì)的驅(qū)動(dòng)模塊。

  initrd產(chǎn)生原因

  要想明白initrd產(chǎn)生的原因,帶要從linux啟動(dòng)說起。其實(shí)裝入本地linux系統(tǒng)時(shí)可以不用initrd,只要在kernel參數(shù)中加入root參數(shù)就可以了。

  在boot loader如grub等裝入kernel后, kernel需要執(zhí)行系統(tǒng)中的/sbin/init, 讀取這個(gè)文件就必須先mount根文件系統(tǒng)。 早期是通過啟動(dòng)時(shí)的root=參數(shù)告訴內(nèi)核根文件系統(tǒng)在哪個(gè)設(shè)備上。

  隨著硬件和技術(shù)的發(fā)展,現(xiàn)在根文件系統(tǒng)可能位于一個(gè)網(wǎng)絡(luò)存儲(chǔ)如NFS上, 可能由于RAID而散布于多個(gè)設(shè)備上, 可能位于一個(gè)加密設(shè)備上需要提供用戶名和密碼,這時(shí)root=參數(shù)就顯得不夠了。

  為了應(yīng)付這種局面, 先后出現(xiàn)兩種機(jī)制來作為boot loader裝載kernel到真正的/sbin/init執(zhí)行這個(gè)啟動(dòng)過程的橋梁:initrd和initramfs。

  兩者有類似的地方,比如都是由內(nèi)核執(zhí)行其上的某個(gè)程序(initrd是/linuxrc, initramfs是/init),由這個(gè)程序決定加載什么驅(qū)動(dòng)以及如何裝載根文件系統(tǒng)。

  例如,把linux裝入U(xiǎn)盤中時(shí),就要用到initrd。這里不是指把系統(tǒng)做成initrd直接加載成內(nèi)存式linux,而是像本地硬盤上那樣是非鏡像型的linux系統(tǒng)。

  為什么必須要用initrd?我們可以從啟動(dòng)過程來看。首先,由如GRUB的引導(dǎo)加載器加載內(nèi)核,這時(shí)可以識(shí)別U盤,如果你是從U盤啟動(dòng)的,那么U盤為hd0。這一切都是GRUB可以識(shí)別U盤的存在。

  當(dāng)內(nèi)核加載后情況就不一樣了,內(nèi)核之中一般是沒有U盤驅(qū)動(dòng)的,那它就 找不到U盤,更不用說U盤中的系統(tǒng)了。所以就要用initrd來加載U盤驅(qū)動(dòng),并執(zhí)行系統(tǒng)中的/sbin/init。

  initrd 的用途

  1. linux 發(fā)行版的必備部件

  linux 發(fā)行版必須適應(yīng)各種不同的硬件架構(gòu),將所有的驅(qū)動(dòng)編譯進(jìn)內(nèi)核是不現(xiàn)實(shí)的,initrd 技術(shù)是解決該問題的關(guān)鍵技術(shù)。Linux 發(fā)行版在內(nèi)核中只編譯了基本的硬件驅(qū)動(dòng),在安裝過程中通過檢測(cè)系統(tǒng)硬件,生成包含安裝系統(tǒng)硬件驅(qū)動(dòng)的 initrd,無非是一種即可行又靈活的解決方案。

  2. livecd 的必備部件

  同 linux 發(fā)行版相比,livecd 可能會(huì)面對(duì)更加復(fù)雜的硬件環(huán)境,所以也必須使用 initrd。

  3. 制作 Linux usb 啟動(dòng)盤必須使用 initrd

  usb 設(shè)備是啟動(dòng)比較慢的設(shè)備,從驅(qū)動(dòng)加載到設(shè)備真正可用大概需要幾秒鐘時(shí)間。如果將 usb 驅(qū)動(dòng)編譯進(jìn)內(nèi)核,內(nèi)核通常不能成功訪問 usb 設(shè)備中的文件系統(tǒng)。因?yàn)樵趦?nèi)核訪問 usb 設(shè)備時(shí), usb 設(shè)備通常沒有初始化完畢。所以常規(guī)的做法是,在 initrd 中加載 usb 驅(qū)動(dòng),然后休眠幾秒中,等待 usb設(shè)備初始化完畢后再掛載 usb 設(shè)備中的文件系統(tǒng)。

  4. 在 linuxrc 腳本中可以很方便地啟用個(gè)性化 bootsplash。

75351