Tuesday, April 19, 2011

Linux kernel modules configuration on Yocto Project Bernard

For the last two weeks, I have been working on developing custom Linux OS image using Yocto Project system. One of the requirement is that the device should support V4L(1|2) and various USB webcam. However the default kernel configuration does not contain the required options.

I have been trying to:
- add defconfig file into recipes but it is always been ignored by Bitbake
- add partial kernel config fragment into recipes but not applied by Bitbake
- overriding defconfig in the build source directly but ignored by Bitbake

Finally I could do that by using "menuconfig" command. Here is the step:

$ bitbake -f -c compile virtual/kernel

let it finish, call menuconfig and recompile

$ bitbake -f -c menuconfig virtual/kernel

Select the appropriate drivers you require

$ bitbake -f -c compile virtual/kernel
$ bitbake -f -c deploy virtual/kernel

Go to the "tmp/deploy/images", check your modules-xxx.tgz to see if you can find your modules. For me, the way I check is like this:

$ tar -ztf modules-xxx.tgz | grep v4l

Hope this is useful.

2 comments:

adrian said...

Hi, I am wondering if there is another way to do this, as in add a recipe so that the kernel configuration changes become permanent. This would be better instead of using menuconfig for each build.

Unknown said...

Hi Adrian, to make it permanent, you can create a new BSP layer. Please see the following link http://www.yoctoproject.org/docs/current/bsp-guide/bsp-guide.html

You can add bbappend at recipes-kernel. I haven't tried it but it looks like the best way of doing thing.