Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib/installer.py
diff options
context:
space:
mode:
authorAnton Hvornum <anton@hvornum.se>2021-10-30 20:52:07 +0200
committerGitHub <noreply@github.com>2021-10-30 20:52:07 +0200
commit85c97b56301e2131ee0606bcce7dffb4456bb580 (patch)
tree6b47a27bb6286880e497c5e7c7bd2f0d8848c0ec /archinstall/lib/installer.py
parentd25a20a7f28dcd873747c2a2842504c919b6e884 (diff)
parent2a2239dd03bb64d3410469fd190fed34b252cf53 (diff)
Merged PR #637 - BTRFS support fix #93
+ BTRFS support + Refactoring of `disk.py` into `lib/disk/*.py` + `get_mount_info()` was reworked to support traverse backwards until mountpoint information is found (reverse-recursiveness) + `suggest_single_disk_layout()` was added/fixed to support BTRFS options + - `suggest_multi_disk_layout()` does not yet support BTRFS subvolumes in suggestive mode + `Installer()` now calls `create_subvolume()` and `mount_subvolume()` during loading of file structure on `mount_ordered_layout()`
Diffstat (limited to 'archinstall/lib/installer.py')
-rw-r--r--archinstall/lib/installer.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py
index 2aac8510..0bdddb2e 100644
--- a/archinstall/lib/installer.py
+++ b/archinstall/lib/installer.py
@@ -1,10 +1,14 @@
+import time
from .disk import *
from .hardware import *
from .locale_helpers import verify_keyboard_layout, verify_x11_keyboard_layout
+from .disk.helpers import get_mount_info
from .mirrors import *
from .plugins import plugins
from .storage import storage
from .user_interaction import *
+from .disk.btrfs import create_subvolume, mount_subvolume
+from .exceptions import DiskError, ServiceException
# Any package that the Installer() is responsible for (optional and the default ones)
__packages__ = ["base", "base-devel", "linux-firmware", "linux", "linux-lts", "linux-zen", "linux-hardened"]
@@ -139,9 +143,19 @@ class Installer:
password = mountpoints[mountpoint]['password']
with luks2(mountpoints[mountpoint]['device_instance'], loopdev, password, auto_unmount=False) as unlocked_device:
unlocked_device.mount(f"{self.target}{mountpoint}")
+
else:
mountpoints[mountpoint]['device_instance'].mount(f"{self.target}{mountpoint}")
+ time.sleep(1)
+ if not get_mount_info(f"{self.target}{mountpoint}", traverse=False):
+ raise DiskError(f"Target {self.target}{mountpoint} never got mounted properly.")
+
+ if (subvolumes := mountpoints[mountpoint].get('btrfs', {}).get('subvolumes', {})):
+ for name, location in subvolumes.items():
+ create_subvolume(self, location)
+ mount_subvolume(self, location)
+
def mount(self, partition, mountpoint, create_mountpoint=True):
if create_mountpoint and not os.path.isdir(f'{self.target}{mountpoint}'):
os.makedirs(f'{self.target}{mountpoint}')