X-Git-Url: https://git.grml.org/?p=grml2usb.git;a=blobdiff_plain;f=grml2usb;h=e9bfe3dbefac010c3a7fa62d25660331cb3e6947;hp=fd03ef9c5594763368e21f79255a16e84d1c3cf3;hb=4c6a9738ca22d462bf8d30214a0e40e522931b2c;hpb=b5737ff391355c1a7ed6a996b2cbb70a8c1addf0 diff --git a/grml2usb b/grml2usb index fd03ef9..e9bfe3d 100755 --- a/grml2usb +++ b/grml2usb @@ -12,13 +12,13 @@ This script installs a grml system (either a running system or ISO[s]) to a USB """ -from __future__ import with_statement +# from __future__ import with_statement from optparse import OptionParser from inspect import isroutine, isclass import datetime, logging, os, re, subprocess, sys, tempfile, time # global variables -PROG_VERSION = "0.9.8" +PROG_VERSION = "0.9.9" MOUNTED = set() # register mountpoints TMPFILES = set() # register tmpfiles DATESTAMP = time.mktime(datetime.datetime.now().timetuple()) # unique identifier for syslinux.cfg @@ -245,16 +245,20 @@ def generate_main_grub2_config(grml_flavour, bootoptions): return("""\ ## main grub2 configuration - generated by grml2usb [main config generated at: %(local_datestamp)s] set default=0 -set timeout=5 +set timeout=10 insmod fat -if font /boot/grub/ascii.pff ; then +if loadfont /boot/grub/ascii.pf2 ; then insmod png set gfxmode=640x480 insmod gfxterm insmod vbe - terminal gfxterm + if terminal_output.gfxterm ; then true ; else + # For backward compatibility with versions of terminal.mod that don't + # understand terminal_output + terminal gfxterm + fi fi if background_image /boot/grub/grml.png ; then @@ -266,26 +270,35 @@ else fi menuentry "%(grml_flavour)s (default)" { - linux /boot/release/%(grml_flavour)s/linux26 apm=power-off vga=791 quiet boot=live nomce live-media-path=/live/%(grml_flavour)s/ %(bootoptions)s + set gfxpayload=1024x768x16,1024x768 + linux /boot/release/%(grml_flavour)s/linux26 apm=power-off quiet boot=live nomce live-media-path=/live/%(grml_flavour)s/ %(bootoptions)s initrd /boot/release/%(grml_flavour)s/initrd.gz } menuentry "Memory test (memtest86+)" { - linux /boot/addons/memtest + linux16 /boot/addons/memtest } -menuentry "Grub - all in one image" { +menuentry "Boot Grub (all in one image)" { linux /boot/addons/memdisk initrd /boot/addons/allinone.img } -menuentry "FreeDOS" { +menuentry "Boot FreeDOS" { linux /boot/addons/memdisk initrd /boot/addons/balder10.imz } -menuentry "MirOS BSD" { - multiboot /boot/addons/bsd4grml/ldbsd.com +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 } menuentry "Boot OS of first partition on first disk" { @@ -307,56 +320,56 @@ def generate_flavour_specific_grub2_config(grml_flavour, bootoptions): return("""\ ## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s] -menuentry "%(grml_flavour)s" { - linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce vga=791 quiet live-media-path=/live/%(grml_flavour)s/ %(bootoptions)s +menuentry "%(grml_flavour)s - boot in default mode" { + set gfxpayload=1024x768x16,1024x768 + linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce quiet live-media-path=/live/%(grml_flavour)s/ %(bootoptions)s initrd /boot/release/%(grml_flavour)s/initrd.gz } ## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s] -menuentry "%(grml_flavour)s-persistent" { - linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce vga=791 quiet persistent live-media-path=/live/%(grml_flavour)s/ %(bootoptions)s +menuentry "%(grml_flavour)s-persistent - enable persistency feature" { + set gfxpayload=1024x768x16,1024x768 + linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce quiet persistent live-media-path=/live/%(grml_flavour)s/ %(bootoptions)s initrd /boot/release/%(grml_flavour)s/initrd.gz } ## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s] -menuentry "%(grml_flavour)s2ram" { - linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce vga=791 quiet live-media-path=/live/%(grml_flavour)s/ toram=%(grml_flavour)s.squashfs %(bootoptions)s +menuentry "%(grml_flavour)s2ram - copy compressed grml file to RAM" { + set gfxpayload=1024x768x16,1024x768 + linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce quiet live-media-path=/live/%(grml_flavour)s/ toram=%(grml_flavour)s.squashfs %(bootoptions)s initrd /boot/release/%(grml_flavour)s/initrd.gz } ## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s] -menuentry "%(grml_flavour)s-debug" { - linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce vga=791 quiet live-media-path=/live/%(grml_flavour)s/ debug boot=live initcall_debug%(bootoptions)s +menuentry "%(grml_flavour)s-debug - enable debugging options" { + set gfxpayload=1024x768x16,1024x768 + linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce quiet live-media-path=/live/%(grml_flavour)s/ debug boot=live initcall_debug%(bootoptions)s initrd /boot/release/%(grml_flavour)s/initrd.gz } ## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s] -menuentry "%(grml_flavour)s-x" { - linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce vga=791 quiet live-media-path=/live/%(grml_flavour)s/ startx=wm-ng %(bootoptions)s +menuentry "%(grml_flavour)s-x - start X Window System" { + set gfxpayload=1024x768x16,1024x768 + linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce quiet live-media-path=/live/%(grml_flavour)s/ startx=wm-ng %(bootoptions)s initrd /boot/release/%(grml_flavour)s/initrd.gz } ## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s] -menuentry "%(grml_flavour)s-nofb" { +menuentry "%(grml_flavour)s-nofb - disable framebuffer" { linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce quiet live-media-path=/live/%(grml_flavour)s/ vga=normal video=ofonly %(bootoptions)s initrd /boot/release/%(grml_flavour)s/initrd.gz } ## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s] -menuentry "%(grml_flavour)s-failsafe" { +menuentry "%(grml_flavour)s-failsafe - disable hardware detection" { linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce quiet live-media-path=/live/%(grml_flavour)s/ vga=normal boot=live noautoconfig atapicd noapic noacpi acpi=off nomodules nofirewire noudev nousb nohotplug noapm nopcmcia nosmp maxcpus=0 noscsi noagp nodma ide=nodma noswap nofstab nosound nogpm nosyslog nodhcp nocpu nodisc nomodem xmodule=vesa noraid nolvm noresume selinux=0 edd=off %(bootoptions)s initrd /boot/release/%(grml_flavour)s/initrd.gz } ## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s] -menuentry "%(grml_flavour)s-forensic" { - linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce vga=791 quiet live-media-path=/live/%(grml_flavour)s/ nofstab noraid nolvm noautoconfig noswap raid=noautodetect forensic readonly %(bootoptions)s - initrd /boot/release/%(grml_flavour)s/initrd.gz -} - -## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s] -menuentry "%(grml_flavour)s-serial" { - linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce quiet live-media-path=/live/%(grml_flavour)s/ vga=normal video=vesafb:off console=tty1 console=ttyS0,9600n8 %(bootoptions)s +menuentry "%(grml_flavour)s-forensic - do not touch harddisks during hw recognition" { + set gfxpayload=1024x768x16,1024x768 + linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce quiet live-media-path=/live/%(grml_flavour)s/ nofstab noraid nolvm noautoconfig noswap raid=noautodetect forensic readonly %(bootoptions)s initrd /boot/release/%(grml_flavour)s/initrd.gz } @@ -612,20 +625,21 @@ def install_grub(device): device_mountpoint = tempfile.mkdtemp(prefix="grml2usb") register_tmpfile(device_mountpoint) try: - mount(device, device_mountpoint, "") - logging.debug("grub-install --recheck --no-floppy --root-directory=%s %s", device_mountpoint, device) - proc = subprocess.Popen(["grub-install", "--recheck", "--no-floppy", - "--root-directory=%s" % device_mountpoint, device], stdout=file(os.devnull, "r+")) - proc.wait() - if proc.returncode != 0: - # raise Exception("error executing grub-install") - logging.critical("Fatal: error executing grub-install (please check the grml2usb FAQ)") + try: + mount(device, device_mountpoint, "") + logging.debug("grub-install --recheck --no-floppy --root-directory=%s %s", device_mountpoint, device) + proc = subprocess.Popen(["grub-install", "--recheck", "--no-floppy", + "--root-directory=%s" % device_mountpoint, device], stdout=file(os.devnull, "r+")) + proc.wait() + if proc.returncode != 0: + # raise Exception("error executing grub-install") + logging.critical("Fatal: error executing grub-install (please check the grml2usb FAQ)") + cleanup() + sys.exit(1) + except CriticalException, error: + logging.critical("Fatal: %s" % error) cleanup() sys.exit(1) - except CriticalException, error: - logging.critical("Fatal: %s" % error) - cleanup() - sys.exit(1) finally: unmount(device_mountpoint, "") @@ -1166,10 +1180,10 @@ def copy_bootloader_files(iso_mount, target): proc.wait() # font file for graphical bootsplash in grub - if os.path.isfile("/usr/share/grub/ascii.pff"): - logging.debug("rsync -rlptDH --inplace /usr/share/grub/ascii.pff to %s" % grub_target + 'ascii.pff') - proc = subprocess.Popen(["rsync", "-rlptDH", "--inplace", '/usr/share/grub/ascii.pff', - grub_target + 'ascii.pff']) + if os.path.isfile("/usr/share/grub/ascii.pf2"): + logging.debug("rsync -rlptDH --inplace /usr/share/grub/ascii.pf2 to %s" % grub_target + 'ascii.pf2') + proc = subprocess.Popen(["rsync", "-rlptDH", "--inplace", '/usr/share/grub/ascii.pf2', + grub_target + 'ascii.pf2']) proc.wait() @@ -1479,12 +1493,13 @@ def handle_dir(live_image, device): sys.exit(1) try: - grml_flavour = identify_grml_flavour(live_image) - logging.info("Identified grml flavour \"%s\"." % grml_flavour) - install_iso_files(grml_flavour, live_image, device, device_mountpoint) - except TypeError: - logging.critical("Fatal: a critical error happend during execution (not a grml ISO?), giving up") - sys.exit(1) + try: + grml_flavour = identify_grml_flavour(live_image) + logging.info("Identified grml flavour \"%s\"." % grml_flavour) + install_iso_files(grml_flavour, live_image, device, device_mountpoint) + except TypeError: + logging.critical("Fatal: a critical error happend during execution (not a grml ISO?), giving up") + sys.exit(1) finally: if remove_device_mountpoint: try: @@ -1537,12 +1552,13 @@ def handle_iso(iso, device): sys.exit(1) try: - grml_flavour = identify_grml_flavour(iso_mountpoint) - logging.info("Identified grml flavour \"%s\"." % grml_flavour) - install_iso_files(grml_flavour, iso_mountpoint, device, device_mountpoint) - except TypeError: - logging.critical("Fatal: a critical error happend during execution (not a grml ISO?), giving up") - sys.exit(1) + try: + grml_flavour = identify_grml_flavour(iso_mountpoint) + logging.info("Identified grml flavour \"%s\"." % grml_flavour) + install_iso_files(grml_flavour, iso_mountpoint, device, device_mountpoint) + except TypeError: + logging.critical("Fatal: a critical error happend during execution (not a grml ISO?), giving up") + sys.exit(1) finally: if os.path.isdir(iso_mountpoint) and remove_iso_mountpoint: unmount(iso_mountpoint, "")