Komprimierungsalgorithmen werden in deklariert lib/decompress.c
. Gzip ist in definiert lib/decompress_inflate.c
und erhält keinen besonderen Status. es wird nur da sein , wenn CONFIG_DECOMPRESS_GZIP
ist , y
wenn der Kernel kompiliert wird.
Die Liste der verfügbaren Komprimierungsalgorithmen ist die compressed_formats
Struktur. Da es als definiert ist static
, ist es in anderen Quelldateien nicht verfügbar. Die einzige Funktion, die es verwendet, ist somit die decompress_method
Funktion an lib/decompress.c
sich. Die einzige Möglichkeit, einen Kernel dazu zu bringen, die Tabelle der unterstützten Algorithmen zu verwenden, besteht darin, zu versuchen, etwas zu dekomprimieren, das mit der entsprechenden magischen Zwei-Byte-Sequenz beginnt, und zu prüfen, ob diese Funktion den Algorithmusnamen zurückgibt.
Sie können feststellen, welche Dekomprimierungsfunktionen unterstützt werden, indem Sie die Liste der Kernelsymbole durchsuchen ( /proc/kallsyms
). Die Funktionen sind nicht als solche gekennzeichnet, daher müssen Sie in der Liste der Symbolnamen backen.
</proc/kallsyms cut -d " " -f 3 |
grep -xF -e gunzip -e bzip2 -e unlzma -e unxz -e unlzo -e unlz4
Gilles 'SO - hör auf böse zu sein'
quelle