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". Я полагаю, что одним из вариантов было бы перенести файл подкачки в / dev / sda4 в качестве логического тома и использовать /dev/sda2 в качестве /boot.
В качестве альтернативы я мог бы просто вернуться к grub-legacy и не беспокоиться об этом (есть ли преимущество в переходе на grub2, если это вызывает такие большие проблемы?).
Мысли?
7 ответов
Сначала вы должны определить, хотите ли вы использовать загрузку в 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/ устаревшего режима и grub-efi-amd64
для режима EFI / UEFI. Установка в режиме EFI также потребует загрузки всего, что вы используете для установки GRUB (предположительно, live CD/USB) в режиме EFI. Для этого может потребоваться использование встроенного менеджера загрузки вашего компьютера, доступ к которому обычно осуществляется с помощью функциональной клавиши, но детали могут различаться для разных компьютеров.
У вас уже есть этот крошечный раздел, так что ок, первый раздел начинается не с 1, а с 2048.
/dev / sda1 2048 411647 409600 200M Linux file system (/boot)
Нужно изменить тип метки, с boot на bios_grub например через parted:
parted /dev/sda
set 1 boot off
set 1 bios_grub on
q
Затем снова:
grub2-install /dev/sda
Если вы хотите использовать 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
Загрузочный раздел должен быть отформатирован fat32, чтобы он работал
mkfs.vfat -F32 /dev/sdXY
Должен исправить это для вас
Также флаг загрузки должен быть включен в parted:
set 1 boot on
У меня возникла эта проблема только что на машине в режиме EFI с GPT-диском (сервер Ubuntu 18.04), который однажды решил загрузиться только до оболочки GRUB самостоятельно.
Каким-то образом grub-pc (для машин с режимом BIOS/i386) был установлен, а grub-efi — нет. Исправление было простым, как только проблема была выявлена:
# apt install grub-efi
# update-grub
# grub-install
Обратите внимание, что первая команда удалила grub-pc.
Я столкнулся именно с этой ошибкой при попытке спасти незагружаемую систему с помощью аварийного USB-образа. Основная проблема заключалась в том, что моя система былаx86_64
системе, в то время как спасательный образ былi386
и они недостаточно совместимы дляgrub-install
работать. Решением было указать как цель загрузки, так и откуда брать файлы. В моем случае я смонтировал корневой раздел в/mnt
и тогда это сработало:grub-install -d /mnt/usr/lib/grub/x86_64-efi --boot-directory=/mnt/boot /dev/sda
К вашему сведению, прежде чем сделать это, я также сделалmount /dev/sda1 /mnt/boot/efi
но я не знаю, имело ли это значение или нет. /dev/sda1
здесь был мой раздел EFI, и/mnt/boot/efi
здесь grub его искал.
Мой компьютер каким-то образом попал в такое состояние, когда после каждого обновления (ядра?) я не мог загрузиться и пытался исправить это с живого «cd» (USB-ключ и chroot установщика Debian). Я получал эту ошибку, и поиск в Google привел меня сюда, так что это может быть полезно для кого-то другого, но в основном это из первого ответа здесь...
Для меня проблема заключалась в том, что я установил, но, вероятно, использовал загрузку UEFI.
Помогло, когда я удалил grub-pc
и установлен grub-efi-amd64