I was trying to build Linux for beaglebone black from official repository https://github.com/beagleboard/linux
I am able to fetch and run menuconfig but when i try to compile the kernel i get error.
Following is the content of the recipe file.
File name : linux-yocto-chipsee_3.14.bb
path: /home/ankur/yocto_daisy/poky/meta-ybdevelop/recipes-example/linux
inherit kernel
require recipes-kernel/linux/linux-yocto.inc
BRANCH = "3.14"
# Override SRC_URI in a bbappend file to point at a different source # tree if you do not want to build from Linus' tree.
SRC_URI = "git://github.com/beagleboard/linux.git;branch=${BRANCH};nocheckout=1;name=machine"
LINUX_VERSION ?= "3.14"
LINUX_VERSION_EXTENSION ?= "-custom"
# Override SRCREV to point to a different commit in a bbappend file to # build a different release of the Linux kernel.
# tag: v3.4 76e10d158efb6d4516018846f60c2ab5501900bc
SRCREV_machine="76e10d158efb6d4516018846f60c2ab5501900bc"
PR = "r1"
PV = "${LINUX_VERSION}+git${SRCPV}"
# Override COMPATIBLE_MACHINE to include your machine in a bbappend # file. Leaving it empty here ensures an early explicit build failure.
COMPATIBLE_MACHINE = "beaglebone"
File name :linux-yocto-chipsee_3.14.bbappend
File path : /home/ankur/yocto_daisy/poky/meta-ybdevelop/recipes-example/linux
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"
SRC_URI_append = " file://defconfig"
defconfig path: /home/ankur/yocto_daisy/poky/meta-ybdevelop/recipes-example/linux/linux-yocto-chipsee_3.14
With above configuration i am able to fetch and open menuconfig for fetched linux kernel, command i used is as follows,
# bitbake linux-yocto-chipsee -c menuconfig
But when I try to compile Linux using below command it gives error,
# bitbake linux-yocto-chipsee -c compile
getting error related to gcc :(
/bin/sh: 1: arm-poky-linux-gnueabi-gcc: not found
| make[4]: *** [scripts/mod/empty.o] Error 127
| make[3]: *** [scripts/mod] Error 2
| make[3]: *** Waiting for unfinished jobs....
| SHIPPED scripts/genksyms/lex.lex.c
| Generating include/generated/mach-types.h
| SHIPPED scripts/genksyms/keywords.hash.c
| SHIPPED scripts/genksyms/parse.tab.h
| SHIPPED scripts/genksyms/parse.tab.c
| HOSTCC scripts/genksyms/lex.lex.o
| CC kernel/bounds.s
| /bin/sh: 1: arm-poky-linux-gnueabi-gcc: not found
When i try to build using below command that time also it failed.
# bitbake linux-yocto-chipsee -c build
ERROR: Multiple .bb files are due to be built which each provide virtual/kernel (/home/ankur/yocto_daisy/poky/meta-ybdevelop/recipes-example/linux/linux-yocto-chipsee_3.14.bb /home/ankur/yocto_daisy/poky/meta/recipes-kernel/linux/linux-yocto_3.14.bb).
This usually means one provides something the other doesn't and should.
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: Function failed: do_compile (log file is located at /home/ankur/yocto_daisy/poky/build_fresh/tmp/work/beaglebone-poky-linux-gnueabi/linux-yocto-chipsee/3.14+gitAUTOINC+76e10d158e-r1/temp/log.do_compile.30878)
ERROR: Logfile of failure stored in: /home/ankur/yocto_daisy/poky/build_fresh/tmp/work/beaglebone-poky-linux-gnueabi/linux-yocto-chipsee/3.14+gitAUTOINC+76e10d158e-r1/temp/log.do_compile.30878
Bitbake layers for linux shows below output
Just FYI:
# bitbake-layers show-recipes 'linux*'
Parsing recipes..done.
=== Available recipes matching linux*: ===
linux-dummy:
meta 1.0
linux-firmware:
meta 1:0.0+gitAUTOINC+600caefd83
linux-libc-headers:
meta 3.14
linux-yocto:
meta 3.14.4+gitAUTOINC+183622e809_0143c6ebb4
meta 3.10 (skipped)
meta 3.4 (skipped)
linux-yocto-chipsee:
meta-ybdevelop 3.14+gitAUTOINC+76e10d158e
linux-yocto-dev:
meta unknown (skipped)
linux-yocto-rt:
meta 3.10 (skipped)
meta 3.14 (skipped)
meta 3.4 (skipped)
linux-yocto-tiny:
meta 3.10 (skipped)
meta 3.14 (skipped)
meta 3.4 (skipped)
linuxdoc-tools-native:
meta 0.9.69
linuxptp:
meta-oe 1.4
Any help/pointer/hint/suggestions to compile this ?
Thank you,
Regards, Ankur
Well for time being i downloaded the Yocto_daisy(1.6) toolchain and installed it in my PC. And compiled the Linux external to Yocto build. Here are steps.
I followed below steps in my virtualbox installed ubuntu.
in Yocto_daisy build core-image-sato, using following command,
bitbake core-image-sato
Prepare micro SD card with rootfile system, SPL & U-Boot, uImage, dtb, uEnv.txt.
Clone beaglebone black Linux using following command
git clone --depth=1 https://github.com/beagleboard/linux
Download yocto-1.6(daisy) toolchain from following link.
http://downloads.yoctoproject.org/releases/yocto/yocto-1.6/toolchain/
Based on your machine type download from either i686 or x86_64
I downloaded following toochain.
http://downloads.yoctoproject.org/releases/yocto/yocto-1.6/toolchain/i686/poky-eglibc-i686-core-image-sato-armv7a-vfp-neon-toolchain-1.6.sh
Install toolchain by running download toolchain script. By default it installs into opt directory, I installed it in default path.
In terminal traverse to the above downloaded Linux directory. and set toolchain environment by running following command,
source /opt/poky/1.6/environment-setup-armv7a-vfp-neon-poky-linux-gnueabi
Now configure kernel using following command,
make bb.org_defconfig
and then build kernel using following command
make uImage LOADADDR=0x80008000 -j4
now we shall install the modules into local directory using following commands,
mkdir bbb_modules
export INSTALL_MOD_PATH=/home/ankur/linux/bbb_modules/
make modules_install
when kernel is built copy
uImage
(from /arch/arm/boot) andam335x-boneblack-bbb-exp-c.dtb
(from /arch/arm/boot) to the BOOT partition of the micro SD card.For FYI my uEnv.txt looks like this
11 . Now copy modules from local directory to the micro SD card, using following commands,
12. Eject the card put it into Beaglbone Black and power on the BBB+LCD.
I am yet to get the Touch calibration working for LCD but once I find it i will update the answer.
Another pending thing is build above kernel into Yocto build system. I will update the answer once i am done with that.
Hope this helps someone with the same issue.