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





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章