- https://github.com/khadas/krescue/blob/master/tools/xze
- https://raw.githubusercontent.com/khadas/krescue/master/tools/xze
This script just simple bash script, for demonstrate basic ideas realisation. I thinks its will be useful recommendations for all distros which use xz/lzma image compression
- fast mt compression
- fast mt decompression
- same hi compression levels
- optional embedded meta
- soc friendly (possible to write lzma compressed image on the fly from clouds on maximum speed for exmaple via Krescue just one min
- single thread not optimized lzma decompresssion dramaticly slow for any arm board
- easy to check image integrity without full decompression
- easy for automate
- same xz/lzma standards without any changes
- more ...
./xze --help
cd
# download
wget https://armbian.lane-fu.com/Armbian_21.08.0-trunk_Khadas-edge_hirsute_current_5.10.47_cinnamon_desktop.img.xz
# move
mv Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img.xz \
Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img.xz.org
# print info
ls -l1 Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img.xz.org
# -rw-rw-r-- 1 master master 1473849720 Jul 5 22:33 Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img.xz.org
# check mt decompress
time pixz -dc < Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img.xz.org > /dev/null
# slow becouse not suitable for mt
#real 1m6.722s
#user 1m5.769s
#sys 0m1.013s
xz -l Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img.xz.org
#Strms Blocks Compressed Uncompressed Ratio Check Filename
# 1 20 1,405.6 MiB 3,060.0 MiB 0.459 CRC32 Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img.xz.org
# download compress script
wget https://raw.githubusercontent.com/khadas/krescue/master/tools/xze
# progressive mt compression / make possible mt decompress + add meta
time /bin/bash ./xze Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img \
--meta \
label=Armbian \
builder=Armbian \
date="$(TZ= date)" \
match=BOARD=Edge \
link=https://armbian.lane-fu.com/ \
duration=60 \
desc="Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop"
# make faster compress and next decompress via `pixz`
#real 1m49.684s
#user 13m7.487s
#sys 0m3.430s
# check sizes - very similar
ls -l1 Arm*.xz*
#-rw-rw-r-- 1 master master 1478062080 Jul 16 12:36 Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img.xz
#-rw-rw-r-- 1 master master 1473849720 Jul 5 22:33 Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img.xz.org
# `./xze -8` compression level - smallest size
ls -l1 Arm*.xz
#-rw-rw-r-- 1 master master 1448652800 Jul 16 19:06 Armbian_21.08.0-trunk_Khadas-#edge_hirsute_edge_5.12.14_cinnamon_desktop.img.xz
# compare new decompression time
time pixz -dc < Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img.xz > /dev/null
#real 0m7.086s
#user 1m21.178s
#sys 0m1.754s
# YES just 7 sec
./xze Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img.xz
# or same
tail -c4096 Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img.xz | xz -dc
#
Strms Blocks Compressed Uncompressed Ratio Check Filename
2 35 1,409.6 MiB 3,060.0 MiB 0.461 CRC64 Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img.xz
[i] blocks: 35 // 1,409.6*MiB // 3,060.0*MiB
##META_FILE##
FILE: Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img.xz
UNPACKED_SIZE: 3208642560
PACKED_SIZE: 1478057984
FILE_SIZE: 1478062080
##META-FILE##
##KRESCUE_META##
type:xz
label: Armbian
builder: Armbian
date: Fri 16 Jul 2021 04:35:06 AM UTC
match: BOARD=Edge
link: https://armbian.lane-fu.com/
duration: 60
desc: Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop
image: Armbian_21.08.0-trunk_Khadas-edge_hirsute_edge_5.12.14_cinnamon_desktop.img
asd=asd
##KRESCUE-META##
##KRESCUE##END
Have any questions or suggestion plz buzz me ##hyphop##