Grub2

兩個 grub 安裝互相破壞

  • April 9, 2019

我在/dev/sda5. 最近我連接了一個外部驅動器並在其上安裝了 Ubuntu 18.04 LTS ( /dev/sdb2)。之後,我無法再啟動我原來的 Mint 安裝(除了存在外部驅動器)。它剛剛進入黑色 grub 螢幕並提示。

我的假設是,grub 是新安裝在外部驅動器上的(這是預期的,因為我希望它可以自行啟動),然後不知何故舊的 grub 安裝被遺忘了。所以我通過使用 live cd 和 chroot 方法修復了 grub。

但是現在如果我重新連接外部驅動器,我無法在 BIOS 引導選擇中選擇從該驅動器引導。

似乎我的兩個 grub 安裝在某種程度上不兼容,但是為什麼以及如何解決呢?

**附加資訊:**兩個磁碟都安裝了 grub2,都使用 EFI 和 gpt。我有一個 EFI 分區 onsda並有另一個 on sdb,因為沒有 EFI 分區 grub 將無法安裝(而且我不想引用 sda 上的 EFI 分區,因為我希望 Ubuntu 能夠在其他地方自行啟動機)。

**更新:**我發現/boot/efi/EFI/ubuntu存在於我的(修復的)Mint 19 安裝中(未連接外部驅動器)。裡面沒有其他文件夾,/boot/efi/boot/efi/EFI不知道這是否意味著什麼,因為 Mint 19 基於 Ubuntu,並且那裡沒有/boot/efi/EFI/mint或類似的目錄。外部驅動器上的 EFI 分區完全是空的/boot/efi,我的 ubuntu 安裝上的文件夾也是如此。我想我將不得不對如何強制使用正確的 EFI 分區進行一些研究。

剛才我得到了 grub2 的更新,它在嘗試執行時出錯grub-install

Installing for x86_64-efi platform.
grub-install: error: cannot find EFI directory.

但是系統確實可以正常啟動。沒有安裝 EFI 分區。

更新 2 好的,似乎在除第一個分區(通常/dev/sda)之外的任何其他分區上安裝 EFI 都存在一般問題,請參見此處。我的外部 Ubuntu 安裝上的 fstab 有這一行:

# /boot/efi was on /dev/sda1 during installation
UUID=8A3D-B724  /boot/efi       vfat    umask=0077      0       1

這證明,安裝忽略了我選擇的 EFI 分區選項。

如果一個人已經遇到了這種情況,並且不想重新安裝所有東西,並且所有其他磁碟都像sudodus在他的回答中建議的那樣斷開連接,我找到了一種方法:

首先,如果主系統無法自行啟動,請斷開外部驅動器並從 live cd 或 live usb 快閃記憶體驅動器啟動。如果實時會話中不存在,請安裝工具“boot-repair”(高級使用的詳細資訊並在此處安裝,方法是在終端中鍵入

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

&& boot-repair如果安裝成功,最後一部分將立即啟動它。它有一個非常不言自明的 GUI。修復主系統的啟動,然後重新啟動。

其次,當主系統再次啟動時,啟動進入,連接外部驅動器。EFI/ubuntu將內部驅動器的 EFI 分區(在這種情況下)上的全部內容複製/dev/sda1到外部驅動器的 EFI 分區兩次。一次到EFI/ubuntu那裡,一次到EFI/Boot。然後在EFI/Boot重命名shimx64.efibootx64.efi.

現在在外部 ubuntu 根分區上編輯文件etc/fstab並找到如下一行:

# /boot/efi was on /dev/sda1 during installation
UUID=8A3D-B724  /boot/efi       vfat    umask=0077      0       1

用外部 EFI 分區的UUID 替換8A3D-B724應該屬於主系統 EFI 分區的 UUID 。可以通過命令找到,blkid或者如果更喜歡 GUI 應用程序,可以使用 Disks 或 Gparted。

完成後,外部驅動器即可啟動。


另見:

完全安裝到 U 盤,UEFI 啟動

當您在 UEFI 模式下安裝 Ubuntu(可能還有 Mint)時,引導載入程序進入第一個驅動器(通常是內部驅動器)/dev/sda,進入該驅動器上的 EFI 系統分區。即使您告訴系統將其安裝到另一個驅動器中,也會發生這種情況。

如果您希望第二個驅動器是攜帶式的並且可以啟動,則在移除第二個驅動器後,您應該在開始安裝之前斷開(或拔下)第一個驅動器。

以下連結可能會有所幫助,

如何將 Ubuntu 安裝到 USB 密鑰?(不使用啟動盤創建器)


為了修復第一個驅動器(通常是內部驅動器)中的引導系統,您應該在開始修復操作之前斷開第二個驅動器。


編輯:

如果您無法斷開/移除內部驅動器,則有一些解決方法:

  • 在 UEFI/BIOS 菜單中禁用內部驅動器
  • 標誌法_

一種。在紙上記下內部驅動器中 EFI 分區的標誌

灣。從內部驅動器中的 EFI 分區中刪除標誌(例如gparted,從實時驅動器引導時使用 )

C。執行安裝

d。將標誌恢復到內部驅動器中的 EFI 分區(gparted從實時驅動器啟動)。

我已經斷開/刪除了驅動器,並且我知道有人在 UEFI/BIOS 菜單中禁用了它,並且我已經閱讀了有關修改標誌的資訊,但對標誌方法沒有自己的經驗。

引用自:https://unix.stackexchange.com/questions/510773