X-Git-Url: http://git.grml.org/?p=grml2usb.git;a=blobdiff_plain;f=grml2usb;h=b5976025159139bdc57b68b7bff58a5e7f1ec640;hp=7af8f44174a1f4a7daf58703d12928713ea3d1c0;hb=ae64e9bf352a68eaaac13113d78c67e72b101fcf;hpb=844bfae19ec2fdef0e400eeacdaaa53a9d5ec997 diff --git a/grml2usb b/grml2usb index 7af8f44..b597602 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) @@ -358,7 +360,7 @@ menuentry "%(grml_flavour)s2ram - copy compressed grml file to RAM" { ## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)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 + linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce quiet live-media-path=/live/%(grml_flavour)s/ debug initcall_debug%(bootoptions)s initrd /boot/release/%(grml_flavour)s/initrd.gz } @@ -377,7 +379,7 @@ menuentry "%(grml_flavour)s-nofb - disable framebuffer" { ## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s] 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 pci=nomsi %(bootoptions)s + linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce quiet live-media-path=/live/%(grml_flavour)s/ vga=normal 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 pci=nomsi %(bootoptions)s initrd /boot/release/%(grml_flavour)s/initrd.gz } @@ -419,7 +421,7 @@ initrd (hd0,%(install_partition)s)/boot/release/%(grml_flavour)s/initrd.gz ## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s] title %(grml_flavour)s-debug -kernel (hd0,%(install_partition)s)/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 +kernel (hd0,%(install_partition)s)/boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce vga=791 quiet live-media-path=/live/%(grml_flavour)s/ debug initcall_debug%(bootoptions)s initrd (hd0,%(install_partition)s)/boot/release/%(grml_flavour)s/initrd.gz ## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s] @@ -434,7 +436,7 @@ initrd (hd0,%(install_partition)s)/boot/release/%(grml_flavour)s/initrd.gz ## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s] title %(grml_flavour)s-failsafe -kernel (hd0,%(install_partition)s)/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 pci=nomsi %(bootoptions)s +kernel (hd0,%(install_partition)s)/boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce quiet live-media-path=/live/%(grml_flavour)s/ vga=normal 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 pci=nomsi %(bootoptions)s initrd (hd0,%(install_partition)s)/boot/release/%(grml_flavour)s/initrd.gz ## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)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._]+)") @@ -1361,11 +1371,18 @@ def adjust_syslinux_bootoptions(src_name, dst_name, flavour): src = open(src_name, "r") dst = open(dst_name, "w") + # do NOT write "None" in kernel cmdline + if options.bootoptions is None: + bootopt = "" + else: + bootopt = options.bootoptions + 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) + line = append_re.sub(r'\1 boot=live %s ' % bootopt, line) dst.write(line) src.close() dst.close() @@ -1388,8 +1405,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 +1452,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 +1477,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 +1786,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()