grub2-install: «эта метка раздела GPT не содержит загрузочного раздела BIOS»

77728
Robert S

Кажется, что по этому поводу довольно много дискуссий, но я не могу найти простой ответ.

Когда я пытаюсь установить 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, если это вызывает такие большие проблемы?).

Мысли?

31

3 ответа на вопрос

17
Rod Smith

Сначала вы должны определить, хотите ли вы использовать загрузку в BIOS / CSM / устаревшем режиме или загрузку в EFI / UEFI-режиме. Первый - это способ загрузки ПК с 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, поэтому для его создания вам придется изменить размер. Я рекомендую размер 550 МБ, хотя десятая часть может работать в крайнем случае.

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

Спасибо за ваш очень полезный ответ. У меня есть вещи, работающие на виртуальной машине с небольшим беспорядком. Когда я пытаюсь сделать это на моем «производственном» компьютере (на котором есть два жестких диска), у меня возникает ряд проблем: `grub2-install grub-setup = / bin / true / dev / sda` выдает` grub2-install: error : Более одного установочного устройства? На моей рабочей ВМ начальный сектор помечен как 32, а на рабочей машине - 2048. Не знаю, насколько это актуально. Robert S 9 лет назад 0
Как предлагает Flow в своем ответе, тип раздела загрузочного раздела BIOS должен быть установлен на 0x04, то есть «загрузка BIOS», иначе grub не удастся установить. Это может быть установлено, например, с помощью команды fdisk "t". user1225999 6 лет назад 0
Есть ли способ заставить grub 2 установить ** без ** загрузочного раздела bios? Я только хочу использовать UEFI. CMCDragonkai 6 лет назад 0
При установке в режиме EFI GRUB 2 не использует загрузочный раздел BIOS. Если GRUB запрашивает один, скорее всего, вы загрузились в режиме BIOS, а не в режиме EFI. Проверьте параметры загрузки, чтобы убедиться, что CSM отключен, как описано на моей веб-странице по теме: http://www.rodsbooks.com/efi-bootloaders/csm-good-bad-ugly.html. Rod Smith 6 лет назад 1
6
Flow

Если вы хотите использовать 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 
3
Kevin Huntly

Загрузочный раздел должен быть отформатирован fat32, чтобы он работал

mkfs.vfat -F32 /dev/sdXY 

Должен исправить это для вас

Также флаг загрузки должен быть включен в parted:

set 1 boot on