Woher weiß ich, welche Dekomprimierungsalgorithmen in den Linux-Kernel integriert sind?


8

Wenn /proc/config.gznicht verfügbar, woher weiß ich, welche Dekomprimierungsalgorithmen der laufende Kernel auf einem komprimierten verwenden kann cpio initramfs?

Ist der gzipAlgorithmus immer verfügbar, auch wenn CONFIG_DECOMPRESS_GZIPdies ybeim Erstellen des Kernels nicht der Fall ist?

Antworten:


2

Komprimierungsalgorithmen werden in deklariert lib/decompress.c. Gzip ist in definiert lib/decompress_inflate.cund erhält keinen besonderen Status. es wird nur da sein , wenn CONFIG_DECOMPRESS_GZIPist , ywenn der Kernel kompiliert wird.

Die Liste der verfügbaren Komprimierungsalgorithmen ist die compressed_formatsStruktur. Da es als definiert ist static, ist es in anderen Quelldateien nicht verfügbar. Die einzige Funktion, die es verwendet, ist somit die decompress_methodFunktion an lib/decompress.csich. 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

0

Sie können Ihren Komprimierungstyp kennenlernen, indem Sie in das Verzeichnis sys / power / tuxonice / compress gehen. Dort wird eine Datei mit dem Namen algorithm eingefügt, in der der Dekomprimierungstyp enthalten ist. Für mich wurde lzo geschrieben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.