refs #1166 add ogWindowsRegisterPartition()

code-review
Natalia Serrano 2024-11-25 17:38:41 +01:00
parent ceb82ef24e
commit 29752be51c
1 changed files with 47 additions and 0 deletions

View File

@ -6,6 +6,7 @@
#@warning License: GNU GPLv3+
#*/
import os
import re
import tempfile
import subprocess
@ -16,6 +17,7 @@ import FileSystemLib
import RegistryLib
import DiskLib
import InventoryLib
import FileLib
#/**
# ogBoot int_ndisk int_nfilesys [ NVRAMPERM ] [str_kernel str_initrd str_krnlparams]
@ -312,6 +314,51 @@ boot_entry=Herramienta de diagn<f3>stico de memoria de Windows
#@exception OG_ERR_FORMAT Formato incorrecto.
#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar.
#*/ ##
#ogWindowsRegisterPartition ("1", "1", "c:", "1", "1")
def ogWindowsRegisterPartition (registered_disk, registered_par, registered_vol, disk, par):
registered_vol = registered_vol[0].upper()
tmpfile = tempfile.NamedTemporaryFile (prefix='ogWBP-', mode='w').name
if not DiskLib.ogDiskToDev (registered_disk, registered_par):
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_PARTITION, 'particion a registrar')
return
if not DiskLib.ogDiskToDev (disk, par):
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_PARTITION, 'particion de windows')
return
t = InventoryLib.ogGetOsType (disk, par)
if 'Windows' not in t:
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_NOTOS, 'no es windows')
return
v = InventoryLib.ogGetOsVersion (disk, par)
if FileLib.ogGetPath (src=f'{disk} {par}', file='WINDOWS'):
systemroot = 'Windows'
elif FileLib.ogGetPath (src=f'{disk} {par}', file='WINNT'):
systemroot = 'winnt'
else:
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_NOTOS, '')
return
FileSystemLib.ogUnmount (disk, par)
disk0 = str (int (disk) - 1)
registered_disk0 = str (int (registered_disk) - 1)
with open (tmpfile, 'w') as fd:
fd.write (f"""windows_disk={disk0}
windows_main_part={par}
windows_dir={systemroot}
disk={registered_disk0}
main_part={registered_par}
;ext_part
part_letter={registered_vol}
""")
subprocess.run (['timeout', '--foreground', '--signal=SIGKILL', '5s', 'spartlnx.run', '-cui', '-nm', '-w', '-f', tmpfile], stdin=subprocess.DEVNULL)
os.remove (tmpfile)
#/**
# ogGrubInstallMbr int_disk_GRUBCFG int_partition_GRUBCFG