mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 12:59:02 +02:00
wic/direct/kparser: ensure fsuuid for vfat and msdos align with format
vfat/msdos filesystem should have fsuuid in format 0xYYYYYYYY where "0x" in front follow with 8 hexadecimal number in uppercase. In wic, when using custom fsuuid for vfat/msdos partition in wks, it is able to set the value in any length, with or without leading "0x". This can cause fsuuid missaligned when fstab updates, fstab expect exactly 10 character fsuuid for vfat/msdos partition and all in uppercase. if custom fsuuid for vfat/msdos is set, check the length and format, error if it exceed the format size. Amend it so it is align with format 0xYYYYYYYY. This is done before image create and fstab update to ensure the fsuuid are same in all followup process. if custom fsuuid length less than expected, fill in "0". [YOCTO #14161] (From OE-Core rev: d9686ae511ef10a504becfd81bfe296b788e1456) Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
0e80f23879
commit
3fa6a47aeb
|
@ -229,6 +229,23 @@ class KickStart():
|
|||
err = "%s:%d: SquashFS does not support LABEL" \
|
||||
% (confpath, lineno)
|
||||
raise KickStartError(err)
|
||||
if parsed.fstype == 'msdos' or parsed.fstype == 'vfat':
|
||||
if parsed.fsuuid:
|
||||
if parsed.fsuuid.upper().startswith('0X'):
|
||||
if len(parsed.fsuuid) > 10:
|
||||
err = "%s:%d: fsuuid %s given in wks kickstart file " \
|
||||
"exceeds the length limit for %s filesystem. " \
|
||||
"It should be in the form of a 32 bit hexadecimal" \
|
||||
"number (for example, 0xABCD1234)." \
|
||||
% (confpath, lineno, parsed.fsuuid, parsed.fstype)
|
||||
raise KickStartError(err)
|
||||
elif len(parsed.fsuuid) > 8:
|
||||
err = "%s:%d: fsuuid %s given in wks kickstart file " \
|
||||
"exceeds the length limit for %s filesystem. " \
|
||||
"It should be in the form of a 32 bit hexadecimal" \
|
||||
"number (for example, 0xABCD1234)." \
|
||||
% (confpath, lineno, parsed.fsuuid, parsed.fstype)
|
||||
raise KickStartError(err)
|
||||
if parsed.use_label and not parsed.label:
|
||||
err = "%s:%d: Must set the label with --label" \
|
||||
% (confpath, lineno)
|
||||
|
|
|
@ -343,6 +343,13 @@ class PartitionedImage():
|
|||
part.fsuuid = '0x' + str(uuid.uuid4())[:8].upper()
|
||||
else:
|
||||
part.fsuuid = str(uuid.uuid4())
|
||||
else:
|
||||
#make sure the fsuuid for vfat/msdos align with format 0xYYYYYYYY
|
||||
if part.fstype == 'vfat' or part.fstype == 'msdos':
|
||||
if part.fsuuid.upper().startswith("0X"):
|
||||
part.fsuuid = '0x' + part.fsuuid.upper()[2:].rjust(8,"0")
|
||||
else:
|
||||
part.fsuuid = '0x' + part.fsuuid.upper().rjust(8,"0")
|
||||
|
||||
def prepare(self, imager):
|
||||
"""Prepare an image. Call prepare method of all image partitions."""
|
||||
|
|
Loading…
Reference in New Issue
Block a user