index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
author | Anton Hvornum <anton.feeds@gmail.com> | 2021-10-27 13:13:10 +0000 |
---|---|---|
committer | Anton Hvornum <anton.feeds@gmail.com> | 2021-10-27 13:13:10 +0000 |
commit | 68b891837c6174d1f75babf42ee6657d4726576b (patch) | |
tree | 251cd675cbcc45d48d89fc1ef32197f3dc5aacd4 | |
parent | 7149b76f3bd3163938fe7413546e5f678f98851f (diff) |
-rw-r--r-- | archinstall/lib/disk/btrfs.py | 36 | ||||
-rw-r--r-- | archinstall/lib/disk/helpers.py | 4 |
diff --git a/archinstall/lib/disk/btrfs.py b/archinstall/lib/disk/btrfs.py index d6758b3f..558a249e 100644 --- a/archinstall/lib/disk/btrfs.py +++ b/archinstall/lib/disk/btrfs.py @@ -1,4 +1,36 @@ +import pathlib, glob +from typing import Union +from .helpers import get_mount_info +from ..exceptions import DiskError from ..general import SysCommand -def create_subvolume(installation): - SysCommand(f"btrfs subvolume create {installation.target}/@")
\ No newline at end of file +def mount_subvolume(installation, location :Union[pathlib.Path, str], force=False) -> bool: + """ + This function uses mount to mount a subvolume on a given device, at a given location with a given subvolume name. + + @installation: archinstall.Installer instance + @location: a localized string or path inside the installation / or /boot for instance without specifying /mnt/boot + @force: overrides the check for weither or not the subvolume mountpoint is empty or not + """ + # Set up the required physical structure + if type(location) == str: + location = pathlib.Path(location) + + if not location.exists(): + location.mkdir(parents=True) + + if glob.glob(str(installation.target/location/'*')) and force is False: + raise DiskError(f"Cannot mount subvolume to {installation.target/location} because it contains data (non-empty folder target)") + + # Mount the logical volume to the physical structure + return SysCommand(f"mount {get_mount_info(installation.target/location)['source']} {installation.target}/{str(location)} -o subvol=@/{str(location)}").exit_code == 0 + +def create_subvolume(installation, location :Union[pathlib.Path, str]) -> bool: + """ + This function uses btrfs to create a subvolume. + + @installation: archinstall.Installer instance + @location: a localized string or path inside the installation / or /boot for instance without specifying /mnt/boot + """ + + SysCommand(f"btrfs subvolume create {installation.target}/{str(location)}")
\ No newline at end of file diff --git a/archinstall/lib/disk/helpers.py b/archinstall/lib/disk/helpers.py index 65abdea2..2e84a657 100644 --- a/archinstall/lib/disk/helpers.py +++ b/archinstall/lib/disk/helpers.py @@ -1,5 +1,7 @@ import re import json +import pathlib +from typing import Union from .blockdevice import BlockDevice from ..exceptions import SysCallError from ..general import SysCommand @@ -114,7 +116,7 @@ def harddrive(size=None, model=None, fuzzy=False): return collection[drive] -def get_mount_info(path) -> dict: +def get_mount_info(path :Union[pathlib.Path, str]) -> dict: try: output = SysCommand(f'/usr/bin/findmnt --json {path}').decode('UTF-8') except SysCallError: |