diff options
-rw-r--r-- | scripts/lib/wic/imager/direct.py | 14 | ||||
-rw-r--r-- | scripts/lib/wic/partition.py | 3 |
2 files changed, 13 insertions, 4 deletions
diff --git a/scripts/lib/wic/imager/direct.py b/scripts/lib/wic/imager/direct.py index ffde232c2b..123a07817b 100644 --- a/scripts/lib/wic/imager/direct.py +++ b/scripts/lib/wic/imager/direct.py @@ -26,6 +26,7 @@ import os import shutil +import uuid from wic import msger from wic.utils.oe.misc import get_bitbake_var @@ -242,12 +243,23 @@ class DirectImageCreator(BaseImageCreator): self.__image = Image(self.native_sysroot) - for part in parts: + disk_ids = {} + for num, part in enumerate(parts, 1): # as a convenience, set source to the boot partition source # instead of forcing it to be set via bootloader --source if not self.ks.bootloader.source and part.mountpoint == "/boot": self.ks.bootloader.source = part.source + # generate parition UUIDs + if not part.uuid and part.use_uuid: + if self.ptable_format == 'gpt': + part.uuid = str(uuid.uuid4()) + else: # msdos partition table + if part.disk not in disk_ids: + disk_ids[part.disk] = int.from_bytes(os.urandom(4), 'little') + disk_id = disk_ids[part.disk] + part.uuid = '%0x-%02d' % (disk_id, self.__get_part_num(num, parts)) + fstab_path = self._write_fstab(self.rootfs_dir.get("ROOTFS_DIR")) shutil.rmtree(self.workdir) diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py index 30cd320a30..90f65a1e39 100644 --- a/scripts/lib/wic/partition.py +++ b/scripts/lib/wic/partition.py @@ -26,7 +26,6 @@ import os import tempfile -import uuid from wic.utils.oe.misc import msger, parse_sourceparams from wic.utils.oe.misc import exec_cmd, exec_native_cmd @@ -60,8 +59,6 @@ class Partition(): self.system_id = args.system_id self.use_uuid = args.use_uuid self.uuid = args.uuid - if args.use_uuid and not self.uuid: - self.uuid = str(uuid.uuid4()) self.lineno = lineno self.source_file = "" |