grub2-install: "ця мітка розділу GPT не містить завантажувального розділу BIOS"


41

Здається, з цього приводу було досить багато дискусій, але я не можу знайти просту відповідь.

Коли я намагаюся встановити 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 Boot Partition". Я припускаю, що одним із варіантів буде переміщення swap в / dev / sda4 як логічний том та використання / dev / sda2 як / boot.

Крім того, я міг би просто повернутися до спадщини grub і не турбуватися з цього приводу (чи справді є перевага до оновлення до grub2, якщо це спричиняє багато проблем?).

Думки?

Відповіді:


23

Спершу слід визначити, чи потрібно використовувати завантаження BIOS / CSM / застарілого режиму або завантаження в режимі EFI / UEFI. Перший - це спосіб, яким комп'ютери завантажуються з 1980-х, але це некрасива і хакерська система, яка занадто довго піде шляхом Додо. Windows прив'язує завантаження режиму BIOS до таблиці розділів MBR, яку ви не використовуєте (але міг; ваш диск ніде не є достатньо великим, щоб вимагати GPT). Linux, FreeBSD та більшість інших сучасних ОС є більш гнучкими та підтримують завантаження BIOS-режиму з GPT; але іноді виникають ускладнення, створені прошивкою, і, звичайно, якщо згодом ви вирішите встановити Windows у режимі подвійного завантаження, вам потрібно буде вносити зміни або компроміси.

Завантаження в режимі EFI / UEFI менше хакі; але впровадження EFI значно відрізняється за якістю, і загальний рівень знань та підтримки в Інтернеті для ІФІ нижчий, ніж для BIOS. Система Windows використовує GPT для завантаження в режимі EFI, тому, якщо ви хочете коли-небудь встановити Windows на свій комп'ютер, EFI, безумовно, це шлях. Старіші комп'ютери лише для BIOS. EFI почала виходити на ринок у середині 2011 року, тому якщо ваш комп'ютер старший за цей, ви, можливо, не зможете користуватися EFI.

Якщо ви переходите до завантаження в режимі BIOS, вам слід створити BIOS Boot Partition на диску. На цьому диску достатньо місця для запуску цього розділу, але вам потрібно встановити значення вирівнювання сектору в 1 (від звичайного 2048), щоб це працювало. Я не знаю напевно, чи можна це зробити parted, але ви можете це зробити gdisk. (Зверніть увагу, що місце на диску вашого диска трохи нижче рекомендованого розміру 1 Мбіт для завантажувального розділу BIOS, але лише декілька секторів. Це, ймовірно, спрацює нормально, але, можливо, може вийти з ладу в якийсь момент у майбутньому.) , ви можете зменшити будь-який з ваших розділів на 1-2MiB, щоб звільнити завантажувальний розділ BIOS. Цей розділ не повинен бути першим розділом на диску, хоча це звичайне місце.

Якщо ви переходите до завантаження в режимі EFI / UEFI, ви повинні створити системний розділ EFI (ESP). Цей розділ повинен бути у форматі FAT і повинен бути значно більшим, ніж завантажувальний розділ BIOS, тому вам доведеться щось змінити для його створення. Я рекомендую розмір 550MiB, хоча десята частина цього може працювати в крайньому випадку.

Щоб встановити GRUB, слід спочатку переконатися, що ви встановили правильний пакет GRUB. Я не впевнений у назві у всіх дистрибутивах, але в Ubuntu це буде grub-pcв режимі BIOS / CSM / спадщина та в режимі grub-efi-amd64EFI / UEFI. Установка в режимі EFI також потребує завантаження будь-якого використовуваного для встановлення GRUB (живого CD / USB, імовірно) в режимі EFI. Для цього може знадобитися використання вбудованого диспетчера завантажень вашого комп'ютера, до якого, як правило, можна отримати функціональну клавішу, але деталі залежать від одного комп'ютера до іншого.


Дякую за дуже корисну відповідь. У мене справи, що працюють на віртуальній машині, трохи плутаються. Коли я намагаюся це зробити на своїй "виробничій" машині (яка має два жорсткі диски), у мене є ряд проблем: grub2-install grub-setup=/bin/true /dev/sdaдає grub2-install: error: More than one install device?.. На моїй робочій машині VM стартовий сектор позначений як 32, а на виробничій машині - 2048. Не знаю, чи це актуально.
Роберт S

Як підказує Flow у своїй відповіді, тип розділу BIOS Boot Partition повинен бути встановлений на 0x04, тобто "BIOS boot", інакше grub не вдасться встановити. Це можна встановити, наприклад, за допомогою команди "t" fdisk.
користувач1225999

Чи є спосіб встановити grub 2 без встановлення завантажувального розділу Bios? Я хочу лише використовувати UEFI.
CMCDragonkai

1
В установці в режимі EFI GRUB 2 не використовує завантажувальний розділ BIOS. Якщо GRUB запитує про це, то, швидше за все, ви завантажилися в режимі BIOS, а не в режимі EFI. Перевірте параметри завантаження, щоб переконатися, що ваш CSM відключений, як це описано на моїй веб-сторінці на тему: rodsbooks.com/efi-bootloaders/csm-good-bad-ugly.html
Род Сміт,

6

Якщо ви хочете використовувати розділи GPT у режимі завантаження в старому стилі BIOS, вам потрібно створити розділ BIOS на кілька мегабайт (16MiB має бути чудовим та майбутнім доказом) на пристрої, на якому ви хочете встановити grub 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

3

Розділ завантаження повинен бути відформатований fat32, щоб він працював

mkfs.vfat -F32 /dev/sdXY

Має це виправити

Також прапор завантажувального пристрою повинен бути розбитим:

set 1 boot on
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.