Avoid the "file is read only, overwrite anyway (y/n) ?"
[grml2usb.git] / grml2usb
index 7af8f44..8ffe71f 100755 (executable)
--- 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()