Make sure you have at least one grml ISO or a running grml system (/live/image),\n\
grub or syslinux and root access.\n\
\n\
Make sure you have at least one grml ISO or a running grml system (/live/image),\n\
grub or syslinux and root access.\n\
\n\
logging.info("Formating partition with fat16 filesystem")
logging.debug("mkfs.vfat -F 16 %s" % device)
proc = subprocess.Popen(["mkfs.vfat", "-F", "16", device])
logging.info("Formating partition with fat16 filesystem")
logging.debug("mkfs.vfat -F 16 %s" % device)
proc = subprocess.Popen(["mkfs.vfat", "-F", "16", device])
register_tmpfile(device_mountpoint)
try:
mount(device, device_mountpoint, "")
register_tmpfile(device_mountpoint)
try:
mount(device, device_mountpoint, "")
logging.debug("mount %s %s %s" % (mount_options, source, target))
proc = subprocess.Popen(["mount"] + list(mount_options) + [source, target])
proc.wait()
logging.debug("mount %s %s %s" % (mount_options, source, target))
proc = subprocess.Popen(["mount"] + list(mount_options) + [source, target])
proc.wait()
if options.syslinux and filesystem != "vfat":
raise CriticalException("Partition %s does not contain a FAT16 filesystem. (Use --fat16 or run mkfs.vfat %s)" % (partition, partition))
if options.syslinux and filesystem != "vfat":
raise CriticalException("Partition %s does not contain a FAT16 filesystem. (Use --fat16 or run mkfs.vfat %s)" % (partition, partition))
else:
logging.debug("cp %s %s" % (allinoneimg, addons + '/allinone.img'))
proc = subprocess.Popen(["cp", allinoneimg, addons + 'allinone.img'])
else:
logging.debug("cp %s %s" % (allinoneimg, addons + '/allinone.img'))
proc = subprocess.Popen(["cp", allinoneimg, addons + 'allinone.img'])
else:
logging.debug("cp -a %s %s" % (bsdimg, addons + '/'))
proc = subprocess.Popen(["cp", "-a", bsdimg, addons + '/'])
else:
logging.debug("cp -a %s %s" % (bsdimg, addons + '/'))
proc = subprocess.Popen(["cp", "-a", bsdimg, addons + '/'])
else:
logging.debug("cp %s %s" % (balderimg, addons + '/balder10.imz'))
proc = subprocess.Popen(["cp", balderimg, addons + 'balder10.imz'])
else:
logging.debug("cp %s %s" % (balderimg, addons + '/balder10.imz'))
proc = subprocess.Popen(["cp", balderimg, addons + 'balder10.imz'])
else:
logging.debug("cp %s %s" % (memdiskimg, addons + '/memdisk'))
proc = subprocess.Popen(["cp", memdiskimg, addons + 'memdisk'])
else:
logging.debug("cp %s %s" % (memdiskimg, addons + '/memdisk'))
proc = subprocess.Popen(["cp", memdiskimg, addons + 'memdisk'])
else:
logging.debug("cp %s %s" % (memtestimg, addons + '/memtest'))
proc = subprocess.Popen(["cp", memtestimg, addons + 'memtest'])
else:
logging.debug("cp %s %s" % (memtestimg, addons + '/memtest'))
proc = subprocess.Popen(["cp", memtestimg, addons + 'memtest'])
@grml_flavour: name of grml flavour the configuration should be generated for
@iso_mount: path where a grml ISO is mounted on
@grml_flavour: name of grml flavour the configuration should be generated for
@iso_mount: path where a grml ISO is mounted on
copy_grml_files(iso_mount, target)
if not options.skipaddons:
copy_grml_files(iso_mount, target)
if not options.skipaddons:
- copy_addons(iso_mount, target)
+ if grml_flavour.endswith('-small'):
+ logging.info("Note: grml-small doesn't provide any addons, not installing them therefor.")
+ else:
+ copy_addons(iso_mount, target)
handle_bootloader_config(grml_flavour, device, target)
# make sure we sync filesystems before returning
handle_bootloader_config(grml_flavour, device, target)
# make sure we sync filesystems before returning
if grub_flavour_config:
grub1_config_file = open(grub1_cfg, 'a')
grub1_config_file.write(generate_flavour_specific_grub1_config(grml_flavour, install_partition, bootopt))
if grub_flavour_config:
grub1_config_file = open(grub1_cfg, 'a')
grub1_config_file.write(generate_flavour_specific_grub1_config(grml_flavour, install_partition, bootopt))
def handle_grub2_config(grml_flavour, install_partition, grub_target, bootopt):
def handle_grub2_config(grml_flavour, install_partition, grub_target, bootopt):
logging.debug("Creating grub2 configuration file (grub.lst)")
# install main configuration only *once*, no matter how many ISOs we have:
logging.debug("Creating grub2 configuration file (grub.lst)")
# install main configuration only *once*, no matter how many ISOs we have:
if os.path.isfile(grub2_cfg):
string = open(grub2_cfg).readline()
main_identifier = re.compile(".*main config generated at: %s.*" % re.escape(str(DATESTAMP)))
if not re.match(main_identifier, string):
grub2_config_file = open(grub2_cfg, 'w')
logging.info("Note: grml flavour %s is being installed as the default booting system." % grml_flavour)
if os.path.isfile(grub2_cfg):
string = open(grub2_cfg).readline()
main_identifier = re.compile(".*main config generated at: %s.*" % re.escape(str(DATESTAMP)))
if not re.match(main_identifier, string):
grub2_config_file = open(grub2_cfg, 'w')
logging.info("Note: grml flavour %s is being installed as the default booting system." % grml_flavour)
grub2_config_file.write(generate_main_grub2_config(grml_flavour, install_partition, bootopt))
grub2_config_file.close()
else:
grub2_config_file = open(grub2_cfg, 'w')
logging.info("Note: grml flavour %s is being installed as the default booting system." % grml_flavour)
grub2_config_file.write(generate_main_grub2_config(grml_flavour, install_partition, bootopt))
grub2_config_file.close()
else:
grub2_config_file = open(grub2_cfg, 'w')
logging.info("Note: grml flavour %s is being installed as the default booting system." % grml_flavour)
grub2_config_file.write(generate_main_grub2_config(grml_flavour, install_partition, bootopt))
grub2_config_file.close()
grub2_config_file.write(generate_main_grub2_config(grml_flavour, install_partition, bootopt))
grub2_config_file.close()
grub_flavour_config = True
if os.path.isfile(grub2_cfg):
string = open(grub2_cfg).readlines()
grub_flavour_config = True
if os.path.isfile(grub2_cfg):
string = open(grub2_cfg).readlines()
- logging.info("Note: you can boot flavour %s using '%s' on the commandline." % (grml_flavour, grml_flavour))
+ # display only if the grml flavour isn't the default
+ if not grub_flavour_is_default:
+ logging.info("Note: you can boot flavour %s using '%s' on the commandline." % (grml_flavour, grml_flavour))
grub2_config_file.write(generate_flavour_specific_grub2_config(grml_flavour, install_partition, bootopt))
grub2_config_file.write(generate_flavour_specific_grub2_config(grml_flavour, install_partition, bootopt))
if device[-1:].isdigit():
install_grub1_partition = int(device[-1:]) - 1
install_grub2_partition = device[-1:]
if device[-1:].isdigit():
install_grub1_partition = int(device[-1:]) - 1
install_grub2_partition = device[-1:]
syslinux_cfg = syslinux_target + 'syslinux.cfg'
# install main configuration only *once*, no matter how many ISOs we have:
syslinux_cfg = syslinux_target + 'syslinux.cfg'
# install main configuration only *once*, no matter how many ISOs we have:
if os.path.isfile(syslinux_cfg):
string = open(syslinux_cfg).readline()
main_identifier = re.compile(".*main config generated at: %s.*" % re.escape(str(DATESTAMP)))
if not re.match(main_identifier, string):
syslinux_config_file = open(syslinux_cfg, 'w')
logging.info("Note: grml flavour %s is being installed as the default booting system." % grml_flavour)
if os.path.isfile(syslinux_cfg):
string = open(syslinux_cfg).readline()
main_identifier = re.compile(".*main config generated at: %s.*" % re.escape(str(DATESTAMP)))
if not re.match(main_identifier, string):
syslinux_config_file = open(syslinux_cfg, 'w')
logging.info("Note: grml flavour %s is being installed as the default booting system." % grml_flavour)
syslinux_config_file.write(generate_main_syslinux_config(grml_flavour, bootopt))
syslinux_config_file.close()
else:
syslinux_config_file = open(syslinux_cfg, 'w')
syslinux_config_file.write(generate_main_syslinux_config(grml_flavour, bootopt))
syslinux_config_file.close()
else:
syslinux_config_file = open(syslinux_cfg, 'w')
syslinux_config_file.write(generate_main_syslinux_config(grml_flavour, bootopt))
syslinux_config_file.close()
# install flavour specific configuration only *once* as well
syslinux_config_file.write(generate_main_syslinux_config(grml_flavour, bootopt))
syslinux_config_file.close()
# install flavour specific configuration only *once* as well
syslinux_flavour_config = True
if os.path.isfile(syslinux_cfg):
string = open(syslinux_cfg).readlines()
syslinux_flavour_config = True
if os.path.isfile(syslinux_cfg):
string = open(syslinux_cfg).readlines()
if syslinux_flavour_config:
syslinux_config_file = open(syslinux_cfg, 'a')
if syslinux_flavour_config:
syslinux_config_file = open(syslinux_cfg, 'a')
logging.debug("Generating isolinux/syslinux splash %s" % syslinux_target + 'boot.msg')
isolinux_splash = open(syslinux_target + 'boot.msg', 'w')
isolinux_splash.write(generate_isolinux_splash(grml_flavour))
logging.debug("Generating isolinux/syslinux splash %s" % syslinux_target + 'boot.msg')
isolinux_splash = open(syslinux_target + 'boot.msg', 'w')
isolinux_splash.write(generate_isolinux_splash(grml_flavour))
- handle_grub_config(grml_flavour, device, target)
+ try:
+ handle_grub_config(grml_flavour, device, target)
+ except CriticalException, error:
+ logging.critical("Fatal: %s" % error)
+ sys.exit(1)
- unmount(device_mountpoint, "")
- if os.path.isdir(device_mountpoint):
- os.rmdir(device_mountpoint)
- unregister_tmpfile(device_mountpoint)
+ try:
+ unmount(device_mountpoint, "")
+ if os.path.isdir(device_mountpoint):
+ os.rmdir(device_mountpoint)
+ unregister_tmpfile(device_mountpoint)
+ except CriticalException, error:
+ logging.critical("Fatal: %s" % error)
+ cleanup()
logging.critical('Sorry, syslinux not available. Exiting.')
logging.critical('Please install syslinux or consider using the --grub option.')
sys.exit(1)
logging.critical('Sorry, syslinux not available. Exiting.')
logging.critical('Please install syslinux or consider using the --grub option.')
sys.exit(1)
print "Warning: the specified device %s does not look like a removable usb device." % device
f = raw_input("Do you really want to continue? y/N ")
if f == "y" or f == "Y":
print "Warning: the specified device %s does not look like a removable usb device." % device
f = raw_input("Do you really want to continue? y/N ")
if f == "y" or f == "Y":
# Install bootloader only if not using the --copy-only option
if options.copyonly:
logging.info("Not installing bootloader and its files as requested via option copyonly.")
# Install bootloader only if not using the --copy-only option
if options.copyonly:
logging.info("Not installing bootloader and its files as requested via option copyonly.")
- if device[-1:].isdigit():
- if int(device[-1:]) > 4:
- logging.critical("Fatal: installation on partition number >4 not supported. (BIOS won't support it.)")
- sys.exit(1)
- else:
- logging.critical("Fatal: installation on raw device not supported. (BIOS won't support it.)")
- sys.exit(1)
+ if not os.path.isdir(device):
+ if device[-1:].isdigit():
+ if int(device[-1:]) > 4:
+ logging.critical("Fatal: installation on partition number >4 not supported. (BIOS won't support it.)")
+ sys.exit(1)
+ else:
+ if os.path.exists(device):
+ logging.critical("Fatal: installation on raw device not supported. (BIOS won't support it.)")
+ sys.exit(1)