On Sun, 2026-07-19 at 21:37 +0200, [email protected] wrote:
> On Tue, 2026-07-07 at 13:29 +0200, Nora Schiffer via
> lists.openembedded.org wrote:
> > U-Boot can load an EFI application from a FIT image; this requires
> > setting the OS to "efi" (usually in combination with type
> > "kernel_noload"). Doing so is a convenient approach for giving the OS
> > access to EFI services while preserving other benefits of FIT image
> > boot.
> > 
> > Signed-off-by: Nora Schiffer <[email protected]>
> > ---
> >  meta/classes-recipe/kernel-fit-image.bbclass |  3 ++-
> >  meta/conf/image-fitimage.conf                |  4 ++++
> >  meta/lib/oe/fitimage.py                      | 11 ++++++-----
> >  meta/lib/oeqa/selftest/cases/fitimage.py     | 13 +++++++++++--
> >  4 files changed, 23 insertions(+), 8 deletions(-)
> > 
> > diff --git a/meta/classes-recipe/kernel-fit-image.bbclass
> > b/meta/classes-recipe/kernel-fit-image.bbclass
> > index 448a88ccb1..899516e372 100644
> > --- a/meta/classes-recipe/kernel-fit-image.bbclass
> > +++ b/meta/classes-recipe/kernel-fit-image.bbclass
> > @@ -69,7 +69,8 @@ python do_compile() {
> >      # Collect all the its nodes before the its file is generated and
> > mkimage gets executed
> >      root_node = oe.fitimage.ItsNodeRootKernel(
> >          d.getVar("FIT_DESC"), d.getVar("FIT_ADDRESS_CELLS"),
> > -        d.getVar('HOST_PREFIX'), d.getVar('UBOOT_ARCH'), 
> > d.getVar("FIT_CONF_PREFIX"),
> > +        d.getVar('HOST_PREFIX'), d.getVar('UBOOT_ARCH'),
> > d.getVar('FIT_OS'),
> > +        d.getVar("FIT_CONF_PREFIX"),
> >          oe.types.boolean(d.getVar('FIT_KERNEL_SIGN_ENABLE')),
> > d.getVar("FIT_KERNEL_SIGN_KEYDIR"),
> >          d.getVar("UBOOT_MKIMAGE"),
> > d.getVar("UBOOT_MKIMAGE_DTCOPTS"),
> >          d.getVar('FIT_MKIMAGE_EXTRA_OPTS'),
> > diff --git a/meta/conf/image-fitimage.conf b/meta/conf/image-
> > fitimage.conf
> > index 2fdb816d55..a06d30e494 100644
> > --- a/meta/conf/image-fitimage.conf
> > +++ b/meta/conf/image-fitimage.conf
> > @@ -37,6 +37,10 @@ FIT_CONF_PREFIX[doc] = "Prefix to use for FIT
> > configuration node name"
> >  
> >  FIT_SUPPORTED_INITRAMFS_FSTYPES ?= "cpio.lz4 cpio.lzo cpio.lzma
> > cpio.xz cpio.zst cpio.gz ext2.gz cpio"
> >  
> > +# os field of the kernel and various other images in the FIT image.
> > Set to "efi"
> > +# to load a kernel with EFI stub as an EFI application.
> > +FIT_OS ?= "linux"
> > +
> >  # Allow user to support special use cases where the kernel binary is
> >  # not included in the FIT image itself.
> >  # This is particularly useful for UKI-based setups, where the kernel
> > diff --git a/meta/lib/oe/fitimage.py b/meta/lib/oe/fitimage.py
> > index 81d18f6c91..86a0e44e12 100644
> > --- a/meta/lib/oe/fitimage.py
> > +++ b/meta/lib/oe/fitimage.py
> > @@ -153,7 +153,7 @@ class ItsNodeRootKernel(ItsNode):
> >      If a device tree included in the FIT image, the default
> > configuration is the
> >      firt DTB. If there is no dtb present than the default
> > configuation the kernel.
> >      """
> > -    def __init__(self, description, address_cells, host_prefix,
> > arch, conf_prefix,
> > +    def __init__(self, description, address_cells, host_prefix,
> > arch, os, conf_prefix,
> 
> Should we use "os" as a variable name? What happens if
> 
> import os
> 
> os = "efi" ?
> 
> os.path.join(...)
> 
> To be on the save side, I would suggest to use fit_os, for example.
> 
> Thank you for the patch. I think this needs a v2 because of this
> detail. But otherwise it looks good to me.
> 
> Sorry for the late response,
> Adrian

Hi Adrian,

thanks for the review. Changing the identifier to fit_os makes sense to me, will
update in v2 or a follow-up patch (depending on whether the v1 currently in
master-next makes it to master or not).

Best,
Nora


> 
> 
> >                   sign_enable=False, sign_keydir=None,
> >                   mkimage=None, mkimage_dtcopts=None,
> >                   mkimage_extra_opts=None,
> > @@ -171,6 +171,7 @@ class ItsNodeRootKernel(ItsNode):
> >  
> >          self._host_prefix = host_prefix
> >          self._arch = arch
> > +        self._os = os
> >          self._conf_prefix = conf_prefix
> >  
> >          # Signature related properties
> > @@ -279,7 +280,7 @@ class ItsNodeRootKernel(ItsNode):
> >          opt_props = {
> >              "data": '/incbin/("' + kernel_path + '")',
> >              "arch": self._arch,
> > -            "os": "linux",
> > +            "os": self._os,
> >          }
> >          if load:
> >              opt_props["load"] = f"<{load}>"
> > @@ -370,7 +371,7 @@ class ItsNodeRootKernel(ItsNode):
> >              {
> >                  "data": '/incbin/("' + setup_path + '")',
> >                  "arch": self._arch,
> > -                "os": "linux",
> > +                "os": self._os,
> >                  "load": load,
> >                  "entry": entry
> >              }
> > @@ -385,7 +386,7 @@ class ItsNodeRootKernel(ItsNode):
> >              "data": '/incbin/("' + ramdisk_path + '")',
> >              "type": "ramdisk",
> >              "arch": self._arch,
> > -            "os": "linux"
> > +            "os": self._os,
> >          }
> >          if load:
> >              opt_props["load"] = f"<{load}>"
> > @@ -406,7 +407,7 @@ class ItsNodeRootKernel(ItsNode):
> >          opt_props = {
> >              "data": '/incbin/("' + filepath + '")',
> >              "arch": arch if arch is not None else self._arch,
> > -            "os": os if os is not None else "linux",
> > +            "os": os if os is not None else self._os,
> >          }
> >  
> >          if load:
> > diff --git a/meta/lib/oeqa/selftest/cases/fitimage.py
> > b/meta/lib/oeqa/selftest/cases/fitimage.py
> > index c5f2975223..d28b5b8965 100644
> > --- a/meta/lib/oeqa/selftest/cases/fitimage.py
> > +++ b/meta/lib/oeqa/selftest/cases/fitimage.py
> > @@ -670,6 +670,7 @@ class KernelFitImageBase(FitImageTestCase):
> >              'FIT_LOADABLES',
> >              'FIT_LOADABLE_ENTRYPOINT',
> >              'FIT_LOADABLE_LOADADDRESS',
> > +            'FIT_OS',
> >              'FIT_SIGN_ALG',
> >              'FIT_SIGN_INDIVIDUAL',
> >              'FIT_UBOOT_ENV',
> > @@ -904,7 +905,7 @@ class KernelFitImageBase(FitImageTestCase):
> >              # 'compression = "' +
> > str(bb_vars['FIT_KERNEL_COMP_ALG']) + '";', defined based on files in
> > TMPDIR, not ideal...
> >              'data = /incbin/("linux.bin");',
> >              'arch = "' + str(bb_vars['UBOOT_ARCH']) + '";',
> > -            'os = "linux";',
> > +            'os = "%s";' % bb_vars['FIT_OS'],
> >              'load = <' + str(bb_vars['UBOOT_LOADADDRESS']) + '>;',
> >              'entry = <' + str(bb_vars['UBOOT_ENTRYPOINT']) + '>;',
> >          ]
> > @@ -1463,6 +1464,7 @@ class FitImagePyTests(KernelFitImageBase):
> >              'FIT_KEY_SIGN_PKCS': "-x509",
> >              'FIT_LOADABLES': "",
> >              'FIT_LINUX_BIN': "linux.bin",
> > +            'FIT_OS': "linux",
> >              'FIT_PAD_ALG': "pkcs-1.5",
> >              'FIT_SIGN_ALG': "rsa2048",
> >              'FIT_SIGN_INDIVIDUAL': "0",
> > @@ -1503,7 +1505,8 @@ class FitImagePyTests(KernelFitImageBase):
> >  
> >          root_node = oe.fitimage.ItsNodeRootKernel(
> >              bb_vars["FIT_DESC"], bb_vars["FIT_ADDRESS_CELLS"],
> > -            bb_vars['HOST_PREFIX'], bb_vars['UBOOT_ARCH'], 
> > bb_vars["FIT_CONF_PREFIX"],
> > +            bb_vars['HOST_PREFIX'], bb_vars['UBOOT_ARCH'],
> > bb_vars['FIT_OS'],
> > +            bb_vars["FIT_CONF_PREFIX"],
> >              oe.types.boolean(bb_vars['UBOOT_SIGN_ENABLE']),
> > bb_vars["UBOOT_SIGN_KEYDIR"],
> >              bb_vars["UBOOT_MKIMAGE"],
> > bb_vars["UBOOT_MKIMAGE_DTCOPTS"],
> >              bb_vars["UBOOT_MKIMAGE_SIGN"],
> > bb_vars["UBOOT_MKIMAGE_SIGN_ARGS"],
> > @@ -1609,6 +1612,12 @@ class FitImagePyTests(KernelFitImageBase):
> >          }
> >          self._test_fitimage_py(bb_vars_overrides)
> >  
> > +    def test_fitimage_py_conf_os(self):
> > +        """Test FIT_OS functionality"""
> > +        bb_vars_overrides = {
> > +            'FIT_OS': "efi",
> > +        }
> > +        self._test_fitimage_py(bb_vars_overrides)
> >  
> >  class UBootFitImageTests(FitImageTestCase):
> >      """Test cases for the uboot-sign bbclass"""
> > 
> > 

-- 
TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany
Amtsgericht München, HRB 105018
Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider
https://www.tq-group.com/
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#241376): 
https://lists.openembedded.org/g/openembedded-core/message/241376
Mute This Topic: https://lists.openembedded.org/mt/120154469/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to