summaryrefslogtreecommitdiffstats
path: root/scripts/lib/wic/imager/direct.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/lib/wic/imager/direct.py')
-rw-r--r--scripts/lib/wic/imager/direct.py14
1 files changed, 13 insertions, 1 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 @@
26 26
27import os 27import os
28import shutil 28import shutil
29import uuid
29 30
30from wic import msger 31from wic import msger
31from wic.utils.oe.misc import get_bitbake_var 32from wic.utils.oe.misc import get_bitbake_var
@@ -242,12 +243,23 @@ class DirectImageCreator(BaseImageCreator):
242 243
243 self.__image = Image(self.native_sysroot) 244 self.__image = Image(self.native_sysroot)
244 245
245 for part in parts: 246 disk_ids = {}
247 for num, part in enumerate(parts, 1):
246 # as a convenience, set source to the boot partition source 248 # as a convenience, set source to the boot partition source
247 # instead of forcing it to be set via bootloader --source 249 # instead of forcing it to be set via bootloader --source
248 if not self.ks.bootloader.source and part.mountpoint == "/boot": 250 if not self.ks.bootloader.source and part.mountpoint == "/boot":
249 self.ks.bootloader.source = part.source 251 self.ks.bootloader.source = part.source
250 252
253 # generate parition UUIDs
254 if not part.uuid and part.use_uuid:
255 if self.ptable_format == 'gpt':
256 part.uuid = str(uuid.uuid4())
257 else: # msdos partition table
258 if part.disk not in disk_ids:
259 disk_ids[part.disk] = int.from_bytes(os.urandom(4), 'little')
260 disk_id = disk_ids[part.disk]
261 part.uuid = '%0x-%02d' % (disk_id, self.__get_part_num(num, parts))
262
251 fstab_path = self._write_fstab(self.rootfs_dir.get("ROOTFS_DIR")) 263 fstab_path = self._write_fstab(self.rootfs_dir.get("ROOTFS_DIR"))
252 264
253 shutil.rmtree(self.workdir) 265 shutil.rmtree(self.workdir)