projects
/
grml2usb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Depend on rsync.
[grml2usb.git]
/
grml2usb
diff --git
a/grml2usb
b/grml2usb
index
6d0f311
..
9e2b668
100755
(executable)
--- a/
grml2usb
+++ b/
grml2usb
@@
-20,13
+20,18
@@
import fileinput
import glob
# global variables
import glob
# global variables
-PROG_VERSION = "0.9.1
4
"
+PROG_VERSION = "0.9.1
7-pre1
"
MOUNTED = set() # register mountpoints
TMPFILES = set() # register tmpfiles
DATESTAMP = time.mktime(datetime.datetime.now().timetuple()) # unique identifier for syslinux.cfg
GRML_FLAVOURS = set() # which flavours are being installed?
global GRML_DEFAULT
MOUNTED = set() # register mountpoints
TMPFILES = set() # register tmpfiles
DATESTAMP = time.mktime(datetime.datetime.now().timetuple()) # unique identifier for syslinux.cfg
GRML_FLAVOURS = set() # which flavours are being installed?
global GRML_DEFAULT
+def syslinux_warning(option, opt, value, parser):
+ sys.stderr.write("Note: the --syslinux option is deprecated as syslinux " +
+ "is grml2usb's default. Continuing anyway.\n")
+ setattr(parser.values, option.dest, True)
+
# cmdline parsing
USAGE = "Usage: %prog [options] <[ISO[s] | /live/image]> </dev/sdX#>\n\
\n\
# cmdline parsing
USAGE = "Usage: %prog [options] <[ISO[s] | /live/image]> </dev/sdX#>\n\
\n\
@@
-71,7
+76,8
@@
parser.add_option("--skip-mbr", dest="skipmbr", action="store_true",
help="do not install a master boot record (MBR) on the device")
parser.add_option("--skip-syslinux-config", dest="skipsyslinuxconfig", action="store_true",
help="skip generation of syslinux configuration files")
help="do not install a master boot record (MBR) on the device")
parser.add_option("--skip-syslinux-config", dest="skipsyslinuxconfig", action="store_true",
help="skip generation of syslinux configuration files")
-parser.add_option("--syslinux", dest="syslinux", action="store_true",
+parser.add_option("--syslinux", dest="syslinux", action="callback", default=True,
+ callback=syslinux_warning,
help="install syslinux bootloader (deprecated as it's the default)")
parser.add_option("--syslinux-mbr", dest="syslinuxmbr", action="store_true",
help="install syslinux master boot record (MBR) instead of default")
help="install syslinux bootloader (deprecated as it's the default)")
parser.add_option("--syslinux-mbr", dest="syslinuxmbr", action="store_true",
help="install syslinux master boot record (MBR) instead of default")
@@
-650,9
+656,6
@@
def install_bootloader(device):
@device: partition where bootloader should be installed to"""
# by default we use grub, so install syslinux only on request
@device: partition where bootloader should be installed to"""
# by default we use grub, so install syslinux only on request
- if options.syslinux:
- logging.info("Note: the --syslinux option is deprecated as syslinux is grml2usb's default. Continuing anyway.")
-
if options.grub:
if not which("grub-install"):
logging.critical("Fatal: grub-install not available (please install the grub package or use the --syslinux option)")
if options.grub:
if not which("grub-install"):
logging.critical("Fatal: grub-install not available (please install the grub package or use the --syslinux option)")
@@
-1114,6
+1117,12
@@
def copy_addons(iso_mount, target):
else:
exec_rsync(memtestimg, addons + 'memtest')
else:
exec_rsync(memtestimg, addons + 'memtest')
+ # gpxe.lkrn
+ gpxeimg = search_file('gpxe.lkrn', iso_mount)
+ if gpxeimg is None:
+ logging.warn("Warning: gpxe.lkrn not found (that's fine if you don't need it)")
+ else:
+ exec_rsync(gpxeimg, addons + 'gpxe.lkrn')
def copy_bootloader_files(iso_mount, target):
"""copy grml's bootloader files to a given target
def copy_bootloader_files(iso_mount, target):
"""copy grml's bootloader files to a given target
@@
-1129,6
+1138,8
@@
def copy_bootloader_files(iso_mount, target):
for ffile in ['f%d' % number for number in range(1,11) ]:
bootsplash = search_file(ffile, iso_mount)
for ffile in ['f%d' % number for number in range(1,11) ]:
bootsplash = search_file(ffile, iso_mount)
+ if not bootsplash:
+ continue
exec_rsync(bootsplash, syslinux_target + ffile)
# avoid the "file is read only, overwrite anyway (y/n) ?" question
exec_rsync(bootsplash, syslinux_target + ffile)
# avoid the "file is read only, overwrite anyway (y/n) ?" question
@@
-1136,26
+1147,35
@@
def copy_bootloader_files(iso_mount, target):
if os.path.isfile(syslinux_target + 'ldlinux.sys'):
os.unlink(syslinux_target + 'ldlinux.sys')
if os.path.isfile(syslinux_target + 'ldlinux.sys'):
os.unlink(syslinux_target + 'ldlinux.sys')
- if not search_file('default.cfg', iso_mount + '/boot/isolinux/'):
+ bootloader_dirs = ['/boot/isolinux/', '/boot/syslinux/']
+ source_dir = None
+ for dir in bootloader_dirs:
+ if glob.glob(iso_mount + dir + '*default.cfg'):
+ source_dir = dir
+ break
+ else:
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.")
logging.critical(" Please visit http://grml.org/grml2usb/#grml2usb-compat for further information.")
raise
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.")
logging.critical(" Please visit http://grml.org/grml2usb/#grml2usb-compat for further information.")
raise
- for
filename in '
default.cfg', 'distri.cfg', \
- 'grml.cfg', 'grml.png', 'hd.cfg', 'isolinux.cfg', 'isolinux.bin', \
+ for
expr in '*
default.cfg', 'distri.cfg', \
+ '
*
grml.cfg', 'grml.png', 'hd.cfg', 'isolinux.cfg', 'isolinux.bin', \
'isoprompt.cfg', 'options.cfg', \
'prompt.cfg', 'vesamenu.c32', 'vesamenu.cfg', 'grml.png':
'isoprompt.cfg', 'options.cfg', \
'prompt.cfg', 'vesamenu.c32', 'vesamenu.cfg', 'grml.png':
- path = search_file(filename, iso_mount + '/boot/isolinux/')
- exec_rsync(path, syslinux_target + filename)
+ files = glob.glob(iso_mount + source_dir + expr)
+ for path in files:
+ filename = os.path.basename(path)
+ exec_rsync(path, syslinux_target + filename)
# copy the addons_*.cfg file to the new syslinux directory
# copy the addons_*.cfg file to the new syslinux directory
- for filename in glob.glob(iso_mount +
'/boot/isolinux/'
+ 'addon*.cfg'):
+ for filename in glob.glob(iso_mount +
source_dir
+ 'addon*.cfg'):
exec_rsync(filename, syslinux_target)
exec_rsync(filename, syslinux_target)
- path = search_file('hidden.cfg', iso_mount + '/boot/isolinux/')
- exec_rsync(path, syslinux_target + "new_" + 'hidden.cfg')
+ path = search_file('hidden.cfg', iso_mount + source_dir)
+ if path:
+ exec_rsync(path, syslinux_target + "new_" + 'hidden.cfg')
grub_target = target + '/boot/grub/'
grub_target = target + '/boot/grub/'
@@
-1202,8
+1222,8
@@
def install_iso_files(grml_flavour, iso_mount, device, target):
sys.exit(1)
if not options.skipaddons:
sys.exit(1)
if not options.skipaddons:
- if
grml_flavour.endswith('-small'
):
- logging.info("
Note: grml-small doesn't provide any addons, not installing them therefore
.")
+ if
not search_file('addons', iso_mount
):
+ logging.info("
Could not find addons, therefore not installing
.")
else:
copy_addons(iso_mount, target)
else:
copy_addons(iso_mount, target)
@@
-1531,7
+1551,8
@@
def handle_syslinux_config(grml_flavour, target):
prompt_name.close()
initial_syslinux_config(syslinux_target)
prompt_name.close()
initial_syslinux_config(syslinux_target)
- modify_filenames(grml_flavour, syslinux_target, ['grml.cfg', 'default.cfg'])
+ if search_file('default.cfg', syslinux_target):
+ modify_filenames(grml_flavour, syslinux_target, ['grml.cfg', 'default.cfg'])
filename = search_file("new_hidden.cfg", syslinux_target)
filename = search_file("new_hidden.cfg", syslinux_target)