GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie demonstriere ich die Art der Kernel-Komprimierung in der Praxis?

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

Linux
  1. Linux – Wie finde ich die Implementierungen von Linux-Kernel-Systemaufrufen?

  2. Linux – Wie zeigt man den Dateisystemtyp über das Terminal an??

  3. Wie finde ich die Anwendung für einen Mime-Typ unter Linux?

  4. Wie erhalte ich den Typ des internen Kartenlesers?

  5. So bereinigen Sie Caches, die vom Linux-Kernel verwendet werden

Wie der Linux-Kernel mit Interrupts umgeht

Wie man einen Linux-Kernel im 21. Jahrhundert kompiliert

So überprüfen Sie die Kernel-Version in Linux

Wie man einen Kernel kompiliert – Der Debian-Weg

So finden Sie den gemounteten Dateisystemtyp in Linux

So aktualisieren Sie den Kernel auf CentOS 8.0