[elbe-devel] [PATCH 7/9] finetuning: implement <set_partition_type>
Bastian Germann
bage at linutronix.de
Tue Dec 15 14:59:39 CET 2020
Am 14.12.20 um 17:41 schrieb Torben Hohn:
> gparted does not support many partition types.
>
> Add an ImageFinetuning rule that uses fdisk to set the partition type.
>
> Signed-off-by: Torben Hohn <torben.hohn at linutronix.de>
Reviewed-by: Bastian Germann <bage at linutronix.de>
> ---
> elbepack/finetuning.py | 19 +++++++++++++++++++
> schema/dbsfed.xsd | 19 +++++++++++++++++++
> 2 files changed, 38 insertions(+)
>
> diff --git a/elbepack/finetuning.py b/elbepack/finetuning.py
> index ea76dd549..972ff6229 100644
> --- a/elbepack/finetuning.py
> +++ b/elbepack/finetuning.py
> @@ -698,6 +698,25 @@ class CopyToPartition(ImageFinetuningAction):
> cmd = 'cp "%s" "%s"' % (os.path.join(builddir, aname), fname)
> do(cmd)
>
> + at FinetuningAction.register('set_partition_type')
> +class SetPartitionTypeAction(ImageFinetuningAction):
> +
> + def __init__(self, node):
> + ImageFinetuningAction.__init__(self, node)
> +
> + def execute(self, _buildenv, _target):
> + raise NotImplementedError("<set_partition_type> may only be "
> + "used in <mount_drive>")
> +
> + def execute_img(self, _buildenv, target, builddir, loop_dev):
> + part_nr = self.node.et.attrib['part']
> + part_type = self.node.et.attrib['type']
> +
> + cmd = f'fdisk {loop_dev}'
> + inp = f't\n{part_nr}\n{part_type}\nw\n'
> +
> + do(cmd, stdin=inp)
> +
>
> @FinetuningAction.register("unit-tests")
> class TestSuites(FinetuningAction):
> diff --git a/schema/dbsfed.xsd b/schema/dbsfed.xsd
> index d6ca98bb4..95385dc90 100644
> --- a/schema/dbsfed.xsd
> +++ b/schema/dbsfed.xsd
> @@ -2263,6 +2263,14 @@
> </documentation>
> </annotation>
> </element>
> + <element name="set_partition_type" type="rfs:set_partition_type" minOccurs="0">
> + <annotation>
> + <documentation>
> + Set the type of a partition via fdisk. (to support esoteric partition types,
> + that parted does not support.)
> + </documentation>
> + </annotation>
> + </element>
> <element name="command" type="rfs:partition-command" minOccurs="0" maxOccurs="unbounded">
> <annotation>
> <documentation>
> @@ -2335,6 +2343,17 @@
> </extension>
> </simpleContent>
> </complexType>
> + <complexType name="set_partition_type">
> + <annotation>
> + <documentation>
> + Attribute 'part' describes the partition to be modified (nr).
> + Attribute 'type' is the numerical partition id, as understood by
> + fdisk.
> + </documentation>
> + </annotation>
> + <attribute name="part" type="integer" use="required" />
> + <attribute name="type" type="string" use="required" />
> + </complexType>
> <complexType name="addgroup">
> <annotation>
> <documentation>
>
More information about the elbe-devel
mailing list