Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib/disk/filesystem.py
diff options
context:
space:
mode:
authorVictor Gavro <vgavro@gmail.com>2022-02-05 00:58:44 +0200
committerGitHub <noreply@github.com>2022-02-04 23:58:44 +0100
commit68c2988358426e8d0074479cef539ddadc2a31e6 (patch)
tree17ee0aa35065767a97c0b7686ff07378e722fce8 /archinstall/lib/disk/filesystem.py
parent85f2938df9e7e34a08fd1b1acc7c8b41d14ccb54 (diff)
disk layout: allow to omit partition "start" option to start from previous partition end (#895)
* disk layout: allow to omit partition "start" option to start from previous partition end * mixed tabs/spaces fixes * Update filesystem.py Co-authored-by: Anton Hvornum <anton.feeds+github@gmail.com>
Diffstat (limited to 'archinstall/lib/disk/filesystem.py')
-rw-r--r--archinstall/lib/disk/filesystem.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/archinstall/lib/disk/filesystem.py b/archinstall/lib/disk/filesystem.py
index 64b8008c..c8a74e3f 100644
--- a/archinstall/lib/disk/filesystem.py
+++ b/archinstall/lib/disk/filesystem.py
@@ -18,6 +18,11 @@ from ..storage import storage
GPT = 0b00000001
MBR = 0b00000010
+# A sane default is 5MiB, that allows for plenty of buffer for GRUB on MBR
+# but also 4MiB for memory cards for instance. And another 1MiB to avoid issues.
+# (we've been pestered by disk issues since the start, so please let this be here for a few versions)
+DEFAULT_PARTITION_START = '5MiB'
+
class Filesystem:
# TODO:
# When instance of a HDD is selected, check all usages and gracefully unmount them
@@ -73,13 +78,16 @@ class Filesystem:
self.blockdevice.flush_cache()
+ prev_partition = None
# We then iterate the partitions in order
for partition in layout.get('partitions', []):
# We don't want to re-add an existing partition (those containing a UUID already)
if partition.get('wipe', False) and not partition.get('PARTUUID', None):
print("Adding partition....")
+ start = partition.get('start') or (
+ prev_partition and f'{prev_partition["device_instance"].end_sectors}s' or DEFAULT_PARTITION_START)
partition['device_instance'] = self.add_partition(partition.get('type', 'primary'),
- start=partition.get('start', '1MiB'), # TODO: Revisit sane block starts (4MB for memorycards for instance)
+ start=start,
end=partition.get('size', '100%'),
partition_format=partition.get('filesystem', {}).get('format', 'btrfs'))
# TODO: device_instance some times become None
@@ -143,6 +151,8 @@ class Filesystem:
log(f"Marking partition {partition['device_instance']} as bootable.")
self.set(self.partuuid_to_index(partition['device_instance'].uuid), 'boot on')
+ prev_partition = partition
+
def find_partition(self, mountpoint :str) -> Partition:
for partition in self.blockdevice:
if partition.target_mountpoint == mountpoint or partition.mountpoint == mountpoint: