Answers:
Fedora(相对)在使用较旧的内核启动时应该没有问题,我们一直在不运行主流内核编译的ARM平台上一直运行Fedora。
为了使系统正常工作,必须解决两个关键问题。
第一个是引导加载程序(很可能是GRUB)。如果您没有为内核安装正式的RPM,这实际上只是一个问题-正式的RPM将为您生成initramfs并创建一个引导程序条目。
第二个涉及固件加载。大多数发行版都从用户空间固件加载切换到3.10左右的内核内固件加载。当前所有受支持的Fedora版本都以这种方式加载固件。因此,切换到较旧的内核意味着内核期望操作系统加载固件,而操作系统期望内核加载固件。我们需要在某个用户空间中重新启用固件加载。
因此,首先,通过您喜欢的任何方式安装旧内核。为了使事情变得容易,我安装了为Fedora构建的最新的2.6内核(f15是正式支持2.6的最新版本)。这些软件包仍然可以在Fedora构建系统[1] Koji上获得。
接下来,我验证了GRUB条目已创建。您应该在/boot/grub/grub.cfg
(假设您不在EFI系统上)中看到对内核2.6的提及。
最后,我们需要解决固件问题。我已经看到了两种解决方案:1.安装或编译已启用内部固件加载的udev的旧版本(现已包含在systemd中)。2. firmware.sh
像糟糕的过去一样使用。
在这种情况下,后者要容易得多。要使其正常工作,需要添加两个文件:/usr/lib/udev/firmware.sh
和/usr/lib/udev/rules.d/50-firmware.rules
。在Google上四处搜寻以查找这些文件的副本[2]-我不想直接链接到任何文件。
将它们放在您的系统上后,您将需要重新生成initramfs,以便可以在挂载根之前加载固件(如有必要)。在Fedora中,使用dracut很容易。跑:
dracut /boot/initramfs-2.6.43.8-2.fc15.x86_64.img 2.6.43.8-2.fc15.x86_64 --force
第一个选项是目标initramfs文件,第二个是内核版本,并且它--force
是覆盖我们已经制作的initramfs所必需的(很可能在RPM安装过程中)。
那应该做到的。我刚刚在VM中进行了测试,效果很好。最后,请注意驱动程序对硬件的支持。它可能在内核2.6中不存在。我的VM的Hyper-V网络适配器就是这种情况。但是,切换到“传统”网络适配器会产生结果。
[1] http://koji.fedoraproject.org/koji/buildinfo?buildID=327165
[2] https://www.google.com/search?q=%22firmware.sh%22+%2250-firmware.rules%22