initrd镜像文件的作用与制作
生活随笔
收集整理的這篇文章主要介紹了
initrd镜像文件的作用与制作
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
轉(zhuǎn) http://joecen.yourblog.org/logs/188655.html
????????? 我 們在安裝新內(nèi)核的時(shí)候,通常都會編輯lilo.conf 和grub.conf 文件。
?????
?????? 里面有一段“initrd=/boot/initrd-***.img”(其中的***表示內(nèi)核的版本號)的我們都很少會注意到,有時(shí)候還會發(fā)現(xiàn)這 一行不要也可以正常開機(jī)。那這個(gè)initrd***.img究竟是用來干什么的呢?
???????? 其實(shí)initrd***.img是一個(gè)鏡像文件,類似ramdisk,把一段程序打包到img里,然后在開機(jī)的時(shí)候在內(nèi)存里開辟一段區(qū)域,一般是2m,釋 放到那里運(yùn)行,都是一些初始化的程序,比如sisc_mod、ext3、sd_mod等模塊和insmod、nash等命令。不同內(nèi)核,初始化的img可 以相同,也可以不同,如果沒有,可以在grub.conf里加上no initrd,它就跳過initrd的檢測和執(zhí)行了,以前好像就沒有,后來才有的。 它的作用是在沒有mount /分區(qū)以前,系統(tǒng)要執(zhí)行一些操作,比如掛載scsi驅(qū)動,它就把initrd釋放到內(nèi)存里,作一個(gè)虛擬的/,然后執(zhí)行其根目錄下的一個(gè)腳 本"linuxrc",運(yùn)行insmod和nash命令掛裝模塊。
?????????? 為什么有的時(shí)候我們在lilo或grub的配置文件中不加入該行都可以正常開機(jī)呢?這是 因?yàn)槲覀円话愕腜C機(jī)都沒有使用scsi硬盤等需要先加載其驅(qū)動的設(shè)備,所以就算沒有initrd***.img也可以正常開機(jī)。但是如果我們要在服務(wù)器 上為其編譯新內(nèi)核那就一定不要忘記也為其新建一個(gè)initrd文件呀!
??????????? 好,下面來看看如何查看initrd***.img里面的內(nèi)容和如何為你的新內(nèi)核創(chuàng)建一個(gè)新的initrd.img文件。
??????????? 查看initrd.img: initrd***.img雖然后綴是“img”,但其實(shí)它是一個(gè)gz格式的文件,我們可以先把它解壓,然后載掛裝到目錄下:
??????????? 1、cp initrd.img initrd.gz
??????????? 2、gunzip initrd.gz
? ? ? ? ? ? 3、mount -o loop initrd /mnt/floppy 進(jìn)入/mnt/floppy目錄,
?????????? 我們就可以看到initrd***.img文件的廬山真面目了。
??
? ? ? ? ? ? 制作initrd文件 當(dāng)我們編譯了一個(gè)新的內(nèi)核,也不要忘了為我們的scsi設(shè)備做一個(gè)新的initrd鏡像:
???????? 語法: mkinitrd 文件名 內(nèi)核的目錄名
????????? 示例: mkinitrd initrd-2.4.19.img 2.4.19 initrd-2.4.19.img
??????? 文件名是自己任意取的,但最好對應(yīng)自己的內(nèi)核版本號。
? ? ? ? 2.4.19是在/lib/modules中的目錄名,對應(yīng)內(nèi)核的版本。 當(dāng)然,我們也可以在掛裝了initrd***.img文件后直接添加模塊到/lib目錄中,然后修改linuxrc腳本讓其開機(jī)進(jìn)行掛裝。但必須具備一定 的shell腳本的能力才行。
????????? 我 們在安裝新內(nèi)核的時(shí)候,通常都會編輯lilo.conf 和grub.conf 文件。
?????
?????? 里面有一段“initrd=/boot/initrd-***.img”(其中的***表示內(nèi)核的版本號)的我們都很少會注意到,有時(shí)候還會發(fā)現(xiàn)這 一行不要也可以正常開機(jī)。那這個(gè)initrd***.img究竟是用來干什么的呢?
???????? 其實(shí)initrd***.img是一個(gè)鏡像文件,類似ramdisk,把一段程序打包到img里,然后在開機(jī)的時(shí)候在內(nèi)存里開辟一段區(qū)域,一般是2m,釋 放到那里運(yùn)行,都是一些初始化的程序,比如sisc_mod、ext3、sd_mod等模塊和insmod、nash等命令。不同內(nèi)核,初始化的img可 以相同,也可以不同,如果沒有,可以在grub.conf里加上no initrd,它就跳過initrd的檢測和執(zhí)行了,以前好像就沒有,后來才有的。 它的作用是在沒有mount /分區(qū)以前,系統(tǒng)要執(zhí)行一些操作,比如掛載scsi驅(qū)動,它就把initrd釋放到內(nèi)存里,作一個(gè)虛擬的/,然后執(zhí)行其根目錄下的一個(gè)腳 本"linuxrc",運(yùn)行insmod和nash命令掛裝模塊。
?????????? 為什么有的時(shí)候我們在lilo或grub的配置文件中不加入該行都可以正常開機(jī)呢?這是 因?yàn)槲覀円话愕腜C機(jī)都沒有使用scsi硬盤等需要先加載其驅(qū)動的設(shè)備,所以就算沒有initrd***.img也可以正常開機(jī)。但是如果我們要在服務(wù)器 上為其編譯新內(nèi)核那就一定不要忘記也為其新建一個(gè)initrd文件呀!
??????????? 好,下面來看看如何查看initrd***.img里面的內(nèi)容和如何為你的新內(nèi)核創(chuàng)建一個(gè)新的initrd.img文件。
??????????? 查看initrd.img: initrd***.img雖然后綴是“img”,但其實(shí)它是一個(gè)gz格式的文件,我們可以先把它解壓,然后載掛裝到目錄下:
??????????? 1、cp initrd.img initrd.gz
??????????? 2、gunzip initrd.gz
? ? ? ? ? ? 3、mount -o loop initrd /mnt/floppy 進(jìn)入/mnt/floppy目錄,
?????????? 我們就可以看到initrd***.img文件的廬山真面目了。
??
? ? ? ? ? ? 制作initrd文件 當(dāng)我們編譯了一個(gè)新的內(nèi)核,也不要忘了為我們的scsi設(shè)備做一個(gè)新的initrd鏡像:
???????? 語法: mkinitrd 文件名 內(nèi)核的目錄名
????????? 示例: mkinitrd initrd-2.4.19.img 2.4.19 initrd-2.4.19.img
??????? 文件名是自己任意取的,但最好對應(yīng)自己的內(nèi)核版本號。
? ? ? ? 2.4.19是在/lib/modules中的目錄名,對應(yīng)內(nèi)核的版本。 當(dāng)然,我們也可以在掛裝了initrd***.img文件后直接添加模塊到/lib目錄中,然后修改linuxrc腳本讓其開機(jī)進(jìn)行掛裝。但必須具備一定 的shell腳本的能力才行。
總結(jié)
以上是生活随笔為你收集整理的initrd镜像文件的作用与制作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]/boot/grub/grub.c
- 下一篇: Gentoo 安装日记 21 (第一次重