轉自https://blog.csdn.net/dulin201004/article/details/7396968
一、/boot/目錄中的文件和目錄
Linux系統在本地啟動時,目錄/boot/非常重要,其中的文件和目錄有:
(1)系統Kernel的配置文件;
(2)啟動管理程序GRUB的目錄,里面存放的都是GRUB在啟動時所需要的畫面、配置及各階段(stage1, stage1.5, stage 2)的文件。見下圖。
(3)Initrd文件,是系統啟動時的模塊供應的主要來源;
(4)System.map文件時系統Kernel中的變量對應表;
(5)vmlinuz是在啟動過程中最重要的一個文件,因為這個文件就是實際系統所使用的kernel。
二、/boot/grub目錄
2.1 grub.conf文件
這個文件其實是啟動管理程序GRUB的配置文件。在同一層目錄下面(/boot/grub/)還有一個它的鏡像文件menu.lst。而在SUSE中menu.lst是GRUB實際用到的文件。
下面這個文件是我系統上摘錄的。
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-version.img
# boot=/dev/sda default=0 timeout=10 splashimage=(hd0,0)/grub/splash.xpm.gz title Red Hat Linux (2.4.20-8) root (hd0,0) A kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ B initrd /initrd-2.4.20-8.img C
說明:
A: root(hd0,0)表示/boot/的路徑。我的/boot/位於/dev/sda1,也就是BIOS檢測到的第0號硬盤的0號扇區。
B: 告訴GRUB到哪里去找vmlinuz-2.4.20-8這個kernel,這里的“絕對路徑”其實是/boot/vmlinuz-2.4.20-8,而文件的物理位置 在/dev/sda1上。后面的ro表示以只讀的方式讀取該文件,而“root=LABEL=/”表示以標簽名稱為“/”的文件系統為根文件系統。這個 根文件系統與/boot/的位置是兩個概念,這里的root是加載Kernel時的一個參數,目的是告訴Kernel,根文件系統在哪里。
實際上/boot/可以掛載到其他的硬盤上。只要在A的位置說明准確就可以了,如root(hd1,0)表示/boot/在第2塊硬盤上。
C: 告訴GRUB到哪里去取文件initrd,它的“絕對路徑”也是/boot/initrd-2.4.20-8.img。
2.2 其他文件
毫無疑問,grub.conf文件最重要。但在/boot/grub/中還有其他一些文件,我們也可以看看它們的作用。
2.2.1 stages文件
* stage1:它是硬件引導扇區(MBR)的備份文件。
* xxx_stage1_5:這些文件的作用是連接stage1到stage2的一個通道,里面唯一存放的是該系統文件的格式,所以只要被支持的文件,就會預先存放一個格式文件在其中。
* stage2:該文件是GRUB的核心程序,它的主要功能是:
- 提供菜單
- 讀取配置文件
- 連接下一個boot sector
2.2.2 device.map
該文件直接偵測目前的硬件來假設BIOS所記錄的實體磁盤有哪些,默認值是安裝系統時就記錄好的。在之后加入的磁盤,在該文件中沒有顯示。
2.2.3 splash.xpm.gz
啟動時的背景圖片。
三、System.map文件
System.map文件是一個索引文件,它記錄了kernel中的symbols的位置,symbols包括有變量或函數名稱。
[root@patrickxia boot]# head -10 System.map-2.4.20-8 c0100000 A _text c0100000 t startup_32 c01000a5 t checkCPUtype c0100133 t is486 c0100142 t is386 c010018c t L6 c010018e t ready c010018f t check_x87 c01001b6 t setup_idt c01001d3 t rp_sidt
這些symbols在內核中的位置對於從事內核編程的人員有重要的意義。
四、kernel及initrd
4.1 kernel文件
kernel主要負責的是北橋、南橋、CPU及內存,可見它們都是整個主機最重要的硬件核心部分,kernel如果處了問題,系統肯定無法啟動起來。
4.2 initrd文件
initrd的全名是initial ram disk,就是啟動系統所需加載的虛擬磁盤。
在系統啟動過程中,kernel、initrd和system module是依次加載的。initrd包含一部分內核模塊,主要是一些關鍵的外部硬件,如SATA、SCSI和USB等外設。它如果失敗當然也會影響系統啟動。
而system module這些系統中的模塊,是與支持和啟動無很大關系的硬件有關,如果沒有這些硬件設備的支持,系統也可以啟動完成,只是存在功能上的缺失,如聲卡、網卡、顯卡等。這些系統模塊也可以在啟動后,以modprobe的方式載入模塊使用。