index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
author | Anton Hvornum <anton@hvornum.se> | 2022-01-25 16:09:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-25 16:09:34 +0100 |
commit | 1aa738691e261b3dfaf5195ec7636617a283d47a (patch) | |
tree | 984508bfe332ea5cbe3bd2885a9b3c2cfe4ae9d4 /archinstall/lib/disk/helpers.py | |
parent | 5406f1ed4541f46b28435434be04e82ee4378f1b (diff) |
-rw-r--r-- | archinstall/lib/disk/helpers.py | 20 |
diff --git a/archinstall/lib/disk/helpers.py b/archinstall/lib/disk/helpers.py index e9f6bc10..26f701d2 100644 --- a/archinstall/lib/disk/helpers.py +++ b/archinstall/lib/disk/helpers.py @@ -190,10 +190,26 @@ def get_partitions_in_use(mountpoint :str) -> List[Partition]: output = json.loads(output) for target in output.get('filesystems', []): - mounts.append(Partition(target['source'], None, filesystem=target.get('fstype', None), mountpoint=target['target'])) + # We need to create a BlockDevice() instead of 'None' here when creaiting Partition() + # Otherwise subsequent calls to .size etc will fail due to BlockDevice being None. + + # So first, we create the partition without a BlockDevice and carefully only use it to get .real_device + # Note: doing print(partition) here will break because the above mentioned issue. + partition = Partition(target['source'], None, filesystem=target.get('fstype', None), mountpoint=target['target']) + partition = Partition(target['source'], partition.real_device, filesystem=target.get('fstype', None), mountpoint=target['target']) + + # Once we have the real device (for instance /dev/nvme0n1p5) we can find the parent block device using + # (lsblk pkname lists both the partition and blockdevice, BD being the last entry) + result = SysCommand(f'lsblk -no pkname {partition.real_device}').decode().rstrip('\r\n').split('\r\n')[-1] + block_device = BlockDevice(f"/dev/{result}") + + # Once we figured the block device out, we can properly create the partition object + partition = Partition(target['source'], block_device, filesystem=target.get('fstype', None), mountpoint=target['target']) + + mounts.append(partition) for child in target.get('children', []): - mounts.append(Partition(child['source'], None, filesystem=child.get('fstype', None), mountpoint=child['target'])) + mounts.append(Partition(child['source'], block_device, filesystem=child.get('fstype', None), mountpoint=child['target'])) return mounts |