On 2018-11-19 2:13 p.m., Sakib Sajal wrote:
Hello,
I have been trying to patch the linux kernel and add some kernel
configuration but I am failing to add kconfig fragments to be included
in the final build.
Initially I tried patching the kernel with hardcoded values in the patch.
I am building for qemu to minimize the variables I have to worry about.
Build Configuration:
BB_VERSION = "1.38.0"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "ubuntu-16.04"
TARGET_SYS = "i586-poky-linux"
MACHINE = "qemux86"
DISTRO = "poky"
DISTRO_VERSION = "2.5.1" // branch "sumo"
TUNE_FEATURES = "m32 i586"
TARGET_FPU = ""
My initial project structure:
-poky
--meta
--meta-poky
--meta-yocto-bsp
--meta-my-layer
---recipes-kernel
----linux
-----linux-yocto
------my-patch.patch
-----linux-yocto_4%.bbappend
---conf
----layer.conf
Content of the bbappend file:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://my-patch.patch"
I enabled my-layer by adding the layer in the build/conf/bblayers.conf
file. I was able to build an image and test my changes with the
hardcoded valued in my patch.
However I want the values to be configurable through kernel
configuration. Since I knew what variables I have introduced, I put them
in a .cfg file with their desired values in the linux-yocto folder.
New project structure:
-poky
--meta-my-layer
---recipes-kernel
----linux
-----linux-yocto
------my-conf-frag.cfg
(other files and directories are same as before)
Added the following line to the .bbappend file:
SRC_URI += "file://my-conf-frag.cfg"
Content of my-conf-frag.cfg:
CONFIG_MY_FIRST_VAR="MY-NAME"
CONFIG_MY_SECOND_VAR=y
Then I run:
bitbake core-image-base
and get the following error:
ERROR: Task
(<work_dir>/poky/meta/recipes-kernel/linux/linux-yocto_4.14.bb:do_compile)
failed with exit code '1'
The kernel isn't being compiled since it does not know what
"CONFIG_MY_FIRST_VAR" is.
I checked for .config files in the build directory and found one in
"poky/build/tmp/work-shared/qemux86/kernel-source/.kernel-meta/cfg/.config"
which contained the two variables I defined in my cfg file. But that
file is a kernel configuration fragment file itself. The final config
file which is used to build the image is located, I believe, in
"poky/build/tmp/work/qemux86-poky-linux/linux-yocto/4.14.67+gitAUTOINC+c43c9e19a2_084af9624d-r0/linux-qemux86-standard-build/.config"
but i do not see the variables there in the final .config file. I was
also able to locate the cfg and the patch file in
"/poky/build/tmp/work/qemux86-poky-linux/linux-yocto/4.14.67+gitAUTOINC+c43c9e19a2_084af9624d-r0/"directory.
Therefore the files are being picked up by the build system but the
fragments are not being applied to make the final .config file used to
build the kernel.
Without being able to see the code that defines those CONFIG_
symbols, I can't say for sure. But if the fragment was located
and added to the config queue, then the only real way that they
wouldn't be in the final .config is a missing dependency for the
option.
If there's any way that you could make the specific layers available
to me for a test build, I could offer more specific suggestions.
Bruce
I went through yocto mailing list for similar problems and followed the
steps provided with no success. I also went through yocto's mega-manual
and kernel development manual as well as the yocto-lab pdfs and followed
all the different steps but i always get the compilation error.
Can someone please help me. Thanks in advance!
Sakib Sajal
--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto