修復grub開機無法進入Ubuntu的問題 / Fix grub Boot Issue After Reinstall Ubuntu on the Dual System of Ubunt and Windows
這大概是我用Linux以來遇到的第四次了。不好好記下處理方法真的是不行。
問題 / Issue
我的筆電上原本預設是Windows。後來我安裝Ubuntu,開機也由Ubuntu改為使用grub來控制。我在該電腦上使用兩個隨身碟來製作USB上的Ubuntu作業系統。USB作業系統運作很順利,但它覆蓋了原本我筆電上的開機啟動程式。儘管移除了USB隨身碟,但開機只能進入筆電預設的Windows,沒辦法回到Ubuntu。
參考來源 / Reference
https://www.bktus.com/en/archives/3293
嘗試了很多做法後,最後是以下兩篇做法能夠生效:
- Fix grub2 boot UEFI after Ubuntu dual system reinstallation of Windows
- Reinstall GRUB (grub-install: warning: EFI variables are not supported on this system.)
修復grub / Fix grub
1. 用USB隨身碟進入Linux桌面 / Boot with live-USB
https://cdimage.ubuntu.com/kubuntu/releases/jammy/release/
第一步是製作能夠進入Linux的Live USB。我選用的是Kubuntu 22.04。下載ISO後用任意工具製作即可。在Windows的話,通常是推薦使用Rufus。
https://linuxhint.com/install_kubuntu_1804/
以隨身碟開機,進入Kubuntu。進入桌面後選擇Try Kubuntu。然後就能使用各種Kubuntu的常用工具。
2. 確認分割區的路徑 / Find out the partitions' pathes
接下來我們要在KDE Partition Manager確認磁碟分割區。開啟KDE Partition Manager後,我們現在左邊的Devices選擇正確的硬碟。如果你不確定硬碟代號的話,可以用容量大小來判斷。接著在對應的硬碟中,我們要找出兩個分割區:
- 安裝Ubuntu的硬碟分割區。通常可以用硬碟大小跟檔案系統來判斷。像上圖中只有一個分割區是ext4,它就是Ubuntu的分割區。在我的例子中,Ubuntu分割區的路徑是 /dev/nvme0n1p5 。
- EFI開機磁區。分割區的標籤通常會有EFI字樣,而且很小。在我的例子中,EFI開機磁區的路徑是 /dev/nvme0n1p1 。
記好這兩個路徑,待會會用到。
3. 掛載原本的磁碟與環境 / Mount devices
開啟終端機,執行以下指令:
# 切換到root
sudo su root
mount /dev/nvme0n1p5 /mnt/
mount /dev/nvme0n1p1 /mnt/boot/efi
mount --bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
mount --bind /proc /mnt/proc
mount --rbind /sys /mnt/sys
4. 安裝grub / Install grub
再來用chroot將掛載目錄作為根目錄,這樣才能在這裡安裝grub:
chroot /mnt
grub-install --target=x86_64-efi /dev/nvme0n1
如果你是32位元的作業系統,則要將「--target=x86_64-efi」改成「--target=i386-efi」。
沒有看到錯誤訊息的話,表示更新完成。重新啟動後便能看到修復後的grub,並正常進入Ubuntu。
文章最後要來問的是:遇到作業系統無法開機的狀況時,你通常是怎麼解決的呢?
- 1. 開抖音找找看。
- 2. 開YouTube找找看。
- 3. 開Google找找看。
- 4. 問ChatGPT。
- 5. 問人。
- 6. 其他。
歡迎在下面留言喔!