summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlejandro Sirgo Rica <asirgo@soleta.eu>2024-03-07 09:46:41 +0100
committerlupoDharkael <izhe@hotmail.es>2024-03-08 12:43:10 +0100
commit7f18485effb300680241bbd84186fdd5c160ec26 (patch)
tree19b1562654245e12b02a6cc287bcac6cd1485b53
parent9970c8e33d7a422e807a23af712236db01284f9a (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.
-rw-r--r--src/live/ogOperations.py2
-rw-r--r--src/utils/boot.py2
-rw-r--r--src/utils/uefi.py14
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():