[poky] Problems creating a new BSP

Bruce Ashfield bruce.ashfield at gmail.com
Wed May 18 09:20:35 PDT 2011


On Wed, May 18, 2011 at 11:56 AM, Tim Cussins <timcussins at eml.cc> wrote:
> Hi all,
>
> I've been having trouble getting my own kernel built and it's time to go to
> the list :)
>
> The problem: As part of my bsp I want a kernel that's based on the yocto
> tree, but is built for my machine. Mu current setup fails to build it :(

We can definitely get you up and running.

>
> (1) I've been following the steps outlined here:
>
>  http://www.yoctoproject.org/docs/bsp-guide/bsp-guide.html
>
> (2) I'm tracking the bernard branch of poky.
>
> (3) My new meta directory (meta-tephra) is inside the top-level of my poky
> checkout. Here's what's in there (find):
>
> ./recipes-kernel
> ./recipes-kernel/linux
> ./recipes-kernel/linux/linux-yocto-stable_git.bbappend
> ./recipes-kernel/linux/linux-yocto-stable
> ./recipes-kernel/linux/linux-yocto-stable/defconfig
> ./conf
> ./conf/machine
> ./conf/machine/tephra.conf
> ./conf/layer.conf
> ./images
> ./images/poky-image-tephra-sdk.bb
>
> (4) Contents of tephra.conf
>
> TARGET_ARCH = "arm"
> MACHINE_FEATURES = "kernel26"
> IMAGE_FSTYPES ?= "tar.bz2 ext3"
> ROOT_FLASH_SIZE = "280"
> IMAGE_ROOTFS_SIZE_ext2 ?= "280000"
> IMAGE_ROOTFS_SIZE_ext3 ?= "280000"
> # Don't include kernels in standard images
> RDEPENDS_kernel-base = ""
> PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto-stable"
> #PREFERRED_PROVIDER_linux-libc-headers ?= "linux-libc-headers-yocto"
> EXTRA_IMAGEDEPENDS += ""
> MACHINE_ESSENTIAL_EXTRA_RDEPENDS = ""
> require conf/machine/include/tune-arm1136jf-s.inc
> KERNEL_IMAGETYPE = "uImage"
> SERIAL_CONSOLE = "115200 ttyS0"
>
> (5) Contents of linux-yocto-stable_git.bbappend
>
> FILESEXTRAPATHS := "${THISDIR}/${PN}"
> COMPATIBLE_MACHINE_tephra = "tephra"
> KMACHINE_tephra = "arm_versatile_926ejs"
> SRC_URI += "file://defconfig"

the recipe names will change slightly in the near future, the
linux-yocto_git is also "stable", so if you want something
newer than 2.6.34, you can use that as well.

>
> (6) Contents of defconfig
>
> Same as mx3_defconfig (for freescale iMX 3)
>
> (6b) for completeness here's layer.conf
>
> # We have a conf directory, add to BBPATH
> BBPATH := "${BBPATH}:${LAYERDIR}"
>
> # We have a recipes directory containing .bb and .bbappend files, add to
> BBFILES
> BBFILES := "${BBFILES} \
>            ${LAYERDIR}/recipes*/*/*.bb \
>            ${LAYERDIR}/recipes*/*/*.bbappend \
>            ${LAYERDIR}/images/*.bb"
>
> BBFILE_COLLECTIONS += "tephra"
> BBFILE_PATTERN_tephra := "^${LAYERDIR}/"
> BBFILE_PRIORITY_tephra = "5"
>
> (7) Minor confusion - When I invoke
>
>  bitbake virtual/kernel -DDDD -v
>
> The process warns during the start of kernel_do_compile() (from
> kernel.bbclass) that
>
>  "Warning: make dep is unnecessary now."
>
> It's trying to build deps - fair enough, as the value of
> KERNEL_MAJOR_VERSION is 'None' because that information is taken from the
> kernel build output:
>
>  oe_runmake include/linux/version.h CC="${KERNEL_CC}" LD="${KERNEL_LD}"
>
> but this won't generate
>
>  include/generated/utsrelease.h
>
> which is where the kernel version now lives. Changing the line to generate
> this target ensures that utsrelease.h is built, but KERNEL_MAJOR_VERSION is
> still 'None'.
>
> I'm pretty confused by this and need help :)

I'm not sure about this one at the moment, I've never had this happen,
or spent much time poking around in that particular code.

>
> (8) Major problem - The copying of my defconfig into .config causes the
> kernel build to terminate with:
>
>  linux is not clean, please run 'make mrproper'

I can help with this one. There was a change to the defconfig
processing late in the 1.0 cycle that missed being tested
against defconfig kernel builds against yocto (since the default
boards don't do this). It copies the defconfig into the source
directory, which isn't what we want since the src/build is split.

I put a fix into master for this, and it should have also been
in bernard, but obviously, I'll need to check this.

The fix you can manually do is by applying this chunk to
kernel-yocto.bbclass

+# overrides the base kernel_do_configure, since we don't want all the
+# defconfig processing in there
+kernel_do_configure() {
+        yes '' | oe_runmake oldconfig
+}
+
+

And then you'll be good to go.

Bruce


>
> Commenting out the defconfig reference in my bbappend:
>
>  #SRC_URI += "file://defconfig"
>
> allows the kernel build to complete, but obviously not with the
> configuration I was after :(
>
> Any insight into what I'm doing wrong (either philosophically or
> technically) would be awesome.
>
> Thanks in advance,
>
> Tim
> _______________________________________________
> poky mailing list
> poky at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/poky
>



-- 
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end"



More information about the poky mailing list