`install-grub` утверждает, что у меня несколько меток разделов, и что встраивание невозможно


19

Я пытаюсь установить GRUB на своем настольном компьютере без загрузки, но я сталкиваюсь с несколькими ошибками. Другие источники, обсуждающие эти ошибки, связывают их либо с недостатком свободного места на диске перед первым разделом (у меня есть необходимое свободное место), либо с проблемой /boot/grub/grub.cfg(проблема сохраняется даже после правильной регенерации этого файла).

Я загрузился с живого USB и попытался переустановить GRUB, используя следующие команды, но я сталкиваюсь с ошибкой, которая мешает его работе:

$ sudo mount / dev / sda1 / mnt
$ sudo grub-install --root-directory = / mnt / dev / sda
Установка для платформы i386-pc.
grub-install: warning: Попытка установить GRUB на диск с несколькими метками разделов. Это еще не поддерживается ..
grub-install: предупреждение: встраивание невозможно. GRUB может быть установлен только в этой настройке с помощью списков заблокированных. Тем не менее, списки блоков являются ненадежными, и их использование не рекомендуется ..
grub-install: error: не будет работать с блочными списками.

Тем не менее, /dev/sdaкажется, правильно отформатирован для установки grub:

$ sudo fdisk -l / dev / sda

Диск / dev / sda: 111,8 ГБ, 120034123776 байт, 234441648 секторов
Единицы: секторы 1 * 512 = 512 байт
Размер сектора (логический / физический): 512 байт / 512 байт
Размер ввода / вывода (минимальный / оптимальный): 512 байт / 512 байт
Тип метки диска: DOS
Идентификатор диска: 0x8d91017b

Тип начальной загрузки конца загрузочного сектора устройства Тип идентификатора
/ dev / sda1 * 2048 234440703 234438656 111,8G 83 Linux

$ blkid / dev / sda1
/ dev / sda1: UUID = "84e9ff65-c4ba-42eb-8a6d-ebc703fae1f7" TYPE = "ext4" PARTUUID = "8d91017b-01"

В начале он имеет стандартное свободное пространство 1 МБ и /dev/sda1правильно отформатирован. Я попытался с помощью grub-mkconfigвосстановить файл конфигурации:

$ для f в proc sys dev dev / pts; do sudo mount --bind / $ f / mnt / $ f; сделано
$ sudo chroot / mnt
# grub-mkconfig -o /boot/grub/grub.cfg
Создание файла конфигурации grub ...
Найденное изображение linux: /boot/vmlinuz-3.19.0-26-generic
Найденное изображение initrd: /boot/initrd.img-3.19.0-26-generic
Найденное изображение linux: /boot/vmlinuz-3.19.0-23-generic
Найденное изображение initrd: /boot/initrd.img-3.19.0-23-generic
Добавление пункта меню загрузки для конфигурации прошивки EFI
сделано

Тем не менее, я по-прежнему получаю одно и то же сообщение об ошибке при работе grub-install, будь то в chrootсреде или вне ее .

При загрузке живого USB в устаревшем режиме я получаю ту же ошибку; единственное отличие - это результат работы grub-mkconfigв chrootсреде:

# grub-mkconfig -o /boot/grub/grub.cfg
Создание файла конфигурации grub ...
Найденное изображение linux: /boot/vmlinuz-3.19.0-26-generic
Найденное изображение initrd: /boot/initrd.img-3.19.0-26-generic
Найденное изображение linux: /boot/vmlinuz-3.19.0-23-generic
Найденное изображение initrd: /boot/initrd.img-3.19.0-23-generic
Найдено memtest86 + изображение: /boot/memtest86+.elf
Найдено memtest86 + изображение: /boot/memtest86+.bin
Нашел Windows 7 (загрузчик) на / dev / sdc1
сделано

Как правильно установить grub?

Ответы:


25

Сбросьте разрыв между загрузочным сектором и первым разделом.

# dd if=/dev/zero of=/dev/sdX seek=1 count=2047

Это если первый раздел начинается в секторе 2048. Некоторые запускаются раньше, особенно на дисках, которые были разделены Windows. Чтобы быть уверенным, запустить

# fdisk -l /dev/sdX

перед началом и проверьте, где начинается первый раздел. Используйте count=S-1, где S - начало первого раздела.


Это сработало для меня. Я пытаюсь использовать BTRFS вдоль отдельного раздела ext4 / boot. Благодарю.
— Фалес Цеолин

Обратите внимание, что это уничтожит макет GPT. Можно восстановить из его резервной копии, хотя.
— кр.

Если вы используете GPT, вам нужно стереть BIOS BOOT PARTITION. Где это зависит от того, как вы выложили свой диск. Я поставил мой после GPT, между блоком 34 и 2047, предполагая, что первый «реальный» раздел начинается в блоке 2048. Изменение данной командной строки для использования seek=34 count=2014работает для меня.
— звездный день

работает отлично !!!! Граб должен делать это автоматически, хотя
— Браулиобо

1
Да, вы бы так подумали, @brauliobo, но GRUB - это полный мусор. Я даже не использую это больше. В настоящее время я использую syslinux для mbr и systemd-boot для gpt.
— загадочный

3

Можно создать новый раздел, где находится запись GPT, а затем стереть его, используя dd. Таким образом, останется только запись MBR.

Предполагая, что проблемное устройство /dev/sda:

Создайте новый раздел в начальной 1 МиБ

$ parted /dev/sda
$ mkpart primary ext4 0MiB 1MiB
$ quit

Затем обнулите только что созданный раздел

$ dd if=/dev/zero of=/dev/sda2

Затем удалите раздел

$ parted /dev/sda
$ rm 2
$ quit

grub-install теперь должен работать как положено.


Пожалуйста, отредактируйте свой ответ, чтобы обосновать, что делает этот код и почему вы считаете его решением.
— Мартин Торнтон

Работал на меня. Отредактировал это для ясности
— Nitz

3

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

sudo grub-install target=i386-pc /dev/sda --force

это то, что я использовал, чтобы обойти это. Захват --forceне является "рекомендуемым" решением, но у меня до сих пор не было проблем = P


1

Вот что я сделал, чтобы это снова заработало:

Используется gdiskдля преобразования раздела MBR в GPT, вставки раздела в пустое пространство (тип EF02 «Раздел загрузки BIOS»), транспонирования его записи в мой исходный раздел и пометки его как устаревшего загрузочного BIOS.

Потом побежал

$ sudo mount / dev / sda1 / mnt
$ sudo grub-install --root-directory = / mnt / dev / sda

Затем он успешно установлен, и я смог загрузиться с основного диска.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.