Removed dependency and few other improvements

1. Droped p7zip-plugin for suse and mageia
2. Added PC Tool. But does not seems to work
3. Added custom functions for writing custom loopback.cfg file
4. Improved CLI working
5. Added custom menu entry file
6. Removed unnecessary codes
7. Removed windows line ending which prevented application not to start
pull/151/head
mbusb 7 years ago
parent 762e644022
commit 75c787077e

@ -90,7 +90,7 @@ class pkg():
result = True
elif self.pkg_name == 'rpm' or self.pkg_name == 'suse' or self.pkg_name == 'mageia':
if self.pkg_name == 'suse' or self.pkg_name == 'mageia':
require = "python3-qt5, parted, util-linux, mtools, python3-dbus, python3-pyudev, p7zip, p7zip-plugins, python3-six"
require = "python3-qt5, parted, util-linux, mtools, python3-dbus, python3-pyudev, p7zip, python3-six"
else:
require = "python3-PyQt5, parted, util-linux, mtools, python3-dbus, python3-pyudev, p7zip, p7zip-plugins, python3-six"
setup_cfg = ("[bdist_rpm]\n"

@ -91,11 +91,11 @@ class Install():
result = True
elif subprocess.call("which zypper", shell=True) == 0:
subprocess.call("zypper refresh", shell=True)
if subprocess.call("zypper install -y mtools python3-qt5 p7zip p7zip-plugins python3-pyudev python3-six util-linux parted", shell=True) == 0:
if subprocess.call("zypper install -y mtools python3-qt5 p7zip python3-pyudev python3-six util-linux parted", shell=True) == 0:
result = True
elif subprocess.call("which urpmi", shell=True) == 0:
subprocess.call("urpmi.update -a", shell=True)
if subprocess.call("urpmi install -auto mtools util-linux p7zip p7zip-plugins python3-pyudev python3-six parted python3-qt5", shell=True) == 0:
if subprocess.call("urpmi install -auto mtools util-linux p7zip python3-pyudev python3-six parted python3-qt5", shell=True) == 0:
result = True
if result is not True:

@ -133,6 +133,8 @@ def distro(iso_cfg_ext_dir, iso_link):
return "fsecure"
elif re.search(r'default rwp', string, re.I):
return "pc-unlocker"
elif re.search(r'/system/stage1', string, re.I):
return 'pc-tool'
distro = detect_iso_from_file_list(iso_link)

@ -20,6 +20,11 @@ def mbusb_update_grub_cfg():
"""
# Lets convert syslinux config file to grub2 accepted file format.
_iso_dir = os.path.join(config.usb_mount, 'multibootusb', iso.iso_basename(config.image_path))
# First write custom loopback.cfg file so as to be detected by iso2grub2 function later.
write_custom_gurb_cfg()
# Try to generate loopback entry file from syslinux config files
try:
gen.log('Trying to create loopback.cfg')
iso2_grub2_cfg = iso2grub2(_iso_dir)
@ -50,7 +55,6 @@ def mbusb_update_grub_cfg():
loopback_cfg_path = iso.iso_file_path(config.image_path, 'loopback.cfg')
boot_grub_cfg = get_grub_cfg(config.image_path, efi=False)
if loopback_cfg_path is not False:
grub_cfg_path = loopback_cfg_path.replace('\\', '/')
elif efi_grub_cfg is not False:
@ -95,6 +99,15 @@ def mbusb_update_grub_cfg():
gen.log('Unable to update entry in 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)
write_to_file(loopback_cfg_path, menu)
def get_grub_cfg(iso_link, efi=True):
"""
Detects path to "grub.cfg" file from ISO file. Default is to get from EFI directory.

@ -53,7 +53,8 @@ def install_distro():
elif platform.system() == "Linux":
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':
elif config.distro == "Windows" or config.distro == "alpine" or config.distro == 'pc-unlocker'\
or config.distro == 'pc-tool':
log("Extracting iso to " + usb_mount)
iso_extract_full(config.image_path, usb_mount)
elif config.distro == "trinity-rescue":

@ -41,14 +41,20 @@ def cli_install_distro():
log('Starting multibootusb from Command line...')
if usb.is_block(config.usb_disk) is False:
log(config.usb_disk, 'is not a valid device partition...')
log(config.usb_disk + ' is not a valid device partition...')
exit(1)
#elif integrity(config.image_path) is not True:
# log(config.image_path, ' failed to pass integrity check...')
# exit(1)
elif size_not_enough(config.image_path, config.usb_disk) is True:
log(config.usb_disk + 'does not have enough space...')
log(config.usb_disk + ' does not have enough space...')
else:
usb_details = details(config.usb_disk)
config.usb_mount = usb_details['mount_point']
print(config.usb_mount)
print(config.image_path)
config.usb_uuid = usb_details['uuid']
config.usb_label = usb_details['label']
prepare_mbusb_host_dir()
extract_cfg_file(config.image_path)
_distro = distro(iso_cfg_ext_dir(), config.image_path)
@ -82,4 +88,4 @@ def cli_uninstall_distro():
config.uninstall_distro_dir_name = _distro_dir
unin_distro()
else:
log('No distro installed on', config.usb_disk)
log('No distro installed on ' + config.usb_disk)

@ -0,0 +1,27 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Name: menus.py
# Purpose: Module contain custom menu entries for fewer distros
# Authors: Sundar
# Licence: This file is a part of multibootusb package. You can redistribute it or modify
# under the terms of GNU General Public License, v.2 or above
from . import iso
from . import config
def pc_tool_config(syslinux=True, grub=False):
"""
Menu entry for PC Tool ISO
:param syslinux:
:param grub:
:return:
"""
if syslinux is True:
return """LABEL livecd
KERNEL /system/stage1
APPEND initrd=/system/stage2 root=/dev/ram0 rw rdinit=/linuxrc video=vesa:ywrap,mtrr vga=0x303 loglevel=0 splash boot=cdrom\n"""
elif grub is True:
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}"""

@ -76,18 +76,7 @@ def delete_frm_file_list():
if os.path.isfile(os.path.join(usb_mount, f)):
gen.log("Removing " + (os.path.join(usb_mount, f)))
os.remove(os.path.join(usb_mount, f))
'''
if 'bootx64.efi' in os.path.join(usb_mount, f) or 'grub.cfg' in os.path.join(usb_mount, f):
try:
gen.log("Removing " + (os.path.join(usb_mount, f)))
os.remove(os.path.join(usb_mount, f))
except:
gen.log('Could not remove ' + f)
else:
gen.log('Not removing ' + f)
'''
elif os.path.isdir(os.path.join(usb_mount, f)):
#if 'bootx64.efi' not in os.path.join(usb_mount, f) or 'grub.cfg' not in os.path.join(usb_mount, f):
shutil.rmtree(os.path.join(usb_mount, f))
if os.path.exists(os.path.join(usb_mount, "multibootusb", config.uninstall_distro_dir_name, "generic.cfg")):

@ -14,6 +14,7 @@ from .gen import *
from .iso import *
from . import config
from . import grub
from . import menus
def update_distro_cfg_files(iso_link, usb_disk, distro, persistence=0):
@ -343,7 +344,8 @@ def update_mbusb_cfg_file(iso_link, usb_uuid, usb_mount, distro):
elif distro == 'pc-unlocker':
config_file.write("kernel ../ldntldr" + '\n')
config_file.write("append initrd=../ntldr" + '\n')
elif distro == 'pc-tool':
config_file.write(menus.pc_tool_config(syslinux=True, grub=False))
else:
if isolinux_bin_exist(config.image_path) is True:
if distro == "generic":

Loading…
Cancel
Save