diff options
Diffstat (limited to 'src/utils/bios.py')
-rw-r--r-- | src/utils/bios.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/utils/bios.py b/src/utils/bios.py new file mode 100644 index 0000000..e064ca0 --- /dev/null +++ b/src/utils/bios.py @@ -0,0 +1,53 @@ +# +# Copyright (C) 2023 Soleta Networks <info@soleta.eu> +# +# This program is free software: you can redistribute it and/or modify it under +# the terms of the GNU Affero General Public License as published by the +# Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +import logging +import os + + +def get_grub_boot_params(mountpoint, device): + grub_conf = f'{mountpoint}/etc/default/grub' + res = [] + + with open(grub_conf, 'r') as f: + for line in f: + if line.find('=') == -1: + continue + key, value = line.split('=', 1) + if key == 'GRUB_CMDLINE_LINUX' or key == 'GRUB_CMDLINE_LINUE_DEFAULT': + value = value.replace('\n', '') + value = value.strip('"') + res.append(value) + res.append(f'root={device}') + return " ".join(res) + +def get_vmlinuz_path(mountpoint): + linuz_dir = os.path.join(mountpoint, 'boot') + target_file = None + + for file in sorted(os.listdir(linuz_dir)): + if file.startswith('vmlinuz-'): + target_file = file + + if not target_file: + raise FileNotFoundError('vmlinuz not found in {initrd_dir}') + + return os.path.join(linuz_dir, target_file) + +def get_initrd_path(mountpoint): + initrd_dir = os.path.join(mountpoint, 'boot') + target_file = None + + for file in sorted(os.listdir(initrd_dir)): + if file.startswith('initrd.img-') or file.startswith('initramfs-') and file.endswith('.img'): + target_file = file + + if not target_file: + raise FileNotFoundError('initrd not found in {initrd_dir}') + + return os.path.join(initrd_dir, target_file) |