Merge branch 'master' of https://github.com/jimmy42/grml2usb
[grml2usb.git] / grml2usb
index 94f73ed..8c4277e 100755 (executable)
--- a/grml2usb
+++ b/grml2usb
@@ -5,7 +5,7 @@
 grml2usb
 ~~~~~~~~
 
-This script installs a grml system (either a running system or ISO[s]) to a USB device
+This script installs a Grml system (either a running system or ISO[s]) to a USB device
 
 :copyright: (c) 2009, 2010, 2011 by Michael Prokop <mika@grml.org>
 :license: GPL v2 or any later version
@@ -42,6 +42,7 @@ GRML_DEFAULT = None
 UUID = None
 SYSLINUX_LIBS = "/usr/lib/syslinux/"
 GPT_HEADER = "\x55\xaa\x45\x46\x49\x20\x50\x41\x52\x54"  # original GPT header
+GRUB_INSTALL = None
 
 RE_PARTITION = re.compile(r'([a-z/]*?)(\d+)$')
 RE_P_PARTITION = re.compile(r'(.*?\d+)p(\d+)$')
@@ -174,7 +175,7 @@ def cleanup():
         try:
             unmount(device, "")
             logging.debug('Unmounted %s' % device)
-        except RuntimeError:
+        except StandardError:
             logging.debug('RuntimeError while umount %s, ignoring' % device)
 
     for tmppath in TMPFILES.copy():
@@ -189,7 +190,7 @@ def cleanup():
                 os.unlink(tmppath)
                 logging.debug('temporary file %s deleted' % tmppath)
                 unregister_tmpfile(tmppath)
-        except RuntimeError:
+        except StandardError:
             msg = 'RuntimeError while removing temporary %s, ignoring'
             logging.debug(msg % tmppath)
 
@@ -470,7 +471,7 @@ def install_grub(device):
                 for opt in ["", "--force"]:
                     logging.debug("grub-install --recheck %s --no-floppy --root-directory=%s %s",
                                   opt, device_mountpoint, grub_device)
-                    proc = subprocess.Popen(["grub-install", "--recheck", opt, "--no-floppy",
+                    proc = subprocess.Popen([GRUB_INSTALL, "--recheck", opt, "--no-floppy",
                                              "--root-directory=%s" % device_mountpoint, grub_device],
                                             stdout=file(os.devnull, "r+"))
                     proc.wait()
@@ -1496,7 +1497,7 @@ def install(image, device):
         if options.force or os.path.exists(os.path.join(image, 'live')):
             logging.info("Using %s as install base", image)
         else:
-            q = raw_input("%s does not look like a grml system. "
+            q = raw_input("%s does not look like a Grml system. "
                 "Do you really want to use this image? y/N " % image)
             if q.lower() == 'y':
                 logging.info("Using %s as install base", image)
@@ -1525,7 +1526,7 @@ def install(image, device):
 
 
 def install_grml(mountpoint, device):
-    """Main logic for copying files of the currently running grml system.
+    """Main logic for copying files of the currently running Grml system.
 
     @mountpoint: directory where currently running live system resides (usually /lib/live/mount/medium)
     @device: partition where the specified ISO should be installed to"""
@@ -1725,7 +1726,8 @@ def check_options(opts):
 def check_programs():
     """check if all needed programs are installed"""
     if options.grub:
-        if not which("grub-install"):
+        GRUB_INSTALL = which("grub-install") or which("grub2-install")
+        if not GRUB_INSTALL:
             logging.critical("Fatal: grub-install not available (please install the "
                              + "grub package or drop the --grub option)")
             sys.exit(1)
@@ -1816,7 +1818,7 @@ def main():
             logging.info("Note: you can boot flavour %s using '%s' on the commandline.", flavour, flavour)
 
         # finally be polite :)
-        logging.info("Finished execution of grml2usb (%s). Have fun with your grml system.", PROG_VERSION)
+        logging.info("Finished execution of grml2usb (%s). Have fun with your Grml system.", PROG_VERSION)
 
     except Exception, error:
         logging.critical("Fatal: %s", str(error))