3,361 瀏覽數

GRUB

GRUB(GNU GRand Unified Boot loader)

Step 0: 前言
Step 1: GRUB 設定檔
Step 2:常見問題
Step 3: 開機以及核心信息轉向 console redirection
Step 4: Rescue mode

Step 0: 前言

GRUB 的載入可以分為三個階段 stage1,stage1.5 和 stage2

  1. BIOS 會將硬碟的 MBR( 前512 bytes)讀進記憶體中.這就是第一階段 (stage1) 他將有能力繼續做stage1.5以及stage2.
  2. 第一點五階段 (stage1.5) 會去找尋我的系統上 /boot 磁區.並且讀取 /boot 磁區上一些相關資料.
  3. 第二階段 (stage2) 會顯示 GRUB menu 以及 command 環境.GRUB的使用者介面允許使用者選取作業系統核心或將伊些參數傳給核心(kernel).後面會介紹如何傳參數給 kernel.
  4. 第二階段 (stage2) 會等待使用者選取一個作業系統核心(kernel 和 initrd)並將他讀入記憶體中.接下來就將控制權交由作業系統管理了.

Step 1: GRUB 設定檔

系統安裝好後 GRUB 存放在 /boot/grub/grub.conf. /boot/grub/menu.lst 是他的分身.

[root@benjr ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,1)
# kernel /boot/vmlinuz-version ro root=/dev/hda2
# initrd /boot/initrd-version.img
# boot=/dev/hda
default=0
timeout=10
hiddenmenu
password --md5 $1$0BqX5/$D/MgNxFsg8oOsPsVz8EAN.
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
#for console system from serial port
#serial = 1,9600n8 (ttyS1, 9600 bd, no parity, 8 bits)
title Red Hat Linux (2.4.18-3)
root (hd0,1)
kernel /boot/vmlinuz-2.4.18-3 ro root=/dev/hda2 #console=ttyS1,9600 #for console system from serial port
initrd /boot/initrd-2.4.18-3.img
title Win2000
rootnoverify (hd0,0)
chainloader +1

說明:

default=0

預設開機選項,每個 title 代表一項開機選單 (而這裡 0 代表 RedHat Linux,1 代表 Win2000 )

timeout=10

開機選單等待時間(10表示10秒)

timeout=-1</strong>

如果是 -1 代表不自動選哪一個OS開機,你也可以直接在前面加上 # 這樣也不會使用預設的選項開機.

hiddenmenu

表示不顯示選單直接由預設的選項開機.

password --md5 $1$0BqX5/$D/MgNxFsg8oOsPsVz8EAN.

GRUB 密碼,詳細設定請看"Step 2:常見問題"說明

splashimage=(hd0,1)/boot/grub/splash.xpm.gz

選單的背景圖示,詳細設定請看"註"說明

title Red Hat Linux (2.4.18-3)

開機選單

root (hd0,1)

設定 H.D 的 root paraition 所在位置.

第一個參數是開機 H.D BIOS setting 中的硬碟開機順序,不管是 IDE 或 SCSI H.D 皆是 hdx (x 是依據 BIOS setting 中的硬碟開機順序,0:第一顆,1:第二顆………..依序下去,這裡是設定成第一顆 H.D).第二個參數就是開機 H.D root 的 partition (0:第一個 partition ,1:第二個 partition ………..依序下去) .這個順序其實是參考了 /boot/grub/device.map 檔案

[root@benjr ~]# cat /boot/grub/device.map
# this device map wasgenerated by anaconda
(fd0) /dev/fd0
(hd0) /dev/hda
kernel /boot/vmlinuz-2.4.18-3 ro root=/dev/hda2
initrd /boot/initrd-2.4.18-3.img

kernel,ramdisk 所在位址

title Win2000

其他非 Linux 開機選單

rootnoverify (hd0,0)

不同於 root ,它並不會先驗證檔案系統

chainloader +1

用來載入 Microsoft 的作業系統(如:DOS,Windows…)

將開機以及核心信息轉向至 ComPort 來輸出,詳細設定請看"註"說明

serial = 1,9600n8 (ttyS1, 9600 bd, no parity, 8 bits)

或者

serial --unit=1 --speed=9600 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console

當然核心這邊也要加入參數才能將信息轉向至 ComPort

kernel /boot/vmlinuz-2.4.18-3 ro root=/dev/hda2 console=ttyS1,9600

kernel /boot/vmlinuz-2.4.18-3 ro root=/dev/hda2 console=ttyS1,9600n8

4 個網友的想法 “GRUB

  1. 自動參照通知: Linux – GRUB2 – Benjr.tw

  2. 自動參照通知: OS 安裝 | Benjr.tw

  3. 自動參照通知: Linux 開機流程 | Benjr.tw

  4. 自動參照通知: Linux – 系統開機 | Benjr.tw

發表迴響