echo "usage: $PROGRAM [--version] [-v] [-f] [--ifneeded] [--preload <module>]"
echo " [--with=<module>] [--image-version] [--fstab=<fstab>] [--nocompress]"
- echo " [--compress=yes|lzma|bzip2|gzip]"
-+ echo " [--compress=yes|xz|bzip2|gzip]"
++ echo " [--compress=yes|xz|lzma|bzip2|gzip]"
echo " [--initrdfs=rom|initramfs|ext2|cram] [--modules-conf=<modules.conf>]"
echo " [--with-bootsplash] [--without-bootsplash]"
echo " [--with-fbsplash] [--without-fbsplash]"
local mode="$1"
# the best compressor list
- local compressors='lzma bzip2 gzip'
-+ local compressors='xz bzip2 gzip'
++ local compressors='xz lzma bzip2 gzip'
# a specified one, take it
if ! is_yes "$mode"; then
-@@ -802,9 +802,9 @@
+@@ -802,9 +802,13 @@
local c prog map=/boot/System.map-$kernel
for c in $compressors; do
case $c in
-- lzma)
+ xz)
++ sym=unxz
++ prog=/usr/bin/xz
++ ;;
+ lzma)
sym=unlzma
- prog=/usr/bin/lzma
+ prog=/usr/bin/xz
;;
bzip2)
sym=bzip2
-@@ -1327,8 +1327,8 @@
+@@ -1327,8 +1331,12 @@
# TODO: the image name (specified from kernel.spec) already contains
# extension, which is .gz most of the time.
case "$compressor" in
-- lzma)
-- lzma -9 < "$IMAGE" > "$tmp"
+ xz)
++ # don't use -9 here since kernel won't understand it
++ xz --format=xz --check=crc32 --lzma2=preset=6e,dict=1MiB < "$IMAGE" > "$tmp"
++ ;;
+ lzma)
+- lzma -9 < "$IMAGE" > "$tmp"
+ xz --format=lzma -9 < "$IMAGE" > "$tmp"
;;
bzip2)