wic: Introduce --fsuuid and have --use-uuid make use of UUID too

First, allow for wic to be given a filesystem UUID to be used when
creating a filesystem.  When not provided, wic will generate the UUID to
be used.  Next, when --use-uuid is passed, we update the fstab to mount
things via UUID (and if not found, then use PARTUUID) as UUID is more
portable.

(From OE-Core rev: 9256b8799495634ee8aee5d16ff71bd6e6e25ed4)

Signed-off-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Tom Rini
2017-12-13 22:20:25 -05:00
committed by Richard Purdie
parent 20748d8ddc
commit 9ebc830196
6 changed files with 47 additions and 19 deletions

View File

@@ -141,7 +141,15 @@ class DirectPlugin(ImagerPlugin):
continue
if part.use_uuid:
device_name = "PARTUUID=%s" % part.uuid
if part.fsuuid:
# FAT UUID is different from others
if len(part.fsuuid) == 10:
device_name = "UUID=%s-%s" % \
(part.fsuuid[2:6], part.fsuuid[6:])
else:
device_name = "UUID=%s" % part.fsuuid
else:
device_name = "PARTUUID=%s" % part.uuid
else:
# mmc device partitions are named mmcblk0p1, mmcblk0p2..
prefix = 'p' if part.disk.startswith('mmcblk') else ''
@@ -334,13 +342,18 @@ class PartitionedImage():
continue
part.realnum = realnum
# generate parition UUIDs
# generate parition and filesystem UUIDs
for part in self.partitions:
if not part.uuid and part.use_uuid:
if self.ptable_format == 'gpt':
part.uuid = str(uuid.uuid4())
else: # msdos partition table
part.uuid = '%08x-%02d' % (self.identifier, part.realnum)
if not part.fsuuid:
if part.fstype == 'vfat' or part.fstype == 'msdos':
part.fsuuid = '0x' + str(uuid.uuid4())[:8].upper()
else:
part.fsuuid = str(uuid.uuid4())
def prepare(self, imager):
"""Prepare an image. Call prepare method of all image partitions."""

View File

@@ -240,7 +240,8 @@ class BootimgEFIPlugin(SourcePlugin):
# dosfs image, created by mkdosfs
bootimg = "%s/boot.img" % cr_workdir
dosfs_cmd = "mkdosfs -n efi -C %s %d" % (bootimg, blocks)
dosfs_cmd = "mkdosfs -n efi -i %s -C %s %d" % \
(part.fsuuid, bootimg, blocks)
exec_native_cmd(dosfs_cmd, native_sysroot)
mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (bootimg, hdddir)

View File

@@ -186,7 +186,8 @@ class BootimgPcbiosPlugin(SourcePlugin):
# dosfs image, created by mkdosfs
bootimg = "%s/boot%s.img" % (cr_workdir, part.lineno)
dosfs_cmd = "mkdosfs -n boot -S 512 -C %s %d" % (bootimg, blocks)
dosfs_cmd = "mkdosfs -n boot -i %s -S 512 -C %s %d" % \
(part.fsuuid, bootimg, blocks)
exec_native_cmd(dosfs_cmd, native_sysroot)
mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (bootimg, hdddir)