[yocto] Multiple ubifs partition

Ulrich Ölmann u.oelmann at pengutronix.de
Thu May 2 22:59:02 PDT 2019


Hi Gabriele,

On Thu, May 02 2019 at 13:25 +0200, Gabriele Zampieri <gabbla.malist at gmail.com> wrote:
> ok, I guess I miss-understand how that class works. I thought that I
> had to add the customization on my own image recipe.
> So the correct way is to write a 'customization recipe' and install
> via IMAGE_INSTALL? Can you provide an example?

use your custom image recipe as before to just produce your root-
filesystem which results in a (compressed) tar-file in ${DEPLOY_DIR_
IMAGE}. It will be referenced from the genimage recipe without any file
extension via GENIMAGE_ROOTFS_IMAGE. Now your UBI-recipe (e.g. 'your-
customized-ubi.bb') could look like

    inherit genimage
    LICENSE = "MIT"
    LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

    SRC_URI += "file://genimage.config"

    # to not confuse the flashable UBI-image ('ubi')
    # with the UBI-filesystems ('ubifs') it contains
    GENIMAGE_IMAGE_SUFFIX = "ubi"

    # the name of the root-filesystem genimage should use
    GENIMAGE_ROOTFS_IMAGE = "your-customized-rootfs"

with the accompanying 'genimage.config' for example as follows

    #
    # Manufacturer ID: 0x2c, Chip ID: 0xda
    # -> Micron MT29F2G08ABAEAWP
    # 256 MiB, SLC
    #
    flash nand {
    	pebsize = 131072
    	lebsize = 126976
    	numpebs = 2044
    	minimum-io-unit-size = 2048
    	sub-page-size = 2048
    }

    image @IMAGE@ {
    	flashtype = "nand"
    	ubi {
    	}

    	partition rootfs {
    		image = rootfs.ubifs
    		size = 64MiB
    	}

    	partition opt {
    		image = opt.ubifs
    		size = 32MiB
    	}

    	partition data {
    		image = data.ubifs
    		autoresize = true
    	}
    }

    image rootfs.ubifs {
    	flashtype = "nand"
    	ubifs {
    		extraargs = "-x lzo"
    		max-size = 64MiB
    	}
    	mountpoint = "/"
    }

    image opt.ubifs {
    	flashtype = "nand"
    	ubifs {
    		extraargs = "-x lzo"
    		max-size = 32MiB
    	}
    	mountpoint = "/opt"
    }

    image data.ubifs {
    	flashtype = "nand"
    	ubifs {
    		extraargs = "-x lzo"
    		max-size = 192MiB
    	}
    	mountpoint = "/data"
    }

In a UBI-image almost all UBI-volumes need to have a fixed size and only
one is allowed to use the autoresize mechanism which blows it up to use
the remaining space when it is UBI-attached for the first time. Distinct
from that is the UBI-filesystem's max-size parameter which prescribes
the maximum size of an UBI-volume that shall be addressable by this
filesystem. This means that if you would re-use 'data.ubifs' in a volume
that has been autoresized to e.g. 1024MiB the filesystem would not be
able to make use of it.

I neither tested the recipe nor the genimage.config, so please give some
feedback.

Best regards
Ulrich


> Thanks,
> Gabriele
>
> Il giorno mer 24 apr 2019 alle ore 15:15 Ulrich Ölmann <
> u.oelmann at pengutronix.de> ha scritto:
>
>> Hi Gabriele,
>>
>> On Wed, Apr 24 2019 at 14:06 +0200, Gabriele Zampieri <
>> gabbla.malist at gmail.com> wrote:
>> > I'm now testing genimage via meta-ptx in my Yocto workflow, but I found a
>> > problem: I cannot set a SRC_URI in my custom image recipe (that inherit
>> > from core-image which in turn inherit from image) because do_fetch and
>> > do_unpack tasks have noexec set to 1. If I specify the SRC_URI with my
>> > genimage.config, bitbake exits, complaining about LIC_FILE_CHECKSUM (that
>> > is correctly specified). If I hack image.bbclass and comment out
>> >
>> > #do_fetch[noexec] = "1"
>> >
>> >
>> > #do_unpack[noexec] = "1"
>> >
>> > The process start correctly. Is there a way to avoid touching
>> image.bbclass
>> > and install my configuration from the image recipe?
>> >
>> > Thanks,
>> > Gabriele
>>
>> you need one or more recipe(s) that construct(s) your filesystem(s) and
>> a separate one that makes a flashable image out of that (see the
>> introductory documentation in 'genimage.bbclass'). In the former you
>> inherit 'core-image' and only in the latter which inherits 'genimage'
>> you have to set the SRC_URI to point to your 'genimage.config'.
>>
>> Best regards
>> Ulrich
>>
>>
>> > Il giorno mer 13 mar 2019 alle ore 16:14 Gabriele Zampieri <
>> > gabbla.malist at gmail.com> ha scritto:
>> >
>> >> Hi all,
>> >>
>> >> thank you very much for the suggestion, I will check genimage and test
>> it.
>> >>
>> >> Gabriele
>> >>
>> >> Il giorno gio 7 mar 2019 alle ore 16:23 Ulrich Ölmann <
>> >> u.oelmann at pengutronix.de> ha scritto:
>> >>
>> >>> Hi there,
>> >>>
>> >>> On Thu, Mar 07 2019 at 15:11 +0100, Stelling2 Carsten <
>> >>> Carsten.Stelling2 at goerlitz.com> wrote:
>> >>> > Have you seen https://github.com/pengutronix/genimage?
>> >>>
>> >>> you can find it included within
>> https://github.com/pengutronix/meta-ptx
>> >>> with an accompanying genimage.bbclass.
>> >>>
>> >>> Best regards
>> >>> Ulrich
>> >>>
>> >>> > Regards,
>> >>> >
>> >>> > Carsten
>> >>> >
>> >>> > Von: yocto-bounces at yoctoproject.org [mailto:
>> >>> yocto-bounces at yoctoproject.org] Im Auftrag von Gabriele Zampieri
>> >>> > Gesendet: Montag, 4. März 2019 12:17
>> >>> > An: yocto at yoctoproject.org
>> >>> > Betreff: [yocto] Multiple ubifs partition
>> >>> >
>> >>> > Hi all,
>> >>> >
>> >>> > I'm trying to build a distribution that has multiple partitions. The
>> >>> desiderata is something like:
>> >>> >
>> >>> > - rootfs.ubifs mounted on /
>> >>> > - data.ubifs mounted on /data
>> >>> > - opt.ubifs mounted on /opt
>> >>> >
>> >>> > I was wondering if there is a standard way to achieve the goal. I see
>> >>> that there is a tool called wic, but it does not seems to support
>> ubifs. I
>> >>> could post process the tarball image and doing stuff with my scripts,
>> but
>> >>> I'd prefer doing this in a single bitbake run. Can you suggest
>> something?
>> >>> >
>> >>> > Thanks,
>> >>> > Gabriele
>> >>>
>> >>>
>> >>> --
>> >>> Pengutronix e.K.                           | Ulrich Ölmann
>>    |
>> >>> Industrial Linux Solutions                 |
>> http://www.pengutronix.de/
>> >>> |
>> >>> Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0
>>   |
>> >>> Amtsgericht Hildesheim, HRA 2686           | Fax:
>>  +49-5121-206917-5555 |
>> >>>
>> >>
>>
>>
>> --
>> Pengutronix e.K.                           | Ulrich Ölmann               |
>> Industrial Linux Solutions                 | http://www.pengutronix.de/  |
>> Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
>> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
>>


--
Pengutronix e.K.                           | Ulrich Ölmann               |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |


More information about the yocto mailing list