我已经使用 Gentoo 超过 15 年了,现在我决定用一台全新的 AMD Ryzen 机器替换我的一台机器。但是:我无法让它使用自定义内核启动,而标准 genkernel 内核(“genkernel all”)可以正常启动。
以下是我所做的:我根据 gentoo 手册在一台新机器上安装了 gentoo,该机器有两个 NVMe 存储设备。我的 / 是 LV 上的 ext4 格式 fs,其 VG/PV 位于 raid1 上。为了快速启动,我决定使用“万能内核”,方法是genkernel全部(这是 gentoo 构建非常通用的内核的方式,就像在 live-media 上使用的那样)。我将 grub2 安装在第一个 NVMe 设备上的 ESP 上(ESP 的 RAID1 失败后)。
重启,机器启动了。现在我从 genkernel 构建中获取内核配置并对其进行菜单配置。我取消了很多设备驱动程序和其他选项,记住(根据经验)我稍后仍然需要微调内核配置。
但是,我得到的内核根本无法启动。当我通过 grub 选择自定义内核时,机器卡在以下位置:
Booting a command list
Loading Linux 5.4.38-gentoo-x86_64 ...
Loading initial ramdisk ...
无论我选择的是初始“almighty-genkernel-build”中的 initramfs 还是自定义内核构建的 initramfs,都没有关系。一旦我尝试启动自定义内核,机器就会在显示“正在加载初始 ramdisk ...”后完全锁定。
我尝试修复它:
- 我彻底清除了 ESP,并重新安装了内核和 GRUB2
- 我使用“set debug=all”运行了 GRUB2,但它实际上只告诉我从 ESPs FAT 文件系统加载内容
- 我核对过https://wiki.gentoo.org/wiki/Ryzen并修正了一些配置值,但没有成功
- 我在网上做了大量研究,摆弄了诸如 random.trust_cpu=on/off 之类的东西
这是我的硬件规格:
- AMD 锐龙 5 3600
- 华硕 B450M-A
- 4x8GB 金士顿 HyperX DDR4-2666
- 金士顿 KC2000 256GB NVMe PCIe SSD
对我来说,它可以归结为以下这些问题:
- 我的假设是否正确,我的自定义内核存在问题?为什么当我尝试启动系统而其他一切都保持不变时,系统会立即锁定?
- 哪个内核配置可能是罪魁祸首?我已经花了不少时间,但再也看不清楚 menuconfig 了 ;)
谢谢您的任何建议!
更新更多信息:
- genkernel 构建和自定义构建的内核源代码完全相同。这意味着两者都是从包构建的系统内核/gentoo 源代码5.4.38. 在构建期间没有进行任何源的卸载/安装。
- 我的启动分区上有内核和 initramfs 映像的两个版本。因此,我可以在启动前以交互方式编辑内核文件名,从而使用完全相同的 grub.cfg 进行测试。
答案1
答案如下:
对我来说,启用 CONFIG_FB_NVIDIA 会在启动时完全锁定系统。 令人讨厌的是,它会在内核向控制台打印任何内容之前锁定(可能是在图形/控制台初始化期间)。 也就是说,在装有 Zotac GT710 PCIe x1 显卡的系统上运行时似乎存在不兼容或错误。
禁用该选项并且内核启动。
答案2
我想探究的一些事情是:
您是否也尝试了新内核,其配置尽可能完全相同,只配置了最小的差异?可能是某些新硬件技术的意外模块依赖性
您是否尝试过进行第二次构建mkinitcpio -P linux
和grub-mkconfig
后续构建?
你的 genkernel 和自定义构建的内核源是否相同?
您是否对 Debian-sources 之类的东西更感兴趣?可以修补发行版内核之间的支持差异