如何在 Ubuntu 和其它 Linux 發行版上更新 grub

Abhishek Prakash發表於2019-12-29

在這篇文章中,你將學習在 Ubuntu 或任何其它 Linux 發行版上更新 grub 。你也將學習一個或兩個關於更新這個 grub 過程如何工作的事情。

如何更新 grub

Ubuntu 和很多其它的 Linux 發行版提供一個易使用的稱為 update-grub 命令列實用程式。

為更新 grub ,你所要的全部工作就是使用 sudo 在終端中執行這個命令。

sudo update-grub

你應該看到一個像這樣的輸出:

[email protected]:~$ sudo update-grub
[sudo] password for abhishek:
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.0.0-37-generic
Found initrd image: /boot/initrd.img-5.0.0-37-generic
Found linux image: /boot/vmlinuz-5.0.0-36-generic
Found initrd image: /boot/initrd.img-5.0.0-36-generic
Found linux image: /boot/vmlinuz-5.0.0-31-generic
Found initrd image: /boot/initrd.img-5.0.0-31-generic
Found Ubuntu 19.10 (19.10) on /dev/sda4
Found MX 19 patito feo (19) on /dev/sdb1
Adding boot menu entry for EFI firmware configuration
done

你可能看到一個類似的稱為 update-grub2 的命令。不需要在 update-grubupdate-grub2 之間感到害怕或不知所措。這兩個命令執行相同的動作。

大約在 10 年前,當 grub2 剛剛被引進時,update-grub2 命令也被引進。現在,update-grub2 只是一個連結到 update-grub 的符號,它們都更新 grub2 配置(因為 grub2 是預設的)。

不能找到 update-grub 命令?這裡是在這種情況下該做什麼

它可能是,你的 Linux 發行版可能沒有可用的 update-grub 命令。

在這種情況下你該做什麼?你如何在這樣一個 Linux 發行版上更新 grub ?

在這裡不需要驚慌。update-grub 命令只是一個入口,用於執行 grub-mkconfig -o /boot/grub/grub.cfg 來生成 grub2 配置檔案。

這意味著你可以在任意 Linux 發行版上使用下面的命令更新 grub :

sudo grub-mkconfig -o /boot/grub/grub.cfg

當然,記住 update-grub 命令比上面的命令容易很多,這是為什麼它在一開始被建立的原因。

update-grub 是如何工作的?

當你安裝一個 Linux 發行版時,它(通常)要求你安裝 grub 啟動載入程式

grub 的一部分安裝在 MBR/ESP 分割槽上。grub 的剩餘部分保留在 Linux 發行版的 /boot/grub 目錄中。

依據它的 man 頁面update-grub 通過查詢 /boot 目錄來工作。所有以 vmlinuz- 開頭的檔案將被作為核心來對待,並且它們將得到一個 grub 選單項。它也將為與所找到核心版本相同的 ramdisk 映象新增 initrd 行。

它也使用 os-prober 為其它作業系統查詢所有磁碟分割槽。如果找到其它作業系統,它新增它們到 grub 選單。

Representational image of Grub Menu

為什麼你需要更新 grub ?

在有很多場景下你需要更新 grub。

假設你修改 grub 配置檔案(/etc/default/grub)以 更改預設啟動順序 或減少預設啟動時間。除非你更新 grub ,否則你的修改將不會生效。

另一種情況是,你在同一個電腦系統上安裝多個 Linux 發行版。

例如,在我的 Intel NUC 上,我有兩個磁碟。第一個磁碟有 Ubuntu 19.10 ,並且我在其上面安裝了 Ubuntu 18.04 。第二個作業系統(Ubuntu 18.04)安裝了其自己的 grub ,現在 grub 啟動螢幕由 Ubuntu 18.04 grub 控制。

在第二個磁碟上,我安裝了 MX Linux ,但是這次我沒有安裝 grub。我希望現有的 grub(由 Ubuntu 18.04 控制)來處理所有的作業系統專案。

現在,在這種情況中,在 Ubuntu 18.04 上的 grub 需要更新,以便它能夠看到 MX Linux

如上圖所示,當我更新 grub 時,它在 18.04 上找到很多安裝的 Linux 核心, 以及在不同的分割槽上 Ubntu 19.10 和 MX Linux 。

如果你想讓 MX Linux 控制 grub ,我可以使用 grub-install 命令來在 MX Linux 上安裝 grub,然後在 MX Linux 上的 grub 將開始控制 grub 啟動螢幕。你已經明白這點,對吧?

使用一個像 Grub Customizer 的 GUI 工具是在 grub 中進行更改的一種簡單的方法。

最後…

最初,我打算保持它為一篇短文作為一種快速提示。但是後來我想解釋一些與之相關的東西,以便(相對)新的 Linux 使用者能夠學到更多,而不僅僅是一個簡單命令。

你喜歡它嗎?你有一些問題或建議嗎?請隨意發表評論。


via: https://itsfoss.com/update-grub/

作者:Abhishek Prakash 選題:lujun9972 譯者:robsean 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

如何在 Ubuntu 和其它 Linux 發行版上更新 grub

訂閱“Linux 中國”官方小程式來檢視

相關文章