From 9e35fd49162bec845da883c5b986921335257eb3 Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Mon, 7 Dec 2015 16:18:59 +0100 Subject: [PATCH] bugfix (would not find kernel at all) + factorized kernel and initrd --- source/steps/ChainBootNode.py | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/source/steps/ChainBootNode.py b/source/steps/ChainBootNode.py index 1fa9609..98c4969 100644 --- a/source/steps/ChainBootNode.py +++ b/source/steps/ChainBootNode.py @@ -174,9 +174,9 @@ def Run(vars, log): # kernel and initrd come in various locations depending on the distro kernel_candidates = [] - kernel_candidates.append("/boot/vmlinux-{}*".format(kversion)) + kernel_candidates.append("/boot/vmlinuz-{}*".format(kversion)) # on f23 starting dec. 2015 - what a twisted naming scheme - kernel_candidates.append("/boot/*/{}*/initrd".format(kversion)) + kernel_candidates.append("/boot/*/{}*/linux".format(kversion)) initrd_candidates = [] # f16/18: expect initramfs image here @@ -186,26 +186,21 @@ def Run(vars, log): # Ubuntu: initrd_candidates.append ("/boot/initrd.img-{}".format(kversion)) - def find_file_in_sysimg (candidates): + 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] - - kernel = find_file_in_sysimg(kernel_candidates) - if kernel: - utils.sysexec("cp {} /tmp/kernel".format(kernel), log) - else: - raise Exception("Unable to locate kernel - bailing out") - - - initrd = find_file_in_sysimg(initrd_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) -- 2.43.0