diff options
author | Alejandro Sirgo Rica <asirgo@soleta.eu> | 2024-03-07 09:46:41 +0100 |
---|---|---|
committer | lupoDharkael <izhe@hotmail.es> | 2024-03-08 12:43:10 +0100 |
commit | 7f18485effb300680241bbd84186fdd5c160ec26 (patch) | |
tree | 19b1562654245e12b02a6cc287bcac6cd1485b53 /src | |
parent | 9970c8e33d7a422e807a23af712236db01284f9a (diff) |
utils: improve uefi detection mechanism
Checking the existence /sys/firmware/efi as it might appear
sometimes in BIOS installs if the BIOS configuration is not
proper. Checking for the EFI partition is the safest method
to veryfy the install type.
Diffstat (limited to 'src')
-rw-r--r-- | src/live/ogOperations.py | 2 | ||||
-rw-r--r-- | src/utils/boot.py | 2 | ||||
-rw-r--r-- | src/utils/uefi.py | 14 |
3 files changed, 14 insertions, 4 deletions
diff --git a/src/live/ogOperations.py b/src/live/ogOperations.py index d5f22a9..5d9e898 100644 --- a/src/live/ogOperations.py +++ b/src/live/ogOperations.py @@ -262,7 +262,7 @@ class OgLiveOperations: disk = request.getDisk() partition = request.getPartition() - if is_uefi_supported(): + if is_uefi_supported(disk): logging.info('UEFI support detected') logging.info(f'Booting disk={disk} partition={partition}') boot_os_at(int(disk), int(partition)) diff --git a/src/utils/boot.py b/src/utils/boot.py index cd66357..4de20b9 100644 --- a/src/utils/boot.py +++ b/src/utils/boot.py @@ -69,7 +69,7 @@ def _boot_uefi_linux(disk, part, mountpoint): umount(esp_mountpoint) def boot_os_at(disk, part): - if not is_uefi_supported(): + if not is_uefi_supported(disk): raise NotImplementedError('BIOS booting is not implemented yet') device = get_partition_device(disk, part) diff --git a/src/utils/uefi.py b/src/utils/uefi.py index 753cc0b..67f1354 100644 --- a/src/utils/uefi.py +++ b/src/utils/uefi.py @@ -11,6 +11,7 @@ import logging import os import shlex import subprocess +from src.utils.disk import get_efi_partition import fdisk @@ -46,8 +47,17 @@ def _check_efibootmgr_json(): return supported -def is_uefi_supported(): - return True if os.path.exists("/sys/firmware/efi") else False +def is_uefi_supported(disknum): + is_supported = os.path.exists("/sys/firmware/efi") + + if is_supported: + try: + get_efi_partition(disknum) + except Exception as e: + logging.info(e) + is_supported = False + + return is_supported def run_efibootmgr_json(): |