Ihr Wikipedia-Zitat,
Obwohl es den weit verbreiteten Irrtum gibt, dass der bz
Präfix bedeutet, dass bzip2-Komprimierung verwendet wird [...], dies ist nicht der Fall.
sagt das Gegenteil Ihrer Theorie:die bz
in bzImage
hat nichts mit bzip2
zu tun , und bzImage
muss nicht mit bzip2
komprimiert werden . Tatsächlich ist der Standardkomprimierungsmodus des Kernels immer noch gzip
, und es gibt wenig Grund, bzip2
zu verwenden heutzutage — es ist langsamer als LZMA und xz
komprimiert aber nicht so gut.
Um endgültig festzustellen, welche Komprimierung für ein bestimmtes Kernel-Image verwendet wurde, ohne es ausführen oder seine Konfiguration finden zu müssen, können Sie dem Ansatz folgen, der vom Kernel-eigenen extract-vmlinux
verwendet wird Skript:
-
Suchen Sie im Bild nach der Signatur des Kompressors:
gunzip
:\037\213\010
xz
:\3757zXZ\000
bzip2
:BZh
lzma
:\135\0\0\0
lzo
:\211\114\132
lz4
:\002!L\030
zstd
:(\265/\375
-
Versuchen Sie, die Daten aus dem Bild zu extrahieren, beginnend mit dem Offset einer beliebigen Signatur, die Sie gefunden haben;
- Überprüfen Sie, ob das Ergebnis (falls vorhanden) ein ELF-Bild ist.
Ich habe das Skript hier so angepasst, dass es nur die Komprimierungsart meldet. Ich füge es hier nicht hinzu, da es nur unter der GPL 2 lizenziert ist.
Sie können sich ansehen, welche Komprimierungsmethoden Ihr Kernel unterstützt. Es kann nur eine ausgewählt werden, damit wird bewiesen, welche es ist.
Hier verwende ich gzip:
$ zgrep CONFIG_KERNEL_ /proc/config.gz
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KERNEL_XZ is not set
# CONFIG_KERNEL_LZO is not set
# CONFIG_KERNEL_LZ4 is not set