Intel® Makers
Intel® Edison, Intel® Joule™, Intel® Curie™, Intel® Galileo
Welcome - This is a Peer-to-Peer Forum only. Intel has discontinued these products but you may find support from other customers on this Forum
9880 Discussions

Customizing Kernel

New Contributor I

I've been trying to customize the kernel on the latest release (release 3.0 of Yocto sources) and am stumbling on where to copy the .config file. The i386_edison_defconfig seemed to be the logical place from what I gleaned from the recipes, however when I issue the bitbake edison-image following overwriting the i386_edison_defconfig it tell me that it has nothing to do...

All of the documents that I have found make reference to outdated directory structures so a link to the updated document (that makes reference to the linux-externalsrc portion of the tree) or any guidance would be greatly appreciated. To be clear, I am able to generate the new .config correctly, the question is simply where I should put it and/or which bitbake incantation I should use to get it to rebuild the kernel with the driver I need to add.

Any help / guidance would be greatly appreciated.

8 Replies
Community Manager

Hello mpapini,



Let me try to do some tests and see if I can replicate this behavior. I will get bac to you as soon as as I can.



New Contributor I


Using Alex's guide for galileo I was able to build the driver module, however, the driver won't install since it says that the module dep of "kernel-3.10.17-poky-edison+" can't be satisfied ... and in fact a "uname -r" shows "3-10.17-yocto-standard" so now I have the issue that somewhere the kernel names get crossed.

To facilitate you reconstructing my chaos here's what I did ...

1) Download latest iot tarball and extract

2) ran with dl & sstate directories

3) cd to directory that the script tells me to ...

4) source poky/oe-init-build-env

5) do a full bitbake (bitbake edison-image), which asides from the already known and resolved mqtt runs without a hitch.

6) bitbake -c menuconfig linux-externalsrc

7) mark driver as module and save config. (in my case the bq27x00)

8) copy just the changed lines from i386_edison_defconfig

9) force a recompile of linux-externalsrc (bitbake -f -c compile linux-externalsrc) - I tried deploy but it didn't work for me (i.e., yocto doesn't have a rule for deploy)

10) bitbake edison-image


The module seems to be included with the modules ipk, but even when I just built it, the dependancy for the wrong kernel was there...


I have a new clean build running and will be able to experiment again tomorrow.


Thanks for your help - Mario


New Contributor I

Anyone been able to modify the kernel config and get it to build correctly?

Anyone have any clues how to re-invoke bitbake after updating the config or defconfig?

Anyone at Intel able to point me in the right direction? Even if you don't re-create the problem, what are the steps I should be following because the BSP User's Guide doesn't seem to work anymore.

Community Manager

Hello Mario,



I'm sorry for the delay in my reply. This is what we did for the image 3.0:



On the file iot-devkit-yp-poky-edison-20160315/poky/meta-intel-edison/meta-intel-edison-bsp/recipes-kernel/linux/


Comment line 17 and replace it with:



cp "/.config" "${B}/.config"



Let me know if it works, we'll be glad to help you if otherwise.



New Contributor I

Thanks Peter it now works. For future reference, here are the steps that I followed to customize the kernel (based on the README, other discussions in the forum and Peter's comment):

1) unzip

2) cd iot-devkit-yp-poky-edison-20160315/poky/

3) source oe-init-build-env ../build_edison/

4) edit iot-devkit-yp-poky-edison-20160315/build_edison/conf/local.conf to comment out the following lines (starting at line 223):

# PACKAGECONFIG_append_pn-qemu-native = " sdl" line 223

# PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"

# ASSUME_PROVIDED += "libsdl-native"

5) bitbake edison-image u-boot

6) bitbake virtual/kernel -c menuconfig & configure your kernel

7) cp iot-devkit-yp-poky-edison-20160315/build_edison/tmp/work/edison-poky-linux/linux-externalsrc/1.0-r2/linux-externalsrc-1.0/.config iot-devkit-yp-poky-edison-20160315/poky

8) edit cp "${EDISONREPO_TOP_DIR}/.config" "${B}/.config"

9) bitbake edison-image u-boot

10) ../poky/meta-intel-edison/utils/flash/ .

11) zip -r toFlash or install module .ipk (if you built a module) from iot-devkit-yp-poky-edison-20160315/build_edison/tmp/deploy/ipk/edison

Please note that all paths are relative to where iot-devkit... is installed. Hope this helps someone else.




When I am performing the 7th step mentioned above it says that there is no file existing. I checked in the folder also and I couldn't find any file or folder by the name ".config". Please let me know the solution to it.





It gives the following response when i run the 7th step.

configure: WARNING: you should use --build, --host, --target

configure: WARNING: you should use --build, --host, --target

checking whether to use symlinks for manpages... no

checking whether to compress the manpages... no

checking whether to add a package name suffix for the manpages... no

checking for your-gcc... no

checking for gcc... gcc

checking whether the C compiler works... yes

checking for C compiler default output file name... a.out

checking for suffix of executables...

checking whether we are cross compiling... no

checking for suffix of object files... o

checking whether we are using the GNU C compiler... yes

checking whether gcc accepts -g... yes

checking for gcc option to accept ISO C89... none needed

checking for inline... inline

checking how to run the C preprocessor... ERROR: Only one copy of bitbake should be run against a build directory

gcc -E

checking for grep that handles long lines and -e... /bin/grep

checking for egrep... /bin/grep -E

checking for ANSI C header files... yes

checking for sys/types.h... yes

checking for sys/stat.h... yes

checking for stdlib.h... yes

checking for string.h... yes

checking for memory.h... yes

checking for strings.h... yes

checking for inttypes.h... yes

checking for stdint.h... yes

checking for unistd.h... yes

checking dirent.h... yes

checking float.h usability... yes

checking float.h presence... yes

checking for float.h... yes

checking values.h usability... yes

checking values.h presence... yes

checking for values.h... yes

checking limits.h usability... yes

checking limits.h presence... yes

checking for limits.h... yes

checking for stdlib.h... (cached) yes

checking for string.h... (cached) yes

checking sys/wait.h usability... yes

checking sys/wait.h presence... yes

checking for sys/wait.h... yes

checking dlfcn.h usability... yes

checking dlfcn.h presence... yes

checking for dlfcn.h... yes

checking sys/param.h usability... yes

checking sys/param.h presence... yes

checking for sys/param.h... yes

checking if the compiler understands -pipe... yes

checking for building with threads... no (default)

checking for sin... no

checking for main in -lieee... yes

checking for main in -linet... no

checking net/errno.h usability... no

checking net/errno.h presence... no

checking for net/errno.h... no

checking for connect... yes

checking for gethostbyname... yes

checking how to build libraries... shared

checking for your-ranlib... no

checking for ranlib... ranlib

checking if 64bit support is requested... no

checking if 64bit Sparc VIS support is requested... no

checking if compiler supports visibility "hidden"... yes

checking if rpath support is requested... yes

checking system version... Linux-3.13.0-24-generic

checking for dlopen in -ldl... yes

checking for your-ar... no

checking for ar... ar

checking for build with symbols... no

checking for required early compiler flags... _LARGEFILE64_SOURCE

checking for 64-bit integer type... using long

checking whether byte ordering is bigendian... no

checking for getcwd... yes

checking for opendir... yes

checking for strtol... yes

checking for waitpid... yes

checking for strerror... yes

checking for getwd... yes

checking for wait3... yes

checking for uname... yes

checking for realpath... yes

checking for getaddrinfo... yes

checking for working getaddrinfo... yes

checking sys/modem.h usability... no

checking sys/modem.h presence... no

checking for sys/modem.h... no

checking termios vs. termio vs. sgtty... termios

checking for fd_set in sys/types... yes

checking sys/time.h usability... yes

checking sys/time.h presence... yes

checking for sys/time.h... yes

checking whether time.h and sys/time.h may both be included... yes

checking for gmtime_r... yes

checking for localtime_r... yes

checking for mktime... yes

checking tm_tzadj in struct tm... no

checking tm_gmtoff in struct tm... yes

checking long timezone variable... yes

checking for struct stat.st_blocks... yes

checking for struct stat.st_blksize... yes

checking for blkcnt_t... yes

checking for fstatfs... yes

checking for working memcmp... yes

checking for memmove... yes

checking for strstr... yes

checking proper strstr implementation... ok

checking for strtoul... yes

checking proper strtoul implementation... ok

checking for strtod... yes

checking proper strtod implementation... ok

checking for strtod... (cached) yes

checking for Solaris2.4/Tru64 strtod bugs... ok

checking for mode_t... yes

checking for pid_t... yes

checking for size_t... yes

checking for uid_t in sys/types.h... yes

checking for socklen_t... yes

checking for intptr_t... yes

checking for uintptr_t... yes

checking for opendir... (cached) yes

checking union wait... yes

checking for strncasecmp... yes

checking for BSDgettimeofday... no

checking for gettimeofday... yes

checking for gettimeofday declaration... present

checking whether char is unsigned... no

checking signed char declarations... yes

checking for a putenv() that copies the buffer... no

checking langinfo.h usability... yes

checking langinfo.h presence... yes

checking for langinfo.h... yes

checking whether to use nl_langinfo... yes

checking for chflags... no

checking isnan... yes

checking for fts... yes

checking sys/ioctl.h usability... yes

checking sys/ioctl.h presence... yes

checking for sys/ioctl.h... yes

checking sys/filio.h usability... no

checking sys/filio.h presence... no

checking for sys/filio.h... no

checking system version... (cached) Linux-3.13.0-24-generic

checking FIONBIO vs. O_NONBLOCK for nonblocking I/O... O_NONBLOCK

checking whether to use dll unloading... yes

checking for timezone data... /usr/share/zoneinfo

checking whether to enable DTrace support... no

checking if the C stack grows upwards in memory... no

configure: creating ./config.status

config.status: creating Makefile

config.status: creating dltest/Makefile

config.status: creating

[2]- Exit 1 bitbake virtual/kernel -c menuconfig

There is an error that says, that only one copy of bitbake should be run against build directory. What does it mean and how could I solve it? Please help me with this.



Community Manager

Hello nag96chidara,



If you did not change the name of the file it'll be called .config and if you haven't changed your PC's settings, it will be hidden, so I suggest you to look for it using the terminal with the command ls -la.