grub2-install:“此 GPT 分割區標籤不包含 BIOS 開機分割區”

grub2-install:“此 GPT 分割區標籤不包含 BIOS 開機分割區”

似乎對此有很多討論,但我找不到簡單的答案。

當我嘗試安裝 grub2 時出現此錯誤:

# grub2-install /dev/sda
Installing for i386-pc platform.
grub2-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub2-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub2-install: error: will not proceed with blocklists.

這是 /dev/sda 的佈局:

Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7ECE06D0-9F0C-44FF-BCFB-142283172CCA

Device        Start       End   Sectors  Size Type
/dev/sda1      2048    411647    409600  200M Linux filesystem (/boot)
/dev/sda2    411648   4605951   4194304    2G Linux swap
/dev/sda3   4605952  46548991  41943040   20G Linux filesystem (/)
/dev/sda4  46548992 234441614 187892623 89.6G Linux LVM (/var)

有沒有簡單的方法可以解決這個問題?我知道我需要在磁碟的開頭建立一個小分割區作為“BIOS 開機分割區”。我想一種選擇是將交換移到 /dev/sda4 作為邏輯卷,並使用 /dev/sda2 作為 /boot。

或者我可以回到grub-legacy而不用擔心這個(有嗎真的如果升級到 grub2 會造成這麼多麻煩,那麼升級到 grub2 是否有優勢?

想法?

答案1

您應該先確定是要使用 BIOS/CSM/legacy 模式啟動還是 EFI/UEFI 模式啟動。前者是 PC 自 20 世紀 80 年代以來一直採用的啟動方式,但它是一個醜陋且駭客的系統,不久之後就會走上渡渡鳥的道路。 Windows 將 BIOS 模式啟動與 MBR 分割區表連結起來,您沒有使用該分割區表(但可以;您的磁碟遠不足以需要 GPT)。 Linux、FreeBSD 和大多數其他現代作業系統更加靈活,並且支援從 GPT 的 BIOS 模式啟動;但有時會出現韌體造成的複雜情況,當然,如果您以後決定在雙啟動設定中安裝 Windows,則需要進行更改或妥協。

EFI/UEFI 模式啟動不那麼麻煩;但 EFI 實現的品質差異很大,且 Web 上 EFI 的專業知識和支援的整體水準低於 BIOS。 Windows 將 GPT 的使用與 EFI 模式啟動連結起來,因此如果您希望在電腦上安裝 Windows,EFI 絕對是最佳選擇。較舊的計算機僅支援 BIOS。 EFI 於 2011 年中期開始在市場上流行,因此如果您的電腦較舊,您可能無法使用 EFI。

如果您使用 BIOS 模式啟動,您應該建立一個BIOS開機分割區在磁碟上。磁碟開頭有足夠的空間容納該分割區,但您需要將磁區對齊值設為 1(通常為 2048)才能正常運作。我不知道這是否可以用 來完成parted,但你可以用 來完成gdisk。 (請注意,磁碟開頭的空間略低於 BIOS 引導分割區建議的 1MiB 大小,但僅少了幾個磁區。它可能會正常工作,但在將來的某個時候可能會失敗。) ,您可以將任何分割區縮小1-2MiB,為BIOS 引導分割區騰出空間。這個分區的作用是不是需要是磁碟上的第一個分割區,儘管這是常規位置。

如果您使用 EFI/UEFI 模式啟動,則必須建立一個EFI 系統分割區 (ESP)。該分割區必須是 FAT 格式,而且必須比 BIOS 開機分割區大得多,因此您必須調整某些內容的大小才能建立它。我建議使用 550MiB 的大小,儘管在緊要關頭只用十分之一就可以了。

要安裝 GRUB,您首先應確保已安裝正確的 GRUB 軟體包。我不確定所有發行版中的命名,但在 Ubuntu 中,它將用於grub-pcBIOS/CSM/legacy 模式和grub-efi-amd64EFI/UEFI 模式。 EFI 模式安裝也需要啟動用於在 EFI 模式下安裝 GRUB 的任何裝置(可能是 Live CD/USB)。執行此操作可能需要使用電腦內建的啟動管理器,通常透過功能鍵存取該管理器,但詳細資訊因電腦而異。

答案2

你已經有了這個小分區,所以 kk 第一個分區不是以 1 開頭,而是以 2048 開頭

/dev / sda1 2048 411647 409600 200M Linux file system (/boot)

您需要更改標籤類型,從啟動BIOS_grub例如透過分離:

parted /dev/sda
set 1 boot off
set 1 bios_grub on
q

然後再說一次:

grub2-install /dev/sda

答案3

如果您想在舊式 BIOS 啟動模式下使用 GPT 分割區,那麼您需要在要安裝 grub 的裝置上建立一個幾兆位元組的 BIOS 分割區(16MiB 應該沒問題且不會過時)grub-install

例如,用於fdisk在磁碟上的某處建立“BIOS boot”類型的分割區。輸出範例:

# fdisk -l /dev/sda
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 57E16A16-36B4-4445-A216-031EF6501415

Device        Start        End    Sectors   Size Type
/dev/sda1      2048    4196351    4194304     2G Linux RAID
/dev/sda2   4196352   35653631   31457280    15G Linux RAID
/dev/sda3  35653632   37750783    2097152     1G Linux swap
/dev/sda4  37750784   37816319      65536    32M BIOS boot
/dev/sda5  37816320 1953525134 1915708815 913.5G Linux LVM

答案4

我剛剛在一台帶有 GPT 磁碟的 EFI 模式機器(Ubuntu 18.04 伺服器)上遇到了這個問題,有一天它決定只自行啟動至 GRUB shell。

不知何故,grub-pc(用於 BIOS 模式/i386 機器)已安裝,而 grub-efi 則未安裝。一旦發現問題,修復就很簡單:

# apt install grub-efi
# update-grub
# grub-install

請注意,第一個命令卸載了 grub-pc。

相關內容