一、GRUB簡介
GRUB(GRand
Unified
Bootloader簡稱“GRUB”)是一個來自GNU項目的多作業系統啟動程式。GRUB是多啟動規範的實作,它允許使用者可以在計算機内同時擁有多個作業系統,并在計算機啟動時選擇希望運作的作業系統。GRUB可用于選擇作業系統分區上的不同核心,也可用于向這些核心傳遞啟動參數。
=========================================================================================
二、GRUB的組成
grub分為三個部分
第一部分被放在MBR中前446位元組裡(MBR共512位元組,中間54位元組存放磁盤分區資訊,最後2位元組判斷MBR是否損壞),主機闆啟動時首先會讀取MBR裡的内容,是以grub是系統核心啟動之前就啟動的。
第二部分放在MBR之後的扇區中,存放的是檔案系統的驅動程式,可以在系統内啟動分區沒挂載的情況下讀取磁盤内裡的指定内容
第三部分就是存在磁盤分區中的内容,裡面是grub的配置資訊,核心檔案,這裡就是gurb的根分區
==============================================================================
三、GRUB的功能
1、提供菜單,并提供互動式接口(e:
進入編輯模式 在核心後添加single,後按b就可以進入單使用者模式、c:進入指令行接口模式)
2、選擇要啟動的核心或系統(允許傳遞引導參數給核心,選擇界面可隐藏)
3、為編輯功能提供保護機制(選擇運作指定的核心得先輸入密碼、使用e指令得先輸入密碼)
=============================================================================
四、 grub的兩種形式(使用虛拟機示範)
1、圖形模式
系統啟動之前開始出現倒數秒數的時候,按esc可以進入grub界面(一般是隐藏的,會啟動預設的系統)選擇我們想要啟動的不同系統。我這裡隻有一個系統,是以隻有一項可以選

按e進入編輯模式
按上下選擇要編輯的項,按e對其編輯,按enter鍵儲存編輯,按o新添一行,d删除此行,b啟動系統
2、指令行模式
系統啟動前倒數秒數的時候按esc進入圖形界面,之後按c鍵會進入指令行模式
grub的指令行接口
:
help:獲得幫助清單
root
(hd#,#)
設定哪兒塊磁盤為根
kernel
/path/to/kernel_file :設定本次啟動時用到的核心檔案
vmlinuz(z表示壓縮的意思);額外還可以添加許多核心支援使用的cmdline參數
initrd
/path/to/initrd_file : 設定為標明的核心提供額外檔案的ramdisk;要和核心版本一樣
boot:引導啟動標明的核心
五、GRUB的配置檔案:
/boot/grub/grub.conf
配置項:支援指令行補全(tab)
default=#:
//設定預設啟動的菜單項
timeout=#:
//指定菜單項等待選項選擇的時長
splashp_w_picpath=(hd#,#)/path/to/xpm_pic_file
: //指明菜單背景圖檔所在路徑(gimp 640*680)
hiddenmenu :
//隐藏菜單
password [--md5] string :
//菜單編輯認證
title TITLE :
//定義菜單項“标題”
root (hd#,#):
//grub查找stage2及kernel檔案所在裝置分區;為grub的“根”
/path/to/vmlinuz_file [parameters]: //啟動核心并設定額外參數
/path/to/initramfs_file: //核心比對的ramfs檔案
password [--md5]
string : //啟動標明的核心或作業系統時進行認證 【grub-md5-crypt 生成密碼】
六、安裝GRUB指令
使用grub-install指令
# grub-install [--root-directory=DIR] DEVICE
--root-directory=指定的路徑必須是核心及initrd檔案所在的分區的挂載點的父目錄,且此挂載點必須叫boot
========================================================================================
七、執行個體,安裝GRUB至令一個磁盤,并使用這個磁盤啟動一個帶bash的linux的系統
1、給虛拟機建立1個20G的磁盤,過程圖解:
2、啟動虛拟機,并給新的磁盤分3個區
/dev/sdb1(/boot):100M
檔案系統使用ext4
/dev/sdb2(swap):2G
/dev/sdb3(/):5G
[root@pyhon ~]
# mke2fs -t ext4 /dev/sdb1 //格式化分區,檔案系統為ext4
[root@pyhon ~]
# mke2fs -t ext4 /dev/sdb3
[root@pyhon ~]
# mkswap /dev/sdb2
[root@pyhon ~]
# mkdir /mnt/boot
[root@pyhon ~]
# mount /dev/sdb1 /mnt/boot/
[root@pyhon ~]
# grub-install --root-directory=/mnt /dev/sdb
4、建立/sysroot目錄,挂載/dev/sdb3,具體操作過程如下
[root@pyhon ~]
# mkdir /mnt/sysroot
[root@pyhon ~]
# mount /dev/sdb3 /mnt/sysroot/
[root@pyhon ~]
# cd /mnt/sysroot/
[root@pyhon sysroot]
# mkdir -pv bin boot dev etc home lib lib64 media mnt opt proc root sbin srv sys tmp usr var
[root@pyhon sysroot]
# cp /bin/bash /mnt/sysroot/bin/
[root@pyhon sysroot]
# ldd /bin/bash
[root@pyhon sysroot]
# cp /lib64/libtinfo.so.5 /mnt/sysroot/lib64/
[root@pyhon sysroot]
# cp /lib64/libdl.so.2 /mnt/sysroot/lib64/
[root@pyhon sysroot]
# cp /lib64/libc.so.6 /mnt/sysroot/lib64/
[root@pyhon sysroot]
# cp /lib64/ld-linux-x86-64.so.2 /mnt/sysroot/lib64/
5、修改/mnt/boot/grub/grub.conf檔案,并關閉此虛拟機
[root@pyhon ~]
# sync
[root@pyhon ~]
# sync
[root@pyhon ~]
# sleep 10
[root@pyhon ~]
# shutdown -h now