From ff9475ffe49d4ff8bca2b7fc1b6f8105e5277745 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Mon, 6 Jul 2020 16:43:29 +0200 Subject: Changed mount function, since libc can't handle loop devices automatically without some how probing partitions? --- archinstall.py | 2 +- helpers/disk.py | 27 +++++++++++++-------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/archinstall.py b/archinstall.py index ce108d8b..1175b406 100644 --- a/archinstall.py +++ b/archinstall.py @@ -53,5 +53,5 @@ class Installer(): ## so we'll use the old manual method until we get that sorted out. # UUID = simple_command(f"blkid -s PARTUUID -o value /dev/{os.path.basename(args['drive'])}{args['partitions']['2']}").decode('UTF-8').strip() # entry.write('options root=PARTUUID={UUID} rw intel_pstate=no_hwp\n'.format(UUID=UUID)) - UUID = b''.join(sys_command(f"ls -l /dev/disk/by-uuid/ | grep {os.path.basename(partition['path'])} | awk '{{print $9}}'")).decode('UTF-8').strip() + UUID = b''.join(sys_command(f"ls -l /dev/disk/by-uuid/ | grep {os.path.basename(partition.path)} | awk '{{print $9}}'")).decode('UTF-8').strip() entry.write(f'options cryptdevice=UUID={UUID}:luksdev root=/dev/mapper/luksdev rw intel_pstate=no_hwp\n') \ No newline at end of file diff --git a/helpers/disk.py b/helpers/disk.py index ba7972eb..84a6c2e5 100644 --- a/helpers/disk.py +++ b/helpers/disk.py @@ -1,16 +1,14 @@ import glob, re, os, json from collections import OrderedDict -from helpers.general import sys_command +#import ctypes +#import ctypes.util from exceptions import * -import ctypes -import ctypes.util -import os +from helpers.general import sys_command ROOT_DIR_PATTERN = re.compile('^.*?/devices') GPT = 0b00000001 -libc = ctypes.CDLL(ctypes.util.find_library('c'), use_errno=True) -libc.mount.argtypes = (ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_ulong, ctypes.c_char_p) - +#libc = ctypes.CDLL(ctypes.util.find_library('c'), use_errno=True) +#libc.mount.argtypes = (ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_ulong, ctypes.c_char_p) class BlockDevice(): def __init__(self, path, info): @@ -109,13 +107,14 @@ class Partition(): if not fs: if not self.filesystem: raise DiskError(f'Need to format (or define) the filesystem on {self} before mounting.') fs = self.filesystem - # TODO: Move this to the BlockDevice or something. - ret = libc.mount(self.path.encode(), target.encode(), fs.encode(), 0, options.encode()) - if ret < 0: - errno = ctypes.get_errno() - raise OSError(errno, f"Error mounting {self.path} ({fs}) on {target} with options '{options}': {os.strerror(errno)}") - self.mountpoint = target - + ## libc has some issues with loop devices, defaulting back to sys calls + # ret = libc.mount(self.path.encode(), target.encode(), fs.encode(), 0, options.encode()) + # if ret < 0: + # errno = ctypes.get_errno() + # raise OSError(errno, f"Error mounting {self.path} ({fs}) on {target} with options '{options}': {os.strerror(errno)}") + if sys_command(f'/usr/bin/mount {self.path} {target}').exit_code == 0: + self.mountpoint = target + return True class luks2(): def __init__(self, filesystem): -- cgit v1.2.3-54-g00ecf