安装Debian时GRUB和LILO都无法安装到NVMe硬盘

安装Debian时GRUB和LILO都无法安装到NVMe硬盘

我正在尝试在 Lenovo Thinkpad 上安装 64 位 Debian stable。当我进入安装引导加载程序的安装步骤时,我收到以下消息:

安装步骤失败。您可以尝试从菜单中再次运行失败的项目,或者跳过它并选择其他项目。失败的步骤是: 在硬盘上安装 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 相关,但是 a) 这些都是旧的,b) 到目前为止我已经运行了十几次安装,每次都会收到错误,所以它看起来不是一次性的事情。

  6. 我已经使用 Gparted 检查硬盘是否完全为空。

  7. BIOS 中禁用了安全启动。

  8. 我已使用完整 DVD 和网络安装 CD 运行安装;两者都是从 USB 启动,但问题仍然存在。

在上一个安装步骤中,我能够在驱动器上成功创建msdos分区表和三个分区( 、//homeswap),所以我不知道为什么 GRUB 突然无法写入驱动器。

我该如何解决这个问题并安装 Debian?截至目前,(全新!)系统完全无法使用,因为我无法在其上安装操作系统。


部分问题可能是 Debian/parted 无法正确识别磁盘吗?它说磁盘是 512.1 GB,从规格上说是 512 GB 的意义上来说,这是正确的,这就是广告中的内容,它会让我将所有 512 GB 分配给各个分区。然而,如果我在 Gparted 中加载它,实际磁盘空间接近 476 GB,但我认为这只是通常的 1024 与 1000 的东西。

(我还在Debian 论坛,所以我将用该线程中的任何重要内容更新我的问题,反之亦然。)

答案1

这是对我有用的方法,使用 Debian jessie(稳定)。我基本上接受了以下指示这个维基帖子,并删除了有关 Windows 双启动的所有步骤,因为这些步骤不适用于我的情况。

  1. 在 BIOS 中,设置“仅 UEFI”启动。

  2. 使用 Gparted,在磁盘开头使用bootesp标志创建一个 FAT32 分区。 (Debian 安装程序也应该能够做到这一点,但由于安装程序错误地识别了磁盘的大小,我更喜欢使用 Gparted)。在我的例子中,FAT32 分区是 /dev/nvme0n1p1。

  3. 在安装过程中,请确保您已配置网络连接(手动或自动,无关紧要)。否则,下一步将会失败。

  4. 在GRUB安装失败的安装阶段,打开shell并运行以下命令:

    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
    

    退出 shell 并选择“继续而不安装引导加载程序”。您将看到一条警告消息,为您提供要使用的引导命令;你可以忽略这一点。

  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

由于我找不到更新的问题,debian 安装程序倾向于坚持使用相同的默认值,即使它们已经过时。如果您选择对整个磁盘进行“引导”分区,您将获得旧的 msdos/mbr 分区方案。

如果真的能克服困难,nvme 可以通过这种方式启动。

如果执行手动分区,则可以使用 nvme 控制器期望的 GPT 分区,并且分区的顺序无关紧要。无论如何,您几乎永远不会希望 PC Linux 系统位于单个磁盘分区中。

启动nvme驱动器,使用GPT分区表,500MB左右/boot; 35-50GB/; 75-100GB/家庭; 100-150GB/usr; 4-16GB交换区; 300MB efi分区;让其余的落入/分区。驱动器的其余部分可以按照您想要的方式进行分区,使用手动输入的安装点,或者您可以在系统启动后创建安装点。

然后,grub会在安装过程中安装到nvme。如果在启动安装介质之前将 BIOS 设置为 UEFI BOOT ONLY,则 GPT 分区可能是安装过程中的默认设置。

我在 Linux 上进行开发已经有 19 年了,从 woody 开始就在 Debian 上进行开发。我对 Debian 安装程序非常熟悉。

相关内容