Linux啟動之GRUB詳解

GRUB

在BIOS讀取先關信息之后,接下來就是去第一個可以啟動的設備當中的MBR中讀取Boot loader信息,bootloader具有菜單功能、直接加載內核信息,以及相關控制權限轉交功能。所以說系統的啟動必須有bootloader,然后才能去加載內核
grub:GRand Unified Bootloader
    grub 0.x:grub legacy
    grub 1.x:grub2

grub legacy:
    stage1:MBR
    stage1_5:MBR之后的扇區,讓stage1中的bootloader能識別stage2所在的分區上的文件系統
    stage2:磁盤分區(/boot/grub/)

    配置文件:/boot/grub/grub.conf <-- /etc/grub.conf

    stage2及內核等通常放置于一個基本磁盤分區
        功用:
            (1)提供菜單、并提供交互式接口
                e:編輯模式,用于實現編輯菜單
                c:命令模式,交互式接口
            (2)加載用戶選擇的內核或操作系統
                允許傳遞參數給內核
                可隱藏此菜單
            (3)為菜單提供了保護機制
                為編輯菜單進行認證
                為啟動內核或操作系統進行認證

    grub最重要的一部當屬識別磁盤信息,grub對硬盤的識別是通過以下方式:
    (hd0,0)
        1.硬盤代號以小括號()括起來
        2.硬盤以hd表示,后面會接一組數字,數字之間以逗號隔開
        3.是以搜尋到的順序來作為磁盤的編號,而非根據磁盤的排揎編號
        4.第一個搜索到的磁盤編號為0,第二個為1,以此類推
        5.每塊磁盤上的第一個分區編號為0,第二個分區為1,以此類推
        因此(hd0,0),就表示第一塊磁盤上的第一個分區

配置文件格式

全局配置配置項:
    default=#:設定默認啟動的菜單項,0表示定義的第一個title系統,1表示第二個title系統,以此類推
    timeout=#:表示可供選擇的等待時間,如果超過5秒,則使用默認的啟動條目default定義的
    splashimage=(hd0,0)/grub/splash.xpm.gz
        定義啟動時的背景圖片
    hiddenmenu:隱藏菜單,默認不顯示菜單

~Y`2Q@_SAH%U~Y($7WLW$FF.png

定義各個操作系統配置

title:定義各個操作系統的名稱
root (hd#,#):表示內核文件存放的位置,這里指定的是分區位置,而非根目錄
kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:內核的名稱以及一些啟動時的核心參數。由于啟動過程中需要掛載根目錄,因此就需要指定根目錄所在的分區
    rhgb:圖形顯示
    quiet:靜默模式加載內核
    selinux:開啟或關閉selinux
    single:單用戶模式
    ...
initrd /PATH/TO/INITRAMFS_FILE:ramfs文件路徑

YBBIA)[1I0)EA%A[@85X_C0.png

GRUB命令行

help:獲取幫助列表
help KEYWORD:詳細幫助信息
find(hd#,#)/PATH/TO/SOMEFILE:查找文件
root (hd#,#):指定根分區
kernel /PATH/TO/KERNEL_FILE:設定本次啟動時用到的內核文件;額外還可以添加許多內核支持使用的cmdline參數
    例如:init=/path/to/init, selinux=0
initrd /PATH/TO/INITRAMFS_FILE: 設定為選定的內核提供額外文件的ramdisk
boot:引導啟動選定的內核

手動在grub命令行接口啟動系統:

grub> root (hd0,0)
grub> kernel /vmlinuz-VERSION-release ro root=/dev/DEVICE
grub> initrd /initramfs-VERSION-release.img
grub> boot

@HT7V5L2PXN[4Z5S~_87YP0.png

進入單用戶模式

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

NXS2@%_E]LK2HJ1LPCA6%AF.png

(2)在選定的kernel后附加:1,s,S或single都可以

]W]ZN@FY{RPG0T`{}W3Z26J.png

(3)在kernel所在行鍵入"b"命令即可進入單用戶模式

3DE]JRH~MI)E%%`N)1AR[$R.png

加密機制

GRUB也有自己的保護機制,只有通過認證才能修改grub.conf信息??梢酝ㄟ^以下方式來對grub.conf進行保護:
    1.在第一個title之上添加password --md5 ************ 主要用于保護編輯功能
    2.在某個title內添加password --md5 *********** 主要用戶保護內核
生成密碼的命令:grub-md5-crypt

編輯功能認證

1.提示按p鍵輸入密碼才可編輯菜單

1_T5MTXGE}@LUZTP$9ZG((4.png

2.輸入密碼即可編輯菜單

KCC%S8N7U}X44]DGP{R]9~F.png

內核啟動認證

1.當我們選擇要啟動內核時,提示輸入密碼

V95IQ}4]]V2O1KO0~IU0BFH.png

2.輸入密碼,即可正常啟動系統

_JY%[%MMNO5NHWYZDI~7TLR.png

修復GRUB

如果grub出現了問題導致我們系統無法系統,可進入救援模式進行修復
修復工具:
    方法一:grub-install /dev/DISK
            grub-install --root-directory=ROOT /dev/DISK
    方法二:grub
                grub> root (hd0,0)
                grub> setup (hd0)
                
    如果grub出現了問題,此時我們系統沒有重啟,則可直接使用修復工具修復

$B9Z4~]D3KO$HFHVNCD09UY.png

XZ%)~9OTOK3SC`@}$~U_WDN.png

{C}7Z1Q3)]7SXDMZB}}I5S2.png

HX{T0G(7{7(BF$6D}Z}0Q7K.png

$O`K06PB2ZU_MQP6@DT57[E.png

1{EM~[]2]I3R$)N1YJ]JR0S.png

WH1MTQN3{FNTK[TY3UGR(ZF.png

LR~AB}G5Z4SLXY]E%ZVLSUP.png

8(YZV9S{]GV)IV_RQM0{B[C.png

0AX9]TL$3WM$DXYL6U[BUQ3.png

S0JK)EM~~DF{9G9}_EX6T~W.png

原創文章,作者:zhai796898,如若轉載,請注明出處:http://www.www58058.com/46674

(0)
zhai796898zhai796898
上一篇 2016-09-15 16:08
下一篇 2016-09-15 18:10

相關推薦

  • MongoDB

    Edit MongoDB 手冊 MongoDB 手冊 第一章 Introduction MongoDB入門學習目錄(建議) Databases Collections Documents 第二章 部署安裝 1. Import the MongoDB public key 2. Configure the package management system (…

    Linux干貨 2017-04-08
  • Oracle 11G 安裝圖解

    Oracle 11G 安裝圖解 wmd-preview h1 { color: #0077bb; /* 將標題改為藍色 */ } Oracle 11G 安裝圖解 oracle Oracle 介紹   Oracle Database,又名Oracle RDBMS,或簡稱Oracle 是甲骨文公司的一款關系數據庫管理系統。它是在數據庫領域一直處于領先地位的產品?!?/p>

    2017-04-24
  • Linux基礎知識——網絡管理基礎

    OSI七層模型與TCP/IP模型的區別 寫一個腳本,使用ping命令探測172.168.250.1-172.168.250.254之間的所有主機的在線狀態,在線的用綠色表示,不在線的使用紅色表示 #!/bin/bash for ((IP=1;IP<=254;IP++))     do  &nb…

    Linux干貨 2016-12-11
  • 創建CA 和申請證書

    創建CA 和申請證書1生成私有CA的私鑰:(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)注:CA的私鑰文件必須放在/etc/pki/CA/private/cakey.pem 這個路徑里2創建序列號 ,數據庫文件touch  /etc/pki/CA/index.tx…

    Linux干貨 2017-07-17
  • 編譯httpd2.4.10踩坑記

    作者【Jev Tse】【版權所有】  系統環境:centos6.8     【本文概覽】     零、httpd2.4.10編譯總結         1、基礎環境         2、依賴包組   &…

    Linux干貨 2016-11-29
  • 馬哥教育網絡班21期+第9周課程練習

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash  declare -i loginable=0 declare -i unloginable=0  &n…

    Linux干貨 2016-09-07
欧美性久久久久