Hello,
i’m trying to use my own kernel defconfig file, but i just can’t get the linux-toradex recipe to use it.
My build config:
Build Configuration:
BB_VERSION = "1.46.0"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "universal"
TARGET_SYS = "arm-tdx-linux-gnueabi"
MACHINE = "apalis-imx6"
DISTRO = "custom"
DISTRO_VERSION = "5.3.0-devel-20220106144118+build.0"
TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard"
TARGET_FPU = "hard"
meta-toradex-nxp = "HEAD:4a58243170331a1afb9fa0aec8fef492f87f131b"
meta-freescale = "HEAD:0173d3f8d0cbf7844a4d23bc3fb30144abc914bb"
meta-freescale-3rdparty = "HEAD:a7b96dc91bb2818d8ed8210654db10d08d4d7890"
meta-toradex-tegra = "HEAD:e37959a52f2cea3a2a2f0c4f165a60715c817565"
meta-toradex-bsp-common = "HEAD:869312de75c9187e02523ff2cfa806144ace949f"
meta-oe
meta-filesystems
meta-gnome
meta-xfce
meta-initramfs
meta-networking
meta-multimedia
meta-python = "HEAD:11eae114522a6befa06c7f4021a83bc016133543"
meta-freescale-distro = "HEAD:5d882cdf079b3bde0bd9869ce3ca3db411acbf3b"
meta-toradex-demos = "HEAD:9c277f8bf4fa3c6a0b2c10c93b66b28f440d9723"
meta-boot2qt
meta-boot2qt-distro = "HEAD:854bcc4fae23d9459751a87b697032edb86dfcc6"
meta-qt5 = "HEAD:845a1421d10ce94a4f425915a7d008810a2f626c"
meta-toradex-distro = "HEAD:390fb8af9c4b2b13b891df6907b96ee53d201e5f"
meta-poky = "HEAD:134c1e9902148f907d4f9e78435fa3a827c6df03"
meta = "HEAD:ecd636154e7cfc1349a7cfd8026a85eafa219535"
meta-mender-core = "HEAD:045cfcfc3649b0505cee0b56af8946ef692cd67d"
meta-mender-toradex-nxp = "HEAD:d52e47db3fadf97dfb081636c9565b4ac3ba616a"
meta-mender-demo = "HEAD:045cfcfc3649b0505cee0b56af8946ef692cd67d"
meta-custom = "dunfell:63373efe13d69f4767e606fd535ea94d26863f32"
I’ve created a linux-toradex bbappend and tried every defconfig file combination i can think of, but nothing is ever used:
├── recipes-kernel
│ └── linux
│ ├── linux-toradex
│ │ ├── apalis_imx6
│ │ │ └── defconfig
│ │ ├── apalis-imx6
│ │ │ └── defconfig
│ │ ├── apalis_imx6_defconfig
│ │ └── defconfig
│ └── linux-toradex_5.4-2.3.x.bbappend
Contents of file linux-toradex_5.4-2.3.x.bbappend:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
In each defconfig there is a different “CONFIG_LOCALVERSION” to try and find out which one is used, but none ever gets used.
Here is some debug output generated with “bitbake-layers show-appendst”:
linux-toradex_5.4-2.3.x.bb:
/home/yocto/build/../layers/meta-mender/meta-mender-core/recipes-kernel/linux/linux-%.bbappend
/home/yocto/build/../layers/meta-boot2qt/meta-boot2qt-distro/dynamic-layers/toradex-nxp-layer/recipes-kernel/linux/linux-toradex_5.%.bbappend
/home/yocto/build/../layers/meta-toradex-bsp-common/recipes-kernel/linux/linux-toradex_%.bbappend
/home/yocto/build/../layers/meta-custom/recipes-kernel/linux/linux-toradex_5.4-2.3.x.bbappend
What am i doing wrong? I deeply appreciate help on this, as it is driving me nuts.
Thank you.
Kevin
DaveM
January 6, 2022, 3:45pm
2
Try putting
SRC_URI += “file://defconfig”
in your bbappend file?
I tried it, i then get a warning:
WARNING: linux-toradex-5.4.115+gitAUTOINC+dbdbcabf0f-r0 do_kernel_metadata: defconfig detected in WORKDIR. apalis_imx6_defconfig skipped
WARNING: linux-toradex-5.4.115+gitAUTOINC+dbdbcabf0f-r0 do_kernel_metadata: [NOTE]: defconfig was supplied both via KBUILD_DEFCONFIG and SRC_URI. Dropping SRC_URI defconfig
DaveM
January 6, 2022, 4:16pm
4
I’m totally guessing btw…maybe throw an
unset KBUILD_DEFCONFIG
in there too?
I do feel like this is going down the wrong rabbit hole
I’ve tried it, the warning is gone but still the same result. Looking into the workdir, the defconfig file strangely is from my recipe, but it is not used.
I’m now just extracting the .sdimg file and looking into the /boot folder, where i find the zImage with the local name:
zImage-5.4.115-5.3.0-devel+git.dbdbcabf0f98
I’m expecting “-5.3.0-custom” because i’ve set it in my defconfig:
CONFIG_LOCALVERSION="-5.3.0-custom"
Here are my layers with priority:
layer path priority
==========================================================================
meta-toradex-nxp /home/yocto/build/../layers/meta-toradex-nxp 22
meta-freescale /home/yocto/build/../layers/meta-freescale 5
meta-freescale-3rdparty /home/yocto/build/../layers/meta-freescale-3rdparty 4
meta-toradex-tegra /home/yocto/build/../layers/meta-toradex-tegra 22
meta-toradex-bsp-common /home/yocto/build/../layers/meta-toradex-bsp-common 23
meta-oe /home/yocto/build/../layers/meta-openembedded/meta-oe 6
meta-filesystems /home/yocto/build/../layers/meta-openembedded/meta-filesystems 6
meta-gnome /home/yocto/build/../layers/meta-openembedded/meta-gnome 7
meta-xfce /home/yocto/build/../layers/meta-openembedded/meta-xfce 7
meta-initramfs /home/yocto/build/../layers/meta-openembedded/meta-initramfs 8
meta-networking /home/yocto/build/../layers/meta-openembedded/meta-networking 5
meta-multimedia /home/yocto/build/../layers/meta-openembedded/meta-multimedia 6
meta-python /home/yocto/build/../layers/meta-openembedded/meta-python 7
meta-freescale-distro /home/yocto/build/../layers/meta-freescale-distro 4
meta-toradex-demos /home/yocto/build/../layers/meta-toradex-demos 24
meta-boot2qt /home/yocto/build/../layers/meta-boot2qt/meta-boot2qt 20
meta-boot2qt-distro /home/yocto/build/../layers/meta-boot2qt/meta-boot2qt-distro 20
meta-qt5 /home/yocto/build/../layers/meta-qt5 7
meta-toradex-distro /home/yocto/build/../layers/meta-toradex-distro 21
meta-poky /home/yocto/build/../layers/meta-yocto/meta-poky 5
meta /home/yocto/build/../layers/openembedded-core/meta 5
meta-mender-core /home/yocto/build/../layers/meta-mender/meta-mender-core 6
meta-mender-toradex-nxp /home/yocto/build/../layers/meta-mender-community/meta-mender-toradex-nxp 92
meta-custom /home/yocto/build/../layers/meta-custom 30
Hi @kkettinger !
Could you please share your whole bbappend to the linux-toradex
recipe?
Seems like you are targeting BSP 5. Is that right?
Best regards,
Hello @henrique.tx ,
yes, i’m targeting BSP 5.3. My bbappend file (linux-toradex_5.4-2.3.x.bbappend) just contains this line:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
The file structure looks like this (with my many tries of different defconfig files and folders):
recipes-kernel/
└── linux
├── linux-toradex
│ ├── apalis_imx6
│ │ └── defconfig
│ ├── apalis-imx6
│ │ └── defconfig
│ ├── apalis_imx6_defconfig
│ ├── defconfig
└── linux-toradex_5.4-2.3.x.bbappend
This is my distro config:
require conf/distro/include/tdx-base.inc
DISTRO = "custom"
DISTRO_NAME = "Custom Distro"
DISTRO_FLAVOUR = ""
IMX_DEFAULT_BSP = "nxp"
And this is the content of my manifests file:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<default sync-j="4"/>
<!-- Toradex Default -->
<remote alias="repo" fetch="https://github.com/openembedded" name="oe"/>
<remote alias="repo" fetch="https://git.yoctoproject.org/git" name="yocto"/>
<project name="bitbake.git" path="layers/openembedded-core/bitbake" remote="oe" revision="c2a3bda3a29e12472ef7862e424ea1552fab2959" upstream="1.46"/>
<project name="meta-openembedded.git" path="layers/meta-openembedded" remote="oe" revision="11eae114522a6befa06c7f4021a83bc016133543" upstream="dunfell"/>
<project name="meta-yocto" path="layers/meta-yocto" remote="yocto" revision="134c1e9902148f907d4f9e78435fa3a827c6df03" upstream="dunfell"/>
<project name="openembedded-core.git" path="layers/openembedded-core" remote="oe" revision="ecd636154e7cfc1349a7cfd8026a85eafa219535" upstream="dunfell"/>
<include name="bsp/pinned-nxp.xml"/>
<include name="bsp/pinned-tdx.xml"/>
<project name="meta-toradex-demos.git" path="layers/meta-toradex-demos" remote="tdx" revision="9c277f8bf4fa3c6a0b2c10c93b66b28f440d9723" upstream="dunfell-5.x.y"/>
<project name="meta-toradex-distro.git" path="layers/meta-toradex-distro" remote="tdx" revision="390fb8af9c4b2b13b891df6907b96ee53d201e5f" upstream="dunfell-5.x.y">
<copyfile dest="export" src="buildconf/export"/>
</project>
<!-- Qt -->
<remote name="qt" fetch="git://code.qt.io/yocto" pushurl="ssh://codereview.qt-project.org/yocto"/>
<remote name="gerrit" fetch="ssh://codereview.qt-project.org/yocto"/>
<project name="meta-boot2qt" remote="qt" revision="854bcc4fae23d9459751a87b697032edb86dfcc6" upstream="lts-5.15" path="layers/meta-boot2qt"/>
<project name="meta-qt5" remote="qt" revision="845a1421d10ce94a4f425915a7d008810a2f626c" upstream="lts-5.15" path="layers/meta-qt5"/>
<!-- Custom -->
<!-- ... --->
<!-- Mender -->
<remote fetch="https://github.com/mendersoftware" name="mender"/>
<project name="meta-mender" remote="mender" revision="dunfell" path="layers/meta-mender"/>
<project name="meta-mender-community" remote="mender" revision="dunfell" path="layers/meta-mender-community"/>
</manifest>
Hi @kkettinger !
If you take a look at the (downstream) linux-toradex recipe for Apalis iMX6 (layers/meta-toradex-nxp/recipes-kernel/linux/linux-toradex_5.4-2.3.x.bb
), you will see that this recipe inherits the toradex-kernel-localversion
.
This toradex-kernel-localversion
(layers/meta-toradex-bsp-common/classes/toradex-kernel-localversion.bbclass
) defines the task kernel_do_configure_append
that is executed after the kernel’s configuration task.
We can see that this kernel_do_configure_append
manipulates the local version and is able to actually override the local version that is set via defconfig
and also append SCM related version.
So (a way) of actually getting your desired 5.4.115-5.3.0-custom
version is to do the following in your linux-toradex_%.bbappend
:
SCMVERSION="n"
LOCALVERSION="-5.3.0-custom"
Best regards,
Hi @henrique.tx ,
thank you very much. The localversion was just a way to detect if my defconfig is beeing taken by bitbake. My primary goal was to change the kernel config via defconfig.
Do you know what needs to be done to apply my own defconfig (created via bitbake virtual/kernel -c menuconfig && bitbake virtual/kernel -c savedefconfig)?
Kevin
Hi @kkettinger !
Ohh… ok… I really thought that a custom LOCALVERSION was your actual target (although the title of your question explicitly talks about defconfig )
So, to use your own defconfig, please refer to the Custom meta layers, recipes and images in Yocto Project (hello-world examples) | Toradex Developer Center article. There are several customization methods (for defconfig, as well) and some good explanations about this kind of stuff. The section Customize the Kernel might be especially helpful for you.
Let me know if this helps you.
Best regards,
Hello @henrique.tx ,
thank you very much, my kernel defconfig is now used
My bbappend looks like this now:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
unset KBUILD_DEFCONFIG
SRC_URI += "file://defconfig"
SCMVERSION="n"
LOCALVERSION="-5.3.0-custom"
With this directory tree:
recipes-kernel/
└── linux
├── linux-toradex
│ └── defconfig
└── linux-toradex_5.4-2.3.x.bbappend
Booting into the system, the module is built and my kernel local version is applied:
root@localhost:~# zcat /proc/config.gz | grep LOCAL
CONFIG_LOCALVERSION="-5.3.0-custom"
# CONFIG_LOCALVERSION_AUTO is not set
root@localhost:~# uname -a
Linux localhost 5.4.115-5.3.0-custom #1 SMP Tue Jul 6 08:47:10 UTC 2021 armv7l armv7l armv7l GNU/Linux
PS:
@DaveM So unsetting KBUILD_DEFCONFIG was a really good guess
Best regards,
Kevin
2 Likes
Hi @kkettinger !
Great to know that you could make it work!
And thanks a lot for the detailed feedback
Best regards,