1. 程式人生 > >Linux中 /boot 目錄介紹 【轉載】

Linux中 /boot 目錄介紹 【轉載】

cond 備份 ges 直接 modprobe 虛擬 人員 完成 linux中

Linux中 /boot 目錄介紹

轉自:點擊打開鏈接

一、/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的方式載入模塊使用。

Linux中 /boot 目錄介紹 【轉載】