Ubuntu GRUB Linux Bootloader和配置

GRUB Linux Bootloader(GRUB Linux 引導加載程序)是Linux最廣泛使用的引導加載程序。每個有志於學習Linux的用戶都會從學習Ubuntu GRUB中受益。在本教程中,您將了解GRUB是什麼,引導過程如何工作,以及深入了解幾個有用的Ubuntu GRUB配置。

深入了解更多。

先決條件

如果您想按照本教程進行操作,請確保您的Linux設備使用GRUB作為引導加載程序。本教程將基於Ubuntu 18.04.5 LTS,在Oracle VirtualBox虛擬機上運行。

理解Ubuntu GRUB引導過程

GRUB是Grand Unified Boot Loader的縮寫,是引導設備的主要且最重要的組件。 GRUB也是Linux中最常用的引導加載程序。您的旅程將以您對GRUB的引導過程有更多的了解開始。

在一般的引導過程中,BIOS(基本輸入/輸出系統)首先調用POST(電源自檢測)步驟,然後查找主引導記錄(MBR)中的引導加載程序。

MBR是任何硬盤的第一個扇區中的信息。MBR識別操作系統的位置。存儲在MBR中的信息將操作系統加載(引導)到設備的RAM中。

這篇文章只涵蓋了 MBR 的部分。但你還可以找到使用 GPT 的磁碟,GPT 代表 GUID 分割表。如果你計劃創建超過四個分割區,那麼使用 GPT 會更好,因為 MBR 磁碟最多只能容納 4 個主分割區。

在下面的截圖中,你可以看到開機過程的示意圖。你可以看到 Ubuntu GRUB 將你選擇的內核加載到主記憶體中,即隨機存取記憶體(RAM)。內核加載完成後,用戶可以登錄設備。

The role of GRUB during the complete boot process in Linux

比較 Ubuntu GRUB 和 LILO 開機載入程式

Linux 世界有三種主要的開機載入程式:LILO、GRUB 和 GRUB2。GRUB2 是最新且在 Linux 發行版中主要使用的開機載入程式。本教學中展示的是 GRUB2,因為它是 Ubuntu 的預設開機載入程式,但 LILO 在 Linux 中仍然存在。在本節中,你將學習它們之間的比較。

其他Linux啟動加載器在市場上也有提供,例如GNU GRUB,它具有出色的內存管理支持和面向對象的框架。另一個是SYSLINUX,這是一款輕量級的啟動加載器。GRUB支持多操作系統啟動。而LILO只能啟動一個操作系統。

Ubuntu GRUB能與Windows、Linux、Unix、macOS、BSD、Solaris一起工作,而LILO主要支持Linux操作系統。

GRUB allows opting among multiple OS

如果你更新了LILO的配置文件,那麼需要重新將LILO安裝到MBR中。如果你更改了GRUB設置,它不需要重新安裝。

選擇不同的內核或恢復模式

本節將展示如何在啟動設備恢復受損內核時選擇內核。

以下是使用Oracle VirtualBox中的VM選擇內核的步驟。

A kernel works as an interface between hardware and software. It controls all the processes that users run on the device.

1. 使用Oracle VirtualBox直接登錄到Ubuntu設備控制台。

2. 如下所示使用關機命令重啟你的Ubuntu機器。

設備重啟後,在加載Ubuntu GRUB時按住Shift鍵,你將看到GRUB啟動加載器菜單。如果你不選擇任何項目,GRUB將使用默認內核啟動系統並繼續啟動過程。

shutdown -r now

當您需要使用不同於預設核心的核心進行引導時,或者面臨系統內的文件損壞、核心未正確加載等問題時,您應該選擇Ubuntu的高級選項

GRUB loading process

4. 選擇Ubuntu的高級選項後,將顯示Ubuntu的GRUB菜單。在菜單中,您應該看到各種核心選項供您選擇。如果您不選擇任何選項,將默認加載顯示的第一個核心。

如下圖所示,每個核心都有兩個附加選項:upstart和recovery。

  • (upstart):一個基於事件的/sbin/init守護進程的替代品,它在引導時負責啟動任務和服務,在關機時停止它們,在系統運行時監督它們。
  • (recovery mode):用於恢復系統中的核心故障。
Selecting a kernel from the GRUB menu

5. 登錄設備後,使用uname命令驗證是否加載了指定的核心。使用-r選項打印核心名稱。

uname -r 
Verifying the kernel from the console

設置默認操作系統

現在您對GRUB更加熟悉,您將調整一些GRUB配置選項。首先,您將配置默認加載的操作系統。

1. 使用您喜歡的SSH客戶端登錄到Ubuntu設備。

2. 現在,運行如下所示的awk命令來列出GRUB引導菜單項目。awk命令將顯示存儲在/boot/grub/grub.cfg中的所有項目。文件的內容將顯示在終端上。請注意這些行。您將需要與前面的行關聯的數字,該行從零開始,即Ubuntu行是0Ubuntu, with Linux 4.4.0-210-generic1

awk -F\' '/menuentry / {print $2}' /boot/grub/grub.cfg
awk command filtering all the entries stored in /boot/grub/grub.cfg

3. 接下來,編輯GRUB配置文件。您可以依靠vi來編輯文件並更改GRUB_DEFAULT的值,但請根據需要使用您偏好的編輯器。

vi /etc/default/grub

現在,將GRUB_DEFAULT的值設置為所需操作系統項目的行號。記得剛才運行的awk命令嗎?那些就是操作系統項目。如果將GRUB_DEFAULT設置為0,則GRUB引導菜單中的第一個操作系統項目將被設置為默認啟動,如果將其設置為1,則默認情況下設備將啟動第二個操作系統項目,以此類推。在下面的屏幕截圖中,第一個操作系統項目Ubuntu被設置為默認啟動。

默認情況下,GRUB不會在啟動菜單中等待並立即開始啟動,即在0秒內。您可以通過更改GRUB_TIMEOUT的值來更改此超時設置。該值表示在啟動開始之前菜單可見的秒數。如果值為5,則啟動菜單將顯示5秒,以便您在系統啟動時選擇要加載的操作系統。

Editing the GRUB configuration file

4. 一旦您保存了GRUB配置文件中的更改,請確保運行update-grub命令。update-grub命令將更改的配置文件應用於系統。

update-grub
Updating the GRUB configuration

在Ubuntu GRUB中設置背景圖像

您的GRUB配置不需要單調。您可以通過在GRUB菜單中添加背景圖像來為GRUB增添一點風味。您可以使用GRUB_BACKGROUND選項將圖片設置為GRUB的背景。按照以下步驟自定義GRUB。

1. 使用vi或您喜歡的文本編輯器編輯GRUB配置文件,並如下所示添加GRUB_BACKGROUND行。在本教程中,圖像存儲在名為UBUNTU的用戶主目錄中,因為GRUB運行時作為root,它可以訪問整個文件系統中的圖像。修改後保存配置文件。

# 語法:GRUB_BACKGROUND=/path-to-image
GRUB_BACKGROUND=/home/ubuntu/shanky.jpeg

文件shanky.jpeg圖像已存在於系統中。將該名稱替換為您要用作背景圖像的文件名。

2. 接下來,在GRUB配置文件中進行更改後,運行update-grub命令。

Updating the grub configuration file

3. 此外,驗證您在Grub文件中添加的圖像是否按預期工作。要驗證,重新啟動計算機並在GRUB加載時按下Shift鍵。如下所示,GRUB現在具有一個背景圖像。

GRUB menu displaying the background image as specified in the grub configuration file.

使用GRUB進行雙引導

Ubuntu GRUB最大的特點之一是它允許您在設備啟動時選擇Windows和Linux之間的選項:也被稱為雙重啟動。雙重啟動使您能夠在一個設備上同時使用Linux和Windows,對於在多個操作系統上工作的IT工程師來說非常方便。

截至2021年初,預設的os_prober腳本被禁用,該腳本負責自動添加其他操作系統的菜單項目,原因是自動操作系統檢測存在潛在的安全問題。如果您知道已安裝的操作系統,可以通過以下命令重新啟用此功能。

echo GRUB_DISABLE_OS_PROBER=false|sudo tee -a /etc/default/grub && sudo update-grub

配置了雙重啟動後,當您的設備啟動時,應該會看到類似GRUB菜單的屏幕。

GRUB menu allows you to either login to Windows or Linux Instance

結論

通過本教程,您了解了GRUB是什麼,文章向您介紹了GRUB的引導過程。

您還學會了如何調整一些Ubuntu GRUB的配置,加載不同的內核,甚至了解了雙重啟動。

既然您對GRUB有了扎實的知識,您將改變哪些配置選項?

Source:
https://adamtheautomator.com/ubuntu-grub/