index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
author | Anton Hvornum <anton@hvornum.se> | 2021-04-03 16:22:09 +0200 |
---|---|---|
committer | Anton Hvornum <anton@hvornum.se> | 2021-04-03 16:22:09 +0200 |
commit | b2927a50670d92bb99e0b8a23e6321e4a8c6f26b (patch) | |
tree | 9f28180993d1fef14a226991bb04dd942f58ba6b | |
parent | 2bf947ba055722f58b568fc1c984a298ad230ecb (diff) |
-rw-r--r-- | archinstall/lib/disk.py | 11 | ||||
-rw-r--r-- | archinstall/lib/installer.py | 14 |
diff --git a/archinstall/lib/disk.py b/archinstall/lib/disk.py index 44d46c8b..8fbc50b2 100644 --- a/archinstall/lib/disk.py +++ b/archinstall/lib/disk.py @@ -191,6 +191,17 @@ class Partition(): return f'Partition(path={self.path}, fs={self.filesystem}{mount_repr})' @property + def uuid(self) -> str: + """ + Returns the PARTUUID as returned by lsblk. + This is more reliable than relying on /dev/disk/by-partuuid as + it doesn't seam to be able to detect md raid partitions. + """ + lsblk = b''.join(sys_command(f'lsblk -J {self.path}')) + for partition in json.loads(lsblk.decode('UTF-8'))['blockdevices']: + return partition['partuuid'] + + @property def encrypted(self): return self._encrypted diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index d161c3b7..a4321893 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -384,18 +384,10 @@ class Installer(): break else: log(f"Identifying root partition by PART-UUID on {self.partition}, looking for '{os.path.basename(self.partition.path)}'.", level=LOG_LEVELS.Debug) - for root, folders, uids in os.walk('/dev/disk/by-partuuid'): - for uid in uids: - real_path = os.path.realpath(os.path.join(root, uid)) - - log(f"Checking root partition match {os.path.basename(real_path)} against {os.path.basename(self.partition.path)}: {os.path.basename(real_path) == os.path.basename(self.partition.path)}", level=LOG_LEVELS.Debug) - if not os.path.basename(real_path) == os.path.basename(self.partition.path): continue - - entry.write(f'options root=PARTUUID={uid} rw intel_pstate=no_hwp\n') + entry.write(f'options root=PARTUUID={self.partition.uuid} rw intel_pstate=no_hwp\n') - self.helper_flags['bootloader'] = bootloader - return True - break + self.helper_flags['bootloader'] = bootloader + return True raise RequirementError(f"Could not identify the UUID of {self.partition}, there for {self.mountpoint}/boot/loader/entries/arch.conf will be broken until fixed.") else: |