|
|
|
@ -24,18 +24,18 @@ mbr_bin = resource_path(os.path.join("data", "tools", "mbr.bin"))
|
|
|
|
|
|
|
|
|
|
def set_boot_flag(usb_disk):
|
|
|
|
|
if platform.system() == "Linux":
|
|
|
|
|
log ("\nChecking boot flag on " + usb_disk[:-1], '\n')
|
|
|
|
|
log("\nChecking boot flag on " + usb_disk[:-1], '\n')
|
|
|
|
|
cmd_out = subprocess.check_output("parted -m -s " + usb_disk[:-1] + " print", shell=True)
|
|
|
|
|
if b'boot' in cmd_out:
|
|
|
|
|
log ("\nDisk " + usb_disk[:-1] + " already has boot flag.\n")
|
|
|
|
|
log("\nDisk " + usb_disk[:-1] + " already has boot flag.\n")
|
|
|
|
|
return True
|
|
|
|
|
else:
|
|
|
|
|
log ("\nExecuting ==> parted " + usb_disk[:-1] + " set 1 boot on", '\n')
|
|
|
|
|
log("\nExecuting ==> parted " + usb_disk[:-1] + " set 1 boot on", '\n')
|
|
|
|
|
if subprocess.call("parted " + usb_disk[:-1] + " set 1 boot on", shell=True) == 0:
|
|
|
|
|
log ("\nBoot flag set to bootable " + usb_disk[:-1], '\n')
|
|
|
|
|
log("\nBoot flag set to bootable " + usb_disk[:-1], '\n')
|
|
|
|
|
return True
|
|
|
|
|
else:
|
|
|
|
|
log ("\nUnable to set boot flag on " + usb_disk[:-1], '\n')
|
|
|
|
|
log("\nUnable to set boot flag on " + usb_disk[:-1], '\n')
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -50,18 +50,18 @@ def syslinux_default(usb_disk, version=4):
|
|
|
|
|
usb_fs = usb_details['file_system']
|
|
|
|
|
usb_mount = usb_details['mount_point']
|
|
|
|
|
mbr_install_cmd = 'dd bs=440 count=1 conv=notrunc if=' + mbr_bin + ' of=' + usb_disk[:-1]
|
|
|
|
|
# log (usb_fs)
|
|
|
|
|
# log(usb_fs)
|
|
|
|
|
if usb_fs in extlinux_fs:
|
|
|
|
|
extlinu_cmd = extlinux_path + ' --install ' + os.path.join(usb_mount, 'multibootusb')
|
|
|
|
|
if os.access(extlinux_path, os.X_OK) is False:
|
|
|
|
|
subprocess.call('chmod +x ' + extlinux_path, shell=True)
|
|
|
|
|
log ("\nExecuting ==> " + extlinu_cmd)
|
|
|
|
|
log("\nExecuting ==> " + extlinu_cmd)
|
|
|
|
|
config.status_text = 'Installing default extlinux version 4...'
|
|
|
|
|
if subprocess.call(extlinu_cmd, shell=True) == 0:
|
|
|
|
|
log ("\nDefault Extlinux install is success...\n")
|
|
|
|
|
log("\nDefault Extlinux install is success...\n")
|
|
|
|
|
config.status_text = 'Default extlinux install is success...'
|
|
|
|
|
config.status_text = 'Installing mbr...'
|
|
|
|
|
log ('\nExecuting ==> ' + mbr_install_cmd)
|
|
|
|
|
log('\nExecuting ==> ' + mbr_install_cmd)
|
|
|
|
|
if subprocess.call(mbr_install_cmd, shell=True) == 0:
|
|
|
|
|
config.status_text = 'mbr install is successful...'
|
|
|
|
|
log("\nmbr install is success...\n")
|
|
|
|
@ -74,31 +74,31 @@ def syslinux_default(usb_disk, version=4):
|
|
|
|
|
syslinux_cmd = syslinux_path + ' -i -d multibootusb ' + usb_disk
|
|
|
|
|
if os.access(syslinux_path, os.X_OK) is False:
|
|
|
|
|
subprocess.call('chmod +x ' + syslinux_path, shell=True)
|
|
|
|
|
log ("\nExecuting ==> " + syslinux_cmd + "\n")
|
|
|
|
|
log("\nExecuting ==> " + syslinux_cmd + "\n")
|
|
|
|
|
config.status_text = 'Installing default syslinux version 4...'
|
|
|
|
|
if subprocess.call(syslinux_cmd, shell=True) == 0:
|
|
|
|
|
log ("\nDefault syslinux install is success...\n")
|
|
|
|
|
log("\nDefault syslinux install is success...\n")
|
|
|
|
|
config.status_text = 'Default syslinux successfully installed...'
|
|
|
|
|
if subprocess.call(mbr_install_cmd, shell=True) == 0:
|
|
|
|
|
config.status_text = 'mbr install is success...'
|
|
|
|
|
log ("\nmbr install is success...\n")
|
|
|
|
|
log("\nmbr install is success...\n")
|
|
|
|
|
if set_boot_flag(usb_disk) is True:
|
|
|
|
|
return True
|
|
|
|
|
else:
|
|
|
|
|
log ("\nFailed to install default syslinux...\n")
|
|
|
|
|
log("\nFailed to install default syslinux...\n")
|
|
|
|
|
config.status_text = 'Failed to install default syslinux...'
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
elif platform.system() == "Windows":
|
|
|
|
|
syslinux = resource_path(os.path.join(multibootusb_host_dir(), "syslinux", "bin", "syslinux4.exe"))
|
|
|
|
|
log ('Executing ==>' + syslinux + ' -maf -d multibootusb ' + usb_disk)
|
|
|
|
|
log('Executing ==>' + syslinux + ' -maf -d multibootusb ' + usb_disk)
|
|
|
|
|
config.status_text = 'Installing default syslinux version 4...'
|
|
|
|
|
if subprocess.call(syslinux + ' -maf -d multibootusb ' + usb_disk, shell=True) == 0:
|
|
|
|
|
config.status_text = 'Default syslinux successfully installed...'
|
|
|
|
|
log ("\nDefault syslinux install is success...\n")
|
|
|
|
|
log("\nDefault syslinux install is success...\n")
|
|
|
|
|
return True
|
|
|
|
|
else:
|
|
|
|
|
log ("\nFailed to install default syslinux...\n")
|
|
|
|
|
log("\nFailed to install default syslinux...\n")
|
|
|
|
|
config.status_text = 'Failed to install default syslinux...'
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
@ -115,7 +115,7 @@ def syslinux_distro_dir(usb_disk, iso_link, distro):
|
|
|
|
|
usb_mount = usb_details['mount_point']
|
|
|
|
|
isolinux_bin_dir(iso_link)
|
|
|
|
|
if isolinux_bin_exist(iso_link) is False:
|
|
|
|
|
log ('Distro does not use isolinux for booting ISO.')
|
|
|
|
|
log('Distro does not use isolinux for booting ISO.')
|
|
|
|
|
else:
|
|
|
|
|
# iso_cfg_ext_dir = os.path.join(multibootusb_host_dir(), "iso_cfg_ext_dir")
|
|
|
|
|
_iso_cfg_ext_dir = iso_cfg_ext_dir()
|
|
|
|
@ -126,7 +126,7 @@ def syslinux_distro_dir(usb_disk, iso_link, distro):
|
|
|
|
|
log('Distro uses really old isolinux. Installing version 3 instead of 2.')
|
|
|
|
|
config.syslinux_version = '3'
|
|
|
|
|
|
|
|
|
|
if distro == "generic" or distro == "alpine":
|
|
|
|
|
if distro in ["generic", "alpine"]:
|
|
|
|
|
install_dir = usb_mount
|
|
|
|
|
distro_syslinux_install_dir = os.path.join(usb_mount, iso_linux_bin_dir.strip("/")).replace(usb_mount, "")
|
|
|
|
|
distro_sys_install_bs = os.path.join(install_dir, iso_linux_bin_dir.strip("/"), distro + '.bs')
|
|
|
|
@ -134,8 +134,8 @@ def syslinux_distro_dir(usb_disk, iso_link, distro):
|
|
|
|
|
install_dir = os.path.join(usb_mount, "multibootusb", iso_basename(iso_link))
|
|
|
|
|
distro_syslinux_install_dir = os.path.join(install_dir, iso_linux_bin_dir.strip("/")).replace(usb_mount, "")
|
|
|
|
|
distro_sys_install_bs = os.path.join(install_dir, iso_linux_bin_dir.strip("/"), distro + '.bs')
|
|
|
|
|
# log (distro_sys_install_bs)
|
|
|
|
|
# log (distro_syslinux_install_dir)
|
|
|
|
|
# log(distro_sys_install_bs)
|
|
|
|
|
# log(distro_syslinux_install_dir)
|
|
|
|
|
|
|
|
|
|
if usb_fs in syslinux_fs:
|
|
|
|
|
if config.syslinux_version == str(3):
|
|
|
|
@ -155,22 +155,22 @@ def syslinux_distro_dir(usb_disk, iso_link, distro):
|
|
|
|
|
subprocess.call('chmod +x ' + syslinux_path, shell=True) == 0
|
|
|
|
|
sys_cmd = syslinux_path + option + quote(distro_syslinux_install_dir) + ' ' + usb_disk
|
|
|
|
|
dd_cmd = 'dd if=' + usb_disk + ' ' + 'of=' + quote(distro_sys_install_bs) + ' count=1'
|
|
|
|
|
log ("Executing ==> " + sys_cmd)
|
|
|
|
|
log("Executing ==> " + sys_cmd)
|
|
|
|
|
config.status_text = 'Installing distro specific syslinux...'
|
|
|
|
|
if subprocess.call(sys_cmd, shell=True) == 0:
|
|
|
|
|
config.status_text = 'Syslinux install on distro directory is successful...'
|
|
|
|
|
log ("\nSyslinux install on distro directory is successful...\n")
|
|
|
|
|
log ('Executing ==> ' + dd_cmd + '\n')
|
|
|
|
|
log("\nSyslinux install on distro directory is successful...\n")
|
|
|
|
|
log('Executing ==> ' + dd_cmd + '\n')
|
|
|
|
|
config.status_text = 'Copying boot sector...'
|
|
|
|
|
if subprocess.call(dd_cmd, shell=True) == 0:
|
|
|
|
|
config.status_text = 'Bootsector copy is successful...'
|
|
|
|
|
log ("\nBootsector copy is successful...\n")
|
|
|
|
|
log("\nBootsector copy is successful...\n")
|
|
|
|
|
else:
|
|
|
|
|
config.status_text = 'Failed to copy boot sector...'
|
|
|
|
|
log ("\nFailed to copy boot sector...\n")
|
|
|
|
|
log("\nFailed to copy boot sector...\n")
|
|
|
|
|
else:
|
|
|
|
|
config.status_text = 'Failed to install syslinux on distro directory...'
|
|
|
|
|
log ("\nFailed to install syslinux on distro directory...\n")
|
|
|
|
|
log("\nFailed to install syslinux on distro directory...\n")
|
|
|
|
|
|
|
|
|
|
elif platform.system() == "Windows":
|
|
|
|
|
syslinux_path = resource_path(os.path.join(multibootusb_host_dir(), "syslinux", "bin")) + \
|
|
|
|
@ -183,10 +183,10 @@ def syslinux_distro_dir(usb_disk, iso_link, distro):
|
|
|
|
|
config.status_text = 'Installing distro specific syslinux...'
|
|
|
|
|
if subprocess.call(sys_cmd, shell=True) == 0:
|
|
|
|
|
config.status_text = 'Syslinux install on distro directory is successful...'
|
|
|
|
|
log ("\nSyslinux install was successful on distro directory...\n")
|
|
|
|
|
log("\nSyslinux install was successful on distro directory...\n")
|
|
|
|
|
else:
|
|
|
|
|
config.status_text = 'Failed to install syslinux on distro directory...'
|
|
|
|
|
log ("\nFailed to install syslinux on distro directory...\n")
|
|
|
|
|
log("\nFailed to install syslinux on distro directory...\n")
|
|
|
|
|
elif usb_fs in extlinux_fs:
|
|
|
|
|
if platform.system() == "Linux":
|
|
|
|
|
distro_syslinux_install_dir = os.path.join(install_dir, iso_linux_bin_dir.strip("/"))
|
|
|
|
@ -195,18 +195,18 @@ def syslinux_distro_dir(usb_disk, iso_link, distro):
|
|
|
|
|
dd_cmd = 'dd if=' + usb_disk + ' ' + 'of=' + quote(distro_sys_install_bs) + ' count=1'
|
|
|
|
|
if os.access(syslinux_path, os.X_OK) is False:
|
|
|
|
|
subprocess.call('chmod +x ' + syslinux_path, shell=True) == 0
|
|
|
|
|
log ("Executing ==> " + ext_cmd)
|
|
|
|
|
log("Executing ==> " + ext_cmd)
|
|
|
|
|
if subprocess.call(ext_cmd, shell=True) == 0:
|
|
|
|
|
log ("\nSyslinux install on distro directory is successful...\n")
|
|
|
|
|
log ('Executing ==> ' + dd_cmd, '\n')
|
|
|
|
|
log("\nSyslinux install on distro directory is successful...\n")
|
|
|
|
|
log('Executing ==> ' + dd_cmd, '\n')
|
|
|
|
|
if subprocess.call(dd_cmd, shell=True) == 0:
|
|
|
|
|
log ("\nBootsector copy is successful...\n")
|
|
|
|
|
log("\nBootsector copy is successful...\n")
|
|
|
|
|
else:
|
|
|
|
|
log ("\nFailed to install syslinux on distro directory...\n")
|
|
|
|
|
log("\nFailed to install syslinux on distro directory...\n")
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
if os.geteuid() != 0:
|
|
|
|
|
log ('Please running this script with sudo/root/admin privilage.')
|
|
|
|
|
log('Please running this script with sudo/root/admin privilage.')
|
|
|
|
|
exit(1)
|
|
|
|
|
else:
|
|
|
|
|
syslinux_distro_dir('/dev/sdb1', '../../../DISTROS/2016/debian-live-8.3.0-amd64-lxde-desktop.iso', 'debian')
|
|
|
|
|