『學了就忘』Linux啟動引導與修復 — 69、啟動載入程式(grub)

繁華似錦Fighting發表於2021-12-09

提示:

簡單地說,Boot Loader就是在作業系統核心執行之前執行的一段小程式,稱為啟動載入程式。是載入核心的重要工具,沒有 Boot Loader的話,那麼kernel根本就沒有辦法被系統載入的。 而grub是其中的一種啟動載入程式的名稱。

1、啟動載入程式(Boot Loader)簡介

啟動載入程式我們之間可能見過,比如Windows系統,在你的電腦上安裝了兩個不同版本的Windows系統時,在開機啟動的時候,就會有介面讓你選擇,你需要進入到哪個系統中,這個就是啟動載入程式的作用。如果你的電腦上只有一個作業系統,進入到啟動載入程式中也沒有的選擇,所以就沒有顯示讓你選擇進入到哪個系統。

Linux系統的啟動載入程式分為兩種,早期的Lilo載入程式,現在已經不是很常見了。現在常用的是grub載入程式,與Lilo載入程式比來,grub載入程式有很多優勢,主要有:

  • 支援更多的檔案系統。
  • grub的主程式可以直接在檔案系統中查詢核心檔案。
  • 在系統啟動時,可以利用grub的互動介面編輯和修改啟動選項。
  • 可以動態的修改grub的配置檔案,這樣在修改配置檔案之後不需要重新安裝grub,而只需要重新啟動系統就可以生效了。

如果你在機器上安裝了兩個版本的Linux系統,或者使用了不同版本的Linux系統核心,在啟動系統的時候,就能進入到grub啟動載入程式中,選擇你需要進入的版本或者核心。

我們這裡就學習Linux系統中的grub啟動載入程式。

2、啟動載入程式grub的作用

  • 第一是載入作業系統的核心。
  • 第二是擁有一個可以讓使用者選擇的選單,來選擇到底啟動哪個系統。
  • 第三還可以呼叫其他的啟動載入程式,來實現多系統引導。

3、啟動載入程式grub的位置

grub啟動載入程式的位置在/boot/grub目錄。

1)我們先進入到boot目錄下檢視裡邊有什麼檔案。

如下圖所示:

image

說明:

symvers-2. 6.32- -642.e16.x86_ 64.gz 是系統執行真正載入的核心, 是核心原始碼編譯之後的核心內容,你是不能看到其內容的。如果你想檢視Linux核心原始碼,需要進入到usr/src/kernel目錄中,前提你需要安裝好核心原始碼包。所以系統執行載入的核心和系統原始碼核心的位置是不同的。

2)進入到/grub目錄中檢視內容。

如下圖所示:

image

/grub目錄中,我們主要關注的就三個檔案,分別是grub. confmenu.lstsplash.xpm.gz,其他檔案是不需要我們動的,是grub載入之後需要用到的一些相關檔案。

說明:

grub. conf檔案是grub的配置檔案,menu.lst檔案是grub.conf檔案的軟連結,所以menu.lst檔案也是grub的配置檔案。其實grub.conf檔案還有一個軟連結,/etc/grub.conf檔案也是grub.conf檔案的軟連結,

如下圖所示:

image

三個檔案隨意用哪個檔案都可以,看你個人習慣。

這裡還要說明一下splash.xpm.gz檔案。

splash.xpm.gz檔案裡邊標識的是grub啟動的時候介面的背景影像,如可以自定義顏色。但是編輯格式很不令人輸入,一般也沒有人修改splash.xpm.gz檔案,除非你自己要做一個Linux發行版,並且想我的發行版本和標準的Linux發行版本不太一樣,才用修改。

grub. conf配置檔案中會有splash.xpm.gz檔案的資訊。

4、/grub目錄中其他的檔案簡單介紹

  • device.map檔案:grub中硬碟的裝置檔名與系統的裝置檔名的對應檔案。
  • e2fs_stage 1_5檔案:ext2/ext3檔案系統的stage 1.5檔案。
  • fat_stage 1_5檔案:FAT檔案系統的stage 1.5檔案。
  • ffs_stage 1_5檔案:FFS檔案系統的stage 1.5檔案。
  • iso9660_stage 1_5檔案:iso9660檔案系統的stage 1.5檔案。
  • jfs_stage 1_5檔案:jfs檔案系統的stage 1.5檔案。
  • minix_stage 1_5檔案:minix檔案系統的stage 1.5檔案。
  • reiserfs_stage 1_5檔案:reiserfs檔案系統的stage 1.5檔案。
  • stage1檔案:安裝到引導扇區中的stage1的備份檔案。
  • stage2檔案:stage2的備份檔案。
  • ufs2_stage 1_5檔案:UFS檔案系統的stage 1.5檔案。
  • vstafs_stage 1_5檔案:vstafs檔案系統的Stage 1.5檔案。
  • xfs_stage 1_5檔案:xfs檔案系統的Stage 1.5檔案。
  • grub.conf檔案:grub的配置檔案。
  • menu.lst -> ./grub.conf檔案:grub的配置檔案。和grub.conf是軟連結,所以兩個檔案修改哪個都可以。
  • splash.xpm.gz檔案:系統啟動時,grub程式的背景影像。

總結:

其實/grub目錄中主要就是grub的配置檔案和各種檔案系統的stage1.5檔案。不過grub的配置檔案有三個/boot/grub/grub.conf/boot/grub/menu.lst/etc/grub. conf,這三個配置檔案是軟連結,所以修改哪一個都可以,我個人更習慣為/etc/grub.conf這個檔案。

相關文章