Linux 黑話解釋:Linux 中的 GRUB 是什么?
如果你曾經(jīng)使用過 Linux 桌面,你一定見過這個(gè)屏幕。這就是所謂的 GRUB 屏幕。是的,它的字母全部都是大寫的。
Remember this screen? This is GRUB
在 “Linux 黑話解釋Linux Jargon Buster”系列的這一個(gè)章節(jié)中,我將告訴你 GRUB 是什么,以及它有什么用處。此外,我還會(huì)簡要地介紹一下配置和定制的部分。
GRUB 是什么?
GRUB 是一個(gè)用于加載和管理系統(tǒng)啟動(dòng)的完整程序。它是 Linux 發(fā)行版中最常見的引導(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ì)兒我再來談 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” 等開頭的行。
當(dāng)你的 Linux 發(fā)行版更新內(nèi)核版本時(shí),它至少會(huì)保留一個(gè)舊版本。你可以選擇啟動(dòng)到舊的 Linux 內(nèi)核,以防你的系統(tǒng)遇到新更新的 Linux 內(nèi)核的任何問題。
在基于 Ubuntu 的發(fā)行版中,你也可以看到一個(gè)恢復(fù)選項(xiàng)。
在高級(jí)選項(xiàng)下,通常有一個(gè)舊的內(nèi)核版本和恢復(fù)選項(xiàng)
在最后,你可能會(huì)看到一個(gè)條目,如系統(tǒng)設(shè)置或 UEFI 設(shè)置,以訪問系統(tǒng)的 BIOS 設(shè)置。
還有哪些類似 GRUB 的引導(dǎo)管理器?
GRUB 是 Linux 中最流行的引導(dǎo)管理器。但它并不是唯一的一個(gè)。有一個(gè)高度可定制的引導(dǎo)管理器,名字叫做 rEFInd 引導(dǎo)管理器,它同樣受到了一些 Linux 用戶的喜愛。
定制化的 rEFInd 引導(dǎo)管理器屏幕 | 圖片來源:kofler.info/pop_os
還有一個(gè)基于文本的引導(dǎo)管理器,名字叫做 systemd-boot。你可以猜到這是專為基于 systemd 的 Linux 發(fā)行版準(zhǔn)備的。有一些發(fā)行版正在使用 systemd-boot,比如 Pop OS。
Pop OS 中的 systemd-boot | 圖片來源:kofler.info/pop_os
訪問或編輯 GRUB
通常你看到的 GRUB 屏幕是它的菜單界面。如果你安裝了一個(gè)以上的操作系統(tǒng),它會(huì)允許你在其中選擇一個(gè)來啟動(dòng)。如果你的 Linux 發(fā)行版安裝了不止一個(gè)內(nèi)核,你也可以選擇加載不同的內(nèi)核。
根據(jù)不同的 Linux 發(fā)行版的配置,你的 GRUB 菜單上可能會(huì)有一些其他選項(xiàng)。
你可以在 GRUB 菜單界面按 e 鍵來編輯菜單項(xiàng)。這樣你就可以在內(nèi)核加載前修改它的參數(shù)。例如,在某些情況下,禁用內(nèi)核提供的圖形驅(qū)動(dòng)可以幫助你解決 Linux 系統(tǒng)在啟動(dòng)時(shí)卡住的問題。
你也可以在 GRUB 菜單界面上按 c 鍵來進(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 文件,但是我還是建議通過在這個(gè)目錄中添加配置文件(.cfg 文件)進(jìn)行額外的修改。
默認(rèn)的 GRUB 配置文件
你必須 更新 GRUB 才能使這些修改生效。
使用 GRUB 定制器來定制 GRUB
如果你不太習(xí)慣 在終端里使用文本編輯器編輯文件,你可以 使用一個(gè)叫做 GRUB 定制器的圖形工具。
它允許你改變啟動(dòng)順序、默認(rèn)超時(shí)時(shí)間等等。你還可以用它來把 GRUB 的背景設(shè)置成一張自定義的墻紙。
GRUB 定制器可以在 Ubuntu 20.04 中從 Universe 倉庫安裝,在 Ubuntu 18.04 中 通過 PPA 安裝。它可以 通過 AUR 在基于 Arch Linux 的發(fā)行版中使用。
總結(jié)
至此,本文幾乎涉及到了所有與 GRUB 相關(guā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 命令訪問到 GRUB 文檔。
你可以在終端中訪問 GRUB 手冊(cè)
我希望你現(xiàn)在對(duì)什么是 GRUB 有了一點(diǎn)點(diǎn)的了解。這里有一個(gè) GIF 動(dòng)圖供你一樂。
什么是 GRUB? UEFI 再也傷害不到我了 :)