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

Mic*_*l A 12 debian grub2 hard-disk system-installation lilo

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

安装步骤失败。您可以尝试从菜单中再次运行失败的项目,或者跳过它并选择其他内容。失败的步骤是:在硬盘上安装 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.
Run Code Online (Sandbox Code Playgroud)

我没有使用 LVM 或 RAID。到目前为止,我已经尝试过

  1. 禁用 UEFI 引导并改用传统引导。对于 GRUB 和 LILO,错误仍然发生。

  2. 按照有关此问题的说明并运行

    parted /dev/nvme01
    set 1 bios_grub on
    
    Run Code Online (Sandbox Code Playgroud)

    来自 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
    
    Run Code Online (Sandbox Code Playgroud)

    搜索有关此主题的信息与 GRUB 相关的错误报告,但是 a) 那些是旧的,并且 b) 到目前为止,我已经安装了十几次,每次都出现错误,所以这似乎不是一件一次性的事情。

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

  7. BIOS 中禁用安全启动。

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

之前的安装步骤在驱动器上成功创建了一个msdos分区表和三个分区(for /, /home, and swap),所以不知道为什么GRUB突然不能写入驱动器了。

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


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

(我还在Debian 论坛上发布了这个问题的一个版本,所以我会用该线程中的任何重要内容更新我的问题,反之亦然。)

Mic*_*l A 14

这是使用 Debian jessie(稳定版)对我有用的方法。我基本上按照这个 wiki 帖子中的说明进行了操作,并删除了有关使用 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
    
    Run Code Online (Sandbox Code Playgroud)

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

  5. 安装完成后,启动进入系统。将“nvme”添加到 /etc/initramfs-tools/modules,然后update-initramfs -u以 root 身份运行。

  6. 编辑 /etc/default/grub 并添加这一行

    GRUB_CMDLINE_LINUX="intel_pstate=no_hwp"
    
    Run Code Online (Sandbox Code Playgroud)

    并将“nomodeset”添加到 GRUB_CMDLINE_LINUX_DEFAULT 使其看起来像这样:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet nomodeset"
    
    Run Code Online (Sandbox Code Playgroud)
  7. 运行update-grub

最后几个命令(从 initramfs 开始)是必要的,以防止您第二次尝试引导到新系统时出现磁盘未找到错误。

  • 谢谢你的这个!即使不使用 Gparted 也能正常工作! (2认同)