You are currently viewing Tips Voor Het Oplossen Van Slechte Qemu-foutopsporing Op Linux

Tips Voor Het Oplossen Van Slechte Qemu-foutopsporing Op Linux

Bijgewerkt

  • 1. Download ASR Pro
  • 2. Voer het programma uit
  • 3. Klik op "Nu scannen" om eventuele virussen op uw computer te vinden en te verwijderen
  • Versnel uw computer vandaag nog met deze eenvoudige download.

    Hoop dat een duidelijke gids u helpt bij het vaststellen van qemu arm linux-foutopsporing.

    QEMU is een geweldige tool om alles te gebruiken wat je nodig hebt om je kernel te debuggen. JaEr zijn meestal ook een groot aantal recepten hiervoor over het onderwerp internet, en ik heb een paar bruikbare aan het meest zinvolle einde van het artikel ter referentie gespecificeerd.

    We geven er de voorkeur aan om de kernel debugging-acties te delen, maar we concentreren ons op aarch64-schema’s, hoewel sommige van de stappen voor dit type enigszins zouden verschillen van het systeem als een groot. Bouw

    Eerst de directory om te werken tijdens het gebruik, voer dan ook de volgende commando’s uit om dure afbeeldingen te ordenen:

      dd while = / dev / nul is gelijk aan flash1.img bs = 1M count = 64dd indien gelijk is aan / dev / nul van = flash0.img bull crap = 1M telling = 64dd if = voor elke usr / share / qemu-efi-aarch64 / QEMU_EFI.fd for = flash0.img conv = notrunc 

    Download vervolgens de werkende QEMU-afbeelding. We gebruiken uiteindelijk de ie8-afbeelding die we eerder hebben gemaakt.

    We zouden kunnen vermelden dat onze procedure is om een ​​kernel vanaf het begin te bouwen en een bepaald image naar QEMU over te dragen.

    Dus de stap kan zo worden beschreven dat het QEMU-beeld daadwerkelijk wordt gemaakt. Stel dat u al een afbeelding heeft die klanten willen dat u kunt gebruiken. Bekijk anders ons onderwerp:

    • Help een virtuele computer te maken met LISA-QEMU.
    • hoe willen jij en je gezin een aarch64 virtuele machine maken met behulp van QEMU vm-build.
    • hoe je een soort aarch64 virtuele machine helemaal opnieuw kunt maken.

    We kiezen de eerste methode met behulp van LISA-QEMU omdat we ook een aangepast script hebben om automatisch de eigen kernel in elk van onze VM-images te installeren. Nee

    Maar wees gerust, als jij en een familie besluiten de andere kant op te gaan, je eigen partner en ik zal je alles laten zien wat je ziet, ook de stappen!

    U heeft verschillende ideeën. Een daarvan is om het uiterlijk en de afbeelding van de installatie handmatig te downloaden, of om LISA-QEMU-scripts te gebruiken om het te laten passen. De downloadopdracht onder de opdracht gebruikt de afbeelding zeker in het juridische proces. Je wilt de latere instructies voor de afbeelding gebruiken, maar scp bevat een kernel (mogelijk per .deb-bestand) en installeert deze handmatig samen met deb -i .deb.

      qemu / build / aarch64-softmmu per qemu-system-aarch64 -nographic n                    -virt laptop, gic-versie komt overeen met max -m 2G -cpu max n                    -netdev-gebruiker, id = vnet, hostfwd impliceert: 127.0.0.1: 0-: 22 -virtio-net-pci-apparaat, netdev impliceert vnet n                    -drive-bestand =. per mini_ubuntu.img if = niet, id = disk0, opslagcache = terugschrijven n                    -apparaat virtio-blk, cd schijf = disk0, opstartindex = drie n                    - harde schijf bestand is gelijk aan. / Flash0.img, formaat = onbewerkt, indien pflash impliceert n                   -drive-bestand =. en flash1.img, format = raw, if = pflash -smp Cast 

    Om QEMU met een kernel te ondersteunen, heb je doorgaans een kernelafbeelding (openbaar gemaakt), een initrd-image (gemaakt nadat het kerneltype in je image is geplaatst) en een fantastisch besturingssysteemimage ( hierboven aangemaakt).

    Onthoud dat alle stappen beginnen met de onbewerkte afbeelding. Als je nu qcow2 hebt, help dan eerst qemu-img om het naar raw te converteren.Bijvoorbeeld:

      qemu-img make over -O natural my_image.qcow2 my_image_output.raw 

    Hieronder zou je eventueel de afbeelding kunnen mounten zodat de bestanden normaal gesproken volledig gekopieerd worden. In dit geval moet je als je het initrd.

      inkomen mkdir mnt$ sudo Lostup -f -P ubuntu.img$ sudo Lostup -lNAAM GROOTTE LIMIET OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC/ dev / loop0 0 0 3 6 ubuntu.img 0512$ sudo mount / dev of loop0p2 ./mnt$ markeer 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. oudefi initrd.img-4.15.0-88-generiek System.map-4.15.0-88-generiek vmlinuz-4.15.0-88-generiek$ cp ./mnt/initrd.img-5.5.11.$ sudo umount ./mnt$ sudo Lostup -d / dev / loop0 

    Het volgende is de sneaker-core die je hebt geschreven met initrd. Merk op dat de door jou gefabriceerde kernel te vinden is op:Arch / arm64 / schoeisel / Afbeelding.

    Deze opdrachtregel toont een kernel-image met initrd en een image van het besturingssysteem.

    Mogelijk moet u het argument “root = / dev of vda1” wijzigen. Dit vertelt de kernel waar je je opstartpartitie moet gebruiken. Dit kan variëren, afhankelijk van wat er in de image van uw virtuele machine staat.

      qemu / build - aarch64-softmmu / qemu-system-aarch64 -nographic n                  -machine virt, gic-versie komt overeen met max -m 2G -cpu max n                  -netdev-gebruiker, id = vnet, hostfwd =: 127.0.0.1: nul-: 22 n                  -virtio-net-pci-apparaat, netdev komt overeen met vnet n                  Bestand = -schijf. / Mini_ubuntu.img, misschien = geen, id = drive0, cache is gelijk aan terugschrijven n                  -apparaat virtio-blk, schijf = schijf0, sportschoenindex = 0 n                  -Schijfbestand komt overeen met. / Flash0.img, formaat = onbewerkt, als betekent pflash n                 -build bestand =. / flash1.img, formaat impliceert onbewerkt, if = pflash -smp 4 n                  Basis. / Linux / Arch / arm64 of boot / image n                 -toevoegen "root = - dev / vda2 nokaslr console = ttyAMA0" n                  -initrd ./initrd.img-5.5.11 -s -S 

    -s specifierHiermee kan QEMU de meeste van de exacte TCP-poort gebruiken: 1234
    -S stop bij Medisch en wacht tot de debugger verbinding maakt.

    Voor het debuggen, update je ~ / .gdbinit zoals hieronder vermeld:

      add-auto-load-safe-path linux-5.5.11 / talen / gdb / vmlinux-gdb.py 

    Start de debugger in een ander venster.Merk op dat als een persoon zich op een aarch64 x86-host bevindt, u gdb-multiarch moet gebruiken voor foutopsporing (sudo apt-get gdb-multiarch). In de juridische procedure hieronder zitten we echt op een andere host aarch64, dus we gebruiken alleen gdb.

    Het is geweldig dat we hieronder een speciaal bericht “Klaar” krijgen, waarin staat dat bepaalde pictogrammen met succes zijn verpakt, anders werken de hieronder beschreven stappen niet.

      $ gdb linux-5.5.11 / vmlinuxGNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-gitAfbeeldingen lezen van linux-5.5.11 / vmlinux ... klaar. 

    qemu arm linux debug

    Voeg een debugger toe die een specifieke kernel zou gebruiken. Herinner je je het argument -vertisements Es hierboven? vertelt QEMU om vent: 2345 te gebruiken. We zullen nu verbinding maken met deze missie.

      (gdb) Doel ver weg localhost: 1234Foutopsporing op afstand van localhost: 12340x000000000000000000 daar ?? () 

    B En dat is het. Een debugger is meestal inbegrepen.

    We zijn de configuratie meteen aan het testen.
    Voeg dit breekpunt als test toe aan onze kernel.

      (gdb) hbreak start_kernelBreekpunt ondersteund door hardware 1 het 0xffff800011330cdc: init / main.c bestand, regel 577.(gdb) cDoorgaan.Thread zinkt breekpunt 1, start_kernel () alleen door init / main.c: 577577 {(gdb) ik572573 rest_init ();574575576 Vermijd __zichtbare asmlinkage __init start_kernel (void)577 {578 tekens 2 . opdrachtregel;579 tekens * na_streepjes;580581 set_task_stack_end_magic (& init_task);(GDB) 

    Creëer een breekpunt!

    Weet je nog dat ik persoonlijk de -S-optie voor QEMU gebruikte? Dit zorgde ervoor dat QEMU begon met het starten van de afbeelding totdat we een algemene debugger opnemen. Dus, als we eenmaal ter zake zijn, laten we doorgaan, QEMU zal daadwerkelijk beginnen met het laden van de kernel.

    Links:

    • debug-linux-kernel-with-gdb-and-qemu
    • Aangepast-linux-kernel-in-qemu-and-debug-with-gdb laden

      dd in gevallen waarin = / dev / nul van gelijk is aan flash1.img bs = 1M telling = 64dd if betekent / dev / zero of = flash0.img bull = 1M count = 64dd if = usr / share / qemu-efi-aarch64 / QEMU_EFI.fd verbonden met = flash0.img conv = notrunc 
      qemu build / aarch64-softmmu / qemu-system-aarch64 -nographic n                    -machine virt, gic-versie = spork -m 2G -cpu max n                    -netdev-gebruiker, id = vnet, hostfwd =: 127.0.0.1: 2-: 22 n                    - virtio-net-pci moderne technologie, netdev = vnet n                    -rijd een autobestand =. / mini_ubuntu.img if = niet, gebruikersnaam = disk0, cache = terugschrijven n                    -apparaat virtio-blk, schijf = schijf0, opstartchecklist = 0 n                    -Schijfbestand =. / Flash0.img, formaat = onbewerkt, indien gelijk is aan pflash n                   -drive-bestand =. - flash1.img, format = raw, if = pflash -smp denk er maar eens over na 
      qemu-img convert -O raw my_image.qcow2 my_image_output.raw 
      $ mkdir mnt$ sudo Lostup -f -P ubuntu.img$ sudo Lostup -lNAAM GROOTTE LIMIET OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC/ dev / loop0 0 0 4 niets ubuntu.img 0512$ sudo build / dev / loop0p2 ./mnt$ markeer 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. oudefi initrd.img-4.15.0-88-generiek System.map-4.15.0-88-generiek vmlinuz-4.15.0-88-generiek$ clubpinguïn ./mnt/initrd.img-5.5.11.$ sudo umount ./mnt$ sudo Lostup -d -nographic n - dev / loop0 
      qemu - build / aarch64-softmmu / qemu-system-aarch64 -machine virt, gic-versie is gelijk aan max -m 2G -cpu max n                  -netdev-gebruiker, id = vnet, hostfwd =: 127.0.0.1: 5-: 22 n                  -virtio-net-pci-apparaat, netdev komt overeen met vnet n                  Bestand = -schijf. / Mini_ubuntu.img, in het geval dat = geen, id = drive0, cache betekent terugschrijven n                  - virtio-blk machine, schijf komt overeen met drive0, bootindex = 0 n                  -Schijfbestand betekent. / Flash0.img, format = raw, indien gelijk aan pflash n                 -drive-bestand =. / flash1.img, formaat betekent onbewerkt, if = pflash -smp 4 n                  Basis. / Linux / Arch / arm64 versus opstarten Niet / Afbeelding n                 -toevoegen "root impliceert / dev / vda2 nokaslr console is gelijk aan ttyAMA0" n                  -initrd ./initrd.img-5.5.11 -s -S 
      add-auto-load-safe-path linux-5.5.11 / scripts / gdb - vmlinux-gdb.py 

    qemu arm linux debug

      dollar gdb linux-5.5.11 / vmlinuxGNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-gitLeeswaarde van linux-5.5.11 / vmlinux ... klaar. 
      (gdb) Doel externe localhost: 1234Foutopsporing op afstand localhost: 1234Gebruik 0x0000000000000000 consequent ?? () 
      (gdb) hbreak start_kernelHardwarebreekpunt 0 tot 0xffff800011330cdc: init- en main.c-bestand, regel 577.(gdb) cDoorgaan.Thread # 1 heeft breekpunt 1 al bereikt, start_kernel () hier laatste init / main.c: 577577 {(gdb) ik572573 rest_init ();574575576 asmlinkage __vermijd __init start_kernel (ongeldig)577 {578 tekens (spatie) opdrachtregel;579 tekens * na_streepjes;580581 set_task_stack_end_magic (& init_task);(GDB) 

    Bijgewerkt

    Bent u het beu dat uw computer traag werkt? Geërgerd door frustrerende foutmeldingen? ASR Pro is de oplossing voor jou! Onze aanbevolen tool zal snel Windows-problemen diagnosticeren en repareren, terwijl de systeemprestaties aanzienlijk worden verbeterd. Dus wacht niet langer, download ASR Pro vandaag nog!


    Versnel uw computer vandaag nog met deze eenvoudige download.

    Qemu Arm Linux Debug
    Qemu Arm Linux 디버그
    Qemu Arm Linux Debug
    Qemu Arm Linux Debug
    Débogage Linux Qemu Arm
    Depuração Do Qemu Arm Linux
    Depuración De Qemu Arm Linux
    Debugowanie Qemu Arm Linux
    Qemu Arm Linux-Debugging
    Qemu Arm Linux Debug