From 95c6eb5c498bebc028cd92d62c83e33c2be3ed2e Mon Sep 17 00:00:00 2001 From: Thierry Laurion Date: Fri, 22 Nov 2024 16:43:12 -0500 Subject: [PATCH] initrd/bin/unpack_initramfs.sh: add xz to unpack logic (add commented: bzip2, lzma, lzo and lz4) xz: tested working with tails test build and 6.8.1's initrd latest ubuntu 24.10: switched back to zstd, works as expected (tested) Magic numbers referred at: - https://github.com/torvalds/linux/blob/28eb75e178d389d325f1666e422bc13bbbb9804c/scripts/extract-vmlinux#L52C1-L58C43 - https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/lib/decompress.c#n51 Signed-off-by: Thierry Laurion --- initrd/bin/unpack_initramfs.sh | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/initrd/bin/unpack_initramfs.sh b/initrd/bin/unpack_initramfs.sh index 12ce32b8..77213118 100755 --- a/initrd/bin/unpack_initramfs.sh +++ b/initrd/bin/unpack_initramfs.sh @@ -90,6 +90,10 @@ unpack_first_segment() { # walking all the compressed blocks. gunzip | unpack_cpio ;; + fd37*) # xz + DEBUG "archive segment $magic: xz" + unxz | unpack_cpio + ;; 28b5*) # zstd DEBUG "archive segment $magic: zstd" # Like gunzip, this will not stop when reaching the end of the @@ -99,6 +103,26 @@ unpack_first_segment() { ;; *) # unknown die "Can't decompress initramfs archive, unknown type: $magic" + # The following are magic values for other compression formats + # but not added because not tested. + # TODO: open an issue for unsupported magic number reported on die. + # + #425a*) # bzip2 + # DEBUG "archive segment $magic: bzip2" + # bunzip2 | unpack_cpio + #;; + #5d00*) # lzma + # DEBUG "archive segment $magic: lzma" + # unlzma | unpack_cpio + #;; + #894c*) # lzo + # DEBUG "archive segment $magic: lzo" + # lzop -d | unpack_cpio + #;; + #0221*) # lz4 + # DEBUG "archive segment $magic: lz4" + # lz4 -d | unpack_cpio + # ;; ;; esac ) <"$unpack_archive" >"$rest_archive"