Since Qemu 5.1, SD card images must have a size that are a power of
two. While some filesystem (such as ext2/3/4) allow to specify the
expected size of the filesystem, others such as SquashFS do not have
this capability.
We were already extending the size of such images to the next 1 MB
boundary using "truncate -s %1M", but that is no longer sufficient. So
instead, we introduce a helper function that extends the size of an
image to the next power of two.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
[yann.morin.1998@free.fr:
- use f.trunctate() rather than subprocess.call([truncate,...])
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
continue
return m.group(1)
return None
+
+
+def img_round_power2(img):
+ """
+ Rounds up the size of an image file to the next power of 2
+ """
+ sz = os.stat(img).st_size
+ pow2 = 1
+ while pow2 < sz:
+ pow2 = pow2 << 1
+ with open(img, 'ab') as f:
+ f.truncate(pow2)