【问题标题】:Recompile Linux kernel (with Xen) config flags not being used重新编译未使用的 Linux 内核(使用 Xen)配置标志
【发布时间】:2012-02-05 14:05:31
【问题描述】:

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

我尝试了以下方法:

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

然后我按照本指南中的所有步骤:How to compile a new Ubuntu 11.10 (Oneiric) kernel 并执行了以下额外步骤:

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

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

  • 编辑 .config 文件以获得我的配置标志
  • 运行'make oldconfig'
  • 运行 '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 内核之外,还有其他选择吗?

【问题讨论】:

    标签: linux kernel config xen


    【解决方案1】:

    对于问题 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

    【讨论】:

      【解决方案2】:

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

      问题的根源在于问题的第一部分; 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
      

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

      如何确保在编译时使用我的内核配置标志?

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

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

      除非另一个发行版启用了XEN_DOM0,否则不会。

      【讨论】:

      • 谢谢。需要澄清的后续问题:如果未通过 menuconfig 公开配置标志,那么启用这些标志的正常方法是什么?只需找到所有依赖项,然后将它们添加到 .config 中,然后再次运行 menuconfig 并检查它们是否在 menuconfig 的输出中?
      • 那行得通,或者您可以通过 meuconfig 启用所有标志。您可以使用 / 字符开始搜索内容。例如,转到 menuconfig 中的安全部分并禁用 SECURITY(安全选项 ->“启用不同的安全模型”)。看着一整棵树消失。重新打开它,它们都会重新出现。
      猜你喜欢
      • 1970-01-01
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 2021-02-03
      • 1970-01-01
      • 2016-12-24
      相关资源
      最近更新 更多