pass
+# The following two functions help to operate on strings as
+# array (list) of bytes (octets). In Python 3000, the bytes
+# datatype will need to be used. This is intended for using
+# 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)
+
+
def cleanup():
"""Cleanup function to make sure there aren't any mounted devices left behind.
"""
filesystem_module = search_file('filesystem.module', iso_mount)
if filesystem_module is None:
logging.critical("Fatal: filesystem.module not found")
+ raise CriticalException("error locating filesystem.module file")
else:
exec_rsync(filesystem_module, squashfs_target + 'filesystem.module')
kernel = search_file('linux26', iso_mount)
if kernel is None:
logging.critical("Fatal kernel not found")
+ raise CriticalException("error locating kernel file")
else:
exec_rsync(kernel, release_target + '/linux26')
initrd = search_file('initrd.gz', iso_mount)
if initrd is None:
logging.critical("Fatal: initrd not found")
+ raise CriticalException("error locating initrd file")
else:
exec_rsync(initrd, release_target + '/initrd.gz')
bootsplash = search_file(ffile, iso_mount)
exec_rsync(bootsplash, syslinux_target + ffile)
- for filename in 'addons.cfg', 'default.cfg', 'distri.cfg', 'hidden.cfg', 'grml.cfg', 'grml.png', 'hd.cfg', 'isoprompt.cfg', 'options.cfg','vesamenu.c32', 'vesamenu.cfg', 'grml.png':
- path = search_file(filename, iso_mount)
+ 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 ...")
+ logging.critical(" ... either use grml releases >=2009.10 or switch to an older grml2usb version.")
+ raise
+
+ for filename in 'addons.cfg', 'default.cfg', 'distri.cfg', 'hidden.cfg', \
+ 'grml.cfg', 'grml.png', 'hd.cfg', 'isoprompt.cfg', 'options.cfg', \
+ 'vesamenu.c32', 'vesamenu.cfg', 'grml.png':
+ path = search_file(filename, iso_mount + '/boot/isolinux/')
exec_rsync(path, syslinux_target + filename)
grub_target = target + '/boot/grub/'