我正在使用飞思卡尔 QorIQ SDK 1.7。我已经修改了我的内核配置“make menuconfig”,将 USB 小工具驱动程序作为一个模块包含在内,并将小工具零或串行小工具作为一个模块包含在内。
我还将net2280外围设备直接编译到内核中,它可以很好地加载和绑定到PCI设备。
运行后bitbake
,新建的 rootfs 不包含新建的小工具模块,但我可以看到.ko
文件已构建:
$ find -name g_zero.ko
./tmp/work/t1040rdb-fsl-linux/linux-qoriq/3.12-r0/git/drivers/usb/gadget/g_zero.ko
./tmp/work/t1040rdb-fsl-linux/linux-qoriq/3.12-r0/image/lib/modules/3.12.19-rt30-QorIQ-SDK-V1.7+g6619b8b/kernel/drivers/usb/gadget/g_zero.ko
但是当我查看图像时,我什么也没得到。
$ tar -tzvf tmp/deploy/images/t1040rdb/fsl-image-core-t1040rdb.tar.gz | grep g_zero
我在搜索中发现的一件事是有人建议.config
需要将其复制到meta-fsl-arm/recipies-kernel/linux/
. 不幸的是,我正在使用meta-fsl-ppc
它似乎对内核配置使用了完全不同的方案。
首先,其中定义了一个变量meta-fsl-ppc/conf/machine/machine.conf
,如下所示:
KERNEL_DEFCONFIG ?= "${S}/arch/powerpc/configs/corenet32_fmanv3_smp_defconfig"
我的想法是,也许我需要覆盖那个文件。但是,我对实际指向的位置${S}
感到困惑。
$ bitbake -e | grep KERNEL_DEFCONFIG
KERNEL_DEFCONFIG="/home/jaket/QorIQ-SDK-V1.7-20141218-yocto/build_t1040rdb_release/tmp/work/ppce5500-fsl-linux/defaultpkgname/1.0-r0/defaultpkgname-1.0/arch/powerpc/configs/corenet32_fmanv3_smp_defconfig"
这与我的树中的任何内容都不匹配:
$ find -name corenet32_fmanv3_smp_defconfig
./tmp/sysroots/t1040rdb/usr/src/kernel/arch/powerpc/configs/corenet32_fmanv3_smp_defconfig
./tmp/work/t1040rdb-fsl-linux/linux-qoriq/3.12-r0/sysroot-destdir/usr/src/kernel/arch/powerpc/configs/corenet32_fmanv3_smp_defconfig
./tmp/work/t1040rdb-fsl-linux/linux-qoriq/3.12-r0/package/usr/src/kernel/arch/powerpc/configs/corenet32_fmanv3_smp_defconfig
./tmp/work/t1040rdb-fsl-linux/linux-qoriq/3.12-r0/git/arch/powerpc/configs/corenet32_fmanv3_smp_defconfig
./tmp/work/t1040rdb-fsl-linux/linux-qoriq/3.12-r0/image/usr/src/kernel/arch/powerpc/configs/corenet32_fmanv3_smp_defconfig
./tmp/work/t1040rdb-fsl-linux/linux-qoriq/3.12-r0/packages-split/kernel-dev/usr/src/kernel/arch/powerpc/configs/corenet32_fmanv3_smp_defconfig
所以我想我的问题是:当内核中配置了可加载模块时,是否期望该模块会神奇地找到它进入 rootfs 的方式,或者还有更多的功能?