From 6a02b6f4f1b492c4c6de2ff26750a9aac544b6bf Mon Sep 17 00:00:00 2001 From: Natalia Serrano Date: Mon, 27 Jan 2025 17:41:38 +0100 Subject: [PATCH] refs #1337 add ogGrubInstallMbr, fix bugs --- client/lib/engine/bin/BootLib.py | 5 +++-- client/lib/engine/bin/DiskLib.py | 3 ++- client/lib/engine/bin/FileSystemLib.py | 4 ++-- client/shared/functions/ogGrubInstallMbr | 25 ++++++++++++++++++++++++ 4 files changed, 32 insertions(+), 5 deletions(-) create mode 100755 client/shared/functions/ogGrubInstallMbr diff --git a/client/lib/engine/bin/BootLib.py b/client/lib/engine/bin/BootLib.py index aab937e..87823a2 100644 --- a/client/lib/engine/bin/BootLib.py +++ b/client/lib/engine/bin/BootLib.py @@ -474,7 +474,8 @@ def ogGrubInstallMbr (disk, par, checkos='FALSE', kernelparam=''): if InventoryLib.ogIsEfiActive(): # Movemos el grubx64.efi for b in (glob.glob (f'{efisecondstage}/EFI/{efisubdir}/EFI/BOOT/*')): - os.rename (f'{efisecondstage}/EFI/{efisubdir}/EFI/BOOT/{b}', f'{efisecondstage}/EFI/{efisubdir}/Boot/{b}') + bn = os.path.basename (b) + os.rename (f'{efisecondstage}/EFI/{efisubdir}/EFI/BOOT/{bn}', f'{efisecondstage}/EFI/{efisubdir}/Boot/{bn}') shutil.rmtree (f'{efisecondstage}/EFI/{efisubdir}/EFI') shutil.copy2 ('/usr/lib/shim/shimx64.efi.signed', f'{efisecondstage}/EFI/{efisubdir}/Boot/shimx64.efi') # Nombre OpenGnsys para cargador @@ -484,7 +485,7 @@ def ogGrubInstallMbr (disk, par, checkos='FALSE', kernelparam=''): UEFILib.ogNvramAddEntry ('grub', '/EFI/grub/Boot/shimx64.efi') grubentry = UEFILib.ogNvramList() for l in grubentry.splitlines(): - words = l.split (maxsplit=1) + words = l.split() if len(words) < 2: continue if 'grub' == words[1]: grubentry = words[0] diff --git a/client/lib/engine/bin/DiskLib.py b/client/lib/engine/bin/DiskLib.py index 61f97f3..dcde73f 100755 --- a/client/lib/engine/bin/DiskLib.py +++ b/client/lib/engine/bin/DiskLib.py @@ -804,6 +804,7 @@ def ogGetPartitionActive (disk): def ogGetPartitionId (disk, par): DISK = ogDiskToDev (disk) if DISK is None: return + fsid = None pttype = ogGetPartitionTableType (disk) if 'GPT' == pttype: @@ -814,7 +815,7 @@ def ogGetPartitionId (disk, par): if idx == par: fsid = code break - if fsid == '8300' and f'{disk} {par}' == ogFindCache(): + if fsid == '8300' and f'{disk} {par}' == CacheLib.ogFindCache(): fsid = 'CA00' elif 'MSDOS' == pttype: fsid = subprocess.run (['sfdisk', '--part-type', DISK, par], capture_output=True, text=True).stdout.strip() diff --git a/client/lib/engine/bin/FileSystemLib.py b/client/lib/engine/bin/FileSystemLib.py index 570bbd8..9120a5e 100755 --- a/client/lib/engine/bin/FileSystemLib.py +++ b/client/lib/engine/bin/FileSystemLib.py @@ -307,9 +307,9 @@ def ogFormatFs (disk, par, fs=None, label=None): subprocess.run (['umount', PART]) try: if input: - errcode = subprocess.run ([prog, params, PART]) + errcode = subprocess.run ([prog] + params.split (' ') + [PART]) else: - errcode = subprocess.run ([prog, params, PART], input=input, text=True) + errcode = subprocess.run ([prog] + params.split (' ') + [PART], input=input, text=True) except FileNotFoundError: SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_NOTEXEC, prog) errcode = ogGlobals.OG_ERR_NOTEXEC diff --git a/client/shared/functions/ogGrubInstallMbr b/client/shared/functions/ogGrubInstallMbr new file mode 100755 index 0000000..97a7497 --- /dev/null +++ b/client/shared/functions/ogGrubInstallMbr @@ -0,0 +1,25 @@ +#!/usr/bin/python3 + +import sys +import argparse +from SystemLib import ogHelp +from BootLib import ogGrubInstallMbr + +parser = argparse.ArgumentParser (add_help=False) +parser.add_argument ('disk') +parser.add_argument ('par') +parser.add_argument ('checkos', nargs='?', default='FALSE') +parser.add_argument ('kernelparam', nargs='?', default='') + +if 2 == len (sys.argv) and 'help' == sys.argv[1]: + #parser.print_help() sale en inglés aunque la locale indique otra cosa + ogHelp ('ogGrubInstallMbr', 'ogGrubInstallMbr int_ndiskSecondStage int_partitionSecondStage bolean_Configure_2ndStage "param param"', ['ogGrubInstallMbr 1 1 FALSE', 'ogGrubInstallMbr 1 1 TRUE "nomodeset irqpoll pci=noacpi quiet splash"']) + sys.exit (0) + +args = parser.parse_args() + +ret = ogGrubInstallMbr (args.disk, args.par, args.checkos, args.kernelparam) +if ret is not None: + if ret == True: sys.exit (0) + elif ret == False: sys.exit (1) + else: print (ret)