我正在运行 Fedora 31 并根据我需要的 acs 补丁编译了一个内核这个食谱,但它根本没有启动(*)。我按照以下步骤操作:
# rpmdev-setuptree
# koji download-build --arch=src kernel-5.4.18-200.fc31
# rpm -Uhv kernel-5.4.18-200.fc31.src.rpm
# cd SPECS/
... (here I applied the acs patch, but I also tried a clean build, i.e. without any action here)
# dnf builddep kernel.spec
# rpmbuild -bb kernel.spec
# cd ../RPMS
# rpm -ihv kernel-5.4.18-200.fc31.x86_64.rpm kernel-core-5.4.18-200.fc31.x86_64.rpm kernel-modules-5.4.18-200.fc31.x86_64.rpm kernel-modules-extra-5.4.18-200.fc31.x86_64.rpm kernel-modules-internal-5.4.18-200.fc31.x86_64.rpm kernel-devel-5.4.18-200.fc31.x86_64.rpm
# reboot
除了一些objtool: unreachable instruction ....
警告(我认为这对于正常操作来说应该不会有问题)之外,所有输出都显示正常并且所有转速都已构建。
在 GRUB 菜单之后,我实际上什么也看不到(只有一个闪烁的光标),也就是说,在我禁用 EDD 之后。在禁用 EDD 之前,我刚刚看到第一条提到 EDD 的日志行,然后内核立即挂起。
增加日志级别或安装 -debug 内核(从沿着上述内核构建的包)没有任何区别,即我没有得到一行调试信息,可能是因为内核在启动之前就停止了(?)。
我的命令行适用于所有内核(带有grubby --update-kernel=ALL --args=...
)并读取
BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.4.10-200.fc31.x86_64 root=/dev/mapper/fedora_1nnoserv-root ro resume=/dev/mapper/fedora_1nnoserv-swap rd.lvm.lv=fedora_1nnoserv/root rd.lvm.lv=fedora_1nnoserv/swap intel_iommu=on pcie_acs_override=downstream,multifunction iommu=pt rd.driver.pre=vfio-pci video=vesafb:off vga=normal nofb nomodeset edd=off loglevel=7
(显然这个例子是从可以正常启动的标准内核获得的。禁用所有 fb 内容的选项是因为它是一个无头服务器,我打算使用 GPU 直通到 kvm 虚拟机,所以我想避免任何 fb 驱动程序占用加载 vfio 之前的 GPU)。
我在网上找到的所有内容似乎都与启动过程中的启动错误有关,但就我而言,我不知道从哪里开始,因为输出为零。