Linux之grub引導詳情與故障排除

 

        GRUBGRand Unified Bootloader簡稱“GRUB”)是一個來自GNU項目的多操作系統啓動程序。GRUB是多啓動規範的實現,它允許用戶可以在計算機內同時擁有多個操作系統,並在計算機啓動時選擇希望運行的操作系統。GRUB可用於選擇操作系統分區上的不同內核,也可用於向這些內核傳遞啓動參數。

 wKioL1aJBUzjl4YSAAAYxQCBQaM711.png

基本功能

GNU GRUB GRUBGRand UnifiedBootloader的縮寫,它是一個多重操作系統啓動管理器。用來引導不同系統,如windowslinux

X86架構的機器中,LinuxBSD 或其它Unix類的操作系統GRUBLILO 是大家最爲常用,應該說是主流。

Windows也有類似的工具NTLOADER;比如我們在機器中安裝了Windows 98後,我們再安裝一個Windows XP ,在機器啓動的會有一個菜單讓我們選擇進入是進入Windows 98 還是進入Windows XPNTLOADER就是一個多系統啓動引導管理器,NTLOADER 同樣也能引導Linux,只是極爲麻煩罷了。

PowerPC 架構的機器中,如果安裝了LinuxPowerpc 版本,大多是用yaboot 多重引導管理器,比如Apple機用的是IBMPowerPC處理器,所以在如果想在Apple機上,安裝Macos Linux Powerpc 版本,大多是用yaboot來引導多個操作系統

因爲X86架構的機器仍是主流,所以目前GRUBLILO 仍然是我們最常用的多重操作系統引導管理器。

引導過程

由硬盤啓動時,BIOS通常是轉向第一塊硬盤的第一個扇區,即主引導記錄(MBR)

裝載GRUB操作系統的過程,包括以下幾個操作步驟:

裝載記錄

基本引導裝載程序所做的唯一的事情就是裝載第二引導裝載程序。

裝載Grub

這第二引導裝載程序實際上是引出更高級的功能,以允許用戶裝載一個特定的操作系統

裝載系統

linux內核GRUB把機器的控制權移交給操作系統

設備名稱

IDE硬盤用hd開始,SCSI硬盤用sd開頭。軟盤fd開頭。命名和linux不大一樣。是從0算起。

(hd0,0)。表示C盤。

(hd0,4)。表示D盤。當然這裏指的是(第一個邏輯分區,如果D盤也是主分區,應該寫成hd0,1)

系統的第一個硬盤驅動器表示成(hd0),其上的第一個分區表示爲(hd0,0),也就是說對於硬盤,採用(hdx,y)的形式來表示,xy都是從0開始計數的,x表示硬盤號,y表示分區號。

Linux系統中,如ubuntu(hdx,y)中的y是從1開始計數的。第一邏輯分區用(hd0,5),第二邏輯分區用(hd0,6)來表示

 

GRUB環境開始載入第二步引導裝載程序時,它尋找自己的配置文件(menu.lst)。當找到配置文件後,它使用這個配置文件建立一個要載入的操作系統的菜單列表,然後顯示引導菜單接口。如果配置文件沒有被找到,或者如果配置文件不能讀取,那麼GRUB將載入命令行接口。


 Grub的配置文件和功用   

   配置文件/boot/grub/grub.conf,保證grub和內核等在一個目錄;此外它創建了一個鏈接文件/etc/grub.conf指向配置文件來保證用戶使用配置文件一致性;

wKiom1b2hoLjFecEAAGnb-53uAg620.jpg

      配置項:

       default=#:設定默認啓動的菜單項:菜單項(title)編號從0開始

 timeout=#:指定菜單項等待選項選擇的時長;

        splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜單背景圖片文件路徑;

        hiddemenu:隱藏菜單

        password[--md5] STRING:菜單編輯認證;

       titleTITLE:定義菜單項“標題”,可出現多次;

       roothd##):grub查找stage2kernel文件所在設備分區:爲grub的“根”

        kernel/PATH/TO/VMLINUZ_FILE [PARAMETERS]:啓動的內核

        initrd/PATH/TO/INITRAMFS_FILE:內核匹配的ramfs文件

        password[--md5] STRING:啓動選定的內核或者操作系統進行認證;

    注意:password在不同的位置所起效果不同

 功用:

    (1)提供菜單、並提供交互式接口

      e:編輯模式,用於編輯菜單

wKiom1aJBsiQS19hAAAjA8JGxGw365.png

      c:命令模式,交互式接口

wKiom1aJBbSwbUkfAAAVdqPJqnM806.png

    2)加載用戶選擇的內核或操作系統

        允許傳遞參數給內核;可隱藏此菜單(通過grub.conf中的hiddenmenu)

    3)爲菜單提供了保護機制

        爲編輯菜單進行認證(title上定義的password)

        爲啓用內核或者操作系統進行認證(title下的password字段)

[root@www root]# grub-md5-crypt 

 Password:    Retype password:    $1$Mp7Rp1$l2wzOILNUqpUhAR7zXvQb0   # 上面是生成的加密字符串   # 然後將信息加入到 grub.conf 文件中,格式如下:   password --md5 $1$Mp7Rp1$l2wzOILNUqpUhAR7zXvQb0  # 當然加入 grub.conf 文件的位置不同,加密效果也不一樣。   # 加入到 title 之前的話,會加密整個菜單。   # 加入到 title 指內的話,會加密對應的操作系統的入口。


(4)grub-install 

使用格式:

grub-install --root-directory=/PATH/TO/rootDIR DEVICE


~]# grub-install --root-directory=/ /dev/sda3
Installation finished. No error reported.
This is the contents of the device map //boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install‘.

# this device map was generated by anaconda
(hd0)     /dev/sda


 grub的命令行命令:

 help:獲取幫助信息

    help KEYWORD:獲取某一具體命令的幫助信息

    find (hd#,#)/PATH/TO/SOMEFFILE:查找文件(內核文件等)

    root (hd#,#):設定那個磁盤是根,執行後,fnd不需指磁盤了;

    kernel /PATH/TO/KERNEL_FILE:設定本次啓動時用到的內核文件;

    initrd /PATH/TO/OMOTRAMFS_FILE:設定爲選定的initrd文件

    boot:引導啓動選定的內核;

示例:手動啓動系統 

    按c:命令模式,依次輸入以下命令,注意要寫上你的 內核版本_架構 And root分區

wKioL1aJCBXRA54bAAAeldU5Cec659.png

 

示例:進入單用戶模式 (無需輸入root密碼)

(1)編輯grub菜單(選定要編輯的title,而後使用e命令)

 wKiom1aJBsiQS19hAAAjA8JGxGw365.png

(2)在選定的kernel後附加 1sSsingle 都可以

wKiom1aJCtSgrnETAAASTXgGu08504.png

(3)ESC退出後在編輯界面,選中kernel所在行,鍵入"b"命令,啓動系統;

示例:當grub出現故障,無法進入系統時,如圖所示:

wKiom1b2kL7gZ4ykAABWDbM6V2k845.jpg

如果你不知道你的引導分區所在的位置,那麼咱們只能輸入root (hd0,然後按tab鍵,會有如下顯示,那麼咱們需要把type 0x83的分區位置都得試一下,因爲0x83的分區都有可能是/root分區,他們都是主分區,我這隻有即0分區.

wKioL1b2kWDQGCNAAABLs4Ms-mc223.jpg

那麼我就從root (hd0,0)開始了,然後輸入kernel /vm 按tab鍵補全則說明是正確的,我的系統是 邏輯卷 的 所以我 接着輸入 ro root=/dev/mapper/vg0-root,大家的如果是/dev/sda1,可輸入 ro root=/dev/sda1 ,注意(hd0,0)=/dev/sda1 (hd0,1)=/dev/sda2 如圖:

wKioL1b2kVXS-OPsAAAlxWGSENE024.jpg

接着輸入initrd /ini 按tab鍵補全, 然後 輸入boot命令,啓動系統

wKiom1b2kNGS2-pxAAAyvoGKk1E254.jpg

大功告成!

wKioL1b2kxuyoH7PAADrpJUKMnA840.jpg

wKiom1b2koSiV_E8AAEqaowBgl8821.jpg

wKioL1b2lZPhsuycAABbaWDBhs8392.jpg

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