【问题标题】:Linux Kernel: update config from command line for specific modulesLinux 内核:从命令行更新特定模块的配置
【发布时间】:2016-06-13 09:07:41
【问题描述】:

要从源代码构建 linux 内核,我通常会这样做:

make mrproper
make menuconfig
make

在 menuconfig 步骤中,我启用了一些我想内置到内核中的模块,这些模块不属于默认配置文件 (defconfig)。

现在假设我事先知道我想在 menuconfig 中启用哪些模块,但想通过脚本自动执行构建过程(即非交互方式)。我不想在发出 make 之前手动编辑 .config 文件,因为我可能无法正确解析要安装的模块的依赖关系。

有没有办法用类似的方式替换 menuconfig 步骤

make updateconfig 模块名称

?

PS 我不想第一次做 menuconfig 然后将更新的 .config 保存为新的默认配置。

【问题讨论】:

  • 每次要更新内核时创建一次配置文件并运行make olddefconfig。为什么你不想朝这个方向发展?
  • 我最终做了这样的事情。我的过程是:使mrproper;合并一些默认配置文件以创建新的 .config;制作 olddefconfig 以便以非交互方式指定任何剩余的选项;制作
  • 顺便说一句,你可能会在你的本地分支中放入类似 tiny.config 的东西,并调整 scripts/kconfig/Makefile 以以同样的方式支持它。在这种情况下,如果您的“第三方”defconfig 文件已更改,您将永远不会发生冲突。

标签: linux linux-kernel linux-device-driver


【解决方案1】:

我正在寻找Adding an entry to the Linux Kernel .config file的答案

即你可以这样做:

使 CONFIG_XILINX_FIXED_DEVTREE_ADDR=y

并且指定的模块选项将被编译进来。大概这也处理了模块依赖关系;我已经在具有一些依赖项的模块上进行了尝试,它似乎可以正常工作。

【讨论】:

  • 那么,对于我们需要的模块:make CONFIG_XILINX_FIXED_DEVTREE_ADDR=m modules?
  • 这种方式不好,因为你必须提前知道依赖是什么。 OTOH 它是一种对相关模块进行快速编译测试的好方法。
  • 我需要它的主要原因是因为我正在从源代码编译第三方 linux 发行版,但我不想更改第三方 defconfig 文件。我想更好的方法是创建一个受版本控制的供应商分支并提交更改。
  • 为什么会出现问题(我的意思是修改 defconfig)?他们是否使用 Git?顺便说一句,我使用了几个基于“第三方”Linux 内核的分支,尽管它只是一个普通的上游。每当我需要调整我的配置时,我都会更新我的本地分支。一个例子:github.com/andy-shev/linux/commits/eds
  • 这不是问题,我只是还没有那样做。感谢您的 cmets。
【解决方案2】:

ma​​ke menuconfig 是可以配置 Linux 内核源代码的五个类似工具之一,这是编译源代码所需的必要早期步骤。 make menuconfig 具有菜单驱动的用户界面,允许用户选择将要编译的 Linux 内核的功能(和其他选项)。

ma​​ke menuconfig 是一个工具,它会加载所有在Kconfig 中定义的属性并创建新的.config。首先,您必须将属性添加到 Kconfig,然后它会显示在 menuconfig 中。

 Example :
 I want to add new backlight driver in kernel.
 1. open Kconfig 'drivers/video/backlight/Kconfig' and add below line---

    config BACKLIGHT_LOCOMO
    tristate "Sharp LOCOMO LCD/Backlight Driver"
    depends on SHARP_LOCOMO
    default y
    help
      If you have a Sharp Zaurus SL-5500 (Collie) or SL-5600 (Poodle) say y to
      enable the LCD/backlight driver.

    2. Add CONFIG_BACKLIGHT_LOCOMO to make file.
        obj-$(CONFIG_BACKLIGHT_LOCOMO) += locomolcd.o

现在运行 ma​​ke mrproperma​​ke menuconfig。它会显示在菜单中。


否则,您可以手动添加到 .config 'CONFIG_BACKLIGHT_LOCOMO=y'。

【讨论】:

    【解决方案3】:

    树中有一个config 脚本,允许调用者从shell 启用和禁用.config 中的选项。不过,它看起来并没有进行任何依赖解析,因此正如其他 cmets 所提到的,在使用它之后运行 make olddefconfig 可能是有意义的。

    【讨论】:

      【解决方案4】:

      树中还有merge_config.sh 脚本,允许将额外的配置片段文件合并到您的配置中。详情请查看this answer

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-25
        • 2023-01-30
        • 2019-11-10
        • 1970-01-01
        • 1970-01-01
        • 2015-04-29
        • 2018-11-27
        • 1970-01-01
        相关资源
        最近更新 更多