In many cases, KERNEL_OUTPUT is a symbolic link to the real bootable image, but in bundle_initramfs task, it's not considered so that the KERNEL_OUTPUT is being renamed/restored as a regular file, this leads it finally point to a incorrect target, or even worse, break the bundle_initramfs task for KERNEL_OUTPUT is not going to be regenerated in case it is a symbolic link to vmlinux.
Signed-off-by: Ming Liu <ming....@windriver.com> --- meta/classes/kernel.bbclass | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass index 966066f..ce987a5 100644 --- a/meta/classes/kernel.bbclass +++ b/meta/classes/kernel.bbclass @@ -123,13 +123,28 @@ do_bundle_initramfs () { if [ ! -z "${INITRAMFS_IMAGE}" -a x"${INITRAMFS_IMAGE_BUNDLE}" = x1 ]; then echo "Creating a kernel image with a bundled initramfs..." copy_initramfs - if [ -e ${KERNEL_OUTPUT} ] ; then + # Backuping kernel image relies on its type(regular file or symbolic link) + linkpath="" + realpath="" + if [ -h ${KERNEL_OUTPUT} ] ; then + linkpath=`readlink -n ${KERNEL_OUTPUT}` + realpath=`readlink -fn ${KERNEL_OUTPUT}` + mv -f $realpath $realpath.bak + elif [ -f ${KERNEL_OUTPUT} ]; then mv -f ${KERNEL_OUTPUT} ${KERNEL_OUTPUT}.bak fi use_alternate_initrd=CONFIG_INITRAMFS_SOURCE=${B}/usr/${INITRAMFS_IMAGE}-${MACHINE}.cpio kernel_do_compile - mv -f ${KERNEL_OUTPUT} ${KERNEL_OUTPUT}.initramfs - mv -f ${KERNEL_OUTPUT}.bak ${KERNEL_OUTPUT} + # Restoring kernel image + if [ -n $realpath ]; then + mv -f $realpath $realpath.initramfs + mv -f $realpath.bak $realpath + cd ${B}/$(dirname ${KERNEL_OUTPUT}) + ln -sf $linkpath.initramfs + else + mv -f ${KERNEL_OUTPUT} ${KERNEL_OUTPUT}.initramfs + mv -f ${KERNEL_OUTPUT}.bak ${KERNEL_OUTPUT} + fi # Update install area echo "There is kernel image bundled with initramfs: ${B}/${KERNEL_OUTPUT}.initramfs" install -m 0644 ${B}/${KERNEL_OUTPUT}.initramfs ${D}/boot/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin -- 1.8.4.1 _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core