我正在尝试在机器上构建并安装多个内核,所有内核都是完全相同的发行版(4.19.10
,找到的here),但是具有不同的抢占模型(用于基准测试)。最初的原始内核构建和安装成功,但是所有后续安装都无法启动。
我正在将内核构建为rpm软件包。同样,除了make menuconfig
中的2个更改之外,其他所有内容完全相同:
General Setup >> Local version - append to kernel release
-在此处添加一个字符串来表示抢占模式,例如-lld
用于低延迟桌面General Setup >> Preemption Model
-在这里我选择抢占模式所有组件(带和不带CONFIG_RT_PREEMPT
补丁)都可以正常运行,没有错误。
我正在使用rpm -ivh kernel-4.19.10_lld-1.x86_64.rpm
进行安装,该安装似乎成功,直到达到100%并挂起。最终,我使用ctrl+c
终止了安装,并检查了top
正在运行什么,并且可以看到grub2-editenv
仍在运行。
从这里开始,可能会发生一些不同的事情,但最终都是一样的。重新启动通常会挂起,第二次重新启动要么使我进入grub命令行,要么用Welcome to emergency mode!
回到命令行。
我可以使用grub2-mkconfig -o /boot/grub2/grub.cfg
将新内核添加到grub,这没有问题。但是,无论直接从grub命令行选择启动映像,还是将其添加到grub并在启动过程中选择它,我都会得到相同的文本:
error: invalid magic number.
error: you need to load the kernel first
我认识到这里可能没有足够的信息来确定我的问题,但我希望至少能有所指路并回答一些问题:
General Setup >> Local version - append to kernel release
足以使这些内核具有唯一性,以便它们可以并排安装吗?谢谢
更新:我可以成功地用rpm -Uvh kernel-4.19.10_lld-1.x86_64.rpm
升级内核并正确引导,尽管我不能用其他内核之一来这样做。不知道这表明什么,但是我认为问题可能是试图并行安装相同的内核版本,并且构建本身可能还可以。
更新2:
我放弃了rpm解决方案,仅尝试了make modules_install
和make install
。没有安装问题,但是运行grub2-mkconfig
挂起。启动挂在黑屏,重新启动将我带到grub命令行。然后,手动加载内核不会产生任何错误,但是在识别出硬件之后,启动最终会导致内核崩溃。消息为Kernel Panic - not syncing: VFS: Unable to mount
。
可能与之相关-我在VM(intel i7硬件)上构建了第一个(正在运行的)内核,但其他内核均已在intel atom e3950芯片组上构建。我在想这可能是问题所在,因为menuconfig最终有所不同。我认为我在该芯片组上还没有一个健康的构建。