章 10. 開機載入程式 GRUB

目錄

10.1. 使用 GRUB 開機
10.2. 使用 YaST 設定開機載入程式
10.3. 解除安裝 Linux 開機載入程式
10.4. 建立開機 CD
10.5. 圖形化 SUSE 畫面
10.6. 疑難排解
10.7. 如需更多資訊

摘要

本章介紹如何設定 SUSE® Linux Enterprise Desktop 中使用的開機載入程式 GRUB (Grand Unified Bootloader)。一種特殊的 YaST 模組,可用於設定所有設定。如果您不熟悉 Linux 開機的要點,請閱讀以下章節,取得部份背景資訊。本章節也敘述使用 GRUB 開機時,經常遇到的部份問題以及它們的解決方案。

[Note]使用 UEFI 的機器上未安裝 GRUB

依照慣例,GRUB 將會安裝在配有傳統 BIOS 的機器上與使用相容支援模組 (CSM) 的 UEFI (統一可擴充韌體介面) 機器上。未啟用 CSM 的 UEFI 機器會自動安裝 eLILO (如果 DVD1 開機成功)。如需詳細資訊,請參閱系統上 /usr/share/doc/packages/elilo/ 中的 eLILO 文件。

本章節著重於開機管理以及開機載入程式 GRUB 的組態。整個開機程序簡述於第 9 章「啟動及設定 Linux 系統。開機載入程式是機器 (BIOS) 與作業系統 (SUSE Linux Enterprise Desktop) 之間的介面。開機載入程式的組態會直接影響作業系統的開機。

下列詞彙將在本章節中經常出現,而且可能需要說明:

MBR (主開機記錄)

MBR 的結構是由作業系統 (獨立會議) 所定義。前 446 位元組是保留給程式碼。它們通常包含一部分開機載入程式程式或作業系統選取器。接下來的 64 位元組為最多包含四項的分割區表提供空間。分割區表包含磁碟分割以及檔案系統類型相關資訊。作業系統需要此表格來處理硬碟。在 MBR 中使用傳統標準程式碼的情況下,只有一個分割區必須標示為作用中。MBR 的最後兩個位元組必須包含靜態的魔術編號 (AA55)。包含不同值的 MBR 會被一些 BIOS 視為無效,所以開機時不列入考慮。

開機磁區

開機磁區是除了擴充分割區以外,硬碟分割區的第一個磁區,它只會當成其他分割區的容器。這些開機磁區有 512 位元組的空間供程式碼使用,而這些程式碼是用來啟動各自分割區中安裝的作業系統。這適用於 DOS、Windows 和 OS/2 分割區格式的開機磁區,它們也包含檔案系統的部分重要基本資料。相反的,Linux 分割區的開機磁區一開始是空白,直到設定不同於 XFS 的檔案系統之後,才會寫入記錄。因此,Linux 分割區無法自行啟動,即使它包含核心以及有效的根檔案系統。開機磁區如果包含可以啟動系統的有效程式碼,則它的魔術編號與 MBR 的最後兩個位元組相同 (AA55)。

10.1. 使用 GRUB 開機

GRUB 包含兩個階段。第一個階段包含 512 個位元組,其唯一的任務就是載入開機載入程式的第二個階段。接下來,會載入第二個階段。這個階段會包含開機載入程式的主要部分。

某些組態會使用中繼階段 1.5,用來配置和載入適當檔案系統的階段 2。在適當情況下,這種方法在安裝或使用 YaST 初始設定 GRUB 時會是預設選項。

第二個階段可以存取許多檔案系統。目前支援 ext2、ext3、ReiserFS、Minix 及 Winodws 使用的 DOS FAT 檔案系統。對於 XFS、UFS 以及 BSD 使用的 FFS,也支援到一定的程度。自 0.95 版開始,GRUB 也可以從包含 ISO 9660 標準檔案系統 (符合 El Torito 規格) 的 CD 或 DVD 啟動。即使是在系統開機之前,GRUB 也可以存取支援之 BIOS 磁碟機 (BIOS 偵測到的磁片或硬碟、CD 光碟機和 DVD 磁碟機) 的檔案系統。因此,對 GRUB 組態檔案 (menu.lst) 所做的變更,將不需要重新安裝開機管理程式。啟動系統後,GRUB 會重新載入功能表檔案以及核心或起始 RAM 磁碟 (initrd) 的有效路徑和分割區資料,然後找這些檔案。

GRUB 的實際組態以下方描述的四個檔案為基礎:

/boot/grub/menu.lst

此檔案包含可以使用 GRUB 啟動的分割區或作業系統,所有的相關資訊。如果沒有這段資訊,GRUB 指令行就會提示使用者提供如何繼續執行 (如需詳細資訊,請參閱第 10.1.1.3 節「在開機程序期間編輯功能表項目」)。

/boot/grub/device.map

此檔案會從 GRUB 和 BIOS 表示法,將設備名稱轉譯成 Linux 設備名稱。

/etc/grub.conf

此檔案包含 GRUB 外圍程序正確安裝開機載入程式所需的指令、參數和選項。

/etc/sysconfig/bootloader

此檔案由 perl-bootloader 程式庫 (在借助 YaST 設定開機載入程式時及每次安裝新的核心時使用) 讀取。它包含預設會新增到開機載入程式組態檔案的組態選項 (如核心參數)。

有多種方法可以控制 GRUB。現有組態啟動項目,可以從圖形功能表選取 (開頭顯示畫面)。組態會從檔案 menu.lst 載入。

在 GRUB,啟動前可以變更所有啟動參數。例如,編輯功能表檔案發生的錯誤,可以用此方法更正。在出現某類輸入提示時也可以透過互動方式輸入開機指令。如需詳細資料,請參閱第 10.1.1.3 節「在開機程序期間編輯功能表項目」。GRUB 提供開機前,判斷核心和 initrd 二者位置的可能性。以此方法,您還可以為開機載入程式組態中不存在的項目,啟動安裝的作業系統。

GRUB 事實上有兩個版本:一個是開機載入程式,一個是位於 /usr/sbin/grub 的一般 Linux 程式。後者稱為 GRUB 外圍程序。它可以在安裝系統中提供 GRUB 模擬功能,並可用來安裝 GRUB 或是在套用之前測試設定。這種將 GRUB 安裝成硬碟或磁片上的開機載入程式的功能,以指令 setup 的形式整合於 GRUB。Linux 載入時,可以在 GRUB 外圍程序使用此指令。

10.1.1. 檔案 /boot/grub/menu.lst

圖形開頭顯示畫面以及開機功能表是以 GRUB 組態檔 /boot/grub/menu.lst 為基礎的,它包含可以透過功能表啟動的所有分割區或作業系統,全部的相關資訊。

每次啟動系統時,GRUB 會從檔案系統載入功能表檔案。基於此因素,GRUB 不需要在每次變更檔案後,重新安裝。使用 YaST 開機載入程式來修改 GRUB 組態,如第 10.2 節「使用 YaST 設定開機載入程式」 所述一般。

功能表檔案包含指令。語法相當簡單。每一行包含一個指令,後面是由像外圍程序中的空格所分開的選用參數。基於歷史因素,部份指令可以允許 = 放在第一個參數前面。註解是以井字號 (#) 開頭。

若要識別功能表綜覽中的功能表項目,請為每一個項目設定 title。關鍵字 title 後面的文字 (包括任何空格) 將在功能表中顯示成可選取的選項。當這個功能表項目被選取時,就會執行下一個 title 指示的所有指令。

最簡單的案例是重新導向至其他作業系統的開機載入程式。指令是 chainloader 及引數通常是 GRUB 區塊表示法中,其他分割區的啟動區塊。例如:

chainloader (hd0,3)+1

GRUB 中的設備名稱會在第 10.1.1.1 節「硬碟和分割區的命名慣例」 說明。這個範例會指定第一個硬碟中,第四個分割區的第一個區塊。

使用指令 kernel 來指定核心影像。第一個引數是分割區中,核心影像的路徑。其他引數會傳送到指令行上的核心。

如果核心沒有內建驅動程式來存取根分割區、或是這時是使用包含進階 HotPlug 功能的最新 Linux 系統,initrd 就必須以個別的 GRUB 指令來指定,它唯一的引數是 initrd 檔案路徑。因為 initrd 的載入位址是記錄於載入的核心影像,所以指令 initrd 必須立即接在 kernel 指令的後面。

指令 root 會簡化核心和 initrd 檔案的指定。root 的唯一引數是設備或分割區。這個設備會用於所有一直到下一個 root 指令指定時才會出現明確指定設備的所有核心、initrd 或其他檔案路徑。

boot 指令會在每一個功能表項目最後暗示,所以它不需要寫入功能表檔案。不過,如果您使用互動式 GRUB 來啟動,必須在最後輸入 boot 指令。指令本身沒有引數。它只是啟動載入的核心影像或指定的鏈結載入器。

撰寫所有功能表項目之後,將其中一個定義為 default 項目。否則,會使用第一個 (項目 0) 做為預設項目。您也可以指定預設項目要在幾秒後啟動。timeoutdefault 通常在功能表項目前面。如需參考範例,請參閱第 10.1.1.2 節「功能表檔案範例」

10.1.1.1. 硬碟和分割區的命名慣例

GRUB 用於硬碟和分割區的命名慣例與用於一般 Linux 設備的命名慣例不同。它比較類似 BIOS 的簡易磁碟列舉方式,而且語法類似一些 BSD 衍生版本中所用的語法。在 GRUB 中,分割區的編號從 0 開始。這表示 (hd0,0) 是第一個硬碟的第一個分割區。與一般桌上型機器的 primary master 硬碟對應的 Linux 設備名稱是 /dev/sda1

四個可能的主分割區會指定分割區編號 03。邏輯分割區是從 4 開始編號:

(hd0,0)   first primary partition of the first hard disk
(hd0,1)   second primary partition
(hd0,2)   third primary partition
(hd0,3)   fourth primary partition (usually an extended partition)
(hd0,4)   first logical partition
(hd0,5)   second logical partition

由於獨立於 BIOS 設備,GRUB 不會區分 PATA (IDE)、SATA、SCSI 和硬體 RAID 設備。BIOS 或其他控制器識別的所有硬碟,會按照 BIOS 的開機順序編號。

可惜的是,它通常無法將 Linux 設備名稱正確對應至 BIOS 設備名稱。它會透過演算法的協助來產生此對應,然後儲存至檔案 device.map,需要時可以編輯它。如需關於檔案 device.map 的資訊,請參閱第 10.1.2 節「檔案 device.map」

完整 GRUB 路徑包含放在括號中的設備名稱,以及指定分割區中檔案系統的檔案路徑。路徑開頭是一個斜線。例如,如果系統有一個 PATA (IDE) 硬碟,它的第一個分割區包含 Linux,則可以使用如下方式指定可開機核心:

(hd0,0)/boot/vmlinuz

10.1.1.2. 功能表檔案範例

以下範例顯示 GRUB 功能表檔案的結構。這個範例安裝會在 /dev/sda5 下建立 Linux 開機分割區,在 /dev/sda7 下建立根分割區,在 /dev/sda1 下進行 Windows 安裝。

gfxmenu (hd0,4)/boot/message1
color white/blue black/light-gray2
default 03
timeout 84

title linux5
   root (hd0,4)
   kernel /boot/vmlinuz root=/dev/sda7 vga=791 resume=/dev/sda9
   initrd /boot/initrd

title windows6
   rootnoverify (hd0,0)
   chainloader +1

title floppy7
   rootnoverify (hd0,0)
   chainloader (fd0)+1

title failsafe8
   root (hd0,4)
   kernel /boot/vmlinuz.shipped root=/dev/sda7 ide=nodma \
   apm=off acpi=off vga=normal nosmp maxcpus=0 3 noresume
   initrd /boot/initrd.shipped

第一個區塊定義開頭顯示畫面的組態:

1

背景影像 message 位於 /dev/sda5 分割區的 /boot 目錄中。

2

顏色配置:白色 (前景)、藍色 (背景),黑色 (選中項目),以及淺灰色 (選中項目的背景)。色彩配置對於開頭顯示畫面沒有作用,只對您可以存取而且可以自定的 GRUB 功能表有作用 (您可以使用 Esc,結束開頭顯示畫面)。

3

依預設,啟動的是第一個 (0) 功能表項目 title linux

4

沒有任何用者輸入,經過 8 秒後,GRUB 會自動啟動預設項目。若要停用自動開機,請刪除 timeout。如果設定為 timeout 0,GRUB 會馬上啟動預設項目。

第二個 (最大的) 區塊會列示各種可開機的作業系統。個別作業系統的區段會從 title 開始。

5

第一個項目 (title linux) 負責將 SUSE Linux Enterprise Desktop 開機。核心 (vmlinuz) 是位在第一個硬碟的第一個邏輯分割區 (開機分割區)。核心參數,例如根分割區和 VGA 模式,會在此添加。根分割區是根據 Linux 命名慣例 (/dev/sda7/) 指定的,因為此資訊由核心讀取,與 GRUB 無關。initrd 也是位在第一個硬碟的第一個邏輯分割區。

6

第二個項目負責載入 Windows。Windows 是從第一個硬碟的第一個分割區啟動 (hd0,0)。指令 chainloader +1 會造成 GRUB 載入並執行指定分割區的第一個磁區。

7

下一個項目允許從磁片開機,無需修改 BIOS 設定。

8

開機選項 failsafe 會以選擇的核心參數來啟動 Linux,可以啟動發生問題的 Linux 系統。

功能表檔案可以在需要時變更。GRUB 會在下次啟動時使用修改的設定。使用 YaST 或選擇的編輯器,永久地編輯檔案。另一種方法是,使用 GRUB 的編輯功能,以互動方式暫時變更 (請參閱第 10.1.1.3 節「在開機程序期間編輯功能表項目」)。

10.1.1.3. 在開機程序期間編輯功能表項目

在圖形化開機功能表中,可以使用方向鍵選取要啟動的作業系統。如果選取 Linux 系統,可以在開機提示時輸入其他啟動參數。若要直接編輯個別功能表項目,請按 Esc 結束開頭顯示畫面,然後跳到 GRUB 文字功能表,再按 E。用此方式所做的變更,只會套用到目前開機,因此不會永久變更。

[Important]開機程序期間的鍵盤配置

US 鍵盤配置是啟動時唯一可以使用的鍵盤配置。請參閱圖形 28.3 「美國鍵盤配置」

編輯功能表項目有利於修復無法再啟動的缺陷系統,因為開機載入程式錯誤的組態檔,可以手動輸入參數,便得以解決。在開機程序期間手動輸入參數,對於測試新設定但可避免損壞原始系統,有很大的幫助。

啟用編輯模式之後,使用方向鍵選取功能表項目來編輯組態。若要讓組態變成可編輯狀態,請再按 E 一次。使用此方法,在對於開機程序產生負面影響之前編輯錯誤的分割區或路徑指定。按 Enter,結束編輯模式並返回功能表。然後按 B 來啟動此項目。底下的說明文字會顯示進一步可行的動作。

若要永久地輸入變更的開機選項,然後傳送至核心,以 root 身分開啟檔案 menu.lst,然後將各自的核心參數加入到現有的指令行,並以空格分隔:

title linux
   root(hd0,0)
     kernel /vmlinuz root=/dev/sda3 additional parameter
   initrd /initrd

GRUB 會在下次啟動系統時,使用新參數。另一種方法是,使用 YaST 開機載入程式模組做此變更。將新參數加入至現有的行,並用空格分開。

10.1.2. 檔案 device.map

檔案 device.map 會將 GRUB 和 BIOS 設備名稱對應至 Linux 設備名稱。在包含 PATA (IDE) 和 SCSI 硬碟的混合系統中,GRUB 必須透過特定程序來確定開機順序,因為 GRUB 可能無法存取 BIOS 的開機順序資訊。GRUB 儲存分析的結果至檔案 /boot/grub/device.map。對於 BIOS 中的開機順序設定為 PATA 先於 SCSI 的系統,其範例 device.map 檔案如下所示︰

(fd0)  /dev/fd0
(hd0)  /dev/sda
(hd1)  /dev/sdb

(fd0)  /dev/fd0
(hd0)  /dev/disk-by-id/DISK1 ID
(hd1)  /dev/disk-by-id/DISK2 ID

因為 PATA (IDE)、SCSI 和其他硬碟的順序取決於多種因素,並且 Linux 無法識別映射,所以檔案 device.map 中的順序可透過手動方式設定。如果您在開機時遇到問題,可檢查此檔案中的序列是否與 BIOS 中的序列相對應,然後在需要時使用 GRUB 提示暫時進行修改。啟動 Linux 系統之後,檔案 device.map 可以透過 YaST 開機載入程式或其他選擇的編輯器,永久性編輯。

在手動變更檔案 device.map 之後,執行以下指令來重新安裝 GRUB。此指令會造成檔案 device.map 重新載入,並以 grub.conf 列示的指令執行:

grub --batch < /etc/grub.conf

10.1.3. 檔案 /etc/grub.conf

除了 menu.lstdevice.map 之外,第三重要的 GRUB 組態檔案是 /etc/grub.conf。此檔案包含 GRUB 外圍程序正確安裝開機載入程式所需的指令、參數和選項︰

setup --stage2=/boot/grub/stage2 --force-lba (hd0,1) (hd0,1)
   quit

此指令會告知 GRUB 自動將開機載入程式安裝到第一個硬碟上的第二個分割區 (hd0,1),安裝時使用位於同一個分割區上的開機影像。從已掛接的檔案系統安裝 stage2 影像時必須使用 --stage2=/boot/grub/stage2 參數。部分 BIOS 的 LBA 支援實作錯誤,--force-lba 提供了忽略這些錯誤的解決方案。

10.1.4. 檔案 /etc/sysconfig/language

此組態檔案只在借助 YaST 設定開機載入程式時以及每次安裝新的核心時才使用。它可以由修改開機載入程式組態檔案 (例如 GRUB 中的/boot/grub/menu.lst) 的 perl-bootloader 程式庫進行相應的評估。/etc/sysconfig/bootloader 不是 GRUB 特定的組態檔案,其值適用於 SUSE Linux Enterprise Desktop 上安裝的任何開機載入程式。

[Note]核心更新後設定開機載入程式組態

每次安裝新的核心後,perl 開機載入程式便會使用 /etc/sysconfig/bootloader 中指定的預設值寫入新的開機載入程式組態檔案 (例如針對 GRUB 寫入 /boot/grub/menu.lst)。如果要使用一組自定的核心參數,請務必根據需要調整 /etc/sysconfig/bootloader 中相關的預設值。

LOADER_TYPE

指定要在系統 (如 GRUB 或 LILO) 上安裝的開機載入程式。請勿直接修改,您可以按照過程 10.6 「變更開機載入程式類型」 中所述使用 YaST 變更開機載入程式。

DEFAULT_VGA / FAILSAFE_VGA / XEN_VGA

開機時使用之 framebuffer 的螢幕解析度和色彩深度使用核心參數 vga 進行設定。這些值定義要用於預設開機項目、Failsafe 和 XEN 項目的解析度和色彩深度。有效值包括:

表格 10.1. 螢幕解析度與色彩深度參照表

640x480

800x600

1024x768

1280x1024

1600x1200

8bit

0x301

0x303

0x305

0x307

0x31C

15bit

0x310

0x313

0x316

0x319

0x31D

16bit

0x311

0x314

0x317

0x31A

0x31E

24bit

0x312

0x315

0x318

0x31B

0x31F


DEFAULT_APPEND / FAILSAFE_APPEND / XEN_KERNEL_APPEND

核心參數 (除 vga 之外) 會自動附加到開機載入程式組態檔案中的預設、Failsafe 和 XEN 開機項目。

CYCLE_DETECTION / CYCLE_NEXT_ENTRY

設定是否使用開機循環偵測,以及若使用則應在重新開機循環 (如 Failsafe) 時將 /boot/grub/menu.lst 中的哪個替代項開機。如需詳細資訊,請參閱 /usr/share/doc/packages/bootcycle/README

10.1.5. 設定啟動密碼

即使作業系統啟動之前,GRUB 也可以存取檔案系統。沒有 root 許可權的使用者,在此時可以存取 Linux 系統中的檔案 (這些檔案在系統啟動後,他們並無法存取)。若要封鎖此類型的存取,或防止使用者啟動特定的作業系統,請設定開機密碼。

[Important]開機密碼和開頭顯示畫面

如果您在 GRUB 使用啟動密碼,將不會顯示一般的開頭顯示畫面。

按照以下方式,以使用者 root 的身分設定開機密碼:

  1. 在 root 提示下,使用 grub-md5-crypt 將密碼加密:

    # grub-md5-crypt
    Password: ****
    Retype password: ****
    Encrypted: $1$lS2dv/$JOYcdxIn7CJk9xShzzJVw/
  2. 將加密字串貼到檔案 menu.lst 的全域區段:

    gfxmenu (hd0,4)/message
    color white/blue black/light-gray
    default 0
    timeout 8
    password --md5 $1$lS2dv/$JOYcdxIn7CJk9xShzzJVw/

    現在 GRUB 指令只可以在按 P 並輸入密碼後的啟動提示時執行。不過,使用者仍然可以從開機功能表,啟動所有作業系統。

  3. 要防止一或多個作業系統從開機功能表啟動,將項目 lock 新增至沒有密碼便不可以啟動的 menu.lst 每一個段落。例如:

    title linux
       kernel (hd0,4)/vmlinuz root=/dev/sda7 vga=791
       initrd (hd0,4)/initrd
       lock

    重新啟動系統並從開機功能表選取 Linux 之後,將會顯示以下錯誤訊息:

    Error 32: Must be authenticated

    Enter 進入功能表。然後按 P,進入密碼提示要求。輸入密碼並按 Enter 之後,應該就可啟動選取的作業系統 (本範例為 Linux)。

10.2. 使用 YaST 設定開機載入程式

在 SUSE Linux Enterprise Desktop 系統中設定開機載入程式最簡單的方法是使用 YaST 模組。在「YaST 控制中心」選取系統+開機載入程式組態。正如圖形 10.1 「開機載入程式設定」 所示,這時會顯示系統目前的開機載入程式組態,並允許您進行變更。

圖形 10.1. 開機載入程式設定

開機載入程式設定

使用區段管理索引標籤可以編輯、變更以及刪除個別作業系統的開機載入程式區段。要加入選項,請按一下新增。若要變更現有選項的值,請先用滑鼠選取,接著按一下編輯。如果要移除現有項目,請選取它並按一下刪除。如果不熟悉開機載入程式選項,請先閱讀第 10.1 節「使用 GRUB 開機」

使用開機載入程式安裝索引標籤可以檢視和變更關於類型、位置和進階載入程式設定的設定。

按一下其他可存取進階組態選項。內建的編輯器可讓您變更 GRUB 組態檔案。如需詳細資料,請參閱第 10.1 節「使用 GRUB 開機」。還可以刪除現有的組態然後從頭開始,或者讓 YaST 建議新的組態。也可以將組態寫入磁碟,或者從磁碟中重新讀取組態。要還原安裝期間儲存的原始主開機記錄 (MBR),請選擇還原硬碟的 MBR

10.2.1. 調整預設開機項目

若要變更預設開機的系統,請依照下列步驟執行:

過程 10.1. 設定預設系統

  1. 開啟磁區管理索引標籤。

  2. 從清單中選取所需項目。

  3. 按一下設定為預設值

  4. 按一下確定,啟動這些變更。

10.2.2. 修改開機載入程式位置

若要修改開機載入程式的位置,請執行下列步驟:

過程 10.2. 變更開機載入程式位置

  1. 選取開機載入程式安裝索引標籤,然後為開機載入程式位置選擇以下其中一個選項:

    從主開機記錄開機

    這樣會在第一個磁碟的 MBR 中安裝開機載入程式 (根據 BIOS 中預設的開機順序)。

    從根分割區開機

    這會在 / 分割區的開機磁區中安裝開機載入程式。

    從開機分割區開機

    這會在 /boot 分割區的開機磁區中安裝開機載入程式。

    從延伸分割區開機

    這會在延伸分割區容器中安裝開機載入程式。

    自定開機分割區

    這個選項可讓您手動指定開機載入程式的位置。

  2. 按一下確定套用您的變更。

10.2.3. 變更開機載入程式逾時

開機載入程式不會立即啟動預設系統。在逾時期間,您可以選取系統開機,或是寫入一些核心參數。若要設定開機載入程式逾時時間,請依照下列步驟執行:

過程 10.3. 變更開機載入程式逾時

  1. 開啟開機載入程式安裝索引標籤。

  2. 按一下開機載入程式選項

  3. 輸入新值、用滑鼠按住適當的方向鍵或使用鍵盤上的方向鍵,變更逾時秒數的設定值。

  4. 按兩次確定儲存變更。

[Warning]0 秒逾時

若將逾時設定為 0 秒,您將無法在開機時存取 GRUB。如果另外還將預設開機選項設定為非 Linux 作業系統,實際結果則是您將無法存取 Linux 系統。

10.2.4. 設定啟動密碼

使用 YaST 模組,您也可以設定密碼來保護開機。這可以提供您另一層安全保護。

過程 10.4. 設定開機載入程式密碼

  1. 開啟開機載入程式安裝索引標籤。

  2. 按一下開機載入程式選項

  3. 按一下滑鼠啟動使用密碼保護開機載入程式選項,並輸入兩次密碼

  4. 按兩次確定儲存變更。

10.2.5. 調整磁碟順序

如果您的電腦有多個硬碟,您可以指定磁碟開機順序採用機器 BIOS 的設定 (請參閱第 10.1.2 節「檔案 device.map」)。若要執行這個動作,請依照下列步驟執行:

過程 10.5. 設定磁碟順序

  1. 開啟開機載入程式安裝索引標籤。

  2. 按一下開機載入程式詳細資訊

  3. 如果列出超過一個磁碟,請選擇一個磁碟,然後按一下向上向下重新排列顯示磁碟的順序。

  4. 按兩次確定儲存變更。

10.2.6. 設定進階選項

可透過開機載入程式安裝+開機載入程式選項設定進階開機選項。一般情況下,不需要變更預設設定。

在分割區表中為開機分割區設定使用中旗標

啟動包含開機載入程式的分割區。部分舊版的作業系統 (例如 Windows 98) 只能從使用中的分割區開機。

將一般開機碼寫入 MBR

以與作業系統無關的一般代碼取代目前的 MBR。

除錯旗標

將 GRUB 設定為除錯模式,以顯示描述磁碟活動的訊息。

隱藏開機功能表

隱藏開機功能表並使用預設項目開機。

[Warning]

如果隱藏開機功能表,您將無法在開機時存取 GRUB。如果另外還將預設開機選項設定為非 Linux 作業系統,實際結果則是您將無法存取 Linux 系統。

使用信任的 GRUB

啟動信任的 GRUB,以支援信任的計算功能。

圖形功能表檔案

顯示開機畫面時所使用的圖形檔案路徑。

序列連接參數

如果您的機器是透過序列主控台控制的,您可以指定以何種速度來使用哪一個 COM 埠。同時請將終端機定義設定為「serial」。如需詳細資料,請參閱 info grubhttp://www.gnu.org/software/grub/manual/grub.html

使用序列控制台

如果您的機器是透過序列控制台控制的,請啟用此選項並指定以何速度來使用哪一個 COM 埠。請參閱 info grubhttp://www.gnu.org/software/grub/manual/grub.html#Serial-terminal

10.2.7. 變更開機載入程式類型

開機載入程式安裝中設定開機載入程式類型。SUSE Linux Enterprise Desktop 中的預設開機載入程式為 GRUB。若要使用 LILO 或 ELILO,請繼續執行下列步驟:

[Warning]LILO 不受支援

不建議使用 LILO,因為它在 ;SUSE Linux Enterprise Desktop 上不受支援。請只在特殊情況下使用。

過程 10.6. 變更開機載入程式類型

  1. 開啟開機載入程式安裝索引標籤。

  2. 開機載入程式選取 LILO

  3. 在這時開啟的對話方塊中,選取下面其中一個動作:

    建議新組態

    指定 YaST 建議新的組態

    轉換目前的組態

    指定 YaST 轉換目前的組態。轉換組態時,可能會遺失某些設定。

    從頭開始設定新的組態

    寫入自定的組態。安裝 SUSE Linux Enterprise Desktop 時不能使用此動作。

    讀取儲存在硬碟的組態

    載入您個人的 /etc/lilo.conf。安裝 SUSE Linux Enterprise Desktop 時不能使用此動作。

  4. 按兩次確定儲存變更。

轉換過程中,舊的 GRUB 組態會儲存在磁碟中。若要使用它,只要將開機載入程式類型變更回 GRUB,然後從快顯示功能表選擇還原轉換前儲存的組態。這個動作只能在已安裝系統上使用。

[Note]自定開機載入程式

如果要使用 GRUB 或 LILO 以外的開機載入程式,請選取不要安裝任何開機載入程式。請先詳細閱讀開機載入程式的說明文件,再選取這個選項。

10.3. 解除安裝 Linux 開機載入程式

YaST 可以用來解除安裝 Linux 開機載入程式,並將 MBR 還原回安裝 Linux 前的狀態。安裝時,YaST 會自動建立原始 MBR 的備份,並在需要時還原。

若要解除安裝 GRUB,請啟動 YaST,然後按一下系統+開機載入程式以啟動開機載入程式模組。選取其他+還原硬碟的 MBR,並以是,重新寫入進行確認。

10.4. 建立開機 CD

如果使用開機管理員來啟動系統時發生問題,或者無法在硬碟上安裝開機管理員,也可以建立一張包含所有 Linux 必要啟動檔案的開機 CD。此時,要求您的系統安裝有 CD 燒錄器。

使用 GRUB 建立可開機的 CD-ROM 只需要一個特殊形式的 stage2 (稱為 stage2_eltorito),並可以選用自定的 menu.lst。不需要典型的檔案 stage1stage2

過程 10.7. 建立開機 CD

  1. 變更至要在其中建立 ISO 影像的目錄,例如: cd /tmp

  2. 為 GRUB 建立子目錄,然後變更至新建立的 iso 目錄︰

    mkdir -p iso/boot/grub && cd iso
  3. 將核心以及 stage2_eltoritoinitrdmenu.lstmessage 檔案複製到 iso/boot/

    cp /boot/vmlinuz boot/
    cp /boot/initrd boot/
    cp /boot/message boot/
    cp /usr/lib/grub/stage2_eltorito boot/grub
    cp /boot/grub/menu.lst boot/grub
  4. root (cd) 取代 root (hdx, y) 項目,以指向 CD_ROM 設備。您可能還需要調整訊息檔案、核心和 initrd 的路徑 — 它們須分別指向 /boot/message/boot/vmlinuz/boot/initrd。調整之後,menu.lst 的內容應類似於下面的範例:

    timeout 8
    default 0
    gfxmenu (cd)/boot/message
    
    title Linux
       root (cd)
       kernel /boot/vmlinuz root=/dev/sda5 vga=794 resume=/dev/sda1 \
       splash=verbose showopts
       initrd /boot/initrd

    使用 splash=silent (而非使用 splash=verbose) 讓開機訊息不要出現在開機程序中。

  5. 使用以下指令建立 ISO 影像:

    genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot \
    -boot-load-size 4 -boot-info-table -iso-level 2 -input-charset utf-8 \
    -o grub.iso /tmp/iso
  6. 使用您偏好的公用程式,將產生的檔案 grub.iso 燒錄至光碟。請勿將 ISO 影像燒錄為資料檔案,而是在您的燒錄公用程式中使用燒錄 CD 影像的選項。

10.5. 圖形化 SUSE 畫面

如果使用 vga=選項做為核心參數,則圖形 SUSE 螢幕會顯示在第一個主控台上。如果您使用 YaST 來安裝,則會依照選取的解析度與圖形卡來自動啟用此選項。視需要,有三種方式可以停用 SUSE 畫面:

必要時停用 SUSE 畫面。

可以在指令行中輸入指令 echo 0 >/proc/splash 以停用圖形式畫面。若要再次啟用它,請輸入 echo 1 >/proc/splash

預設停用 SUSE 畫面。

您可以新增核心參數 splash=0 到開機載入程式的組態。如需更多詳細資訊,請參閱第 10 章「開機載入程式 GRUB。但是,如果您想使用文字模式 (較早版本的預設值),請設定 vga=normal

完全停用 SUSE 畫面

編譯新的核心且關閉 框架緩衝區支援中的使用開機顯示畫面而非開機標幟選項。在核心中停用框架緩衝區支援,還會自動停用啟動畫面。

[Warning]不支援

如果您使用自定核心執行系統,SUSE 將無法為您的系統提供任何支援。

10.6. 疑難排解

此章節列示使用 GRUB 啟動時,經常遇到的問題以及可能解決方案的簡要說明。部份問題已經在知識庫 (網址為 http://support.novell.com/) 的文章中做了說明。使用搜尋對話方塊尋找 GRUB開機開機載入程式這類的關鍵字。

GRUB 和 XFS

XFS 在分割區啟動區塊中,不會保留空間給 stage1。因此,不要將 XFS 分割區指定成開機載入程式的位置。您可以建立不是以 XFS 格式化的個別開機分割區來解決這個問題。

GRUB 報告 GRUB Geom 錯誤

GRUB 會在系統啟動時檢查連接硬碟的位置。有時候,BIOS 會傳回不一致的資訊,而且 GRUB 會報告 GRUB 位置錯誤。若出現此情況,請更新 BIOS。

如果 Linux 安裝在其他硬碟上,而且未註冊在 BIOS,GRUB 也會傳回此錯誤訊息。開機載入程式的 stage1 可以正確找到和載入,不過 stage2 則找不到。將新磁碟登錄在 BIOS 就可以解決此問題。

具有多個硬碟的系統無法開機

安裝時,YaST 可能已經判斷硬碟的開機順序錯誤。例如,GRUB 可能會將 PATA (IDE) 磁碟視為 hd0,將 SCSI 磁碟視為 hd1,即使 BIOS 中的開機順序與此相反,即 SCSI 先於 PATA。

發生此狀況,在啟動程序時,透過 GRUB 指令行的協助來更正硬碟。在系統啟動之後,編輯 device.map 來永久套用新的對應。然後檢查檔案 /boot/grub/menu.lst/boot/grub/device.map 中的 GRUB 設備名稱,然後使用以下指令,重新安裝開機載入程式:

grub --batch < /etc/grub.conf
從第二顆硬碟啟動 Windows

有些作業系統,例如 Windows,只可以從第一個硬碟啟動。在第一個硬碟以外的硬碟安裝類似作業系統時,會影響個別功能表項目的邏輯變更。

...
title windows
   map (hd0) (hd1)
   map (hd1) (hd0)
   chainloader(hd1,0)+1
...

在此範例中,Windows 是從第二個硬碟啟動。基於此目的,硬碟的邏輯順序是使用 map 變更的。此變更不會影響 GRUB 功能表檔案中的邏輯。因此,第二個硬碟必須指定成 chainloader

10.7. 如需更多資訊

如需關於 GRUB 更進一步的資訊,請參閱 http://www.gnu.org/software/grub/。另請參閱 grub info 頁面。您也可以在「技術資訊搜尋」搜尋關鍵字 GRUB,取得關於特殊問題的相關資訊,網址是 http://www.novell.com/support