问题总结: 我想启动一个最新的 Debian Buster(在 UEFI 模式下全新安装;安装它只是为了测试;没有安装任何桌面环境或 X11 或类似的东西),系统中没有 GPU 或任何其他具有图形功能的硬件。据我所知,这似乎是 grub 的问题。我确实在 AsRock Extreme4 上运行 Xeon 1231v3。
详细信息以及到目前为止我所做的和所知道的: 我确实知道这不是主板的限制(或其他硬件相关问题),原因有两个:
- 我询问了华擎支持,他们告诉我,与我的设置非常相似的设置可以在没有显卡的情况下工作。
- Windows 10 可以在同一台计算机上完美启动,无需对配置或设置进行任何更改。我通过板上的调试代码看到了这一点(按预期启动到代码 AA),并且在配置为这样做时它确实会播放声音并且网络正确启动(使用 openvpn 连接进行测试)。
到目前为止我测试过的:
带 GPU 的 Debian(这里有或没有屏幕没有任何区别):使用 GPU 启动机器可以完美运行。我在诊断显示器上得到 AA,Linux 的行为完全符合预期。我可以通过 SSH 连接到机器。
Windows 10:使用或不使用 GPU 启动都可以正常工作。诊断显示屏在几秒钟后显示 AA,并且 Windows 的行为完全相同。
成功启动后删除 GPU 的 Debian:我在机器启动后删除了 GPU(专用 PCIe GPU)。没问题,一切都如预期。运行了 3 周,没有任何问题。由于明显的原因,重新启动不起作用:
没有 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"
...并找到打字错误...
然后,将缺少的添加e
到nomodset
, 将其更改为nomodeset
。