Improvements and bug fixes

1. Added Finnix
2. Check for EFI binary after uninstalling a distro (and copy mbusb binary if not present)
3. Added Fatdog
4. Improved way to detect grub*.cfg file
5. Corrected spelling mistake
pull/124/head
mbusb 7 years ago
parent 2fc61df51e
commit 7b92c2021b

Binary file not shown.

@ -0,0 +1 @@
This file is created by multibootusb.

@ -84,7 +84,7 @@ def distro(iso_cfg_ext_dir, iso_link):
return "wifislax"
elif re.search(r'slax', string, re.I):
return "slax"
elif re.search(r'sms |vector|autoexec', string, re.I) and isolinux_bin_exist(iso_link):
elif re.search(r'sms.jpg|vector|autoexec', string, re.I) and isolinux_bin_exist(iso_link):
return "sms"
elif re.search(r'antix', string, re.I):
return "antix"
@ -98,7 +98,7 @@ def distro(iso_cfg_ext_dir, iso_link):
return "finnix"
elif re.search(r'wifiway', string, re.I):
return "wifiway"
elif re.search(r'puppy|quirky', string, re.I):
elif re.search(r'puppy|quirky|fatdog', string, re.I):
return "puppy"
elif re.search(r'ipcop', string, re.I):
return "ipcop"

@ -47,8 +47,8 @@ def mbusb_update_grub_cfg():
syslinux_menu = iso_iso_cfg_path.replace('\\', '/')
efi_grub_cfg = get_grub_cfg(config.iso_link)
loopback_cfg_path = iso.iso_file_path(config.iso_link, 'loopback.cfg')
boot_grub_cfg = get_grub_cfg(config.iso_link, efi=False)
loopback_cfg_path = iso.iso_file_path(config.iso_link, 'loopback.cfg')
if loopback_cfg_path is not False:
grub_cfg_path = loopback_cfg_path.replace('\\', '/')
@ -102,9 +102,11 @@ def get_grub_cfg(iso_link, efi=True):
if os.path.exists(iso_link):
grub_path = False
iso_file_list = _7zip.list_iso(iso_link)
if any("grub.cfg" in s.lower() for s in iso_file_list):
if any("grub" in s.lower() for s in iso_file_list):
for f in iso_file_list:
if 'grub.cfg' in f.lower():
f_basename = os.path.basename(f).lower()
if f_basename.startswith('grub') and f_basename.endswith('.cfg'):
#if 'grub.cfg' in f.lower():
if efi is True:
if 'efi' in f.lower():
grub_path = f.replace('\\', '/')
@ -114,7 +116,10 @@ def get_grub_cfg(iso_link, efi=True):
grub_path = f.replace('\\', '/')
gen.log('Found ' + grub_path)
break
else:
grub_path = f.replace('\\', '/')
gen.log('Found ' + grub_path)
break
return grub_path
@ -319,6 +324,7 @@ def iso2grub2(iso_dir):
write_to_file(grub_file_path, '}\n')
if os.path.exists(grub_file_path):
gen.log('loopback.cfg file successfully created.\nYou must send this file for debugging if something goes wrong.')
return 'loopback.cfg'
else:
gen.log('Could not convert syslinux config to loopback.cfg')

@ -155,6 +155,19 @@ def uninstall_distro():
update_sys_cfg_file()
update_grub_cfg_file()
# Check if bootx64.efi is replaced by distro
efi_grub_img = os.path.join(config.usb_mount, 'EFI', 'BOOT', 'bootx64.efi')
if not os.path.exists(efi_grub_img):
gen.log('EFI image does not exist. Copying now...')
shutil.copy2(gen.resource_path(os.path.join("data", "EFI", "BOOT", "bootx64.efi")),
os.path.join(config.usb_mount, 'EFI', 'BOOT'))
elif not gen.grub_efi_exist(efi_grub_img) is True:
gen.log('EFI image overwritten by distro install. Replacing it now...')
shutil.copy2(gen.resource_path(os.path.join("data", "EFI", "BOOT", "bootx64.efi")),
os.path.join(config.usb_mount, 'EFI', 'BOOT'))
else:
gen.log('multibootusb EFI image already exist. Not copying...')
def update_sys_cfg_file():
"""

@ -111,12 +111,20 @@ def update_distro_cfg_files(iso_link, usb_disk, distro, persistence=0):
elif distro == "ipcop":
string = re.sub(r'ipcopboot=cdrom\S*', 'ipcopboot=usb', string)
elif distro == "puppy":
string = re.sub(r'pmedia=cd\S*',
'pmedia=usbflash psubok=TRUE psubdir=/multibootusb/' + iso_basename(iso_link) + '/',
string)
if 'pmedia=cd' in string:
string = re.sub(r'pmedia=cd\S*',
'pmedia=usbflash psubok=TRUE psubdir=/multibootusb/' + iso_basename(iso_link) + '/',
string)
elif 'rootfstype' in string:
string = re.sub(r'rootfstype',
'pmedia=usbflash psubok=TRUE psubdir=/multibootusb/' + iso_basename(iso_link) + '/ rootfstype',
string)
elif distro == "slax":
string = re.sub(r'initrd=',
r'from=/multibootusb/' + iso_basename(iso_link) + '/slax fromusb initrd=', string)
elif distro == "finnix":
string = re.sub(r'initrd=',
r'finnixdir=/multibootusb/' + iso_basename(iso_link) + '/finnix initrd=', string)
elif distro == "knoppix":
string = re.sub(r'initrd=', 'knoppix_dir=/multibootusb/' + iso_basename(iso_link) + '/KNOPPIX initrd=', string)
elif distro == "gentoo":
@ -242,7 +250,7 @@ def update_distro_cfg_files(iso_link, usb_disk, distro, persistence=0):
shutil.copy2(resource_path(os.path.join("data", "EFI", "BOOT", "bootx64.efi")),
os.path.join(config.usb_mount, 'EFI', 'BOOT'))
else:
gen.log('multibootusb EFI image already exist. No copying...')
gen.log('multibootusb EFI image already exist. Not copying...')
def update_mbusb_cfg_file(iso_link, usb_uuid, usb_mount, distro):

@ -37,15 +37,17 @@ setup(
('/usr/share/multibootusb/data/tools/dd', ["data/tools/dd/dd.exe"]),
('/usr/share/multibootusb/data/tools/dd', ["data/tools/dd/diskio.dll"]),
('/usr/share/multibootusb/data/tools/mkfs', ["data/tools/mkfs/mke2fs.exe"]),
('/usr/share/multibootusb/data/tools/multibootusb', ["data/multibootusb/chain.c32"]),
('/usr/share/multibootusb/data/tools/multibootusb', ["data/multibootusb/bg.png"]),
('/usr/share/multibootusb/data/tools/multibootusb', ["data/multibootusb/extlinux.cfg"]),
('/usr/share/multibootusb/data/tools/multibootusb', ["data/multibootusb/grub.exe"]),
('/usr/share/multibootusb/data/tools/multibootusb', ["data/multibootusb/memdisk"]),
('/usr/share/multibootusb/data/tools/multibootusb', ["data/multibootusb/menu.c32"]),
('/usr/share/multibootusb/data/tools/multibootusb', ["data/multibootusb/menu.lst"]),
('/usr/share/multibootusb/data/tools/multibootusb', ["data/multibootusb/syslinux.cfg"]),
('/usr/share/multibootusb/data/tools/multibootusb', ["data/multibootusb/vesamenu.c32"]),
('/usr/share/multibootusb/data/tools/EFI', ["data/EFI/*"]),
('/usr/share/multibootusb/data/multibootusb', ["data/multibootusb/chain.c32"]),
('/usr/share/multibootusb/data/multibootusb', ["data/multibootusb/bg.png"]),
('/usr/share/multibootusb/data/multibootusb', ["data/multibootusb/extlinux.cfg"]),
('/usr/share/multibootusb/data/multibootusb', ["data/multibootusb/grub.exe"]),
('/usr/share/multibootusb/data/multibootusb', ["data/multibootusb/memdisk"]),
('/usr/share/multibootusb/data/multibootusb', ["data/multibootusb/menu.c32"]),
('/usr/share/multibootusb/data/multibootusb', ["data/multibootusb/menu.lst"]),
('/usr/share/multibootusb/data/multibootusb', ["data/multibootusb/syslinux.cfg"]),
('/usr/share/multibootusb/data/multibootusb', ["data/multibootusb/vesamenu.c32"]),
('/usr/share/multibootusb/data/multibootusb/grub', ["data/multibootusb/grub/*"]),
('/usr/share/multibootusb/data/tools/syslinux', ["data/tools/syslinux/syslinux_modules.zip"]),
('/usr/share/multibootusb/data/tools/syslinux', ["data/tools/syslinux/syslinux_linux.zip"]),
('/usr/share/multibootusb/data/tools/syslinux', ["data/tools/syslinux/syslinux_linux_64.zip"]),

Loading…
Cancel
Save