# simply creating an instance of this class and listing the system
# block devices will make them show up so vgscan can find the planetlab
# volume group
- systeminfo.get_block_device_list(vars, log)
+ systeminfo.get_block_devices_dict(vars, log)
utils.sysexec("vgscan", log)
utils.sysexec("vgchange -ay planetlab", log)
ROOT_MOUNTED = 1
vars['ROOT_MOUNTED'] = 1
-
+
+ utils.display_disks_status(PARTITIONS, "In ChainBootNode", log)
# write out the session value /etc/planetlab/session
try:
major_version = int(kversion[0]) # Check if the string looks like a kernel version
except:
# Try a different method for non-rpm-based distributions
- kversion = os.popen("ls -lrt {}/lib/modules | tail -1 | awk '{print $9;}'"\
+ kversion = os.popen("ls -lrt {}/lib/modules | tail -1 | awk '{{print $9;}}'"\
.format(SYSIMG_PATH)).read().rstrip()
- utils.sysexec("cp {}/boot/vmlinuz-{} /tmp/kernel".format(SYSIMG_PATH, kversion), log)
- candidates = []
+ # kernel and initrd come in various locations depending on the distro
+
+ kernel_candidates = []
+ kernel_candidates.append("/boot/vmlinuz-{}*".format(kversion))
+ # on f23 starting dec. 2015 - what a twisted naming scheme
+ kernel_candidates.append("/boot/*/{}*/linux".format(kversion))
+
+ initrd_candidates = []
# f16/18: expect initramfs image here
- candidates.append ("/boot/initramfs-{}.img".format(kversion))
+ initrd_candidates.append ("/boot/initramfs-{}.img".format(kversion))
# f20: uses a uid of some kind, e.g. /boot/543f88c129de443baaa65800cf3927ce/<kversion>/initrd
- candidates.append ("/boot/*/{}/initrd".format(kversion))
+ initrd_candidates.append ("/boot/*/{}/initrd".format(kversion))
# Ubuntu:
- candidates.append ("/boot/initrd.img-{}".format(kversion))
- def find_file_in_sysimg (candidates):
+ initrd_candidates.append ("/boot/initrd.img-{}".format(kversion))
+
+ def install_from_sysimg_to_tmp (candidates, name):
import glob
+ found = None
for pattern in candidates:
matches = glob.glob(SYSIMG_PATH+pattern)
- log.write("locating initrd: found {} matches in {}\n".format(len(matches), pattern))
+ log.write("locating {}: found {} matches in {}\n".format(name, len(matches), pattern))
if matches:
- return matches[0]
- initrd = find_file_in_sysimg(candidates)
- if initrd:
- utils.sysexec("cp {} /tmp/initrd".format(initrd), log)
- else:
- raise Exception("Unable to locate initrd - bailing out")
+ found = matches[0]
+ break
+ if not found:
+ raise Exception("Unable to locate {} for kexec'ing".format(name))
+ utils.sysexec("cp {} /tmp/{}".format(found, name))
+
+ install_from_sysimg_to_tmp(kernel_candidates, 'kernel')
+ install_from_sysimg_to_tmp(initrd_candidates, 'initrd')
BootAPI.save(vars)
if (vars['ONE_PARTITION'] != '1'):
utils.sysexec("umount {}/vservers".format(SYSIMG_PATH), log)
- utils.sysexec("umount {}s/proc".format(SYSIMG_PATH), log)
- utils.sysexec_noerr("umount {}s/dev".format(SYSIMG_PATH), log)
- utils.sysexec_noerr("umount {}s/sys".format(SYSIMG_PATH), log)
- utils.sysexec("umount {}s".format(SYSIMG_PATH), log)
+ utils.sysexec("umount {}/proc".format(SYSIMG_PATH), log)
+ utils.sysexec_noerr("umount {}/dev".format(SYSIMG_PATH), log)
+ utils.sysexec_noerr("umount {}/sys".format(SYSIMG_PATH), log)
+ utils.sysexec("umount {}".format(SYSIMG_PATH), log)
utils.sysexec("vgchange -an", log)
ROOT_MOUNTED = 0
log.write("Couldn't read /proc/modules, continuing.\n")
- kargs = "root={} ramdisk_size=8192".format(PARTITIONS["mapper-root"])
+ kargs = "root={} ramdisk_size=8192".format(PARTITIONS["root"])
if NODE_MODEL_OPTIONS & ModelOptions.SMP:
kargs = kargs + " " + "acpi=off"
try:
pass
utils.sysexec_noerr('hwclock --systohc --utc ', log)
- utils.breakpoint ("Before kexec");
+# utils.breakpoint("Before kexec");
try:
utils.sysexec('kexec --force --initrd=/tmp/initrd --append="{}" /tmp/kernel'.format(kargs), log)
except BootManagerException as e: