On Mon, Feb 16, 2026 at 10:37 AM Trevor Woerner <[email protected]> wrote:

> On Sun 2026-02-15 @ 10:09:03 PM, Bruce Ashfield wrote:
> > On Sun, Feb 15, 2026 at 9:32 PM Trevor Woerner via
> lists.openembedded.org
> > <[email protected]> wrote:
> >
> > > The previous implementation to add variable sector-size support:
> > > - required the variable WIC_SECTOR_SIZE either be defined in a
> > >   configuration file or be defined in a --vars file
> > > - this means that every invocation of "wic ls", "wic cp", or "wic rm"
> > >   needed this variable defined (config or --vars)
> > > - required the user to create separate *wks files for every sector size
> > >   they wanted to use
> > > - required the user to specify the mkfs-extraopts by hand to specify
> the
> > >   correct sector size: e.g.
> > >         bootloader --ptable gpt
> > >         part --fstype ext4 --source rootfs --label rofs-a
> --mkfs-extraopts
> > > "-b 4096"
> > >         part --fstype ext4 --source rootfs --use-uuid --mkfs-extraopts
> "-b
> > > 4096"
> > > - specifying --mkfs-extraopts replaces the defaults with the
> > >   user-supplied values
> > > - only provided details to support using variable sector-sizes with
> > >   ext[234] filesystems
> > > - it would not be possible to generate images with different sector
> > >   sizes in the same build since the configuration and *wks files would
> > >   need to change and the build re-run for each size
> > >
> > > Update the sector-size handling so that:
> > > - the sector-size will now be provided on the cmdline to the "wic ls",
> > >   "wic cp", "wic rm", and "wic create" commands: default = 512
> > > - this means the configuration and/or --vars file does not need to be
> > >   changed in order to perform those operations on images with different
> > >   sector sizes
> > > - support is provided implicitly for mkdosfs and ext[234] partitions
> > > - the user no longer needs to know and supply the sector-size magic in
> > >   --mkfs-extraopts (thereby clobbering the other defaults)
> > >
> >
> > It wasn't clear to me when scanning the patch. For configuration
> > files with a sector size, is it now completely ignored ?
>
> Yes.
>
> While trying to use the existing implementation in actual production
> workflows we found a number of shortcomings that are addressed with this
> update. Additionally, the ultimate goal is to make wic an independent
> utility from oe-core so it can be easily used by external tools
> post-build.
>
> If sector-size is not available on the cmdline, then a --vars file would
> be needed for every simple wic invocation such as "wic cp", "wic ls",
> and "wic rm"... which would be silly. Take a look at the patch I
> submitted a week or so ago to see how the oe-selftests would have to be
> updated to support this.
>
> If sector-size is available both on the cmdline and in a --vars file
> then which one wins? Ultimately having it specified in both places is
> only going to lead to confusion as people will be changing it in one
> place and not realizing it's also defined (and taking precedence) from
> somewhere else. I believe this is currently the case with
> --native-sysroot, which probably needs fixing as well since several
> oe-selftests are trying to use it, but I doubt it is working the way the
> test writers expect.


> One parameter specified in one place so a user would not need multiple
> sets of configuration files to perform a simple "wic ls" of images with
> different sector sizes; simply specify it on the cmdline if you want
> something other than 512.
>

That's not a good migration path. You can't simply throw away
someone's existing configuration and ask them to update to a
new one. I didn't even see an error thrown with migration
instructions.

There's many different users of things like this, we can't simply
change the interface without some way to migrate.

Bruce



>
> > Apologies if I missed where existing configs were used to prime
> > the parameters to the functions.
> >
> > Bruce
> >
> >
> >
> > >
> > > AI-Generated: codex/gpt-5.1-codex-max
> > > Signed-off-by: Trevor Woerner <[email protected]>
> > > ---
> > > changes since v2:
> > > - none
> > >
> > > changes since v1:
> > > - none
> > > ---
> > >  meta/lib/oeqa/selftest/cases/wic.py           | 39 ++++---------
> > >  scripts/lib/wic/engine.py                     | 45 +++++++--------
> > >  scripts/lib/wic/help.py                       | 23 +++++---
> > >  scripts/lib/wic/partition.py                  | 55 +++++++++++++++++--
> > >  scripts/lib/wic/plugins/imager/direct.py      | 18 ++----
> > >  scripts/lib/wic/plugins/source/bootimg_efi.py |  5 +-
> > >  .../lib/wic/plugins/source/bootimg_pcbios.py  | 11 ++--
> > >  .../wic/plugins/source/isoimage_isohybrid.py  |  5 +-
> > >  scripts/wic                                   |  8 +++
> > >  9 files changed, 125 insertions(+), 84 deletions(-)
> > >
> > > diff --git a/meta/lib/oeqa/selftest/cases/wic.py
> > > b/meta/lib/oeqa/selftest/cases/wic.py
> > > index ecaee5a29144..7ad61fa700f7 100644
> > > --- a/meta/lib/oeqa/selftest/cases/wic.py
> > > +++ b/meta/lib/oeqa/selftest/cases/wic.py
> > > @@ -935,33 +935,22 @@ bootloader --ptable gpt""")
> > >          finally:
> > >              os.remove(wks_file)
> > >
> > > -    def test_wic_sector_size(self):
> > > -        """Test generation image sector size"""
> > > -
> > > +    def test_wic_sector_size_cli(self):
> > > +        """Test sector size handling via CLI option."""
> > > +
> > >          oldpath = os.environ['PATH']
> > >          os.environ['PATH'] = get_bb_var("PATH", "wic-tools")
> > >
> > >          try:
> > > -            # Add WIC_SECTOR_SIZE into config
> > > -            config = 'WIC_SECTOR_SIZE = "4096"\n'\
> > > -                     'WICVARS:append = " WIC_SECTOR_SIZE"\n'
> > > -            self.append_config(config)
> > >              bitbake('core-image-minimal')
> > >
> > > -            # Check WIC_SECTOR_SIZE apply to bitbake variable
> > > -            wic_sector_size_str = get_bb_var('WIC_SECTOR_SIZE',
> > > 'core-image-minimal')
> > > -            wic_sector_size = int(wic_sector_size_str)
> > > -            self.assertEqual(4096, wic_sector_size)
> > > -
> > > -            self.logger.info("Test wic_sector_size: %d \n" %
> > > wic_sector_size)
> > > -
> > >              with NamedTemporaryFile("w", suffix=".wks") as wks:
> > >                  wks.writelines(
> > >                      ['bootloader --ptable gpt\n',
> > > -                     'part --fstype ext4 --source rootfs --label
> rofs-a
> > > --mkfs-extraopts "-b 4096"\n',
> > > -                     'part --fstype ext4 --source rootfs --use-uuid
> > > --mkfs-extraopts "-b 4096"\n'])
> > > +                     'part --fstype ext4 --source rootfs --label
> > > rofs-a\n',
> > > +                     'part --fstype ext4 --source rootfs
> --use-uuid\n'])
> > >                  wks.flush()
> > > -                cmd = "wic create %s -e core-image-minimal -o %s" % (
> > > wks.name, self.resultdir)
> > > +                cmd = "wic create %s -e core-image-minimal -o %s
> > > --sector-size 4096" % (wks.name, self.resultdir)
> > >                  runCmd(cmd)
> > >                  wksname = os.path.splitext(os.path.basename(wks.name
> ))[0]
> > >                  images = glob(os.path.join(self.resultdir,
> "%s-*direct" %
> > > wksname))
> > > @@ -969,24 +958,18 @@ bootloader --ptable gpt""")
> > >
> > >              sysroot = get_bb_var('RECIPE_SYSROOT_NATIVE', 'wic-tools')
> > >              # list partitions
> > > -            result = runCmd("wic ls %s -n %s" % (images[0], sysroot))
> > > +            result = runCmd("wic ls %s -n %s --sector-size 4096" %
> > > (images[0], sysroot))
> > >              self.assertEqual(3, len(result.output.split('\n')))
> > >
> > > -            # verify partition size with wic
> > > -            res = runCmd("export PARTED_SECTOR_SIZE=%d; parted -m %s
> unit
> > > b p" % (wic_sector_size, images[0]),
> > > +            # verify partition size with parted output
> > > +            res = runCmd("export PARTED_SECTOR_SIZE=%d; parted -m %s
> unit
> > > b p" % (4096, images[0]),
> > >                           stderr=subprocess.PIPE)
> > >
> > > -            # parse parted output which looks like this:
> > > -            # BYT;\n
> > > -            #
> > >
> /var/tmp/wic/build/tmpgjzzefdd-202410281021-sda.direct:78569472B:file:4096:4096:gpt::;\n
> > > -            # 1:139264B:39284735B:39145472B:ext4:rofs-a:;\n
> > > -            # 2:39284736B:78430207B:39145472B:ext4:primary:;\n
> > >              disk_info = res.output.splitlines()[1]
> > > -            # Check sector sizes
> > >              sector_size_logical = int(disk_info.split(":")[3])
> > >              sector_size_physical = int(disk_info.split(":")[4])
> > > -            self.assertEqual(wic_sector_size, sector_size_logical,
> > > "Logical sector size is not %d." % wic_sector_size)
> > > -            self.assertEqual(wic_sector_size, sector_size_physical,
> > > "Physical sector size is not %d." % wic_sector_size)
> > > +            self.assertEqual(4096, sector_size_logical, "Logical
> sector
> > > size is not 4096.")
> > > +            self.assertEqual(4096, sector_size_physical, "Physical
> sector
> > > size is not 4096.")
> > >
> > >          finally:
> > >              os.environ['PATH'] = oldpath
> > > diff --git a/scripts/lib/wic/engine.py b/scripts/lib/wic/engine.py
> > > index 9d596be3a723..7753f431f91d 100644
> > > --- a/scripts/lib/wic/engine.py
> > > +++ b/scripts/lib/wic/engine.py
> > > @@ -224,7 +224,7 @@ def wic_list(args, scripts_path):
> > >
> > >
> > >  class Disk:
> > > -    def __init__(self, imagepath, native_sysroot, fstypes=('fat',
> 'ext')):
> > > +    def __init__(self, imagepath, native_sysroot, fstypes=('fat',
> 'ext'),
> > > sector_size=512):
> > >          self.imagepath = imagepath
> > >          self.native_sysroot = native_sysroot
> > >          self.fstypes = fstypes
> > > @@ -233,16 +233,7 @@ class Disk:
> > >          self._lsector_size = None
> > >          self._psector_size = None
> > >          self._ptable_format = None
> > > -
> > > -        # define sector size
> > > -        sector_size_str = get_bitbake_var('WIC_SECTOR_SIZE')
> > > -        if sector_size_str is not None:
> > > -            try:
> > > -                self.sector_size = int(sector_size_str)
> > > -            except ValueError:
> > > -                self.sector_size = None
> > > -        else:
> > > -            self.sector_size = None
> > > +        self.sector_size = sector_size
> > >
> > >          # find parted
> > >          # read paths from $PATH environment variable
> > > @@ -271,7 +262,7 @@ class Disk:
> > >          if self._partitions is None:
> > >              self._partitions = OrderedDict()
> > >
> > > -            if self.sector_size is not None:
> > > +            if self.sector_size:
> > >                  out = exec_cmd("export PARTED_SECTOR_SIZE=%d; %s -sm
> %s
> > > unit B print" % \
> > >                             (self.sector_size, self.parted,
> > > self.imagepath), True)
> > >              else:
> > > @@ -312,11 +303,15 @@ class Disk:
> > >              raise WicError("Partition %s is not in the image" % pnum)
> > >          part = self.partitions[pnum]
> > >          # check if fstype is supported
> > > +        # NOTE: parted is unable to identify dos-type partitions with
> a
> > > 4k sector-size
> > > +        #       if the type is empty and a non-default sector size is
> > > used, assume 'fat'
> > > +        #       fdisk identifies them without issue
> > > +        part_fstype = part.fstype if part.fstype or self.sector_size
> ==
> > > 512 else 'fat'
> > >          for fstype in self.fstypes:
> > > -            if part.fstype.startswith(fstype):
> > > +            if part_fstype.startswith(fstype):
> > >                  break
> > >          else:
> > > -            raise WicError("Not supported fstype:
> {}".format(part.fstype))
> > > +            raise WicError("Not supported fstype:
> {}".format(part_fstype))
> > >          if pnum not in self._partimages:
> > >              tmpf = tempfile.NamedTemporaryFile(prefix="wic-part")
> > >              dst_fname = tmpf.name
> > > @@ -586,8 +581,9 @@ class Disk:
> > >                              label = part.get("name")
> > >                              label_str = "-n {}".format(label) if label
> > > else ''
> > >
> > > -                            cmd = "{} {} -C {}
> {}".format(self.mkdosfs,
> > > label_str, partfname,
> > > -
> part['size'])
> > > +                            sector_str = "-S
> {}".format(self.sector_size)
> > > if self.sector_size else ''
> > > +                            cmd = "{} {} {} -C {}
> > > {}".format(self.mkdosfs, label_str, sector_str, partfname,
> > > +
>  part['size'])
> > >                              exec_cmd(cmd)
> > >                              # copy content from the temporary
> directory
> > > to the new partition
> > >                              cmd = "{} -snompi {} {}/*
> > > ::".format(self.mcopy, partfname, tmpdir)
> > > @@ -609,14 +605,19 @@ class Disk:
> > >
> > >  def wic_ls(args, native_sysroot):
> > >      """List contents of partitioned image or vfat partition."""
> > > -    disk = Disk(args.path.image, native_sysroot)
> > > +    disk = Disk(args.path.image, native_sysroot,
> > > sector_size=args.sector_size)
> > >      if not args.path.part:
> > >          if disk.partitions:
> > >              print('Num     Start        End          Size
> Fstype')
> > >              for part in disk.partitions.values():
> > > +                # size values are in bytes from parted; convert to
> > > sectors if a custom sector size was requested
> > > +                display_size = part.size
> > > +                if args.sector_size and args.sector_size !=
> > > disk._lsector_size:
> > > +                    display_size = part.size // args.sector_size
> > >                  print("{:2d}  {:12d} {:12d} {:12d}  {}".format(\
> > > -                          part.pnum, part.start, part.end,
> > > -                          part.size, part.fstype))
> > > +                          part.pnum, part.start // args.sector_size,
> > > +                          part.end // args.sector_size,
> > > +                          display_size, part.fstype))
> > >      else:
> > >          path = args.path.path or '/'
> > >          print(disk.dir(args.path.part, path))
> > > @@ -627,9 +628,9 @@ def wic_cp(args, native_sysroot):
> > >      partitioned image.
> > >      """
> > >      if isinstance(args.dest, str):
> > > -        disk = Disk(args.src.image, native_sysroot)
> > > +        disk = Disk(args.src.image, native_sysroot,
> > > sector_size=args.sector_size)
> > >      else:
> > > -        disk = Disk(args.dest.image, native_sysroot)
> > > +        disk = Disk(args.dest.image, native_sysroot,
> > > sector_size=args.sector_size)
> > >      disk.copy(args.src, args.dest)
> > >
> > >
> > > @@ -638,7 +639,7 @@ def wic_rm(args, native_sysroot):
> > >      Remove files or directories from the vfat partition of
> > >      partitioned image.
> > >      """
> > > -    disk = Disk(args.path.image, native_sysroot)
> > > +    disk = Disk(args.path.image, native_sysroot,
> > > sector_size=args.sector_size)
> > >      disk.remove(args.path.part, args.path.path, args.recursive_delete)
> > >
> > >  def wic_write(args, native_sysroot):
> > > diff --git a/scripts/lib/wic/help.py b/scripts/lib/wic/help.py
> > > index 6b49a67de938..5d7c40456a80 100644
> > > --- a/scripts/lib/wic/help.py
> > > +++ b/scripts/lib/wic/help.py
> > > @@ -118,7 +118,7 @@ wic_create_usage = """
> > >   usage: wic create <wks file or image name> [-o <DIRNAME> | --outdir
> > > <DIRNAME>]
> > >              [-e | --image-name] [-s, --skip-build-check] [-D, --debug]
> > >              [-r, --rootfs-dir] [-b, --bootimg-dir]
> > > -            [-k, --kernel-dir] [-n, --native-sysroot] [-f,
> --build-rootfs]
> > > +            [-k, --kernel-dir] [-n, --native-sysroot] [--sector-size
> > > <bytes>] [-f, --build-rootfs]
> > >              [-c, --compress-with] [-m, --bmap]
> > >
> > >   This command creates an OpenEmbedded image based on the 'OE kickstart
> > > @@ -139,13 +139,16 @@ SYNOPSIS
> > >      wic create <wks file or image name> [-o <DIRNAME> | --outdir
> > > <DIRNAME>]
> > >          [-e | --image-name] [-s, --skip-build-check] [-D, --debug]
> > >          [-r, --rootfs-dir] [-b, --bootimg-dir]
> > > -        [-k, --kernel-dir] [-n, --native-sysroot] [-f, --build-rootfs]
> > > +        [-k, --kernel-dir] [-n, --native-sysroot] [--sector-size
> <bytes>]
> > > [-f, --build-rootfs]
> > >          [-c, --compress-with] [-m, --bmap] [--no-fstab-update]
> > >
> > >  DESCRIPTION
> > >      This command creates an OpenEmbedded image based on the 'OE
> > >      kickstart commands' found in the <wks file>.
> > >
> > > +    Use the --sector-size option to select the sector size (in bytes)
> > > +    used for partition layout calculations (default is 512).
> > > +
> > >      In order to do this, wic needs to know the locations of the
> > >      various build artifacts required to build the image.
> > >
> > > @@ -278,7 +281,7 @@ wic_ls_usage = """
> > >
> > >   List content of a partitioned image
> > >
> > > - usage: wic ls <image>[:<partition>[<path>]] [--native-sysroot <path>]
> > > + usage: wic ls <image>[:<partition>[<path>]] [--native-sysroot <path>]
> > > [--sector-size <bytes>]
> > >
> > >   This command  outputs either list of image partitions or directory
> > > contents
> > >   of vfat and ext* partitions.
> > > @@ -296,7 +299,7 @@ SYNOPSIS
> > >      wic ls <image>
> > >      wic ls <image>:<vfat or ext* partition>
> > >      wic ls <image>:<vfat or ext* partition><path>
> > > -    wic ls <image>:<vfat or ext* partition><path> --native-sysroot
> <path>
> > > +    wic ls <image>:<vfat or ext* partition><path> --native-sysroot
> <path>
> > > [--sector-size <bytes>]
> > >
> > >  DESCRIPTION
> > >      This command lists either partitions of the image or directory
> > > contents
> > > @@ -336,6 +339,8 @@ DESCRIPTION
> > >
> > >      The -n option is used to specify the path to the native sysroot
> > >      containing the tools(parted and mtools) to use.
> > > +    The --sector-size option sets the sector size used for partition
> math
> > > +    (default is 512 bytes).
> > >
> > >  """
> > >
> > > @@ -343,7 +348,7 @@ wic_cp_usage = """
> > >
> > >   Copy files and directories to/from the vfat or ext* partition
> > >
> > > - usage: wic cp <src> <dest> [--native-sysroot <path>]
> > > + usage: wic cp <src> <dest> [--native-sysroot <path>] [--sector-size
> > > <bytes>]
> > >
> > >   source/destination image in format <image>:<partition>[<path>]
> > >
> > > @@ -364,7 +369,7 @@ SYNOPSIS
> > >      wic cp <src> <dest>:<partition>
> > >      wic cp <src>:<partition> <dest>
> > >      wic cp <src> <dest-image>:<partition><path>
> > > -    wic cp <src> <dest-image>:<partition><path> --native-sysroot
> <path>
> > > +    wic cp <src> <dest-image>:<partition><path> --native-sysroot
> <path>
> > > [--sector-size <bytes>]
> > >
> > >  DESCRIPTION
> > >      This command copies files or directories either
> > > @@ -408,13 +413,15 @@ DESCRIPTION
> > >
> > >      The -n option is used to specify the path to the native sysroot
> > >      containing the tools(parted and mtools) to use.
> > > +    The --sector-size option sets the sector size used for partition
> math
> > > +    (default is 512 bytes).
> > >  """
> > >
> > >  wic_rm_usage = """
> > >
> > >   Remove files or directories from the vfat or ext* partitions
> > >
> > > - usage: wic rm <image>:<partition><path> [--native-sysroot <path>]
> > > + usage: wic rm <image>:<partition><path> [--native-sysroot <path>]
> > > [--sector-size <bytes>]
> > >
> > >   This command  removes files or directories from the vfat or ext*
> > > partitions of
> > >   the partitioned image.
> > > @@ -466,6 +473,8 @@ DESCRIPTION
> > >
> > >      The -n option is used to specify the path to the native sysroot
> > >      containing the tools(parted and mtools) to use.
> > > +    The --sector-size option sets the sector size used for partition
> math
> > > +    (default is 512 bytes).
> > >
> > >      The -r option is used to remove directories and their contents
> > >      recursively,this only applies to ext* partition.
> > > diff --git a/scripts/lib/wic/partition.py
> b/scripts/lib/wic/partition.py
> > > index 8fed686e903e..df6e3271649b 100644
> > > --- a/scripts/lib/wic/partition.py
> > > +++ b/scripts/lib/wic/partition.py
> > > @@ -65,6 +65,50 @@ class Partition():
> > >
> > >          self.lineno = lineno
> > >          self.source_file = ""
> > > +        self.sector_size = 512
> > > +
> > > +    def _mkdosfs_extraopts(self):
> > > +        """
> > > +        Build mkdosfs extra options ensuring the CLI sector size is
> > > applied.
> > > +        """
> > > +        extraopts = self.mkfs_extraopts or ''
> > > +        tokens = []
> > > +        skip_next = False
> > > +        for tok in extraopts.split():
> > > +            if skip_next:
> > > +                skip_next = False
> > > +                continue
> > > +            if tok == '-S':
> > > +                skip_next = True
> > > +                continue
> > > +            if tok.startswith('-S'):
> > > +                continue
> > > +            tokens.append(tok)
> > > +        tokens.extend(['-S', str(self.sector_size)])
> > > +        return ' '.join(tokens).strip()
> > > +
> > > +    def _mkfs_ext_extraopts(self, base_opts):
> > > +        """
> > > +        Build mkfs.ext* extra options ensuring the CLI sector size is
> > > applied.
> > > +        """
> > > +        extraopts = self.mkfs_extraopts or base_opts
> > > +        # Only add an explicit block size when a non-default sector
> size
> > > is requested.
> > > +        if self.sector_size and self.sector_size != 512:
> > > +            tokens = []
> > > +            skip_next = False
> > > +            for tok in extraopts.split():
> > > +                if skip_next:
> > > +                    skip_next = False
> > > +                    continue
> > > +                if tok == '-b':
> > > +                    skip_next = True
> > > +                    continue
> > > +                if tok.startswith('-b'):
> > > +                    continue
> > > +                tokens.append(tok)
> > > +            tokens.extend(['-b', str(self.sector_size)])
> > > +            return ' '.join(tokens).strip()
> > > +        return extraopts
> > >
> > >      def get_extra_block_count(self, current_blocks):
> > >          """
> > > @@ -138,6 +182,8 @@ class Partition():
> > >          Prepare content for individual partitions, depending on
> > >          partition command parameters.
> > >          """
> > > +        # capture the sector size requested on the CLI for mkdosfs
> > > invocations
> > > +        self.sector_size = getattr(creator, 'sector_size', 512) or 512
> > >          self.updated_fstab_path = updated_fstab_path
> > >          if self.updated_fstab_path and not
> (self.fstype.startswith("ext")
> > > or self.fstype == "msdos"):
> > >              self.update_fstab_in_rootfs = True
> > > @@ -293,7 +339,7 @@ class Partition():
> > >          with open(rootfs, 'w') as sparse:
> > >              os.ftruncate(sparse.fileno(), rootfs_size * 1024)
> > >
> > > -        extraopts = self.mkfs_extraopts or "-F -i 8192"
> > > +        extraopts = self._mkfs_ext_extraopts("-F -i 8192")
> > >
> > >          # use hash_seed to generate reproducible ext4 images
> > >          (extraopts, pseudo) = self.get_hash_seed_ext4(extraopts,
> pseudo)
> > > @@ -401,7 +447,7 @@ class Partition():
> > >
> > >          size_str = ""
> > >
> > > -        extraopts = self.mkfs_extraopts or '-S 512'
> > > +        extraopts = self._mkdosfs_extraopts()
> > >
> > >          dosfs_cmd = "mkdosfs %s -i %s %s %s -C %s %d" % \
> > >                      (label_str, self.fsuuid, size_str, extraopts,
> rootfs,
> > > @@ -452,7 +498,7 @@ class Partition():
> > >          with open(rootfs, 'w') as sparse:
> > >              os.ftruncate(sparse.fileno(), size * 1024)
> > >
> > > -        extraopts = self.mkfs_extraopts or "-i 8192"
> > > +        extraopts = self._mkfs_ext_extraopts("-i 8192")
> > >
> > >          # use hash_seed to generate reproducible ext4 images
> > >          (extraopts, pseudo) = self.get_hash_seed_ext4(extraopts, None)
> > > @@ -498,7 +544,7 @@ class Partition():
> > >
> > >          size_str = ""
> > >
> > > -        extraopts = self.mkfs_extraopts or '-S 512'
> > > +        extraopts = self._mkdosfs_extraopts()
> > >
> > >          dosfs_cmd = "mkdosfs %s -i %s %s %s -C %s %d" % \
> > >                      (label_str, self.fsuuid, extraopts, size_str,
> rootfs,
> > > @@ -559,4 +605,3 @@ class Partition():
> > >                      logger.warn("%s Inodes (of size %d) are too
> small." %
> > >                                  (get_err_str(self), size))
> > >                  break
> > > -
> > > diff --git a/scripts/lib/wic/plugins/imager/direct.py
> > > b/scripts/lib/wic/plugins/imager/direct.py
> > > index ad922cfbf122..3adc6eee6280 100644
> > > --- a/scripts/lib/wic/plugins/imager/direct.py
> > > +++ b/scripts/lib/wic/plugins/imager/direct.py
> > > @@ -67,6 +67,7 @@ class DirectPlugin(ImagerPlugin):
> > >          self._image = None
> > >          self.ptable_format = self.ks.bootloader.ptable
> > >          self.parts = self.ks.partitions
> > > +        self.sector_size = options.sector_size or 512
> > >
> > >          # as a convenience, set source to the boot partition source
> > >          # instead of forcing it to be set via bootloader --source
> > > @@ -78,7 +79,7 @@ class DirectPlugin(ImagerPlugin):
> > >          image_path = self._full_path(self.workdir, self.parts[0].disk,
> > > "direct")
> > >          self._image = PartitionedImage(image_path, self.ptable_format,
> > > self.ks.bootloader.diskid,
> > >                                         self.parts,
> self.native_sysroot,
> > > -                                       options.extra_space)
> > > +                                       options.extra_space,
> > > self.sector_size)
> > >
> > >      def setup_workdir(self, workdir):
> > >          if workdir:
> > > @@ -294,15 +295,13 @@ MBR_OVERHEAD = 1
> > >  # Overhead of the GPT partitioning scheme
> > >  GPT_OVERHEAD = 34
> > >
> > > -# Size of a sector in bytes
> > > -SECTOR_SIZE = 512
> > > -
> > >  class PartitionedImage():
> > >      """
> > >      Partitioned image in a file.
> > >      """
> > >
> > > -    def __init__(self, path, ptable_format, disk_id, partitions,
> > > native_sysroot=None, extra_space=0):
> > > +    def __init__(self, path, ptable_format, disk_id, partitions,
> > > native_sysroot=None, extra_space=0,
> > > +                 sector_size=512):
> > >          self.path = path  # Path to the image file
> > >          self.numpart = 0  # Number of allocated partitions
> > >          self.realpart = 0 # Number of partitions in the partition
> table
> > > @@ -332,14 +331,7 @@ class PartitionedImage():
> > >          self.partitions = partitions
> > >          self.partimages = []
> > >          # Size of a sector used in calculations
> > > -        sector_size_str = get_bitbake_var('WIC_SECTOR_SIZE')
> > > -        if sector_size_str is not None:
> > > -            try:
> > > -                self.sector_size = int(sector_size_str)
> > > -            except ValueError:
> > > -                self.sector_size = SECTOR_SIZE
> > > -        else:
> > > -            self.sector_size = SECTOR_SIZE
> > > +        self.sector_size = sector_size or 512
> > >
> > >          self.native_sysroot = native_sysroot
> > >          num_real_partitions = len([p for p in self.partitions if not
> > > p.no_table])
> > > diff --git a/scripts/lib/wic/plugins/source/bootimg_efi.py
> > > b/scripts/lib/wic/plugins/source/bootimg_efi.py
> > > index 430b0a4b023a..864d6898fc9d 100644
> > > --- a/scripts/lib/wic/plugins/source/bootimg_efi.py
> > > +++ b/scripts/lib/wic/plugins/source/bootimg_efi.py
> > > @@ -415,8 +415,9 @@ class BootimgEFIPlugin(SourcePlugin):
> > >
> > >          label = part.label if part.label else "ESP"
> > >
> > > -        dosfs_cmd = "mkdosfs -v -n %s -i %s -C %s %d" % \
> > > -                    (label, part.fsuuid, bootimg, blocks)
> > > +        sector_size = getattr(creator, 'sector_size', 512) or 512
> > > +        dosfs_cmd = "mkdosfs -v -n %s -i %s -S %d -C %s %d" % \
> > > +                    (label, part.fsuuid, sector_size, bootimg, blocks)
> > >          exec_native_cmd(dosfs_cmd, native_sysroot)
> > >          logger.debug("mkdosfs:\n%s" % (str(out)))
> > >
> > > diff --git a/scripts/lib/wic/plugins/source/bootimg_pcbios.py
> > > b/scripts/lib/wic/plugins/source/bootimg_pcbios.py
> > > index a7cc5d12c620..32edac47fa09 100644
> > > --- a/scripts/lib/wic/plugins/source/bootimg_pcbios.py
> > > +++ b/scripts/lib/wic/plugins/source/bootimg_pcbios.py
> > > @@ -132,7 +132,7 @@ class BootimgPcbiosPlugin(SourcePlugin):
> > >                  cls._do_prepare_grub(part, cr_workdir, oe_builddir,
> > >                                  kernel_dir, rootfs_dir,
> native_sysroot)
> > >              elif source_params['loader-bios'] == 'syslinux':
> > > -                cls._do_prepare_syslinux(part, cr_workdir,
> bootimg_dir,
> > > +                cls._do_prepare_syslinux(part, creator, cr_workdir,
> > > bootimg_dir,
> > >                                      kernel_dir, native_sysroot)
> > >              else:
> > >                  raise WicError("unrecognized bootimg_pcbios loader:
> %s" %
> > > source_params['loader-bios'])
> > > @@ -142,7 +142,7 @@ class BootimgPcbiosPlugin(SourcePlugin):
> > >          except KeyError:
> > >              # Required by do_install_disk
> > >              cls.loader = 'syslinux'
> > > -            cls._do_prepare_syslinux(part, cr_workdir, bootimg_dir,
> > > +            cls._do_prepare_syslinux(part, creator, cr_workdir,
> > > bootimg_dir,
> > >                                  kernel_dir, native_sysroot)
> > >
> > >      @classmethod
> > > @@ -240,7 +240,7 @@ class BootimgPcbiosPlugin(SourcePlugin):
> > >          cfg.close()
> > >
> > >      @classmethod
> > > -    def _do_prepare_syslinux(cls, part, cr_workdir, bootimg_dir,
> > > +    def _do_prepare_syslinux(cls, part, creator, cr_workdir,
> bootimg_dir,
> > >                               kernel_dir, native_sysroot):
> > >          """
> > >          Called to do the actual content population for a partition
> i.e. it
> > > @@ -292,8 +292,9 @@ class BootimgPcbiosPlugin(SourcePlugin):
> > >
> > >          label = part.label if part.label else "boot"
> > >
> > > -        dosfs_cmd = "mkdosfs -n %s -i %s -S 512 -C %s %d" % \
> > > -                    (label, part.fsuuid, bootimg, blocks)
> > > +        sector_size = getattr(creator, 'sector_size', 512) or 512
> > > +        dosfs_cmd = "mkdosfs -n %s -i %s -S %d -C %s %d" % \
> > > +                    (label, part.fsuuid, sector_size, bootimg, blocks)
> > >          exec_native_cmd(dosfs_cmd, native_sysroot)
> > >
> > >          mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (bootimg, hdddir)
> > > diff --git a/scripts/lib/wic/plugins/source/isoimage_isohybrid.py
> > > b/scripts/lib/wic/plugins/source/isoimage_isohybrid.py
> > > index fdab188db1f8..9195ef5f3184 100644
> > > --- a/scripts/lib/wic/plugins/source/isoimage_isohybrid.py
> > > +++ b/scripts/lib/wic/plugins/source/isoimage_isohybrid.py
> > > @@ -367,8 +367,9 @@ class IsoImagePlugin(SourcePlugin):
> > >
> > >              esp_label = source_params.get('esp_label', 'EFIimg')
> > >
> > > -            dosfs_cmd = 'mkfs.vfat -n \'%s\' -S 512 -C %s %d' \
> > > -                        % (esp_label, bootimg, blocks)
> > > +            sector_size = getattr(creator, 'sector_size', 512) or 512
> > > +            dosfs_cmd = "mkfs.vfat -n '%s' -S %d -C %s %d" % \
> > > +                        (esp_label, sector_size, bootimg, blocks)
> > >              exec_native_cmd(dosfs_cmd, native_sysroot)
> > >
> > >              mmd_cmd = "mmd -i %s ::/EFI" % bootimg
> > > diff --git a/scripts/wic b/scripts/wic
> > > index 9137208f5e8f..0cef84ef630c 100755
> > > --- a/scripts/wic
> > > +++ b/scripts/wic
> > > @@ -376,6 +376,8 @@ def wic_init_parser_create(subparser):
> > >                        default="direct", help="the wic imager plugin")
> > >      subparser.add_argument("--extra-space", type=int,
> dest="extra_space",
> > >                        default=0, help="additional free disk space to
> add
> > > to the image")
> > > +    subparser.add_argument("--sector-size", dest="sector_size",
> type=int,
> > > default=512,
> > > +                      help="sector size in bytes (default: 512)")
> > >      return
> > >
> > >
> > > @@ -413,6 +415,8 @@ def imgtype(arg):
> > >  def wic_init_parser_ls(subparser):
> > >      subparser.add_argument("path", type=imgtype,
> > >                          help="image spec: <image>[:<vfat
> > > partition>[<path>]]")
> > > +    subparser.add_argument("--sector-size", dest="sector_size",
> type=int,
> > > default=512,
> > > +                        help="sector size in bytes (default: 512)")
> > >      subparser.add_argument("-n", "--native-sysroot",
> > >                          help="path to the native sysroot containing
> the
> > > tools")
> > >      subparser.add_argument("-e", "--image-name", dest="image_name",
> > > @@ -433,6 +437,8 @@ def wic_init_parser_cp(subparser):
> > >                          help="image spec: <image>:<vfat
> > > partition>[<path>] or <file>")
> > >      subparser.add_argument("dest",
> > >                          help="image spec: <image>:<vfat
> > > partition>[<path>] or <file>")
> > > +    subparser.add_argument("--sector-size", dest="sector_size",
> type=int,
> > > default=512,
> > > +                        help="sector size in bytes (default: 512)")
> > >      subparser.add_argument("-n", "--native-sysroot",
> > >                          help="path to the native sysroot containing
> the
> > > tools")
> > >      subparser.add_argument("-e", "--image-name", dest="image_name",
> > > @@ -445,6 +451,8 @@ def wic_init_parser_cp(subparser):
> > >  def wic_init_parser_rm(subparser):
> > >      subparser.add_argument("path", type=imgpathtype,
> > >                          help="path: <image>:<vfat partition><path>")
> > > +    subparser.add_argument("--sector-size", dest="sector_size",
> type=int,
> > > default=512,
> > > +                        help="sector size in bytes (default: 512)")
> > >      subparser.add_argument("-n", "--native-sysroot",
> > >                          help="path to the native sysroot containing
> the
> > > tools")
> > >      subparser.add_argument("-r", dest="recursive_delete",
> > > action="store_true", default=False,
> > > --
> > > 2.51.0
> > >
> > >
> > > 
> > >
> > >
> >
> > --
> > - Thou shalt not follow the NULL pointer, for chaos and madness await
> thee
> > at its end
> > - "Use the force Harry" - Gandalf, Star Trek II
>


-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await thee
at its end
- "Use the force Harry" - Gandalf, Star Trek II
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#231215): 
https://lists.openembedded.org/g/openembedded-core/message/231215
Mute This Topic: https://lists.openembedded.org/mt/117833550/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to