grub2-install: „ta etykieta partycji GPT nie zawiera partycji rozruchowej systemu BIOS”

41

Wydaje się, że jest o tym sporo dyskusji, ale nie mogę znaleźć prostej odpowiedzi.

Kiedy próbuję zainstalować grub2, pojawia się ten błąd:

# 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.

Oto układ / 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)

Czy istnieje prosty sposób na obejście tego problemu? Rozumiem, że muszę utworzyć małą partycję na początku dysku jako „partycję rozruchową systemu BIOS”. Przypuszczam, że jedną z opcji byłoby przeniesienie wymiany do / dev / sda4 jako woluminu logicznego i użycie / dev / sda2 jako / boot.

Alternatywnie mógłbym po prostu wrócić do grub-legacy i nie martwić się o to (czy naprawdę jest korzyść z uaktualnienia do grub2, jeśli powoduje to tyle problemów?).

Myśli?

Robert S.
źródło

Odpowiedzi:

23

Najpierw należy ustalić, czy chcesz użyć rozruchu w trybie BIOS / CSM / starszego trybu, czy rozruchu w trybie EFI / UEFI. Ten pierwszy sposób uruchamiania komputerów PC od lat 80. XX wieku, ale to brzydki i hackerski system, który niedługo pójdzie drogą dodo. System Windows wiąże uruchamianie w trybie BIOS z tabelą partycji MBR, której nie używasz (ale może; dysk nie jest wystarczająco duży, aby wymagać GPT). Linux, FreeBSD i większość innych współczesnych systemów operacyjnych są bardziej elastyczne i obsługują ładowanie systemu BIOS z GPT; ale czasami pojawiają się komplikacje tworzone przez oprogramowanie układowe i oczywiście, jeśli później zdecydujesz się zainstalować system Windows w konfiguracji podwójnego rozruchu, musisz wprowadzić zmiany lub kompromisy.

Uruchamianie w trybie EFI / UEFI to mniej hack; ale implementacje EFI różnią się znacznie jakością, a ogólny poziom wiedzy specjalistycznej i wsparcia w Internecie dla EFI jest niższy niż w BIOSie. Windows łączy wykorzystanie GPT z uruchamianiem w trybie EFI, więc jeśli spodziewasz się kiedykolwiek zainstalować system Windows na komputerze, EFI jest zdecydowanie najlepszym rozwiązaniem. Starsze komputery mają wyłącznie system BIOS. EFI zaczął startować na rynku w połowie 2011 roku, więc jeśli twój komputer jest starszy, możesz nie być w stanie korzystać z EFI.

W przypadku uruchamiania w trybie BIOS należy utworzyć partycję rozruchową systemu BIOS na dysku. Na początku dysku jest wystarczająca ilość miejsca dla tej partycji, ale musisz ustawić wartość wyrównania sektora na 1 (od zwykłego 2048), aby to działało. Nie wiem od razu, czy da się to zrobić parted, ale możesz to zrobić gdisk. (Pamiętaj, że miejsce na początku dysku jest nieco poniżej zalecanego rozmiaru 1 MB dla partycji rozruchowej systemu BIOS, ale tylko o kilka sektorów. Prawdopodobnie będzie działało dobrze, ale może się nie powieść w przyszłości.) Alternatywnie , możesz zmniejszyć dowolną partycję o 1-2 MB, aby zrobić miejsce na partycję rozruchową systemu BIOS. Ta partycja nie musi być pierwszą partycją na dysku, chociaż jest to konwencjonalna lokalizacja.

Jeśli korzystasz z uruchamiania w trybie EFI / UEFI, musisz utworzyć partycję systemową EFI (ESP). Ta partycja musi być sformatowana w systemie plików FAT i musi być znacznie większa niż partycja rozruchowa systemu BIOS, więc musisz coś zmienić, aby ją utworzyć. Polecam rozmiar 550 MB, chociaż jedna dziesiąta tego może działać w mgnieniu oka.

Aby zainstalować GRUB, najpierw upewnij się, że zainstalowałeś poprawny pakiet GRUB. Nie jestem pewien, czy nazwa będzie dostępna we wszystkich dystrybucjach, ale w Ubuntu będzie to grub-pctryb BIOS / CSM / legacy i tryb grub-efi-amd64EFI / UEFI. Instalacja w trybie EFI będzie również wymagała uruchomienia tego, czego używasz do zainstalowania GRUB-a (prawdopodobnie CD / USB na żywo) w trybie EFI. Może to wymagać użycia wbudowanego menedżera rozruchu komputera, do którego zwykle można uzyskać dostęp za pomocą klawisza funkcyjnego, ale szczegóły różnią się w zależności od komputera.

Rod Smith
źródło
Dziękuję za bardzo pomocną odpowiedź. Mam rzeczy działające na maszynie wirtualnej z odrobiną bałaganu. Kiedy próbuję to zrobić na moim „produkcyjnym” komputerze (który ma dwa dyski twarde) mam szereg problemów: grub2-install grub-setup=/bin/true /dev/sdadaje grub2-install: error: More than one install device?.. Na mojej działającej maszynie wirtualnej sektor początkowy jest oznaczony jako 32, ale na maszynie produkcyjnej jest to 2048. Nie wiem, czy to jest istotne.
Robert S
Jak sugeruje Flow w swojej odpowiedzi, typ partycji BIOS Boot Partition musi być ustawiony na 0x04, czyli „BIOS boot”, inaczej grub nie zostanie zainstalowany. Można to ustawić na przykład za pomocą polecenia „t” programu fdisk.
user1225999,
Czy istnieje sposób na instalację GRUB 2 bez partycji rozruchowej BIOS? Chcę tylko używać UEFI.
CMCDragonkai
1
Podczas instalacji w trybie EFI GRUB 2 nie używa partycji rozruchowej systemu BIOS. Jeśli GRUB prosi o jeden, istnieje prawdopodobieństwo, że uruchomiłeś się w trybie BIOS, a nie w trybie EFI. Sprawdź opcje uruchamiania, aby upewnić się, że CSM jest wyłączony, zgodnie z opisem na mojej stronie internetowej na ten temat: rodsbooks.com/efi-bootloaders/csm-good-bad-ugly.html
Rod Smith
6

Jeśli chcesz używać partycji GPT ze starszym stylem uruchamiania systemu BIOS, musisz utworzyć partycję BIOS o wielkości kilku megabajtów (16 MB powinien być w porządku i być w przyszłości) na urządzeniu, na którym chcesz zainstalować grub grub-install.

Użyj np. fdiskDo utworzenia partycji typu „BIOS boot” gdzieś na dysku. Przykładowe dane wyjściowe:

# 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
Pływ
źródło
3

Partycja rozruchowa musi być sformatowana jako fat32, aby działała

mkfs.vfat -F32 /dev/sdXY

Powinien to naprawić dla ciebie

Również flaga rozruchu musi być częściowo podzielona:

set 1 boot on
Kevin Huntly
źródło