From: Quirin Gylstorff <Quirin.Gylstorff@siemens.com>
To: jan.kiszka@siemens.com, cip-dev@lists.cip-project.org
Subject: [cip-dev][isar-cip-core][PATCH v3] wic/plugins/efibootguard*: Take --size and --fixed-size into account
Date: Wed, 8 May 2024 15:55:15 +0200 [thread overview]
Message-ID: <20240508135539.2780114-1-Quirin.Gylstorff@siemens.com> (raw)
From: Quirin Gylstorff <quirin.gylstorff@siemens.com>
This fixes the issue that wic arguments --size and --fixed-size
are not correctly interpreted.
This fixes issue #104.
Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com>
---
Changes v3:
- remove unnecesary setting of FAT-Size(-F) and sector size(-S 512)
the sector size default is 512 and as FAT size should be caluclate
according to the partition size.
Changes v2:
- replace size calculation with part.prepare_rootfs_msdos
.../wic/plugins/source/efibootguard-boot.py | 34 ++++---------------
.../wic/plugins/source/efibootguard-efi.py | 30 ++--------------
2 files changed, 9 insertions(+), 55 deletions(-)
diff --git a/scripts/lib/wic/plugins/source/efibootguard-boot.py b/scripts/lib/wic/plugins/source/efibootguard-boot.py
index 4e3aefb..2b06fd1 100644
--- a/scripts/lib/wic/plugins/source/efibootguard-boot.py
+++ b/scripts/lib/wic/plugins/source/efibootguard-boot.py
@@ -136,40 +136,20 @@ class EfibootguardBootPlugin(SourcePlugin):
msger.error("file %s not found in directory %s",
boot_file, kernel_dir)
exit(1)
- cls._create_img(part_rootfs_dir, part, cr_workdir)
+ cls._create_img(part_rootfs_dir, part, cr_workdir,
+ native_sysroot, oe_builddir)
@classmethod
- def _create_img(cls, part_rootfs_dir, part, cr_workdir):
- # Write label as utf-16le to EFILABEL file
+ def _create_img(cls, part_rootfs_dir, part, cr_workdir,
+ native_sysroot, oe_builddir):
+ # Write label as utf-16le to EFILABEL file
with open("%s/EFILABEL" % part_rootfs_dir, 'wb') as filedescriptor:
filedescriptor.write(part.label.upper().encode("utf-16le"))
- du_cmd = "du --apparent-size -ks %s" % part_rootfs_dir
- blocks = int(exec_cmd(du_cmd).split()[0])
-
- extra_blocks = part.get_extra_block_count(blocks)
- if extra_blocks < BOOTDD_EXTRA_SPACE:
- extra_blocks = BOOTDD_EXTRA_SPACE
-
- blocks += extra_blocks
- blocks = blocks + (16 - (blocks % 16))
-
- msger.debug("Added %d extra blocks to %s to get to %d total blocks",
- extra_blocks, part.mountpoint, blocks)
-
- # dosfs image, created by mkdosfs
bootimg = "%s/%s.%s.img" % (cr_workdir, part.label, part.lineno)
- dosfs_cmd = "mkdosfs -F 16 -S 512 -n %s -C %s %d -i %s" % \
- (part.label.upper(), bootimg, blocks, part.fsuuid)
- exec_cmd(dosfs_cmd)
-
- mcopy_cmd = "mcopy -v -i %s -s %s/* ::/" % (bootimg, part_rootfs_dir)
- exec_cmd(mcopy_cmd, True)
-
- chmod_cmd = "chmod 644 %s" % bootimg
- exec_cmd(chmod_cmd)
-
+ part.prepare_rootfs_msdos(bootimg, cr_workdir, oe_builddir,
+ part_rootfs_dir, native_sysroot, None)
du_cmd = "du -Lbks %s" % bootimg
bootimg_size = int(exec_cmd(du_cmd).split()[0])
diff --git a/scripts/lib/wic/plugins/source/efibootguard-efi.py b/scripts/lib/wic/plugins/source/efibootguard-efi.py
index e82e990..48f7523 100644
--- a/scripts/lib/wic/plugins/source/efibootguard-efi.py
+++ b/scripts/lib/wic/plugins/source/efibootguard-efi.py
@@ -100,35 +100,9 @@ class EfibootguardEFIPlugin(SourcePlugin):
name)
exec_cmd(cp_to_deploy_cmd, True)
- du_cmd = "du --apparent-size -ks %s" % part_rootfs_dir
- blocks = int(exec_cmd(du_cmd).split()[0])
-
- extra_blocks = part.get_extra_block_count(blocks)
- if extra_blocks < BOOTDD_EXTRA_SPACE:
- extra_blocks = BOOTDD_EXTRA_SPACE
- blocks += extra_blocks
- blocks = blocks + (16 - (blocks % 16))
-
- msger.debug("Added %d extra blocks to %s to get to %d total blocks",
- extra_blocks, part.mountpoint, blocks)
-
- # dosfs image, created by mkdosfs
efi_part_image = "%s/%s.%s.img" % (cr_workdir, part.label, part.lineno)
-
- dosfs_cmd = "mkdosfs -S 512 -n %s -C %s %d -i %s" % \
- (part.label.upper(), efi_part_image, blocks, part.fsuuid)
- exec_cmd(dosfs_cmd)
-
- # mtools for buster have problems with resursive mcopy.
- # Therefore, create the target dir via mmd first.
- mmd_cmd = "mmd -i %s ::/EFI ::/EFI/BOOT" % (efi_part_image)
- exec_cmd(mmd_cmd, True)
- mcopy_cmd = "mcopy -v -i %s -s %s/EFI/BOOT/* ::/EFI/BOOT" % \
- (efi_part_image, part_rootfs_dir)
- exec_cmd(mcopy_cmd, True)
-
- chmod_cmd = "chmod 644 %s" % efi_part_image
- exec_cmd(chmod_cmd)
+ part.prepare_rootfs_msdos(efi_part_image, cr_workdir, oe_builddir,
+ part_rootfs_dir, native_sysroot, None)
du_cmd = "du -Lbks %s" % efi_part_image
efi_part_image_size = int(exec_cmd(du_cmd).split()[0])
--
2.43.0
next reply other threads:[~2024-05-08 13:55 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-08 13:55 Quirin Gylstorff [this message]
2024-05-08 17:31 ` [cip-dev][isar-cip-core][PATCH v3] wic/plugins/efibootguard*: Take --size and --fixed-size into account Jan Kiszka
2024-05-08 19:56 ` Jan Kiszka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240508135539.2780114-1-Quirin.Gylstorff@siemens.com \
--to=quirin.gylstorff@siemens.com \
--cc=cip-dev@lists.cip-project.org \
--cc=jan.kiszka@siemens.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).