index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
author | Anton Hvornum <anton@hvornum.se> | 2021-10-30 16:28:55 +0200 |
---|---|---|
committer | Anton Hvornum <anton@hvornum.se> | 2021-10-30 16:28:55 +0200 |
commit | c4f688ce4c9ce89748e11bd0565c9b3720e66b74 (patch) | |
tree | 7792db9e35cc3aedaf7e2e9f8a58a43a37bbb061 /archinstall | |
parent | 6be071b6e0d43a2fded8a3fd773525fb1216aa91 (diff) |
-rw-r--r-- | archinstall/lib/disk/btrfs.py | 2 | ||||
-rw-r--r-- | archinstall/lib/disk/helpers.py | 5 | ||||
-rw-r--r-- | archinstall/lib/installer.py | 7 |
diff --git a/archinstall/lib/disk/btrfs.py b/archinstall/lib/disk/btrfs.py index b56430b8..cf60095f 100644 --- a/archinstall/lib/disk/btrfs.py +++ b/archinstall/lib/disk/btrfs.py @@ -25,7 +25,7 @@ def mount_subvolume(installation, location :Union[pathlib.Path, str], force=Fals raise DiskError(f"Cannot mount subvolume to {installation.target/location} because it contains data (non-empty folder target)") log(f"Mounting {location} as a subvolume", level=logging.INFO) - print(get_mount_info(installation.target/location)) + print(get_mount_info(installation.target/location, traverse=True)) # Mount the logical volume to the physical structure mount_location = get_mount_info(installation.target/location)['source'] SysCommand(f"umount {mount_location}") diff --git a/archinstall/lib/disk/helpers.py b/archinstall/lib/disk/helpers.py index 0111d327..8a6d5a48 100644 --- a/archinstall/lib/disk/helpers.py +++ b/archinstall/lib/disk/helpers.py @@ -116,7 +116,7 @@ def harddrive(size=None, model=None, fuzzy=False): return collection[drive] -def get_mount_info(path :Union[pathlib.Path, str]) -> dict: +def get_mount_info(path :Union[pathlib.Path, str], traverse=False) -> dict: for traversal in list(map(str, [str(path)] + list(pathlib.Path(str(path)).parents))): try: output = SysCommand(f'/usr/bin/findmnt --json {traversal}').decode('UTF-8') @@ -125,6 +125,9 @@ def get_mount_info(path :Union[pathlib.Path, str]) -> dict: except SysCallError: pass + if not traverse: + break + if not output: return {} diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 41d918a1..b0a7c5f1 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -1,11 +1,14 @@ +import time from .disk import * from .hardware import * from .locale_helpers import verify_keyboard_layout, verify_x11_keyboard_layout +from .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"] @@ -144,6 +147,10 @@ class Installer: 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) |