Linux 黑話解釋:Linux 中的 GRUB 是什么?
如果你曾經(jīng)使用過(guò) Linux 桌面,你一定見(jiàn)過(guò)這個(gè)屏幕。這就是所謂的 GRUB 屏幕。是的,它的字母全部都是大寫的。

Remember this screen? This is GRUB
在 “Linux 黑話解釋Linux Jargon Buster”系列的這一個(gè)章節(jié)中,我將告訴你 GRUB 是什么,以及它有什么用處。此外,我還會(huì)簡(jiǎn)要地介紹一下配置和定制的部分。
GRUB 是什么?
GRUB 是一個(gè)用于加載和管理系統(tǒng)啟動(dòng)的完整程序。它是 Linux 發(fā)行版中最常見(jiàn)的引導(dǎo)程序bootloader。引導(dǎo)程序是計(jì)算機(jī)啟動(dòng)時(shí)運(yùn)行的第一個(gè)軟件。它加載 操作系統(tǒng)的內(nèi)核,然后再由內(nèi)核初始化操作系統(tǒng)的其他部分(包括 Shell、顯示管理器、桌面環(huán)境 等等)。
引導(dǎo)程序和引導(dǎo)管理器
我不想現(xiàn)在就把你搞糊涂,但是我認(rèn)為這個(gè)話題是不可避免的。引導(dǎo)程序boot loader和引導(dǎo)管理器boot manager之間有著一條模糊的界限。
你已經(jīng)知道了引導(dǎo)程序是什么。它會(huì)首先啟動(dòng),然后將內(nèi)核加載到內(nèi)存中并執(zhí)行它。引導(dǎo)管理器則允許你在不同的操作系統(tǒng)之間進(jìn)行選擇(如果你的電腦上不止一個(gè)操作系統(tǒng)的話)。引導(dǎo)管理器并不會(huì)直接加載系統(tǒng)。
隨著 Linux 內(nèi)核 3.3 版本的推出,Linux 內(nèi)核包括了一個(gè)內(nèi)置的 EFI 引導(dǎo)程序。事實(shí)上,任何一個(gè)支持 EFI 的系統(tǒng)都包括一個(gè) EFI 引導(dǎo)程序。在支持 EFI 的系統(tǒng)中,固件會(huì)讀取 EFI 系統(tǒng)分區(qū)EFI System Partition(ESP)中的 EFI 文件,從而獲得啟動(dòng)信息。
這里插入一張圖片,圖中顯示了帶有 ESP 分區(qū)的分區(qū)表:

GRUB 既是一個(gè)引導(dǎo)程序,也是一個(gè)引導(dǎo)管理器。一會(huì)兒我再來(lái)談 GRUB。讓我們先看看其他類似 GRUB 的程序。
小知識(shí):GRUB 是 GRand Unified Bootloader(大一統(tǒng)引導(dǎo)程序) 的首字母縮寫。
GRUB 屏幕上的那些行是什么意思?
你會(huì)在 GRUB 屏幕上看到幾行字。這些行對(duì)于不同的設(shè)置、不同的發(fā)行版會(huì)有所不同。
通常情況下,第一行是你的 Linux 發(fā)行版。如果你看到類似高級(jí)選項(xiàng)的東西,你可以進(jìn)入其中,找到一些以 “l(fā)inux-generic-x-y-z” 等開(kāi)頭的行。
當(dāng)你的 Linux 發(fā)行版更新內(nèi)核版本時(shí),它至少會(huì)保留一個(gè)舊版本。你可以選擇啟動(dòng)到舊的 Linux 內(nèi)核,以防你的系統(tǒng)遇到新更新的 Linux 內(nèi)核的任何問(wèn)題。
在基于 Ubuntu 的發(fā)行版中,你也可以看到一個(gè)恢復(fù)選項(xiàng)。

在高級(jí)選項(xiàng)下,通常有一個(gè)舊的內(nèi)核版本和恢復(fù)選項(xiàng)
在最后,你可能會(huì)看到一個(gè)條目,如系統(tǒng)設(shè)置或 UEFI 設(shè)置,以訪問(wèn)系統(tǒng)的 BIOS 設(shè)置。
還有哪些類似 GRUB 的引導(dǎo)管理器?
GRUB 是 Linux 中最流行的引導(dǎo)管理器。但它并不是唯一的一個(gè)。有一個(gè)高度可定制的引導(dǎo)管理器,名字叫做 rEFInd 引導(dǎo)管理器,它同樣受到了一些 Linux 用戶的喜愛(ài)。

定制化的 rEFInd 引導(dǎo)管理器屏幕 | 圖片來(lái)源:kofler.info/pop_os
還有一個(gè)基于文本的引導(dǎo)管理器,名字叫做 systemd-boot。你可以猜到這是專為基于 systemd 的 Linux 發(fā)行版準(zhǔn)備的。有一些發(fā)行版正在使用 systemd-boot,比如 Pop OS。

Pop OS 中的 systemd-boot | 圖片來(lái)源:kofler.info/pop_os
訪問(wèn)或編輯 GRUB
通常你看到的 GRUB 屏幕是它的菜單界面。如果你安裝了一個(gè)以上的操作系統(tǒng),它會(huì)允許你在其中選擇一個(gè)來(lái)啟動(dòng)。如果你的 Linux 發(fā)行版安裝了不止一個(gè)內(nèi)核,你也可以選擇加載不同的內(nèi)核。
根據(jù)不同的 Linux 發(fā)行版的配置,你的 GRUB 菜單上可能會(huì)有一些其他選項(xiàng)。
你可以在 GRUB 菜單界面按 e 鍵來(lái)編輯菜單項(xiàng)。這樣你就可以在內(nèi)核加載前修改它的參數(shù)。例如,在某些情況下,禁用內(nèi)核提供的圖形驅(qū)動(dòng)可以幫助你解決 Linux 系統(tǒng)在啟動(dòng)時(shí)卡住的問(wèn)題。

你也可以在 GRUB 菜單界面上按 c 鍵來(lái)進(jìn)入 GRUB 的命令行菜單。
GRUB 配置文件
你在菜單界面里對(duì) GRUB 所做的任何改變都是暫時(shí)的。如果你想對(duì) GRUB 做一些永久性的改變,比如改變默認(rèn)的超時(shí)時(shí)間,你可以在 Linux 系統(tǒng)啟動(dòng)后修改 GRUB 配置文件。
默認(rèn)的 GRUB 配置文件是 /etc/default/grub。還有一個(gè) /etc/default/grub.d 目錄,里面也存放一些配置。你可以直接編輯 /etc/default/grub 文件,但是我還是建議通過(guò)在這個(gè)目錄中添加配置文件(.cfg 文件)進(jìn)行額外的修改。

默認(rèn)的 GRUB 配置文件
你必須 更新 GRUB 才能使這些修改生效。
使用 GRUB 定制器來(lái)定制 GRUB
如果你不太習(xí)慣 在終端里使用文本編輯器編輯文件,你可以 使用一個(gè)叫做 GRUB 定制器的圖形工具。
它允許你改變啟動(dòng)順序、默認(rèn)超時(shí)時(shí)間等等。你還可以用它來(lái)把 GRUB 的背景設(shè)置成一張自定義的墻紙。

GRUB 定制器可以在 Ubuntu 20.04 中從 Universe 倉(cāng)庫(kù)安裝,在 Ubuntu 18.04 中 通過(guò) PPA 安裝。它可以 通過(guò) AUR 在基于 Arch Linux 的發(fā)行版中使用。
總結(jié)
至此,本文幾乎涉及到了所有與 GRUB 相關(guān)的簡(jiǎn)單內(nèi)容。至于 EFI、引導(dǎo)加載和 GRUB 本身,它們都是詳細(xì)而復(fù)雜的話題,因此不在本文的討論范圍之內(nèi)。這篇文章旨在給你一個(gè)關(guān)于 GRUB 引導(dǎo)程序的總體概述。
或許我以后會(huì)寫一篇關(guān)于 GRUB 的詳細(xì)指南,解釋它底層的一些細(xì)節(jié)。目前,如果你想了解更多關(guān)于 GRUB 的信息,你可以在你的 Linux 終端里使用 info grub 命令訪問(wèn)到 GRUB 文檔。

你可以在終端中訪問(wèn) GRUB 手冊(cè)
我希望你現(xiàn)在對(duì)什么是 GRUB 有了一點(diǎn)點(diǎn)的了解。這里有一個(gè) GIF 動(dòng)圖供你一樂(lè)。

什么是 GRUB? UEFI 再也傷害不到我了 :)

























