[OE-core] [PATCH 3/4] wic: Make disk partition size consistently computed
Jason Wessel
jason.wessel at windriver.com
Thu Aug 8 12:55:08 UTC 2019
When using different root directories with a wks file wic is using the
value from the original ROOTFS_SIZE which is not correct. Example:
Number Start End Size File system Name Flags
1 20.5kB 318MB 318MB fat16 otaefi legacy_boot, msftdata
2 318MB 636MB 318MB ext4 otaboot
3 636MB 1709MB 1074MB ext4 otaroot
4 1709MB 2027MB 318MB ext4 otaboot_b
5 2027MB 3101MB 1074MB ext4 otaroot_b
6 3101MB 5249MB 2147MB ext4 fluxdata
The partitions 1, 2, and 3 incorrectly inherit the size, instead of using
a computed size. With the patch applied it is working properly:
Number Start End Size File system Name Flags
1 20.5kB 14.5MB 14.5MB fat16 otaefi legacy_boot, msftdata
2 14.5MB 65.3MB 50.8MB ext4 otaboot
3 65.3MB 1139MB 1074MB ext4 otaroot
4 1139MB 1190MB 50.8MB ext4 otaboot_b
5 1190MB 2264MB 1074MB ext4 otaroot_b
6 2264MB 4411MB 2147MB ext4 fluxdata
As for the removal of the bb.warn, if the size is not specified, it is
not something to warn the end user about. Some of my default images
make use of the head room + a computed directory size or while generating
images.
Signed-off-by: Jason Wessel <jason.wessel at windriver.com>
---
scripts/lib/wic/partition.py | 18 ++++++------------
1 file changed, 6 insertions(+), 12 deletions(-)
diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py
index f427c8101b..2a71d7b1d6 100644
--- a/scripts/lib/wic/partition.py
+++ b/scripts/lib/wic/partition.py
@@ -212,19 +212,13 @@ class Partition():
if os.path.isfile(rootfs):
os.remove(rootfs)
- # Get rootfs size from bitbake variable if it's not set in .ks file
+ # If size is not specified compute it from the rootfs_dir size
if not self.size and real_rootfs:
- # Bitbake variable ROOTFS_SIZE is calculated in
- # Image._get_rootfs_size method from meta/lib/oe/image.py
- # using IMAGE_ROOTFS_SIZE, IMAGE_ROOTFS_ALIGNMENT,
- # IMAGE_OVERHEAD_FACTOR and IMAGE_ROOTFS_EXTRA_SPACE
- rsize_bb = get_bitbake_var('ROOTFS_SIZE')
- if rsize_bb:
- logger.warning('overhead-factor was specified, but size was not,'
- ' so bitbake variables will be used for the size.'
- ' In this case both IMAGE_OVERHEAD_FACTOR and '
- '--overhead-factor will be applied')
- self.size = int(round(float(rsize_bb)))
+ # Use the same logic found in get_rootfs_size()
+ # from meta/classes/image.bbclass
+ du_cmd = "du -ks %s" % rootfs_dir
+ out = exec_cmd(du_cmd)
+ self.size = int(out.split()[0])
prefix = "ext" if self.fstype.startswith("ext") else self.fstype
method = getattr(self, "prepare_rootfs_" + prefix)
--
2.21.0
More information about the Openembedded-core
mailing list