* [PATCH v3 1/2] runqemu: remove setting of mem on kernel command line for certain systems
@ 2025-10-06 14:24 Jon Mason
2025-10-06 14:24 ` [PATCH v3 2/2] runqemu: resize rootfs image to power of 2 for SD or pflash Jon Mason
0 siblings, 1 reply; 2+ messages in thread
From: Jon Mason @ 2025-10-06 14:24 UTC (permalink / raw)
To: openembedded-core
Some emulated hardware will not boot if mem is set on the kernel command
line (all of the Raspberry Pi machines seemed to fail with this set,
possibly many others). Also, it is not necessary if the device tree
file is present, as that _should_ have the memory size specified in it.
Add a check for QB_DTB and don't set mem in the kernel command line if
present.
Signed-off-by: Jon Mason <jon.mason@arm.com>
---
scripts/runqemu | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/runqemu b/scripts/runqemu
index 32c7a2aab3b5..a8144aa68c3d 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -884,7 +884,7 @@ to your build configuration.
self.set('QB_MEM', qb_mem)
mach = self.get('MACHINE')
- if not mach.startswith(('qemumips', 'qemux86', 'qemuloongarch64')):
+ if not mach.startswith(('qemumips', 'qemux86', 'qemuloongarch64')) and self.get('QB_DTB') == "":
self.kernel_cmdline_script += ' mem=%s' % self.get('QB_MEM').replace('-m','').strip() + 'M'
self.qemu_opt_script += ' %s' % self.get('QB_MEM')
--
2.50.1 (Apple Git-155)
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [PATCH v3 2/2] runqemu: resize rootfs image to power of 2 for SD or pflash
2025-10-06 14:24 [PATCH v3 1/2] runqemu: remove setting of mem on kernel command line for certain systems Jon Mason
@ 2025-10-06 14:24 ` Jon Mason
0 siblings, 0 replies; 2+ messages in thread
From: Jon Mason @ 2025-10-06 14:24 UTC (permalink / raw)
To: openembedded-core
QEMU requires that SD and pflash images are sized to be a power of 2
(e.g., 32M, 64M, etc). So, if the image being used is not a power of 2
and it's being used for SD or pflash, increase it to the next power of 2
size via the truncate command.
This might not be an actual spec requirement, and is being investigated
in https://gitlab.com/qemu-project/qemu/-/issues/1754
Signed-off-by: Jon Mason <jon.mason@arm.com>
---
scripts/runqemu | 25 ++++++++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/scripts/runqemu b/scripts/runqemu
index a8144aa68c3d..21d75ad8a319 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -421,8 +421,27 @@ class BaseConfig(object):
else:
raise RunQemuError("Unknown path arg %s" % p)
- def uncompress_rootfs(self):
- """Decompress ZST rootfs image if needed"""
+ def rootfs_fixups(self):
+
+ """Decompress and/or resize the rootfs image, if needed"""
+ qb_rootfs_opt = self.get('QB_ROOTFS_OPT')
+
+ # Check if sdcard size is a power of 2, as that is currently a requirement for qemu
+ # See https://gitlab.com/qemu-project/qemu/-/issues/1754
+ rootfs_size = os.path.getsize(self.rootfs)
+ rootfs_size_pwr2 = 1 << (rootfs_size - 1).bit_length()
+ if ("if=sd" in qb_rootfs_opt or "if=pflash" in qb_rootfs_opt) and rootfs_size != rootfs_size_pwr2:
+ logger.info("Using sd-card or pflash and is not power of 2. File size %d, power of 2 size %d" %(rootfs_size, rootfs_size_pwr2))
+ logger.info("Attempting to use truncate to correct this.")
+
+ # Ensure the 'truncate' tool is installed before attempting to make a power of 2.
+ if not shutil.which('truncate'):
+ raise RunQemuError(f"'truncate' is required to make {self.rootfs} a power of 2 in size but was not found in PATH")
+ try:
+ subprocess.check_call(['truncate', '-s', str(rootfs_size_pwr2), self.rootfs])
+ except subprocess.CalledProcessError as e:
+ raise RunQemuError(f"Failed to make {self.rootfs} power of 2 in size: {e}")
+
if not self.rootfs or not self.fstype.endswith('.zst'):
return
@@ -1808,7 +1827,7 @@ def main():
config.check_args()
config.read_qemuboot()
config.check_and_set()
- config.uncompress_rootfs()
+ config.rootfs_fixups()
# Check whether the combos is valid or not
config.validate_combos()
config.print_config()
--
2.50.1 (Apple Git-155)
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-10-06 14:24 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-06 14:24 [PATCH v3 1/2] runqemu: remove setting of mem on kernel command line for certain systems Jon Mason
2025-10-06 14:24 ` [PATCH v3 2/2] runqemu: resize rootfs image to power of 2 for SD or pflash Jon Mason
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox