J'ai déjà essayé de décompresser, GZIP et toutes les autres solutions proposées comme des résultats de Google et ceux-ci n'ont pas fonctionné pour moi.
Pour obtenir juste la recherche de l'image de la signature GZ -
1f 8b 08 00
.> od -A d -t x1 vmlinuz | grep '1f 8b 08 00' 0024576 24 26 27 00 ae 21 16 00 1f 8b 08 00 7f 2f 6b 45
donc, l'image commence à
24576+8 => 24584
. Puis copiez simplement l'image du point et décompressez-la -> dd if=vmlinuz bs=1 skip=24584 | zcat > vmlinux 1450414+0 records in 1450414+0 records out 1450414 bytes (1.5 MB) copied, 6.78127 s, 214 kB/s
Vous avez obtenu ces instructions à Verbatim à partir d'un forum en ligne: http://www.codeguru.com/forum/showthread.php?t=415186
Ce processus ne fonctionne pas pour moi et finit par donner des erreurs qui indiquent que le fichier indique non pas 0024576 et tous les numéros ultérieurs.
Comment procéder à Vmlinux de Vmlinuz?
Merci.
Edité: C'est une question ingénierie inverse. Je n'ai pas accès à la distribution d'installer de RPM ni de recompiler. Je commence avec rien mais vmlinuz.
Peut-être que vous avez mal compris ce que l'auteur de cette post signifiait.
Le fichier vmlinuz
contient d'autres éléments en dehors du contenu gzippé, vous devez donc savoir où le contenu gzippé commence. Pour ce faire, utilisez:
od -A d -t x1 vmlinuz | grep '1f 8b 08 00'
Ce que cela fait est de vous montrer où dans ce fichier, vous pouvez trouver l'en-tête GZIP. La sortie ressemble à:
0024576 24 26 27 00 ae 21 16 00 1f 8b 08 00 7f 2f 6b 45
Cela signifie qu'à 0024576
(au moins pour l'auteur de l'article, le vôtre pourrait être quelque part complètement différent) dans le fichier vmlinuz
, vous trouverez les valeurs binaires "24 26 27 00 ae 21 16 00 1f 8b 08 00 7f 2f 6b 45
". Vous cherchez 1f 8b 08 00
, qui peut être trouvé du personnage 9 à partir ou, à l'adresse 0024576 + 8
(commencez à compter de 0) = 24584
.
Maintenant que vous savez où le contenu gzippé commence (en position 24584
) Vous pouvez utiliser dd
pour extraire ce contenu gzippé et le nongzip. Pour ce faire, utilisez:
dd if=vmlinuz bs=1 skip=24584 | zcat > vmlinux
La première commande cherchera à cette position et tout copiera tout sur stdout. zcat
puis décompressera tout ce qu'il gagne de STDIN et ira la chaîne non compressée à STDOUT. Puis le >
Rediriger zcat
's sortie à un nouveau fichier nommé vmlinux
.
Les sources du noyau contiennent maintenant un script pour cela, extract-vmlinux
. Vous n'avez pas besoin de rouler le vôtre.
Voir Ceci SO Réponse .
J'ai couru dans un simple problème - à la recherche de la version correcte de Vmlinux pour crash. Au lieu d'essayer de décompresser Vmlinuz à Vmlinux.
La meilleure solution est la suivante: Installez le RPM: kernel-debuginfo
, Ce RPM contient un fichier vmlinux approprié.
Faites attention au nom du RPM, il existe plusieurs noms similaires (déroutants). Dois être: kernel-debuginfo-$(version).rpm
Les noyaux modernes ne sont pas toujours (en fait, pas généralement) gzip comprimé. Ils peuvent utiliser BZIP2 ou LZMA. Une recherche sur le Web rapide n'a pas aidé à trouver les chaînes magiques pour ces méthodes de compression - vous pourriez mieux vérifier plusieurs images du noyau pour trouver l'en-tête invariant qui inclut le code de décompression.
Les lignes de décompression ci-dessus ont fonctionné pour moi et, bien sûr, le noyau a été dépouillé. Par conséquent, pas de bonne information là-bas.
Si vous avez besoin de modifier votre ancien noyau, comme le mettre en débogage, utilisez uname -r
Pour obtenir la révision de votre noyau et obtenir sa source:
Sudo apt-get source linux-image-\`uname -r\`
La source sera dans /usr/src/linux...
cd
à l'arborescence source et:
make oldconfig
make
Cela tentera de trouver le fichier contenant la configuration du noyau actuellement exécutant - généralement
/boot/config-\`uname -r\`
et utilisez-le pour cette construction recréant ainsi le noyau en cours d'exécution.
Construisez cela comme vous le souhaitez; avoir accès au noyau non filtrué au besoin.
Les coquilles ci-dessus ne trouveront probablement pas le numéro de magie GZIP en raison de l'espacement. Oui, ils sont toujours compressés de la même manière, bien que j'écris un an après la discussion initiale. Envoyez la sortie à less
et recherchez 1f 8b
ou même 1f
. Vérifiez le reste des octets manuellement pour déterminer une correspondance et vérifier que vous avez la première instance. Utilisez le décalage trouvé en mémoire que c'est décimal.