/boot下的重要文件

/boot目錄下重要文件簡介

2008-09-11 15:36:50
查看( 1942 ) / 評論( 0 )

一、/boot/initrd

initrd(initial ramdisk)是一個在Linux啓動過程中內核使用的臨時文件系統。該文件系統爲掛載真正的文件系統做準備。要想看看裏面都是什麼東西,可以進行下面的操作:

# mkdir ~/initrd
# cp /boot/initrd ~/initrd
# cd ~/initrd
# mv initrd initrd.gz
# gunzip initrd.gz
# cpio -idmv < initrd

可以看出該文件系統首先用cpio壓縮歸檔,再用gzip壓縮。
Linux內核可以將設備驅動以模塊形式加載,但是模塊本身可能存儲在SCSI或者RADI上,要想訪問這些設備又需要先加載驅動,這就出現了“雞和蛋”問題。當然不用模塊,全部編譯進內核,就像早期Linux那樣,就不會出現這個問題了。initrd的引入可以使我們既得到模塊帶來的好處又解決上述問題。initrd在grub引導時通過BIOS載入內存。initrd除了內核模塊外,還有引導系統的bash腳本。
/sbin/installkernel中有這麼幾行,在編譯完內核後重新制作initrd。其實編譯完內核後不更新initrd也是可以的。要想知道怎麼製作的initrd,可以看看bash腳本/sbin/mkinitrd。如果沒有這兩個命令,確認是否安裝了mkinitrd軟件包。
#
# Generate initial ramdisk
#
if [ -x /sbin/mkinitrd -a -d /lib/modules/$KERNEL_VERSION ]; then
    /sbin/mkinitrd -k $BOOTFILE-$KERNEL_VERSION \
           -i initrd-$KERNEL_VERSION \
           -b $INSTALL_PATH
else
    echo "You may need to create an initial ramdisk now."
fi

二、/boot/vmlinuz

靜態鏈接的內核可執行文件,如果用源代碼編譯內核,對應文件是/usr/src/linux/arch/i386/boot/bzImage

三、/boot/System.map

該文件由命令nm /boot/vmlinuz得到,不過是經過處理的。重新編譯新內核後,該文件需要更新,如果有多個內核的話,加上相應的版本號。如果/boot/System.map和系統不符,內核會使用/usr/src/linux/System.map。該文件是內核地址和變量名,函數名的對應。該文件在調試內核時很有幫助。

四、/boot/grub/menu.lst

default 0
timeout 5

title=Gentoo
    root (hd0,2)
    kernel /boot/kernel root=/dev/hda5 vga=791
    initrd /boot/initrd
title=Windows
    rootnoverify (hd0,0)
    makeactive
    chainloader +1
root (hd0,2)和root=/dev/hda5中的root是不一樣的。但是如果沒有給/boot單獨劃一個分區,那麼他們是一樣的。當然我們也可以不要root (hd0,2)這一行,不過就需要改成這個樣子了。
kernel (hd0,2)/boot/kernel root=/dev/hda5 vga=791
initrd (hd0,2)/boot/initrd

五、/boot/grub/device.map

(hd0) /dev/hda
grub使用的設備名稱和Linux的不太一樣,這是一張映射表。
(hd0,2)對應/dev/hda3;(hd0,4)對應/dev/hda5
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章