GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je démontrer le type de compression du noyau dans la pratique ?

Votre citation Wikipédia,

Bien qu'il y ait une idée fausse populaire selon laquelle le bz préfixe signifie que la compression bzip2 est utilisée [...], ce n'est pas le cas.

dit le contraire de votre théorie :le bz en bzImage n'a aucun rapport avec bzip2 , et bzImage n'a pas besoin d'être compressé avec bzip2 . En fait, le mode de compression par défaut du noyau est toujours gzip , et il y a peu de raisons d'utiliser bzip2 de nos jours - il est plus lent que LZMA et xz mais ne se comprime pas aussi bien.

Pour déterminer de manière concluante quelle compression a été utilisée pour une image de noyau donnée, sans avoir besoin de l'exécuter ou de trouver sa configuration, vous pouvez suivre l'approche utilisée par le propre extract-vmlinux du noyau. script :

  • recherchez la signature du compresseur dans l'image :

    • 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
  • essayez d'extraire les données de l'image, en commençant par le décalage de toute signature que vous avez trouvée ;

  • vérifiez que le résultat (le cas échéant) est une image ELF.

J'ai adapté le script ici pour qu'il ne signale que le type de compression. Je ne l'inclus pas ici car il est sous licence GPL 2 uniquement.


Vous pouvez consulter les méthodes de compression prises en charge par votre noyau. Un seul peut être sélectionné, ce qui prouvera lequel il s'agit.

Ici, j'utilise 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 - Comment déterminer quel module corrompt le noyau ?

  2. Comment trouver le type d'un fichier Img et le monter ?

  3. Comment nettoyer les caches utilisés par le noyau Linux

  4. Comment un noyau monte-t-il la partition racine ?

  5. Comment lister l'arborescence des périphériques du noyau

Comment le noyau Linux gère les interruptions

Comment compiler un noyau Linux au 21e siècle

Comment vérifier la version du noyau sous Linux

Comment compiler un noyau - à la manière Debian

Comment trouver le type de système de fichiers monté sous Linux

Comment mettre à niveau le noyau sur CentOS 8.0