類似網(wǎng)站的建設(shè)無錫百度正規(guī)推廣
1. 問題背景
自己的臺式機上裝了好幾塊硬盤,因為自己又菜又喜歡折騰,幾乎每塊上都有一個操作系統(tǒng),其中兩個 m.2 的硬盤上分別裝著一個 windows11 和一個 Ubuntu20.04。但在另外一塊機械硬盤中還裝著更早的一個 Ubuntu18.04,我電腦的啟動引導(dǎo)也是這個系統(tǒng)的。
多個硬盤多個系統(tǒng),導(dǎo)致了一個長期困擾著我的問題,我無法在 Ubuntu18.04 的啟動引導(dǎo)中找到我的 Ubuntu20.04,而如果把啟動盤設(shè)置為 Ubuntu20.04,它的啟動引導(dǎo)中又無法找到我的 windows11。形成了一個奇妙的三角戀。
在終端中執(zhí)行網(wǎng)上通常搜索出來的 update-grub2
根本沒用,找不到就是找不到。今天又一次突發(fā)奇想,希望不依靠自動尋找,而是通過手動編輯 grub 的配置文件的方式來找到另一個系統(tǒng)。換了幾個關(guān)鍵詞搜索之后,終于成功了,記錄一下過程。
2. 解決方案
grub 的 配置文件在 /boot/grub/grub.cfg
,我本來想直接編輯這個文件,但發(fā)現(xiàn)它是自動生成的只讀文件。雖然是可以暴力地 chmod
已達(dá)到修改它的目的,但是下一次執(zhí)行 update-grub2
的時候就會把你手動的修改覆蓋掉,非常不優(yōu)雅。
/boot/grub/grub.cfg
雖然不建議修改,但是它指出了一條手動修改 grub 的路,那就是去 /etc/grub.d/
路徑下修改其中的腳本,在執(zhí)行 update-grub2
的時候,grub 會根據(jù)這個路徑下的腳本自動生成前面說的 cfg
配置文件。
于是我保存了一份 Ubuntu20.04 系統(tǒng)中的 /boot/grub/grub.cfg
到網(wǎng)盤,然后就重啟進(jìn)入了 Ubuntu18.04。
可以看到這個路徑下的文件其實是有前綴的,00_,10_ 等,這個代表了執(zhí)行順序。/etc/grub.d/40_custom
這個文件是 grub 自帶的模板文件,可以直接在這個腳本中添加我們希望添加的啟動項。
從網(wǎng)盤中的 Ubuntu20.04 系統(tǒng)的 /boot/grub/grub.cfg
中搜索我要的 “Ubuntu20.04” 關(guān)鍵字,可以找到 menuentry
開頭的、大括號包裹著的一段代碼,直接復(fù)制粘貼到 /etc/grub.d/40_custom
中,保存退出。然后執(zhí)行一下 update-grub2
。
重啟,就可以看到我的 Ubuntu20.04 出現(xiàn)在了我的啟動項中,完美!