似乎對此有很多討論,但我找不到簡單的答案。
當我嘗試安裝 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-pc
BIOS/CSM/legacy 模式和grub-efi-amd64
EFI/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。