Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib
diff options
context:
space:
mode:
Diffstat (limited to 'archinstall/lib')
-rw-r--r--archinstall/lib/disk.py26
-rw-r--r--archinstall/lib/systemd.py1
-rw-r--r--archinstall/lib/user_interaction.py7
3 files changed, 24 insertions, 10 deletions
diff --git a/archinstall/lib/disk.py b/archinstall/lib/disk.py
index 5b92e1e1..36f19ee8 100644
--- a/archinstall/lib/disk.py
+++ b/archinstall/lib/disk.py
@@ -252,7 +252,7 @@ class BlockDevice:
# I'm placing the encryption password on a BlockDevice level.
def __repr__(self, *args, **kwargs):
- return f"BlockDevice({self.device}, size={self.size}GB, free_space={'+'.join(part[2] for part in self.free_space)}, bus_type={self.bus_type})"
+ return f"BlockDevice({self.device_or_backfile}, size={self.size}GB, free_space={'+'.join(part[2] for part in self.free_space)}, bus_type={self.bus_type})"
def __iter__(self):
for partition in self.partitions:
@@ -293,23 +293,33 @@ class BlockDevice:
return device['pttype']
@property
- def device(self):
+ def device_or_backfile(self):
"""
Returns the actual device-endpoint of the BlockDevice.
If it's a loop-back-device it returns the back-file,
- If it's a ATA-drive it returns the /dev/X device
- And if it's a crypto-device it returns the parent device
+ For other types it return self.device
"""
- if "type" not in self.info:
- raise DiskError(f'Could not locate backplane info for "{self.path}"')
-
if self.info['type'] == 'loop':
for drive in json.loads(SysCommand(['losetup', '--json']).decode('UTF_8'))['loopdevices']:
if not drive['name'] == self.path:
continue
return drive['back-file']
- elif self.info['type'] == 'disk':
+ else:
+ return self.device
+
+ @property
+ def device(self):
+ """
+ Returns the device file of the BlockDevice.
+ If it's a loop-back-device it returns the /dev/X device,
+ If it's a ATA-drive it returns the /dev/X device
+ And if it's a crypto-device it returns the parent device
+ """
+ if "type" not in self.info:
+ raise DiskError(f'Could not locate backplane info for "{self.path}"')
+
+ if self.info['type'] in ['disk','loop']:
return self.path
elif self.info['type'][:4] == 'raid':
# This should catch /dev/md## raid devices
diff --git a/archinstall/lib/systemd.py b/archinstall/lib/systemd.py
index 383f1f17..d297c507 100644
--- a/archinstall/lib/systemd.py
+++ b/archinstall/lib/systemd.py
@@ -64,6 +64,7 @@ class Boot:
self.session = SysCommandWorker([
'/usr/bin/systemd-nspawn',
'-D', self.instance.target,
+ '--timezone=off',
'-b',
'--machine', self.container_name
])
diff --git a/archinstall/lib/user_interaction.py b/archinstall/lib/user_interaction.py
index 4ec265d4..ba6259b1 100644
--- a/archinstall/lib/user_interaction.py
+++ b/archinstall/lib/user_interaction.py
@@ -674,7 +674,7 @@ def manage_new_and_existing_partitions(block_device :BlockDevice) -> dict:
if input(f"{block_device} contains queued partitions, this will remove those, are you sure? y/N: ").strip().lower() in ('', 'n'):
continue
- block_device_struct["partitions"] = suggest_single_disk_layout(block_device)[block_device]
+ block_device_struct.update( suggest_single_disk_layout(block_device)[block_device.path] )
elif task is None:
return block_device_struct
else:
@@ -730,7 +730,10 @@ def manage_new_and_existing_partitions(block_device :BlockDevice) -> dict:
block_device_struct["partitions"][block_device_struct["partitions"].index(partition)]['boot'] = not block_device_struct["partitions"][block_device_struct["partitions"].index(partition)].get('boot', False)
elif task == "Set desired filesystem for a partition":
- if (partition := generic_select(block_device_struct["partitions"], 'Select which partition to set a filesystem on: ', options_output=False)):
+ if not block_device_struct["partitions"]:
+ log("No partitions found. Create some partitions first", level=logging.WARNING, fg='yellow')
+ continue
+ elif (partition := generic_select(block_device_struct["partitions"], 'Select which partition to set a filesystem on: ', options_output=False)):
if not block_device_struct["partitions"][block_device_struct["partitions"].index(partition)].get('filesystem', None):
block_device_struct["partitions"][block_device_struct["partitions"].index(partition)]['filesystem'] = {}