initrd.img是一個(gè)小的映象,包含一個(gè)最小的linux系統(tǒng)。通常的步驟是先啟動(dòng)內(nèi)核,然后內(nèi)核掛載initrd.img,并執(zhí)行里面的腳本來進(jìn)一步掛載各種各樣的模塊,然后發(fā)現(xiàn)真正的root分區(qū),掛載并執(zhí)行/sbin/init...
initrd.img當(dāng)然是可選的了,如果沒有initrd.img,內(nèi)核就試圖直接掛載root分區(qū)。
說initrd.img文件還會(huì)提到另外一個(gè)名角---vmlinuz。vmlinuz是可引導(dǎo)的、壓縮的內(nèi)核?!皏m”代表 “Virtual Memory”。Linux 支持虛擬內(nèi)存,不像老的操作系統(tǒng)比如DOS有640KB內(nèi)存的限制。Linux能夠使用硬盤空間作為虛擬內(nèi)存,因此得名“vm”。另外:vmlinux是未壓縮的內(nèi)核,vmlinuz是vmlinux的壓縮文件。
為什么要initrd.img
系統(tǒng)內(nèi)核vmlinuz被加載到內(nèi)存后開始提供底層支持,在內(nèi)核的支持下各種模塊,服務(wù)等被加載運(yùn)行。這樣當(dāng)然是大家最容易接受的方式,曾經(jīng)的linux就是這樣的運(yùn)行的。假設(shè)你的硬盤是scsi 接口而你的內(nèi)核又不支持這種接口時(shí),你的內(nèi)核就沒有辦法訪問硬盤,當(dāng)然也沒法加載硬盤上的文件系統(tǒng),怎么辦?把內(nèi)核加入scsi驅(qū)動(dòng)源碼然后重新編譯出一個(gè)新的內(nèi)核文件替換原來vmlinuz。
需要改變標(biāo)準(zhǔn)內(nèi)核默認(rèn)提供支持的例子還有很多,如果每次都需要編譯內(nèi)核就太麻煩了。所以后來的linux就提供了一個(gè)靈活的方法來解決這些問題---initrd.img。initrd.img文件就是個(gè)ram disk的映像文件。ramdisk是用一部分內(nèi)存模擬成磁盤,讓操作系統(tǒng)訪問。ram disk是標(biāo)準(zhǔn)內(nèi)核文件認(rèn)識(shí)的設(shè)備(/dev/ram0)文件系統(tǒng)也是標(biāo)準(zhǔn)內(nèi)核認(rèn)識(shí)的文件系統(tǒng)。內(nèi)核加載這個(gè)ram disk作為根文件系統(tǒng)并開始執(zhí)行其中的"某個(gè)文件"(2.6內(nèi)核是 init文件)來加載各種模塊,服務(wù)等。經(jīng)過一些配置和運(yùn)行后,就可以去物理磁盤加載真正的root分區(qū)了,然后又是一些配置等,最后啟動(dòng)成功。也就是你只需要定制適合自己的 initrd.img 文件就可以了。這要比重編內(nèi)核簡單多了,省時(shí)省事低風(fēng)險(xiǎn)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
