index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
-rw-r--r-- | archinstall/lib/disk/device_handler.py | 15 | ||||
-rw-r--r-- | archinstall/lib/disk/device_model.py | 5 |
diff --git a/archinstall/lib/disk/device_handler.py b/archinstall/lib/disk/device_handler.py index 494319a1..9646103f 100644 --- a/archinstall/lib/disk/device_handler.py +++ b/archinstall/lib/disk/device_handler.py @@ -10,7 +10,7 @@ from typing import List, Dict, Any, Optional, TYPE_CHECKING from parted import ( # type: ignore Disk, Geometry, FileSystem, PartitionException, DiskLabelException, - getAllDevices, freshDisk, Partition, Device + getDevice, getAllDevices, freshDisk, Partition, Device ) from .device_model import ( @@ -45,7 +45,18 @@ class DeviceHandler(object): def load_devices(self): block_devices = {} - for device in getAllDevices(): + devices = getAllDevices() + + try: + loop_devices = SysCommand(['losetup', '-a']) + except SysCallError as err: + debug(f'Failed to get loop devices: {err}') + else: + for ld_info in str(loop_devices).splitlines(): + loop_device = getDevice(ld_info.split(':', maxsplit=1)[0]) + devices.append(loop_device) + + for device in devices: if get_lsblk_info(device.path).type == 'rom': continue diff --git a/archinstall/lib/disk/device_model.py b/archinstall/lib/disk/device_model.py index ad2628ae..b520ad1b 100644 --- a/archinstall/lib/disk/device_model.py +++ b/archinstall/lib/disk/device_model.py @@ -374,7 +374,10 @@ class _DeviceInfo: @classmethod def from_disk(cls, disk: Disk) -> _DeviceInfo: device = disk.device - device_type = parted.devices[device.type] + if device.type == 18: + device_type = 'loop' + else: + device_type = parted.devices[device.type] sector_size = Size(device.sectorSize, Unit.B) free_space = [DeviceGeometry(g, sector_size) for g in disk.getFreeSpaceRegions()] |