X-Git-Url: https://git.grml.org/?p=grml2usb.git;a=blobdiff_plain;f=grml2usb;h=9191e85e76500c471939f83463976d617eaea9db;hp=490542fc882a11e44c82ffd38314760313f87dda;hb=a3cf9517aca88f8c708ccdc9991842c5f77ee51a;hpb=c306416f649721bf858e116e1b0f5bd80bde2b66 diff --git a/grml2usb b/grml2usb index 490542f..9191e85 100755 --- a/grml2usb +++ b/grml2usb @@ -7,7 +7,7 @@ grml2usb This script installs a grml system (either a running system or ISO[s]) to a USB device -:copyright: (c) 2009 by Michael Prokop +:copyright: (c) 2009, 2010, 2011 by Michael Prokop :license: GPL v2 or any later version :bugreports: http://grml.org/bugs/ @@ -22,7 +22,7 @@ import uuid import struct # global variables -PROG_VERSION = "0.9.28" +PROG_VERSION = "0.9.30" MOUNTED = set() # register mountpoints TMPFILES = set() # register tmpfiles DATESTAMP = time.mktime(datetime.datetime.now().timetuple()) # unique identifier for syslinux.cfg @@ -324,7 +324,7 @@ if loadfont /boot/grub/ascii.pf2 ; then set gfxmode=640x480 insmod gfxterm insmod vbe - if terminal_output.gfxterm ; then true ; else + if terminal_output gfxterm ; then true ; else # For backward compatibility with versions of terminal.mod that don't # understand terminal_output terminal gfxterm @@ -359,17 +359,48 @@ menuentry "Boot FreeDOS" { initrd /boot/addons/balder10.imz } -menuentry "Boot MirOS bsd4grml" { - multiboot /boot/addons/bsd4grml/ldbsd.com - module /boot/addons/bsd4grml/bsd.rd - module /boot/addons/bsd4grml/boot.1 - module /boot/addons/bsd4grml/boot.2 - module /boot/addons/bsd4grml/boot.3 - module /boot/addons/bsd4grml/boot.4 - module /boot/addons/bsd4grml/boot.5 - module /boot/addons/bsd4grml/boot.6 - module /boot/addons/bsd4grml/boot.cfg -} +if [ ${iso_path} ] ; then + # assume loopback.cfg boot + if [ -e /boot/addons/bsd4grml/loopback.0 ] ; then + # bsd4grml 20100815 and later + menuentry "Boot MirOS bsd4grml" { + multiboot /boot/addons/bsd4grml/ldbsd.com + module /boot/addons/bsd4grml/bsd.rd bsd + module /boot/addons/bsd4grml/loopback.0 boot.cfg + module /boot/addons/bsd4grml/loopback.1 boot.1 + module /boot/addons/bsd4grml/loopback.2 boot.2 + module /boot/addons/bsd4grml/loopback.3 boot.3 + module /boot/addons/bsd4grml/loopback.4 boot.4 + module /boot/addons/bsd4grml/loopback.5 boot.5 + module /boot/addons/bsd4grml/loopback.6 boot.6 + } + else + # old bsd4grml + menuentry "Boot MirOS bsd4grml" { + multiboot /boot/addons/bsd4grml/ldbsd.com + module /boot/addons/bsd4grml/bsd.rd bsd.rd + module /boot/addons/bsd4grml/boot.cfg boot.cfg + module /boot/addons/bsd4grml/boot.1 boot.1 + module /boot/addons/bsd4grml/boot.2 boot.2 + module /boot/addons/bsd4grml/boot.3 boot.3 + module /boot/addons/bsd4grml/boot.4 boot.4 + module /boot/addons/bsd4grml/boot.5 boot.5 + } + fi +else + # assume grub.cfg boot + menuentry "Boot MirOS bsd4grml" { + multiboot /boot/addons/bsd4grml/ldbsd.com + module /boot/addons/bsd4grml/bsd.rd bsd.rd + module /boot/addons/bsd4grml/boot.cfg boot.cfg + module /boot/addons/bsd4grml/boot.1 boot.1 + module /boot/addons/bsd4grml/boot.2 boot.2 + module /boot/addons/bsd4grml/boot.3 boot.3 + module /boot/addons/bsd4grml/boot.4 boot.4 + module /boot/addons/bsd4grml/boot.5 boot.5 + module /boot/addons/bsd4grml/boot.6 boot.6 + } +fi menuentry "Boot OS of first partition on first disk" { set root=(hd0,1) @@ -1071,7 +1102,8 @@ def copy_system_files(grml_flavour, iso_mount, target): squashfs = search_file(grml_flavour + '.squashfs', iso_mount) if squashfs is None: - logging.critical("Fatal: squashfs file not found") + logging.critical("Fatal: squashfs file not found" + ", please check that your iso is not corrupt") raise CriticalException("error locating squashfs file") else: squashfs_target = target + '/live/' + grml_flavour + '/' @@ -1128,22 +1160,30 @@ def update_grml_versions(iso_mount, target): logging.warn("Warning: %s could not be found - can not install it", iso_grml_version_file) return False try: + # read the flavours from the iso image iso_versions = {} iso_file = open(iso_grml_version_file, 'r') for line in iso_file: iso_versions[get_flavour(line)] = line.strip() + # update the existing flavours on the target for line in fileinput.input([target_grml_version_file], inplace=1): flavour = get_flavour(line) if flavour in iso_versions.keys(): - print iso_versions[flavour] + print iso_versions.pop(flavour) else: print line.strip() + fileinput.close() + + target_file = open(target_grml_version_file, 'a') + # add the new flavours from the current iso + for flavour in iso_versions: + target_file.write("%s\n" % iso_versions[flavour]) except IOError: logging.warn("Warning: Could not write file") finally: iso_file.close() - fileinput.close() + target_file.close() return True else: return False @@ -1505,7 +1545,7 @@ def handle_grub2_config(grml_flavour, grub_target, bootopt): # grub2 config grub2_cfg = grub_target + 'grub.cfg' - logging.debug("Creating grub2 configuration file (grub.lst)") + logging.debug("Creating grub2 configuration file (grub.cfg)") global GRML_DEFAULT @@ -1883,6 +1923,8 @@ def install_grml(mountpoint, device): try: grml_flavours = identify_grml_flavour(mountpoint) for flavour in set(grml_flavours): + if not flavour: + logging.warning("No valid flavour found, please check your iso") logging.info("Identified grml flavour \"%s\".", flavour) install_iso_files(flavour, mountpoint, device, device_mountpoint) GRML_FLAVOURS.add(flavour)