GRUB и LILO не могут установить на жесткий диск NVMe при установке Debian

10

Я пытаюсь установить 64-разрядную стабильную версию Debian на Lenovo Thinkpad. Когда я добираюсь до шага установки, который устанавливает загрузчик, я получаю это сообщение:

Шаг установки не выполнен. Вы можете попробовать запустить неисправный элемент снова из меню или пропустить его и выбрать что-то еще. Неудачный шаг: установить загрузчик GRUB на жесткий диск

Возвращение в меню и выбор LILO выдает мне ту же ошибку. В журнале установки написано

May  1 13:24:23 main-menu[188]: WARNING **: Configuring 'grub-installer' failed with error code 1
May  1 13:24:23 main-menu[188]: WARNING **: Menu item 'grub-installer' failed.
May  1 13:24:28 main-menu[188]: INFO: Menu item 'lilo-installer' selected
May  1 13:24:28 main-menu[188]: WARNING **: Unable to set title for fdisk-udeb.
May  1 13:24:28 main-menu[188]: WARNING **: Configuring 'lilo-installer' failed with error code 1
May  1 13:24:28 main-menu[188]: WARNING **: Menu item 'lilo-installer' failed.

Я не использую LVM или RAID. Пока я пробовал

  1. Отключение загрузки UEFI и использование устаревшей загрузки. Ошибка по-прежнему возникает как с GRUB, так и с LILO.

  2. Следуя инструкциям по этому вопросу и работает

    parted /dev/nvme01
    set 1 bios_grub on
    

    от TTY2, но я получаю сообщение об ошибке parted not found. На моей системе /dev/nvme01единственный жесткий диск

  3. Проверьте аппаратные ошибки. Когда я впервые приобрел систему, я запустил все доступные аппаратные тесты, как в BIOS, так и в Windows, и он прошел все из них. Я предполагаю, что это означает, что оборудование не работает со сбоями.

  4. В этой теме с похожей ошибкой, хотя и с LVM, я попытался переделать раздел с небольшим /bootразделом в начале, отформатированным с помощью ext2. Та же ошибка.

  5. Переключение на TTY4 для просмотра результатов установки, я также вижу ошибку

    chroot: can't execute 'grub-probe': No such file or directory
    

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

  6. Я использовал Gparted, чтобы проверить, что жесткий диск полностью пуст.

  7. Безопасная загрузка отключена в BIOS.

  8. Я запустил установку, используя полный DVD и компакт-диск netinstall; оба загружаются с USB, но проблема сохраняется.

Мне удалось успешно создать msdosтаблицу разделов и три раздела (для /, /homeи swap) на диске на предыдущем шаге установки, поэтому я не знаю, почему GRUB внезапно не может записать на диск.

Как я могу это исправить и установить Debian? На данный момент (совершенно новая!) Система полностью непригодна для использования, потому что я не могу установить на нее ОС.


Может ли быть частью проблемы то, что Debian / parted неправильно распознает диск? В нем говорится, что диск имеет 512,1 ГБ, что верно в том смысле, что спецификации говорят о 512 ГБ, и это то, что рекламируется, и это позволит мне выделить все 512 ГБ для различных разделов. Однако, если я загружу его в Gparted, фактическое дисковое пространство будет ближе к 476 ГБ, но я предположил, что это обычные 1024 против 1000 штук.

(Я также разместил версию этого вопроса на форумах Debian , поэтому я обновлю свой вопрос чем-нибудь важным из этой ветки и наоборот.)

Майкл А
источник
Вы пытались установить GRUB на внешний диск, например, на флешку?
McSinyx,
Я вижу, вы используете msdosтаблицу разделов. GPT работает?
Forquare
@forquare Нет, GPT тоже не работает.
Майкл А
@McSinyx Я могу установить GRUB на внешний диск, если внешний диск распознается как / dev / sdX, а не / dev / nvmeXXX или / dev / <какая-то другая странная комбинация>. Я предпочитаю не использовать USB-накопитель только для загрузки моей машины, но на данный момент все больше похоже, что это мой единственный вариант.
Майкл А

Ответы:

13

Вот что сработало для меня, используя Debian jessie (stable). Я в основном взял инструкции из этого вики-поста и обошел все этапы двойной загрузки с Windows, поскольку они не применимы к моему случаю.

  1. В BIOS установите загрузку «только UEFI».

  2. Использование Gparted, создать раздел FAT32 в начале диска с bootи espфлагами. (Установщик Debian тоже должен это делать, но поскольку установщик неправильно распознал размер диска, я предпочитаю использовать Gparted). В моем случае раздел FAT32 - это / dev / nvme0n1p1.

  3. Во время установки убедитесь, что у вас настроено сетевое соединение (вручную или автоматически, не имеет значения). В противном случае следующий шаг потерпит неудачу.

  4. На этапе установки, где GRUB не удается установить, откройте оболочку и выполните следующие команды:

    mount --bind /dev /target/dev
    mount --bind /dev/pts /target/dev/pts
    mount --bind /proc /target/proc
    mount --bind /sys /target/sys
    cp /etc/resolv.conf /target/etc
    chroot /target /bin/bash
    
    aptitude update
    aptitude install grub-efi-amd64
    update-grub
    grub-install --target=x86_64-efi /dev/nvme0n1
    

    Выйдите из оболочки и выберите «Продолжить без установки загрузчика». Вы увидите предупреждающее сообщение, которое дает вам команды загрузки для использования; Вы можете игнорировать это.

  5. После завершения установки загрузитесь в систему. Добавьте «nvme» в / etc / initramfs-tools / modules, затем запустите update-initramfs -uот имени пользователя root.

  6. Отредактируйте / etc / default / grub и добавьте эту строку

    GRUB_CMDLINE_LINUX="intel_pstate=no_hwp"
    

    и добавьте "nomodeset" в GRUB_CMDLINE_LINUX_DEFAULT, чтобы он выглядел так:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet nomodeset"
    
  7. Беги update-grub.

Последние несколько команд (начиная с initramfs) необходимы для предотвращения ошибок при обнаружении диска при второй попытке загрузки в новую систему.

Майкл А
источник
2
Спасибо за это! Работало нормально даже без использования Gparted!
Виктор Шредер,
Когда я grub-install --target=x86_64-efi /dev/nvme0n1, я получил ошибку:failed to register the EFI boot entry: No such file or directory
Rahn
@Rahn Есть ли на самом деле в /dev/nvme0n1вашей системе? Это не называется что-то еще, как /dev/nvme0n2? Вы должны задать новый вопрос, но sudo fdisk -lэто место для начала.
Майкл