[oe] generate a named kernel in ${DEPLOY_DIR_IMAGE}

Andrea Adami andrea.adami at gmail.com
Tue Sep 28 23:23:12 UTC 2010


On Tue, Sep 28, 2010 at 6:54 PM, Frans Meulenbroeks
<fransmeulenbroeks at gmail.com> wrote:
> Hi,
>
> As I needed to generate two different kernels for the same machine I
> had some kind of problem (as emailed yesterday).
> For now I've solved it as follows:
>
> I created a 2nd recipe (in an overlay):
> linux-small_2.6.34.bb
> this one essentially only requires linux_2.6.34.bb and sets S to the linux_${PN}
> Then I can just add a dir linux-small and add the small defconfig in it.
>
> That way bitbake linux-small should give me the 2nd kernel.
> And actually it builds the kernel but this one is also packaged in a
> kernel-*.ipk.
> I could have made two different machines, but that seemed somewhat
> overkill, so in the end I decided to modify do_install_append in
> linux.inc.
>

We solved same issues with linux-kexecboot.inc including linux.inc and
redefining vars/tasks.
In particular
...
PACKAGES = ""
PROVIDES = ""
...
KERNEL_IMAGE_BASE_NAME = "${KERNEL_IMAGETYPE}-kexecboot-${PV}-${PR}-${MACHINE}"
KERNEL_IMAGE_SYMLINK_NAME = "${KERNEL_IMAGETYPE}-kexecboot-${MACHINE}"
...

do_populate_sysroot() {
}

do_install() {
}

python do_package() {
}

So we end having in e.g.
/oe/build/tmp/deploy/glibc/images/c7x0
zImage-2.6.26-r13-c7x0.bin                        1351824│Sep 25 04:37
@zImage-c7x0.bin                                             26│Sep 25 04:38
zImage-kexecboot-2.6.26-r20.0-c7x0.bin      1113112│Sep 25 04:40
@zImage-kexecboot-c7x0.bin                             38│Sep 25 04:40



> This function currently reads:
>
> do_install_append() {
>        oe_runmake headers_install
> INSTALL_HDR_PATH=${D}${exec_prefix}/src/linux-${KERNEL_VERSION}
> ARCH=$ARCH
> }
>
> And I just added a line:
>    cp ${D}/boot/uImage ${DEPLOY_DIR_IMAGE}/uImage-${PN}

I don't think patch is necessari, though you should use
${KERNEL_IMAGETYPE} and not uImage


>
> That way both kernels end up with different names in the deploy dir.
> In the image recipe I can then just copy them in a post process
> command to the proper location.
> (btw that is also why I went for uImage-${PN} and not for
> uImage-${PN}-${KERNEL_VERSION}, the kernel version is not known in the
> image recipe so it is much harder to copy the right/latest uImage to
> the kernel.
>
> Rationale for typing this message is threefold:
> - first of all I wanted to record and share what I have done, so
> others can use it
> - secondly I would appreciate feedback on my solutions (and maybe
> someone sees a way to improve it)
> - and lastly I would like to inquire if people feel the above line
> would be a nice addition to the stock linux.inc. If so I'l happily
> prepare a patch.

Remember that most work is done in kernel.bbclass
Copy of kernel is done in do_deploy()

...
install -m 0644 ${KERNEL_OUTPUT}
${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin
...

>
> Your feedback is appreciated.
>
> Frans
>
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
>

Regards

Andrea




More information about the Openembedded-devel mailing list