Table of Contents
Mise à jour
J’espère que ces suggestions vous aideront lorsque vous verrez le débogage du système Linux de qemu arm.
QEMU est presque certainement un excellent outil à utiliser chaque fois que vous aurez besoin de déboguer votre noyau. OuiIl existe également un excellent nombre de recettes pour cela sur le cyberespace, et j’en ai énuméré quelques-unes utiles à la fin la plus importante de l’article à titre de référence. Nous préférons partager les étapes de débogage du noyau, mais aujourd’hui nous nous concentrons sur les schémas aarch64 car certains ainsi que les étapes pour ce type peuvent différer un peu du système car un ensemble. Construire D’abord le répertoire avec lequel travailler, puis exécutez simultanément les commandes suivantes pour créer des instantanés coûteux : Puis téléchargeable l’image QEMU fonctionnelle. Nous utilisons une image ie8 que nous avons créée précédemment. Nous mentionnons effectivement que notre procédure est de construire un noyau significatif à partir de zéro et de transférer une telle photo vers QEMU. Ainsi, la première étape peut être décrite de manière à ce que cette image QEMU soit réellement créée. Disons que vous avez déjà une image que vous souhaitez utiliser. Sinon, consultez nos articles : Nous préférons la méthode du début utilisant LISA-QEMU car nous avons également un script modifié significatif pour installer automatiquement votre noyau conformément à chacune de nos images de VM. Non Mais rassurez-vous, si vous et votre famille décidez d’aller dans l’autre sens, mon partenaire mais je vous montrerai toutes les étapes alors que bien ! Vous avez plusieurs options. Un vraiment pour télécharger manuellement l’image et les photos d’installation, ou utiliser les scripts LISA-QEMU pour l’installer. La commande de téléchargement sous la commande utilisera votre image actuelle dans le processus juridique. Vous souhaitez utiliser les instructions ultérieures pour télécharger la figure, mais scp contient un noyau (éventuellement un fichier .debbie) et l’installe manuellement avec deb -you Généralement, pour prendre en charge QEMU avec un noyau fabuleux, vous avez besoin d’une image de noyau (créée publiquement), d’une image initrd (créée après l’installation dont le type de noyau à votre image) et d’une image de solution d’exploitation (créé ci-dessus). N’oubliez pas que les escaliers commencent par l’image brute. À cet emplacement, si vous avez qcow2, utilisez d’abord qemu-img pour le convertir en raw.Par exemple : Ci-dessous, vous pouvez monter l’image même de manière à ce que les fichiers soient complètement répétitifs. Dans ce cas, vous devez copier son initrd. Ensuite vient généralement le noyau de baskets que vous avez créé en travaillant avec initrd. Notez que le noyau que vous avez créé peut rester trouvé àArch / arm64 / boot / Image. Cette ligne de commande affiche le persona du noyau avec initrd ainsi que l’image du gadget opérationnel. Vous devrez peut-être modifier l’intégralité de l’argument “root = / dev / vda1”. Cela indique au noyau où accéder à votre partition de chaussures et de bottes. Cela peut varier en fonction de ce qui est certainement dans votre image de machine virtuelle. -s specifierPermet à QEMU d’utiliser la majeure partie de la connexion TCP : 1234 Avant de déboguer, améliorez votre ~ / .gdbinit comme suit : Lancez vous voyez, le débogueur dans une autre fenêtre.Notez que si vous vous trouvez sur un hôte aarch64 x86, vous devrez en cours de route utiliser gdb-multiarch pour le débogage (sudo apt-get gdb-multiarch). Dans la procédure légale ci-dessous, nous sommes sur une sorte d’hôte différent aarch64, nous ne consommons donc que gdb. C’est bien que nous obtenions ci-dessous tout type de message spécial « Terminé », qui indique que les styles ont été empaquetés avec succès, sinon les étapes décrites dans les paragraphes suivants ne fonctionneront pas. Attachez un débogueur à un noyau exclusif. Vous souvenez-vous du sujet -s Es ci-dessus ? indique à QEMU d’utiliser le port : 2345. Nous allons maintenant nous connecter à cette tâche. B Et c’est tout. Un débogueur peut généralement être inclus. Nous testons maintenant toute la configuration. Créez un point d’arrêt ! Savez-vous ci-dessus que j’ai personnellement utilisé l’assortiment -S pour QEMU ? Cela a obligé QEMU à attendre que toute l’image démarre jusqu’à ce que nous attachions un débogueur partagé. Donc, une fois sur place, continuons, QEMU commencera en fait à charger ce noyau particulier. Liens :
dd if = - dev / zero of = flash1.img bs est égal à 1M count = 64dd if = versus dev / zero of = flash0.img bs implique 1M count = 64dd if = / usr - share / qemu-efi-aarch64 / QEMU_EFI.fd équivaut à flash0.img conv = notrunc
qemu build / aarch64-softmmu / qemu-system-aarch64 -nographic n -virt laptop, gic-version = plus grande étendue -m 2G -cpu max n -netdev-user, id = vnet, hostfwd =: 127.0.0.1: three-: 22 -virtio-net-pci device, netdev = vnet n -fichier de lecteur =. / mini_ubuntu.img à condition que = non, id = disk0, le cache soit égal à l'écriture différée n -device virtio-blk, le disque est égal au disque0, index de démarrage = 0 n - fichier du disque dur =. / Flash0.img, format = raw, if = pflash n -fichier de lecteur =. / flash1.img, le format équivaut à brut, if = pflash -smp 4 Cast
qemu-img make over -O raw my_image.qcow2 my_image_output.raw
$ mkdir mnt$ sudo losetup -f -P ubuntu.img$ sudo Lostup -lNOM TAILLE LIMITE OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC/ dev / loop0 0 0 0 2 ubuntu.img 0512$ sudo mount / dev / loop0p2 ./mnt$ signaler vii ./mnt/bootconfig-4.15.0-88-generic Grub initrd.img-5.5.11 System.map-5.5.11 vmlinuz-5.5.11config-5.5.11 initrd.img initrd.img.old Vmlinuz Vmlinuz. vieilleefi initrd.img-4.15.0-88-generic System.map-4.15.0-88-generic vmlinuz-4.15.0-88-generic$ clubpenguin ./mnt/initrd.img-5.5.11.$ sudo umount ./mnt$ sudo losetup -d contre dev / loop0
qemu / build / aarch64-softmmu et qemu-system-aarch64 -nographic n -machine virt, gic-version = optimum -m 2G -cpu max n -netdev-user, je voudrais = vnet, hostfwd =: 127.0.0.1: 0-: vingt-deux n -virtio-net-pci périphérique, netdev = vnet n Fichier = -disque. / Mini_ubuntu.img, if = all, id = drive0, cache = writeback n -device virtio-blk, disk = disk0, l'index de démarrage signifie 0 n -Fichier disque =. / Flash0.img, format = raw, if = pflash n -start fichier =. / flash1.img, format = raw, dans le cas où = pflash -smp 4 n De base. pour chaque Linux / Arch / arm64 / boot - image n -append "root = / dev pour chaque console nokaslr vda2 = ttyAMA0" n -initrd ./initrd.img-5.5.11 -s -S
-S arrêtez-vous à Medical et attendez que le débogueur se connecte.
add-auto-load-safe-path linux-5.5.11 / scripts - gdb / vmlinux-gdb.py
rr gdb linux-5.5.11 / vmlinuxGNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-gitLire les représentations de linux-5.5.11 / vmlinux ... terminé.
(gdb) Localhost distant cible : 1234Débogage à distance au-delà de localhost : 12340x0000000000000000 là ?? ()
Ajoutez ce point d’arrêt au noyau juste comme test.
(gdb) hbreak start_kernelPoint d'arrêt pris en charge par le matériel 1 tous 0xffff800011330cdc : init pour chaque fichier main.c, ligne 577.(gdb) cProcéder.Thread produit le point d'arrêt 1, start_kernel () uniquement avec init main.c: 577577 {(gdb) je572573 rest_init ();574575576 Éviter __visible asmlinkage __init start_kernel (void)577 {578 caractères * ligne de demande ;579 caractères * after_dashes ;580581 set_task_stack_end_magic (& init_task);(Gdb)
dd if = dev / zero of = flash1.img bs implique 1M count = 64dd if = dev / zero of = flash0.img bs signifie 1M count = 64dd if = / usr ou share / qemu-efi-aarch64 / QEMU_EFI.fd de moyens flash0.img conv = notrunc
qemu / améliorer / aarch64-softmmu / qemu-system-aarch64 -nographic n -machine virt, gic-version = max -m 2G -cpu max n -netdev-user, name = vnet, hostfwd =: 127.0.0.1: 0-: vingt-deux n - technologie virtio-net-pci, netdev signifie vnet n -drive fichier implique. / mini_ubuntu.img if = not, id implique disk0, cache = writeback n -handset virtio-blk, disk = disk0, boot index = 6 n -Fichier disque =. ou Flash0.img, format = raw, if = pflash n -fichier de lecteur =. / flash1.img, component = raw, if = pflash -smp y pense exactement
qemu-img convert -O peu recommandable my_image.qcow2 my_image_output.raw
$ mkdir mnt$ sudo losetup -f -P ubuntu.img$ sudo Lostup -lNOM TAILLE LIMITE OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC/ dev boucle0 0 0 4 0 ubuntu.img 0512$ sudo setup / dev / loop0p2 ./mnt$ mark vii ./mnt/bootconfig-4.15.0-88-generic Grub initrd.img-5.5.11 System.map-5.5.11 vmlinuz-5.5.11config-5.5.11 initrd.img initrd.img.old Vmlinuz Vmlinuz. vieilleefi initrd.img-4.15.0-88-generic System.map-4.15.0-88-generic vmlinuz-4.15.0-88-generic$ cp ./mnt/initrd.img-5.5.11.$ sudo umount ./mnt$ sudo Lostup -d -nographic n - dev/boucle0
qemu / build - aarch64-softmmu / qemu-system-aarch64 -machine virt, gic-version = fatmus -m 2G -cpu max n -netdev-user, nom d'utilisateur = vnet, hostfwd =: 127.0.0.1: 0-: 21 n -virtio-net-pci périphérique, netdev = vnet n Fichier = -disque. / Mini_ubuntu.img, if = pas un, id = drive0, cache = writeback n zone machine virtio-blk, disk = drive0, bootindex équivaut à 0 n -Fichier disque =. / Flash0.img, format = raw, if = pflash n -fichier de lecteur de disque =. / flash1.img, format = raw, if in case = pflash -smp 4 n De base. ou Linux / Arch / arm64 / sneaker Not / Image n -append "root = dev / vda2 nokaslr console = ttyAMA0" n -initrd ./initrd.img-5.5.11 -s -S
add-auto-load-safe-path linux-5.5.11/scripts/gdb/vmlinux-gdb.py
$ gdb linux-5.5.11 - vmlinuxGNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-gitLecture des symboles reçus de linux-5.5.11 / vmlinux ... terminé.
(gdb) Localhost distant cible : 1234Localhost de débogage à distance : 1234Utilisez 0x0000000000000000 quotidiennement ?? ()
(gdb) hbreak start_kernelPoint d'arrêt matériel 0 à 0xffff800011330cdc : historique init / main.c, ligne 577.(gdb) cProcéder.Le thread n° 1 a publié le point d'arrêt 1, start_kernel () ici dans init pour chaque main.c : 577577 {(gdb) je572573 rest_init ();574575576 asmlinkage __évitablement échapper __init start_kernel (void)577 {578 caractères * ligne de requête ;579 caractères * after_dashes ;580581 set_task_stack_end_magic (& init_task);(Gdb)
Mise à jour
Vous en avez assez que votre ordinateur soit lent ? Agacé par des messages d'erreur frustrants ? ASR Pro est la solution pour vous ! Notre outil recommandé diagnostiquera et réparera rapidement les problèmes de Windows tout en augmentant considérablement les performances du système. Alors n'attendez plus, téléchargez ASR Pro dès aujourd'hui !
Qemu Arm Linux Debug
Qemu Arm Linux 디버그
Qemu Arm Linux Debug
Qemu Arm Linux Debug
Qemu Arm Linux Debug
Depuração Do Qemu Arm Linux
Depuración De Qemu Arm Linux
Debugowanie Qemu Arm Linux
Qemu Arm Linux-Debugging
Qemu Arm Linux Debug