1

我正在使用飞思卡尔 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 的方式,或者还有更多的功能?

4

1 回答 1

0

您在内核构建目录的 image/ 目录中找到 .ko (这是内核“make install”到的位置)但没有在 packages-split 中找到的事实意味着内核模块实际上并未打包。您需要检查它的安装路径以了解它为什么没有被打包,然后将它最终进入的包添加到 rootfs,因为内核模块被单独打包。

于 2015-01-21T21:38:44.683 回答