在這篇文章中,你將學習在 Ubuntu 或任何其它 Linux 發行版上更新 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-genericFound initrd image: /boot/initrd.img-5.0.0-37-genericFound linux image: /boot/vmlinuz-5.0.0-36-genericFound initrd image: /boot/initrd.img-5.0.0-36-genericFound linux image: /boot/vmlinuz-5.0.0-31-genericFound initrd image: /boot/initrd.img-5.0.0-31-genericFound Ubuntu 19.10 (19.10) on /dev/sda4Found MX 19 patito feo (19) on /dev/sdb1Adding boot menu entry for EFI firmware configurationdone
你可能看到一個類似的稱為 update-grub2
的命令。不需要在 update-grub
和 update-grub2
之間感到害怕或不知所措。這兩個命令執行相同的動作。
大約在 10 年前,當 grub2 剛剛被引進時,update-grub2
命令也被引進。現在,update-grub2
只是一個連結到 update-grub
的符號,它們都更新 grub2 設定(因為 grub2 是預設的)。
它可能是,你的 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
命令比上面的命令容易很多,這是為什麼它在一開始被建立的原因。
當你安裝一個 Linux 發行版時,它(通常)要求你安裝 grub 啟動載入程式。
grub 的一部分安裝在 MBR/ESP 分割區上。grub 的剩餘部分保留在 Linux 發行版的 /boot/grub
目錄中。
依據它的 man 頁面,update-grub
通過查詢 /boot
目錄來工作。所有以 vmlinuz- 開頭的檔案將被作為核心來對待,並且它們將得到一個 grub 選單項。它也將為與所找到核心版本相同的 ramdisk 映象新增 initrd 行。
它也使用 os-prober 為其它作業系統查詢所有磁碟分割區。如果找到其它作業系統,它新增它們到 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 使用者能夠學到更多,而不僅僅是一個簡單命令。
你喜歡它嗎?你有一些問題或建議嗎?請隨意發表評論。