1

我正在尝试使用未通过 menuconfig 公开的 Xen dom0 配置标志编译 linux 内核(3.0.0-13)。(是的,我知道 ubuntu 提供了一个支持 Xen 半虚拟化的“虚拟”风格内核,但该内核似乎无法在我的硬件上启动。所以,我正在尝试使用额外的 Xen 配置编译“通用”风格的 ubuntu 内核标志,因为我知道“通用”风格在我的硬件上运行)。每次我尝试编译我的配置标志时,都会根据与我的内核二进制文件一起生成和打包的 .config 文件被忽略。

我尝试了以下方法:

  • 使用 apt-get source linux-image 下载内核源代码

然后我按照本指南中的所有步骤操作:如何编译新的 Ubuntu 11.10 (Oneiric) 内核并执行以下额外步骤:

  • 将我自己的配置标志放在 config.flavor.xxx 文件中,然后编译 linux-image 包
  • 在运行“menuconfig”后立即暂停“debian/rules editconfigs”命令,并用我的自定义 .config 文件替换 build/.config 文件,然后编译 linux-image 包

我还使用了以下 howto How To Compile A Kernel - The Ubuntu Way并在我已经拥有的内核源代码上运行以下命令:

  • 编辑 .config 文件以获得我的配置标志
  • 运行“制作旧配置”
  • 运行'make-kpkg clean && fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers'

每次编译内核后,我都安装了新编译的 linux-image 包,发现我的配置标志不在 /boot/config-xxx 文件中,正如我所料。

  1. 我做错了什么导致我的配置标志被忽略?
  2. 我可以做些什么来确保在编译时使用我的内核配置标志?
  3. 除了重新编译内核以获得适用于我的硬件的 Xen dom0 内核之外,还有其他选择吗?
4

2 回答 2

2

对于问题 3:还有其他方法可以为我的硬件获取 xen dom0 内核吗?

是的。

尽管所有的 xen 文档都说所有股票内核都支持 xen dom0,但它们的意思是所有股票内核的源现在都支持 xen dom0,但是在它们的预编译二进制文件中这种支持被关闭了。

在 debian 上有以下软件包,它是一个预构建的 linux 内核,启用了 xen dom0 支持。包:linux-image-xen-686

对于真正希望编译自己的 xen dom0 内核的其他人,以下站点有一个很好的指南:Compiling a Xen Dom0 Kernel for Ubuntu Jaunty

于 2012-01-11T06:14:57.467 回答
1

我做错了什么导致我的配置标志被忽略?

问题的根源在于问题的第一部分;Xen dom0 配置标志不通过 menuconfig 公开

简单地设置它们.config并不意味着它们会被激活。您必须考虑配置选项的依赖关系。

来自 github 上的 linux 3.0 标签:https ://github.com/torvalds/linux/blob/02f8c6aee8df3cdc935e9bdd4f2d020306035dbe/arch/x86/xen/Kconfig

config XEN_DOM0
def_bool y
depends on XEN && PCI_XEN && SWIOTLB_XEN
depends on X86_LOCAL_APIC && X86_IO_APIC && ACPI && PCI

所有这些依赖标志都满足了吗?

我可以做些什么来确保在编译时使用我的内核配置标志?

在内核编译过程的开始阶段,.config如果有任何差异,文件将被重写。确保您的编辑持续存在的一个很好的测试是.config在执行make menuconfig并保存更改后检查它们是否仍然存在于您的文件中。如果在那之后你的标志仍然存在,你可以确定你的标志正在被使用。

除了重新编译内核以获得适用于我的硬件的 Xen dom0 内核之外,还有其他选择吗?

除非XEN_DOM0启用了另一个发行版。

于 2012-01-09T21:51:08.387 回答