【发布时间】: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