X-Git-Url: https://git.grml.org/?p=grml2usb.git;a=blobdiff_plain;f=grml2usb;h=8ffe71ff22e763243661fa2de50820ee9f62b02c;hp=7af8f44174a1f4a7daf58703d12928713ea3d1c0;hb=9ad819c6cc0031bf348066972e08fbd1391be8e0;hpb=844bfae19ec2fdef0e400eeacdaaa53a9d5ec997 diff --git a/grml2usb b/grml2usb index 7af8f44..8ffe71f 100755 --- a/grml2usb +++ b/grml2usb @@ -96,10 +96,12 @@ class CriticalException(Exception): # with manipulation of files on the octet level, like shell # arrays, e.g. in MBR creation. + def array2string(a): """Convert a list of integers [0;255] to a string.""" return struct.pack("%sB" % len(a), *a) + def string2array(s): """Convert a (bytes) string into a list of integers.""" return struct.unpack("%sB" % len(s), s) @@ -580,6 +582,7 @@ def install_grub(device): else: grub_device = device + logging.info("Installing grub as bootloader") logging.debug("grub-install --recheck --no-floppy --root-directory=%s %s", device_mountpoint, grub_device) proc = subprocess.Popen(["grub-install", "--recheck", "--no-floppy", @@ -1107,6 +1110,11 @@ def copy_bootloader_files(iso_mount, target): bootsplash = search_file(ffile, iso_mount) exec_rsync(bootsplash, syslinux_target + ffile) + # avoid the "file is read only, overwrite anyway (y/n) ?" question + # of mtools by syslinux ("mmove -D o -D O s:/ldlinux.sys $target_file") + if os.path.isfile(syslinux_target + 'ldlinux.sys'): + os.unlink(syslinux_target + 'ldlinux.sys') + if not search_file('default.cfg', iso_mount + '/boot/isolinux/'): logging.critical("Fatal: file default.cfg could not be found.") logging.critical("Note: this grml2usb version requires an ISO generated by grml-live >=0.9.24 ...") @@ -1137,6 +1145,7 @@ def copy_bootloader_files(iso_mount, target): if os.path.isfile("/usr/share/grub/ascii.pf2"): exec_rsync('/usr/share/grub/ascii.pf2', grub_target + 'ascii.pf2') + def install_iso_files(grml_flavour, iso_mount, device, target): """Copy files from ISO to given target @@ -1353,6 +1362,7 @@ def initial_syslinux_config(target): data.write(generate_main_syslinux_config()) data.close + def adjust_syslinux_bootoptions(src_name, dst_name, flavour): append_re = re.compile("^(\s*append.*)$", re.I) boot_re = re.compile("/boot/([a-zA-Z0-9_]+/)+([a-zA-Z0-9._]+)") @@ -1362,8 +1372,8 @@ def adjust_syslinux_bootoptions(src_name, dst_name, flavour): dst = open(dst_name, "w") for line in src: - line = boot_re.sub(r'/boot/release/%s/\2 ' % flavour, line) - line = flavour_re.sub(r'\1 %s-\2' % flavour, line) + line = boot_re.sub(r'/boot/release/%s/\2 ' % flavour, line) + line = flavour_re.sub(r'\1 %s-\2' % flavour, line) line = default_re.sub(r'%s-\1' % flavour, line) line = append_re.sub(r'\1 live-media-path=/live/%s/ ' % flavour, line) dst.write(line) @@ -1388,8 +1398,6 @@ def add_syslinux_entry(filename, grml_flavour): data.close() - - def handle_syslinux_config(grml_flavour, target): """Main handler for generating syslinux configuration @@ -1437,9 +1445,6 @@ def handle_syslinux_config(grml_flavour, target): add_syslinux_entry("%s/additional.cfg" % syslinux_target, grml_flavour) - - - def handle_bootloader_config(grml_flavour, device, target): """Main handler for generating bootloader's configuration @@ -1465,6 +1470,7 @@ def handle_bootloader_config(grml_flavour, device, target): logging.critical("Fatal: %s", error) sys.exit(1) + def handle_dir(live_image, device): """Main logic for copying files of the currently running grml system. @@ -1773,7 +1779,6 @@ def main(): # finally be politely :) logging.info("Finished execution of grml2usb (%s). Have fun with your grml system.", PROG_VERSION) - if __name__ == "__main__": try: main()