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

В качестве альтернативы я мог бы просто вернуться к grub-legacy и не беспокоиться об этом (есть лиДействительнопреимущество обновления до grub2, если оно вызывает столько проблем?).

Мысли?

решение1

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

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

Если вы используете загрузку в режиме BIOS, вам следует создатьЗагрузочный раздел BIOSна диске. В начале вашего диска достаточно места для этого раздела, но вам нужно будет установить значение выравнивания сектора на 1 (вместо обычных 2048), чтобы это сработало. Я не знаю навскидку, можно ли это сделать с помощью parted, но вы можете сделать это с помощью gdisk. (Обратите внимание, что пространство в начале вашего диска немного меньше рекомендуемого размера в 1 МБ для загрузочного раздела BIOS, но всего на несколько секторов. Это, вероятно, будет работать нормально, но, возможно, в какой-то момент в будущем может выйти из строя.) В качестве альтернативы вы можете сжать любой из ваших разделов на 1-2 МБ, чтобы освободить место для загрузочного раздела BIOS. Этот раздел ненетдолжен быть первым разделом на диске, хотя это общепринятое расположение.

Если вы используете загрузку в режиме EFI/UEFI, вам необходимо создатьСистемный раздел EFI (ESP).Этот раздел должен быть отформатирован в FAT и должен быть значительно больше, чем раздел BIOS Boot, поэтому вам придется изменить размер чего-то, чтобы создать его. Я рекомендую размер 550 МБ, хотя в крайнем случае может подойти и десятая часть.

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

решение2

У вас уже есть этот маленький раздел, поэтому первый раздел начинается не с 1, а с 2048.

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

Вам необходимо изменить тип этикетки сботиноккbios_grubнапример через parted:

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

Затем снова:

grub2-install /dev/sda

решение3

Если вы хотите использовать разделы GPT со старым режимом загрузки BIOS, то вам необходимо создать раздел BIOS размером в несколько мегабайт (16 МБ будет вполне достаточно и с запасом на будущее) на устройстве, на которое вы хотите установить 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

решение4

Недавно у меня возникла эта проблема на машине в режиме EFI с GPT-диском (Ubuntu 18.04 Server), которая в один прекрасный день решила самостоятельно загрузиться только до оболочки GRUB.

Каким-то образом grub-pc (для машин BIOS-mode / i386) был установлен, а grub-efi — нет. Исправление было простым, как только проблема была обнаружена:

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

Обратите внимание, что первая команда удалила grub-pc.

Связанный контент