refs #1337 add ogGrubInstallMbr, fix bugs

code-review
Natalia Serrano 2025-01-27 17:41:38 +01:00
parent 87357f4f8e
commit 6a02b6f4f1
4 changed files with 32 additions and 5 deletions

View File

@ -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]

View File

@ -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()

View File

@ -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

View File

@ -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)