在linux中,grub是一個用于加載和管理系統(tǒng)啟動的完整程序,是一種引導(dǎo)程序;它是計算機(jī)啟動時運(yùn)行的第一個軟件,會加載操作系統(tǒng)的內(nèi)核,再由內(nèi)核初始化操作系統(tǒng)的其他部分。grub支持LBA,可將用于查找文件的尋址轉(zhuǎn)換放入硬盤驅(qū)動器的固件中。
本教程操作環(huán)境:Ubuntu 16.04系統(tǒng)、Dell G3電腦。
Linux 中的 GRUB
GRUB?是一個用于加載和管理系統(tǒng)啟動的完整程序。它是 Linux 發(fā)行版中最常見的引導(dǎo)加載程序(bootloader)。引導(dǎo)加載程序非常重要,因為沒有它就無法啟動操作系統(tǒng)。
引導(dǎo)程序是計算機(jī)啟動時運(yùn)行的第一個軟件。引導(dǎo)加載程序?qū)⒖刂茩?quán)轉(zhuǎn)移到操作系統(tǒng)內(nèi)核。
它加載?操作系統(tǒng)的內(nèi)核,然后再由內(nèi)核初始化操作系統(tǒng)的其他部分(包括 Shell、顯示管理器、桌面環(huán)境?等等)。
GRUB是許多Linux發(fā)行版的默認(rèn)引導(dǎo)程序。這是因為它比許多先前版本的引導(dǎo)程序更好。它的一些功能是:
-
GRUB支持LBA(邏輯塊尋址模式),它將用于查找文件的尋址轉(zhuǎn)換放入硬盤驅(qū)動器的固件中
-
GRUB提供了最大的靈活性,可以使用基于命令的預(yù)操作系統(tǒng)環(huán)境為操作系統(tǒng)加載所需的選項。
-
可以使用GRUB命令行修改諸如內(nèi)核參數(shù)之類的引導(dǎo)選項。
-
無需為GRUB指定Linux內(nèi)核的物理位置。它只需要內(nèi)核的硬盤號,分區(qū)號和文件名。
-
GRUB可以使用直接加載和鏈?zhǔn)郊虞d啟動方法來啟動幾乎所有操作系統(tǒng)。
引導(dǎo)程序和引導(dǎo)管理器
我不想現(xiàn)在就把你搞糊涂,但是我認(rèn)為這個話題是不可避免的。引導(dǎo)程序(boot loader)和引導(dǎo)管理器(boot manager)之間有著一條模糊的界限。
你已經(jīng)知道了引導(dǎo)程序是什么。它會首先啟動,然后將內(nèi)核加載到內(nèi)存中并執(zhí)行它。引導(dǎo)管理器則允許你在不同的操作系統(tǒng)之間進(jìn)行選擇(如果你的電腦上不止一個操作系統(tǒng)的話)。引導(dǎo)管理器并不會直接加載系統(tǒng)。
隨著 Linux 內(nèi)核 3.3 版本的推出,Linux 內(nèi)核包括了一個內(nèi)置的 EFI 引導(dǎo)程序。事實上,任何一個支持 EFI 的系統(tǒng)都包括一個 EFI 引導(dǎo)程序。在支持 EFI 的系統(tǒng)中,固件會讀取?EFI 系統(tǒng)分區(qū)(EFI System Partition)(ESP)中的 EFI 文件,從而獲得啟動信息。
這里插入一張圖片,圖中顯示了帶有 ESP 分區(qū)的分區(qū)表:
GRUB 既是一個引導(dǎo)程序,也是一個引導(dǎo)管理器。一會兒我再來談 GRUB。讓我們先看看其他類似 GRUB 的程序。
小知識:GRUB 是?GRand?Unified?Bootloader(大一統(tǒng)引導(dǎo)程序) 的首字母縮寫。
GRUB 屏幕上的那些行是什么意思?
你會在 GRUB 屏幕上看到幾行字。這些行對于不同的設(shè)置、不同的發(fā)行版會有所不同。
通常情況下,第一行是你的 Linux 發(fā)行版。如果你看到類似高級選項的東西,你可以進(jìn)入其中,找到一些以 “linux-generic-x-y-z” 等開頭的行。
當(dāng)你的 Linux 發(fā)行版更新內(nèi)核版本時,它至少會保留一個舊版本。你可以選擇啟動到舊的 Linux 內(nèi)核,以防你的系統(tǒng)遇到新更新的 Linux 內(nèi)核的任何問題。
在基于 Ubuntu 的發(fā)行版中,你也可以看到一個恢復(fù)選項。
在最后,你可能會看到一個條目,如系統(tǒng)設(shè)置或 UEFI 設(shè)置,以訪問系統(tǒng)的 BIOS 設(shè)置。
還有哪些類似 GRUB 的引導(dǎo)管理器?
GRUB 是 Linux 中最流行的引導(dǎo)管理器。但它并不是唯一的一個。有一個高度可定制的引導(dǎo)管理器,名字叫做 rEFInd 引導(dǎo)管理器,它同樣受到了一些 Linux 用戶的喜愛。
還有一個基于文本的引導(dǎo)管理器,名字叫做?systemd-boot。你可以猜到這是專為基于 systemd 的 Linux 發(fā)行版準(zhǔn)備的。有一些發(fā)行版正在使用 systemd-boot,比如 Pop OS。
訪問或編輯 GRUB
通常你看到的 GRUB 屏幕是它的菜單界面。如果你安裝了一個以上的操作系統(tǒng),它會允許你在其中選擇一個來啟動。如果你的 Linux 發(fā)行版安裝了不止一個內(nèi)核,你也可以選擇加載不同的內(nèi)核。
根據(jù)不同的 Linux 發(fā)行版的配置,你的 GRUB 菜單上可能會有一些其他選項。
你可以在 GRUB 菜單界面按 e 鍵來編輯菜單項。這樣你就可以在內(nèi)核加載前修改它的參數(shù)。例如,在某些情況下,禁用內(nèi)核提供的圖形驅(qū)動可以幫助你解決 Linux 系統(tǒng)在啟動時卡住的問題。
你也可以在 GRUB 菜單界面上按 c 鍵來進(jìn)入 GRUB 的命令行菜單。
GRUB 配置文件
你在菜單界面里對 GRUB 所做的任何改變都是暫時的。如果你想對 GRUB 做一些永久性的改變,比如改變默認(rèn)的超時時間,你可以在 Linux 系統(tǒng)啟動后修改 GRUB 配置文件。
默認(rèn)的 GRUB 配置文件是 /etc/default/grub。還有一個 /etc/default/grub.d 目錄,里面也存放一些配置。你可以直接編輯 /etc/default/grub 文件,但是我還是建議通過在這個目錄中添加配置文件(.cfg 文件)進(jìn)行額外的修改。
你必須 更新 GRUB 才能使這些修改生效。
使用 GRUB 定制器來定制 GRUB
如果你不太習(xí)慣 在終端里使用文本編輯器編輯文件,你可以 使用一個叫做 GRUB 定制器的圖形工具。
它允許你改變啟動順序、默認(rèn)超時時間等等。你還可以用它來把 GRUB 的背景設(shè)置成一張自定義的墻紙。
GRUB 定制器可以在 Ubuntu 20.04 中從 Universe 倉庫安裝,在 Ubuntu 18.04 中 通過 PPA 安裝。它可以 通過 AUR 在基于 Arch Linux 的發(fā)行版中使用。
相關(guān)推薦:《Linux視頻教程》