[yocto] How to use different busybox defconfig's in the initramfs and rootfs image

ChenQi Qi.Chen at windriver.com
Tue Feb 3 18:47:37 PST 2015


On 02/03/2015 05:23 PM, Erwin.Rieger.ext at rohde-schwarz.com wrote:
>
> Hello,
>
> thank you for your reply.
>
> I have a working solution now, but it is not as clean as i would like 
> it to be and some new questions arose with it.
>
> My current setup consists of a busybox.bbappend file that is used to 
> customize the rootfs
> busybox (defconfig, some /etc files and so on) and a 
> busybox-initramfs.bb recipe for the initramfs busybox (as you
> suggested).
>
> The busybox.bbappend (see below) is straight forward, so no problem 
> with that.
>
> To create the busybox-initramfs.bb in my custom layer, i have included 
> the base busybox recipe from the meta layer with
> an 'require' statement.
>
> Then i had to extend the FILESEXTRAPATHS variable to point back to the 
> base recipe files-directory since it
> no longer found the SRC_URI files from meta/busybox.bb and 
> meta/busybox.inc. See the BUSYBOXBASEDIR
> variable in the busybox-initramfs.bb below.
>
> I feel that his construct is not that elegant, so here comes the 
> f*irst question*:
>
> Is there a nicer/cleaner way to include/reference the source files 
> from the base busybox recipe in the meta layer?
>

How about using "${COREBASE}/meta/recipes-core/busybox"? I didn't try it 
out, so I'm not sure whether it works.

> The *second question* concerns the versioning: The busybox.bbappend 
> file uses a 'version wildcard' (_%) to
> match all versions of the base busybox recipe. But in 
> the busybox-initramfs.bb recipe i have to hardwire the
> version of the base recipe.
>
How about change the recipe name to busybox-initramfs_1.22.1.bb? So that 
the PV value is automatically extracted from the recipe name and there's 
no need to set it in the recipe.

> How can i use a 'version wildcard' in a 'require' statement?
>

It's not supported, as far as I know.

Best Regards,
Chen Qi

> I've tried 'require recipes-core/busybox/busybox_%.bb' but that gives 
> me a parse error so it seems not to be
> possible to use version wildcards together with require/include.
>
>
> My current busybox-initramfs.bb recipe:
>
>     -------------------------------------------------------------------
>     DESCRIPTION = "Use different busybox defconfig for initramfs."
>
>     # require recipes-core/busybox/busybox_1.22.1.bb
>
>     PV = "1.22.1"
>     require recipes-core/busybox/busybox_${PV}.bb
>
>     S = "${WORKDIR}/busybox-${PV}"
>
>     # Point FILESPATH to base busybox files dir
>     BUSYBOXBASEDIR = "${THISDIR}/../../../meta/recipes-core/busybox"
>     FILESEXTRAPATHS_prepend := "${BUSYBOXBASEDIR}/busybox:"
>     FILESEXTRAPATHS_prepend := "${BUSYBOXBASEDIR}/files:"
>
>     # Include our initramfs busybox defconfig
>     FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
>
>     BUSYBOX_SPLIT_SUID = "0"
>     -------------------------------------------------------------------
>
>
>
> The busybox_%.bbappend for the rootfs busybox:
>
>     -------------------------------------------------------------------
>     DESCRIPTION = "Customize busybox."
>
>     # Include our rootfs busybox defconfig
>     FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
>
>     SRC_URI += " \
>         file://inetd.conf \
>         "
>
>     do_install_append() {
>         install ${WORKDIR}/inetd.conf ${D}${sysconfdir}
>     }
>
>     BUSYBOX_SPLIT_SUID = "0"
>     -------------------------------------------------------------------
>
>
> Best Regards, Erwin Rieger
>
>
>
> -----ChenQi <Qi.Chen at windriver.com> schrieb: -----
> An: <Erwin.Rieger.ext at rohde-schwarz.com>, <yocto at yoctoproject.org>
> Von: ChenQi <Qi.Chen at windriver.com>
> Datum: 03.02.2015 02:48
> Betreff: Re: [yocto] How to use different busybox defconfig's in the 
> initramfs and rootfs image
>
> The only way I know is to make a new recipe, busybox-initramfs.bb, for 
> example.
> Install busybox for image rootfs and busybox-initramfs for initramfs.
>
> Best Regards,
> Chen Qi
>
> On 02/02/2015 09:21 PM, Erwin.Rieger.ext at rohde-schwarz.com wrote:
>> Hello list,
>>
>> i have used Yocto to create a initramfs linux kernel and a 
>> corresponding rootfs for a embedded linux system.
>>
>> Things are working as expected, so far.
>>
>> Now i want to fine-tune my setup and want to use a different busybox 
>> configuration in the initramfs as the one in the rootfs image.
>> For example, the initramfs busybox should contain support for 
>> switch-root and that is not needed in the rootfs.
>> On the other hand, the rootfs should contain a "full-fledged" busybox 
>> (with inetd enabled, for example).
>>
>> So the question is: How can i build/install a package two times with 
>> differing configurations in one bitbake run?.
>>
>> How can this be done the Yocto-way without copying busybox.bb and 
>> hacking it the way i need it?
>>
>> I've tried various combinations, e.g. bb-appending busybox, 
>> inheriting from busybox and so on - but to no avail.
>>
>> Maybe someone have an idea on how to do that?
>>
>>
>> PS:
>> * The kernel recipe is derived (bbappend) 
>> from core-image-minimal-initramfs.
>> * Rootfs recipe is derived from core-image-minimal.bb.
>>
>>
>> -- 
>> Erwin Rieger
>> -- 
>>
>>
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20150204/c32212d8/attachment.html>


More information about the yocto mailing list