Развертывание модулей ядра USB-гаджета в rootfs с помощью yocto

Я использую Freescale 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, или это нечто большее?


person jaket    schedule 21.01.2015    source источник
comment
Я бы посмотрел в каталоге, где хранятся все пакеты. Простое создание модуля ядра не означает, что он будет установлен — по крайней мере, с базовым Yocto, я не знаком со слоями Freescale. С базовым Yocto каждый модуль ядра упаковывается в свой собственный пакет, и вы должны указать Bitbake также установить пакет для каждого отдельного модуля ядра, который вы хотите иметь в образе.   -  person volker    schedule 22.01.2015


Ответы (1)


Тот факт, что вы найдете .ko в каталоге image/ каталога сборки ядра (в который ядро ​​​​делает установку), но не в packages-split, означает, что модуль ядра на самом деле не упакован. Вы захотите проверить путь, по которому он устанавливается, чтобы понять, почему он не упаковывается, а затем добавить пакет, в который он попадает, в rootfs, поскольку модули ядра упаковываются индивидуально.

person Ross Burton    schedule 21.01.2015