【问题标题】:Why is make savedefconfig removing entries?为什么 make savedefconfig 删除条目?
【发布时间】:2018-02-04 21:58:16
【问题描述】:

我想将条目添加到供应商提供的用于 Yocto 发行版的 defconfig。为了添加我想要的新驱动程序,我通常在我的 Linux 目录中使用以下过程:

$ cp $YOCTO_MYKERNEL/files/defconfig .config
$ make menuconfig
$ # I select some drivers I want to add and save .config file
$ make savedefconfig
$ cp defconfig $YOCTO_MYKERNEL/files/defconfig

savedefconfig 步骤正确添加了我的驱动程序,但同时也删除了供应商提供的一些重要驱动程序:

$ diff -u $YOCTO_MYKERNEL/files/defconfig defconfig
--- $YOCTO_MYKERNEL/files/defconfig
+++ defconfig
@@ -1,22 +1,11 @@
-CONFIG_FHANDLE=y
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
 CONFIG_CGROUPS=y
 CONFIG_BLK_DEV_INITRD=y
-CONFIG_PERF_EVENTS=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
-CONFIG_ARCH_SUNXI=y
 CONFIG_SMP=y
 CONFIG_NR_CPUS=8
-CONFIG_AEABI=y
-CONFIG_HIGHMEM=y
-CONFIG_ARM_APPENDED_DTB=y
-CONFIG_ARM_ATAG_DTB_COMPAT=y
-CONFIG_CPU_FREQ=y
-CONFIG_CPUFREQ_DT=y
-CONFIG_VFP=y
-CONFIG_NEON=y
[...]

如果我很好地理解了savedefconfig 步骤,它将删除默认情况下已经设置的选项,因此是多余的。但是,删除所有这些供应商提供的驱动程序会导致新编译的内核在 uboot 后根本无法启动。

我什至只尝试了savedefconfig 步骤而不添加任何驱动程序,并且供应商驱动程序被删除并且内核挂起。

你知道为什么savedefconfig 会删除这些条目,以及如何让它停止吗?目前我必须手动隔离差异更改,并手动将我感兴趣的新行添加到 Yocto defconfig 文件中。

【问题讨论】:

  • 您执行cp defconfig $YOCTO_MYKERNEL/files/defconfig,然后diff -u $YOCTO_MYKERNEL/files/defconfig defconfig 显示已复制 文件不相同...您的工作流程中是否跳过了其他一些操作?
  • diff 调用在最后一个 cp 命令之前启动,以便在覆盖之前将其与旧的 defconfig 进行比较。我在其他 Yocto 发行版上使用了这个工作流程,但在这个发行版上不是因为它会让我失去供应商驱动程序。
  • 嗯,不应该是这样,除非 $YOCTO_MYKERNEL/files/defconfig 可能没有用作真正的 defconfig。在这种情况下,您应该避免使用cp defconfig $YOCTO_MYKERNEL/files/defconfig,而是从新的 defconfig 中选择新的选项,然后手动将它们全部放入 yocto defconfig。我想这就是你现在正在做的事情。

标签: linux linux-kernel embedded-linux


【解决方案1】:

我找到了所有这一切的原因:我在没有指定 ARM 架构的情况下调用 make savedefconfig,因此我认为构建系统将删除所有非相关条目,如所有 SUNXI_* 驱动程序(因为它们不是在 x86_64 上使用)。

此调用不会破坏重要的驱动程序:

make ARCH=arm savedefconfig

为了不忘记执行此步骤,可以使用 Yocto 步骤代替,它会自动使用相关架构:

bitbake -c menuconfig virtual/kernel
bitbake -c savedefconfig virtual/kernel

Bitbake 将打印生成的 defconfig 文件的路径,您必须将其复制到旧文件上才能将更改考虑在内。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2020-04-05
    • 2023-03-09
    相关资源
    最近更新 更多