Grub 无法在未连接 GPU 的情况下启动 Debian

Grub 无法在未连接 GPU 的情况下启动 Debian

问题总结: 我想启动一个最新的 Debian Buster(在 UEFI 模式下全新安装;安装它只是为了测试;没有安装任何桌面环境或 X11 或类似的东西),系统中没有 GPU 或任何其他具有图形功能的硬件。据我所知,这似乎是 grub 的问题。我确实在 AsRock Extreme4 上运行 Xeon 1231v3。

详细信息以及到目前为止我所做的和所知道的: 我确实知道这不是主板的限制(或其他硬件相关问题),原因有两个:

  1. 我询问了华擎支持,他们告诉我,与我的设置非常相似的设置可以在没有显卡的情况下工作。
  2. Windows 10 可以在同一台计算机上完美启动,无需对配置或设置进行任何更改。我通过板上的调试代码看到了这一点(按预期启动到代码 AA),并且在配置为这样做时它确实会播放声音并且网络正确启动(使用 openvpn 连接进行测试)。

到目前为止我测试过的:

  1. 带 GPU 的 Debian(这里有或没有屏幕没有任何区别):使用 GPU 启动机器可以完美运行。我在诊断显示器上得到 AA,Linux 的行为完全符合预期。我可以通过 SSH 连接到机器。

  2. Windows 10:使用或不使用 GPU 启动都可以正常工作。诊断显示屏在几秒钟后显示 AA,并且 Windows 的行为完全相同。

  3. 成功启动后删除 GPU 的 Debian:我在机器启动后删除了 GPU(专用 PCIe GPU)。没问题,一切都如预期。运行了 3 周,没有任何问题。由于明显的原因,重新启动不起作用:

  4. 没有 GPU 的 Debian:它在加载内核或 initramfs 之前停止。板载诊断显示屏上的错误代码为 Ad。我用 GPU 检查了这个错误代码发生了什么:您会看到 grub 菜单。我在那里暂停以确保诊断结果停留在 Ad,直到我选择条目并启动操作系统。我设置了 dropbear。连接 GPU 后,它可以很好地解密 /。如果没有 GPU,机器就无法进入网络,这对我来说证实了,这是一个 grub 问题。 这可能很重要,但我不确定如何理解:在此广告阶段甚至会忽略键盘输入:我按 CTRL+ALT+DEL 通常 grub 菜单中的机器会重新启动。它不是。所以此时 grub/debian 的键盘输入没有任何反应。

据我所知,这留下了两个选择:要么 Grub 需要 GPU 才能工作,要么所选的 grub 条目确实需要 GPU 才能启动。两者对我来说都很奇怪。我想我在 grub 或 debian 的配置中遗漏了一些东西 - 但老实说,我认为启动无头 Linux 机器应该没有问题。 [我不相信 Windows 做了 Debian 不会做的事情——自从 2008 年开始使用 Linux 以来,这种情况就没有发生在我身上;-) 但因为这是我第一次尝试在没有 Windows 的情况下实际运行一些东西GPU 或任何其他图形输出单元我可能会丢失一些东西。

没有 GPU 无法工作,但使用 GPU /etc/default/grub 可以完美启动:

GRUB_DEFAULT=0
GRUB_TIMEOUT=0
GRUB_RECORDFAIL_TIMEOUT=0
GRUB_DISTRIBUTOR='lsb_release -i -s 2> /dev/null || echo Debian'
GRUB_CMDLINE_LINUX_DEFAULT="nomodset"
GRUB_CMDLINE_LINUX="nomodset"
GRUB_TERMINAL=serial

我尝试将“控制台”作为 GRUB_TERMINAL 各种 CMDLINE 输入“安静”“”;没有一个对问题有任何影响 - 相同的广告诊断输出和行为。

该系统非常干净,实际上不运行任何与图形相关的东西:

systemctl list-unit-files --state=enabled

只给我

apparmor.service
[email protected]
console-setup.service
cron.service
dbus-org.freedesktop.timesync1.service
[email protected]
keyboard-setup.service
networking.service
rsyslog.service
ssh.service
sshd.service
syslog.service
systemd-timesyncd.service
remote-fs.target
apt-daily-upgrade.timer
apt-daily.timer
logrotate.timer
man-db.timer

我读了很多 grub 文档,但我不明白问题到底是什么。我开始想:硬件做不到。但是,如果 Windows 启动没有任何问题,这并不能解释为什么它不起作用。我尝试使用 grub.cfg (例如评论视频相关选项),但结果没有任何变化。默认 cfg 条目(具有上述行为)如下所示:

[...]
### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
        set gfxpayload="${1}"
}
set linux_gfx_mode=
export linux_gfx_mode
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuen$
    load_video
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_gpt
    insmod ext2
    set root='hd1,gpt2'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 -$
    else
      search --no-floppy --fs-uuid --set=root efac4a91-d7a7-43c2-b27a-db5f9ac1c2f2
    fi
    echo    'Linux 4.19.0-9-amd64 wird geladen …'
    linux   /vmlinuz-4.19.0-9-amd64 root=UUID=38f85418-3071-44d7-b027-b1965060d07a ro no$
    echo    'Initiale Ramdisk wird geladen …'
    initrd  /initrd.img-4.19.0-9-amd64
}
[...]

所以问题是: 如何让 grub 在没有 GPU 的情况下启动 Debian Buster(更重要的是为什么它无法启动?!)?对于如何进一步调试并完成它的任何帮助,我们将不胜感激!

补充编辑

我测试了安装 debian headless:启动正常安装程序并在启用 ssh 后删除 GPU,因此在实际安装和配置任何内容时没有连接 GPU。结果是相同的 - 启动时也不会超出错误代码 Ad。

忘记提及:我通过 systemd 设置了 multi-user.target 。

补充01

刚刚测试了 Ubuntu 服务器 (LTS 20.04)。相同的错误代码,并且在没有 GPU 的情况下无法超越 grub 启动。

答案1

阅读以下行 3 次:

GRUB_CMDLINE_LINUX_DEFAULT="nomodset"

...并找到打字错误...

然后,将缺少的添加enomodset, 将其更改为nomodeset

相关内容