From 51638edaa00befaed58e2def255d46ae44d9234f Mon Sep 17 00:00:00 2001 From: Kevin Hao Date: Wed, 12 Sep 2018 08:44:46 +0800 Subject: wic: Introduce the --use-label partition parameter We can use this parameter to make the wic use the label to name a partition in /etc/fstab. Signed-off-by: Kevin Hao Reviewed-by: Tom Rini Signed-off-by: Richard Purdie --- scripts/lib/wic/help.py | 18 +++++++++++++----- scripts/lib/wic/ksparser.py | 14 ++++++++++++-- scripts/lib/wic/partition.py | 1 + scripts/lib/wic/plugins/imager/direct.py | 2 ++ 4 files changed, 28 insertions(+), 7 deletions(-) (limited to 'scripts') diff --git a/scripts/lib/wic/help.py b/scripts/lib/wic/help.py index 842b868a57..64f08052c7 100644 --- a/scripts/lib/wic/help.py +++ b/scripts/lib/wic/help.py @@ -866,11 +866,11 @@ DESCRIPTION Partitions with a specified will be automatically mounted. This is achieved by wic adding entries to the fstab during image generation. In order for a valid fstab to be generated one of the - --ondrive, --ondisk or --use-uuid partition options must be used for - each partition that specifies a mountpoint. Note that with --use-uuid - and non-root , including swap, the mount program must - understand the PARTUUID syntax. This currently excludes the busybox - versions of these applications. + --ondrive, --ondisk, --use-uuid or --use-label partition options must + be used for each partition that specifies a mountpoint. Note that with + --use-{uuid,label} and non-root , including swap, the mount + program must understand the PARTUUID or LABEL syntax. This currently + excludes the busybox versions of these applications. The following are supported 'part' options: @@ -945,6 +945,14 @@ DESCRIPTION label is already in use by another filesystem, a new label is created for the partition. + --use-label: This option is specific to wic. It makes wic to use the + label in /etc/fstab to specify a partition. If the + --use-label and --use-uuid are used at the same time, + we prefer the uuid because it is less likely to cause + name confliction. We don't support using this parameter + on the root partition since it requires an initramfs to + parse this value and we do not currently support that. + --active: Marks the partition as active. --align (in KBytes): This option is specific to wic and says diff --git a/scripts/lib/wic/ksparser.py b/scripts/lib/wic/ksparser.py index a5d29189b9..7e5a9c5092 100644 --- a/scripts/lib/wic/ksparser.py +++ b/scripts/lib/wic/ksparser.py @@ -141,6 +141,7 @@ class KickStart(): 'squashfs', 'vfat', 'msdos', 'swap')) part.add_argument('--mkfs-extraopts', default='') part.add_argument('--label') + part.add_argument('--use-label', action='store_true') part.add_argument('--no-table', action='store_true') part.add_argument('--ondisk', '--ondrive', dest='disk', default='sda') part.add_argument("--overhead-factor", type=overheadtype) @@ -197,8 +198,17 @@ class KickStart(): (confpath, lineno, err)) if line.startswith('part'): # SquashFS does not support filesystem UUID - if parsed.fstype == 'squashfs' and parsed.fsuuid: - err = "%s:%d: SquashFS does not support UUID" \ + if parsed.fstype == 'squashfs': + if parsed.fsuuid: + err = "%s:%d: SquashFS does not support UUID" \ + % (confpath, lineno) + raise KickStartError(err) + if parsed.label: + err = "%s:%d: SquashFS does not support LABEL" \ + % (confpath, lineno) + raise KickStartError(err) + if parsed.use_label and not parsed.label: + err = "%s:%d: Must set the label with --label" \ % (confpath, lineno) raise KickStartError(err) # using ArgumentParser one cannot easily tell if option diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py index 5054779b1b..3da7e23e61 100644 --- a/scripts/lib/wic/partition.py +++ b/scripts/lib/wic/partition.py @@ -47,6 +47,7 @@ class Partition(): self.fsopts = args.fsopts self.fstype = args.fstype self.label = args.label + self.use_label = args.use_label self.mkfs_extraopts = args.mkfs_extraopts self.mountpoint = args.mountpoint self.no_table = args.no_table diff --git a/scripts/lib/wic/plugins/imager/direct.py b/scripts/lib/wic/plugins/imager/direct.py index 81583e97b9..bb14a334b2 100644 --- a/scripts/lib/wic/plugins/imager/direct.py +++ b/scripts/lib/wic/plugins/imager/direct.py @@ -155,6 +155,8 @@ class DirectPlugin(ImagerPlugin): device_name = "UUID=%s" % part.fsuuid else: device_name = "PARTUUID=%s" % part.uuid + elif part.use_label: + device_name = "LABEL=%s" % part.label else: # mmc device partitions are named mmcblk0p1, mmcblk0p2.. prefix = 'p' if part.disk.startswith('mmcblk') else '' -- cgit 1.2.3-korg