mirror of
git://git.yoctoproject.org/poky.git
synced 2025-08-22 00:42:05 +02:00

Linux kernel supports to compress its output binary with lzma algorithm and U-Boot support to decompress lzma compressed image. Both xz and lzma algorithms are identical and users can use xz utility with format parameter to compress Image which supports lzma algorithm. Add the following command to support lzma. This command is refer to Linux kernel, https://github.com/torvalds/linux/blob/master/arch/powerpc/boot/wrapper "xz --format=lzma -f -6 linux.bin" (From OE-Core rev: 211178065bdca293c84c41a9a1e79c10df95b6ad) Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
52 lines
1.4 KiB
Plaintext
52 lines
1.4 KiB
Plaintext
#
|
|
# Copyright OpenEmbedded Contributors
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
#
|
|
|
|
# fitImage kernel compression algorithm
|
|
FIT_KERNEL_COMP_ALG ?= "gzip"
|
|
FIT_KERNEL_COMP_ALG_EXTENSION ?= ".gz"
|
|
|
|
# Kernel image type passed to mkimage (i.e. kernel kernel_noload...)
|
|
UBOOT_MKIMAGE_KERNEL_TYPE ?= "kernel"
|
|
|
|
uboot_prep_kimage() {
|
|
if [ -e arch/${ARCH}/boot/compressed/vmlinux ]; then
|
|
vmlinux_path="arch/${ARCH}/boot/compressed/vmlinux"
|
|
linux_suffix=""
|
|
linux_comp="none"
|
|
elif [ -e arch/${ARCH}/boot/vmlinuz.bin ]; then
|
|
rm -f linux.bin
|
|
cp -l arch/${ARCH}/boot/vmlinuz.bin linux.bin
|
|
vmlinux_path=""
|
|
linux_suffix=""
|
|
linux_comp="none"
|
|
else
|
|
vmlinux_path="vmlinux"
|
|
# Use vmlinux.initramfs for linux.bin when INITRAMFS_IMAGE_BUNDLE set
|
|
# As per the implementation in kernel.bbclass.
|
|
# See do_bundle_initramfs function
|
|
if [ "${INITRAMFS_IMAGE_BUNDLE}" = "1" ] && [ -e vmlinux.initramfs ]; then
|
|
vmlinux_path="vmlinux.initramfs"
|
|
fi
|
|
linux_suffix="${FIT_KERNEL_COMP_ALG_EXTENSION}"
|
|
linux_comp="${FIT_KERNEL_COMP_ALG}"
|
|
fi
|
|
|
|
[ -n "${vmlinux_path}" ] && ${KERNEL_OBJCOPY} -O binary -R .note -R .comment -S "${vmlinux_path}" linux.bin
|
|
|
|
if [ "${linux_comp}" != "none" ] ; then
|
|
if [ "${linux_comp}" = "gzip" ] ; then
|
|
gzip -9 linux.bin
|
|
elif [ "${linux_comp}" = "lzo" ] ; then
|
|
lzop -9 linux.bin
|
|
elif [ "${linux_comp}" = "lzma" ] ; then
|
|
xz --format=lzma -f -6 linux.bin
|
|
fi
|
|
mv -f "linux.bin${linux_suffix}" linux.bin
|
|
fi
|
|
|
|
echo "${linux_comp}"
|
|
}
|