From 2331f51c0bb5b8640f9a73a4e94f904c97df5c2d Mon Sep 17 00:00:00 2001 From: mbusb Date: Sat, 29 Apr 2017 16:40:11 +0530 Subject: [PATCH] Added distro and few other improvements 1. Added vba32 rescue 2. Temproraily remove 'remove ANSI color codes from logs' patch as it crash under windows --- scripts/config.py | 1 + scripts/distro.py | 2 ++ scripts/gen.py | 2 ++ scripts/grub.py | 12 +++++++----- scripts/install.py | 2 +- scripts/iso.py | 2 ++ scripts/menus.py | 10 ++++++++++ scripts/uninstall_distro.py | 2 +- scripts/update_cfg_file.py | 2 ++ 9 files changed, 28 insertions(+), 7 deletions(-) diff --git a/scripts/config.py b/scripts/config.py index 79e0448..f57b2df 100644 --- a/scripts/config.py +++ b/scripts/config.py @@ -11,6 +11,7 @@ usb_disk = "" usb_mount = "" usb_uuid = "" usb_label = "" +usb_details = '' image_path = "" persistence = 0 persistence_available = False diff --git a/scripts/distro.py b/scripts/distro.py index 6b62b43..aa1c265 100644 --- a/scripts/distro.py +++ b/scripts/distro.py @@ -135,6 +135,8 @@ def distro(iso_cfg_ext_dir, iso_link): return "pc-unlocker" elif re.search(r'/system/stage1', string, re.I): return 'pc-tool' + elif re.search(r'vba32rescue', string, re.I): + return 'grub2only' distro = detect_iso_from_file_list(iso_link) diff --git a/scripts/gen.py b/scripts/gen.py index adba561..e5519af 100644 --- a/scripts/gen.py +++ b/scripts/gen.py @@ -44,6 +44,7 @@ def log(message, info=True, error=False, debug=False): level=logging.DEBUG) print(message) + ''' # remove ANSI color codes from logs message_clean = re.compile(r'\x1b[^m]*m').sub('', message) @@ -53,6 +54,7 @@ def log(message, info=True, error=False, debug=False): logging.error(message_clean) elif debug is not False: logging.debug(message_clean) + ''' def resource_path(relativePath): diff --git a/scripts/grub.py b/scripts/grub.py index 0d6545b..41f77ca 100644 --- a/scripts/grub.py +++ b/scripts/grub.py @@ -52,8 +52,8 @@ def mbusb_update_grub_cfg(): syslinux_menu = iso_iso_cfg_path.replace('\\', '/') efi_grub_cfg = get_grub_cfg(config.image_path) - loopback_cfg_path = iso.iso_file_path(config.image_path, 'loopback.cfg') boot_grub_cfg = get_grub_cfg(config.image_path, efi=False) + loopback_cfg_path = iso.iso_file_path(config.image_path, 'loopback.cfg') if loopback_cfg_path is not False: grub_cfg_path = loopback_cfg_path.replace('\\', '/') @@ -72,8 +72,12 @@ def mbusb_update_grub_cfg(): with open(mbus_grub_cfg_path, 'a') as f: f.write("#start " + iso.iso_basename(config.image_path) + "\n") if grub_cfg_path is not None: - f.write(' menuentry ' + iso.iso_basename(config.image_path) + ' {configfile ' - + '/multibootusb/' + iso.iso_basename(config.image_path) + '/' + grub_cfg_path + '}' + "\n") + if config.distro == 'grub2only': + f.write(' menuentry ' + iso.iso_basename(config.image_path) + ' {configfile ' + + '/' + grub_cfg_path.replace('\\', '/') + '}' + "\n") + else: + f.write(' menuentry ' + iso.iso_basename(config.image_path) + ' {configfile ' + + '/multibootusb/' + iso.iso_basename(config.image_path) + '/' + grub_cfg_path + '}' + "\n") elif config.distro == 'f4ubcd': f.write(' menuentry ' + iso.iso_basename(config.image_path) + ' {linux /multibootusb/grub.exe --config-file=/multibootusb' + @@ -101,7 +105,6 @@ def mbusb_update_grub_cfg(): def write_custom_gurb_cfg(): from . import menus - print(os.path.join(config.usb_mount, 'multibootusb', iso.iso_basename(config.image_path), 'loopback.cfg')) loopback_cfg_path = os.path.join(config.usb_mount, 'multibootusb', iso.iso_basename(config.image_path), 'loopback.cfg') if config.distro == 'pc-tool': menu = menus.pc_tool_config(syslinux=False, grub=True) @@ -142,7 +145,6 @@ def grub_custom_menu(mbus_grub_cfg_path, distro): gen.log('size of the ISO is ' + str(iso_size_mb)) if distro == 'sgrubd2' or distro == 'raw_iso': grub_raw_iso(mbus_grub_cfg_path) - elif distro == '': ''' with open(mbus_grub_cfg_path, 'a') as f: diff --git a/scripts/install.py b/scripts/install.py index 76d24d1..e9219b8 100644 --- a/scripts/install.py +++ b/scripts/install.py @@ -54,7 +54,7 @@ def install_distro(): log("Copying " + config.image_path + " to " + usb_mount) shutil.copy(config.image_path, usb_mount) elif config.distro == "Windows" or config.distro == "alpine" or config.distro == 'pc-unlocker'\ - or config.distro == 'pc-tool': + or config.distro == 'pc-tool' or config.distro == 'grub2only': log("Extracting iso to " + usb_mount) iso_extract_full(config.image_path, usb_mount) elif config.distro == "trinity-rescue": diff --git a/scripts/iso.py b/scripts/iso.py index 124e5d8..f670467 100644 --- a/scripts/iso.py +++ b/scripts/iso.py @@ -182,6 +182,8 @@ def extract_cfg_file(iso_link): # file_list = iso_file_list(iso_link) for ext in _pattern: _7zip.extract_iso(iso_link, _iso_cfg_ext_dir, pattern='*' + ext) + #_7zip.extract_iso(iso_link, _iso_cfg_ext_dir, pattern='isolinux.bin ISOLINUX.BIN') + #_7zip.extract_iso(iso_link, _iso_cfg_ext_dir, pattern='*.cfg *.CFG *.txt *.TXT *.lst') def iso_extract_full(iso_link, dest_dir): diff --git a/scripts/menus.py b/scripts/menus.py index cd513e7..0d40a6a 100644 --- a/scripts/menus.py +++ b/scripts/menus.py @@ -8,6 +8,7 @@ from . import iso from . import config +from . import grub def pc_tool_config(syslinux=True, grub=False): @@ -25,3 +26,12 @@ APPEND initrd=/system/stage2 root=/dev/ram0 rw rdinit=/linuxrc video=vesa:ywrap, return """menuentry """ + iso.iso_basename(config.image_path) + """ { linux /system/stage1 root=/dev/ram0 rw rdinit=/linuxrc video=vesa:ywrap,mtrr vga=0x303 loglevel=0 splash boot=cdrom initrd /system/stage2\n}""" + + +def grub2only(): + return """MENU LABEL """ + iso.iso_basename(config.image_path) + """ +Linux /multibootusb/grub/lnxboot.img +INITRD /multibootusb/grub/core.img +TEXT HELP + Switch to GRUB2 to select boot options. +ENDTEXT\n""" diff --git a/scripts/uninstall_distro.py b/scripts/uninstall_distro.py index 2e4292b..256d9ce 100644 --- a/scripts/uninstall_distro.py +++ b/scripts/uninstall_distro.py @@ -21,7 +21,7 @@ def install_distro_list(): List all distro names installed by previous install :return: List of distro names as list """ - usb_details = config.usb_details + usb_details = details(config.usb_disk) config.usb_mount = usb_details['mount_point'] sys_cfg_file = os.path.join(config.usb_mount, "multibootusb", "syslinux.cfg") diff --git a/scripts/update_cfg_file.py b/scripts/update_cfg_file.py index b1af928..b014d1a 100644 --- a/scripts/update_cfg_file.py +++ b/scripts/update_cfg_file.py @@ -346,6 +346,8 @@ def update_mbusb_cfg_file(iso_link, usb_uuid, usb_mount, distro): config_file.write("append initrd=../ntldr" + '\n') elif distro == 'pc-tool': config_file.write(menus.pc_tool_config(syslinux=True, grub=False)) + elif distro == 'grub2only': + config_file.write(menus.grub2only()) else: if isolinux_bin_exist(config.image_path) is True: if distro == "generic":