mirror of
https://git.yoctoproject.org/poky
synced 2026-04-25 15:32:13 +02:00
wic/engine: fix errors when expanding partitions
The UEFI spec implies that GPT partitions should be assumed to be on a 2048 sector boundary (for a 512 byte sector) and the current logic just divides the free sectors available by the number of partitions that need re-sizing, which may or may not align and the final result might overshoot the limits imposed after alignment. Since we are expanding already aligned partitions, just divide up the free space in multiples of 2048. Also use the exec_cmd wrapper instead of the subprocess call directly. Fixes [YOCTO #12840] (From OE-Core rev: 5eef63f5afdfbab8e30748cb1bf42bf2e6524759) Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
f7792e58a2
commit
82756dcac0
@@ -391,11 +391,8 @@ class Disk:
|
||||
def write_ptable(parts, target):
|
||||
with tempfile.NamedTemporaryFile(prefix="wic-sfdisk-", mode='w') as outf:
|
||||
write_sfdisk_script(outf, parts)
|
||||
cmd = "{} --no-reread {} < {} 2>/dev/null".format(self.sfdisk, target, outf.name)
|
||||
try:
|
||||
subprocess.check_output(cmd, shell=True)
|
||||
except subprocess.CalledProcessError as err:
|
||||
raise WicError("Can't run '{}' command: {}".format(cmd, err))
|
||||
cmd = "{} --no-reread {} < {} ".format(self.sfdisk, target, outf.name)
|
||||
exec_cmd(cmd, as_shell=True)
|
||||
|
||||
if expand is None:
|
||||
sparse_copy(self.imagepath, target)
|
||||
@@ -412,6 +409,8 @@ class Disk:
|
||||
for line in exec_cmd("{} -F {}".format(self.sfdisk, target)).splitlines():
|
||||
if line.startswith("Unpartitioned space ") and line.endswith("sectors"):
|
||||
free = int(line.split()[-2])
|
||||
# Align free space to a 2048 sector boundary. YOCTO #12840.
|
||||
free = free - (free % 2048)
|
||||
if free is None:
|
||||
raise WicError("Can't get size of unpartitioned space")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user