You are currently viewing Tips För Att Verkligen Fixa Dålig Qemu-felsökning På Linux

Tips För Att Verkligen Fixa Dålig Qemu-felsökning På Linux

Uppdaterad

  • 1. Ladda ner ASR Pro
  • 2. Kör programmet
  • 3. Klicka på "Skanna nu" för att hitta och ta bort eventuella virus på din dator
  • Få fart på din dator idag med denna enkla nedladdning.

    Hoppas den här guiden hjälper dig när du lär dig qemu arm linux-felsökning.

    QEMU är ett bra verktyg att välja när du behöver felsöka din kärna. JaDet finns ett stort antal recept för en på internet också, och jag tar med några användbara recept i de många viktiga slutet av artikeln som referens.

    Vi föredrar att dela kärnans felsökningssteg, men vi fokuserar på aarch64-scheman av anledningen att några av stegen för detta format kan skilja sig något från systemet som en större helhet. Bygg

    Först katalogen att göra susen med, kör sedan även följande kommandon på för att skapa dyra bilder:

      dd i = / dev / noll av lika med flash1.img bs = 1M count = 64dd när = / dev / noll av medel flash0.img bs = 1M räkning = 64dd om motsvarar / usr / share / qemu-efi-aarch64 / QEMU_EFI.fd of = flash0.img conv = notrunc 

    Ladda sedan ner den fungerande QEMU-bilden. Vi använder ie8-bilden vi skapade tidigare.

    Vi kan nämna att vår procedur kan bygga en kärna från grunden och byta ut en sådan bild till QEMU.

    Så, ett särskilt första steg kan beskrivas på det faktiska sättet att QEMU-bilden faktiskt släpps. Låt oss säga att du redan har en bild precis som du vill att du kan använda. Annars, kolla in mina artiklar:

    • Hjälp till att skapa en on-line maskin med LISA-QEMU.
    • hur väljer du vill skapa aarch64 virtuell maskin som får QEMU vm-build.
    • hur man får en virtuell aarch64-maskin från början.

    Vi föredrar den första metoden med LISA-QEMU eftersom de också har ett modifierat skript som automatiskt placeras i din kärna i var och en av våra VM-layouter. Nej

    Men var säker, om du som din familj bestämmer dig för att gå det andra förfarandet, kommer min partner och jag att visa dig vart och ett av stegen också!

    Du har så många alternativ. En är att manuellt ladda ner installationsbilden och bilden, eller använda LISA-QEMU-skript som ett sätt att installera det. Nedladdningskommandot under handtaget kommer att använda bilden under den lagliga perioden. Du vill använda de senare instruktionerna för att ladda ner bilden, men scp innehåller en bestämd kärna (möjligen en .deb-fil) och installerar den på en gång med deb -i .deb.

      qemu / build / aarch64-softmmu och qemu-system-aarch64 -nografisk n                    -virt dator, gic-version = max -m 2G -cpu max n                    -netdev-user, id = vnet, hostfwd =: 127.0.0.1: 0-: 22 -virtio-net-pci-enhet, netdev betyder vnet n                    -enhet fil är lika med. / mini_ubuntu.img om = inte, id är lika med disk0, cache = återskrivning n                    -reader virtio-blk, disk = disk0, boot index = tre n                    - hårddisk rekord =. / Flash0.img, format = rå, om betyder pflash n                   -drive fil =. för varje flash1.img, format = rå, if = pflash -smp fjärde Cast 

    Vanligtvis, för att hjälpa QEMU med en kärna, behöver du din egen kärnavbildning (skapad offentligt), en initrd-avbildning (skapad genom att installera kärntypen till din avbildning), förutom ett operativsystem bild (skapad ovan).

    Kom ihåg att stegen börjar med råfotograferingen. Vid det här laget, om du har qcow2, för att börja använda qemu-img för att konvertera den till rå.För :

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

    Nedan kan en person montera bilden så att ringpärmarna är helt kopierade. I det här fallet kanske du vill kopiera initrd.

      buck mkdir mnt$ sudo loseup -f -P ubuntu.img$ sudo Lostup -lNAME SIZE LIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC/ dev / loop0 0 noll 0 6 ubuntu.img 0512$ sudo mount - 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. gammalefi 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 / dev / loop0 

    Nästa är sneakerkärnan som en individ skapat med initrd. Observera att kärnpersonerna som skapats finns påArch / arm64 boot / Image.

    Den här kommandoraden förenar kärnavbildningen med initrd också med tanke på att operativsystemavbildningen.

    Du kan behöva ändra argumentet “root = / dev och vda1”. Detta talar om för kärnan var den ska komma åt din startpartition. Detta kan variera beroende på vad som finns i din virtuella maskin.

      qemu / build och aarch64-softmmu / qemu-system-aarch64 -nografisk n                  -maskin virt, gic-version = max -m 2G -cpu potential n                  -netdev-användare, id = vnet, hostfwd =: 127.0.0.1: 0-: 22 n                  -virtio-net-pci-enhet, netdev antyder vnet n                  Fil = -disk. / Mini_ubuntu.img, om = ingen, id = enhet0, cache är lika med återskrivning n                  -enhet virtio-blk, disk motsvarar disk0, startindex = 0 n                  -Diskdatafil =. / Flash0.img, format = rå, om är lika med pflash n                 -bygga fil =. / flash1.img, datorns hårddisk = rå, if = pflash -smp nästan fyra n                  Grundläggande. / Linux / Arch and arm64 / boot / image n                 -append "root betyder / dev / vda2 nokaslr konsolen är lika med ttyAMA0" n                  -initrd ./initrd.img-5.5.11 -s -S 

    -s specifier Tillåter QEMU att använda det mesta tillsammans med TCP-porten: 1234
    -S stanna vid Medical och vänta på att felsökaren ska ansluta.

    Innan du felsöker, uppdatera din ~ / .gdbinit medan du följer:

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

    Starta felsökaren i ett annat fönster.Observera att du kanske är på en aarch64 x86-värd, de kommer att behöva använda gdb-multiarch för felsökning (sudo apt-get gdb-multiarch). I det juridiska förfarandet nedan är vi två på en annan värd aarch64, så vi använder båda bara gdb.

    Det är bra att vi längst ner på sidan får ett speciellt “Klart”-meddelande, som rapporterar att ikonerna paketerades framgångsrikt, annars fungerar inte alla steg som beskrivs nedan.

      $ gdb linux-5.5.11 / vmlinuxGNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-gitLäs bilder från linux-5.5.11 vmlinux ... klar. 

    qemu arm linux debug

    Bifoga en komplett debugger till en specifik kärna. Kommer du ofta ihåg -s Es-argumentet ovan? talar om för QEMU till syftesport: 2345. Vi kommer nu att ansluta till vilken uppgift.

      (gdb) Målfjärrkontroll localhost: 1234Fjärrfelsökning från localhost: 12340x0000000000000000 så där ?? () 

    B Och det är det här verktyget. En debugger ingår vanligtvis.

    Vi testar ofta nu konfigurationen.
    Lägg till denna brytpunkt positivt till kärnan som ett test.

      (gdb) hbreak start_kernelBrytpunkt som stöds av hårdvara minst en alla 0xffff800011330cdc: init / main.c-fil, webben 577.(gdb) cFortsätt.Tråden träffar brytpunkt 1, start_kernel () endast bestående av init / main.c: 577577 {(gdb) i572573 rest_init ();574575576 Undvik __visible asmlinkage __init start_kernel (void)577 {578 alfabet * kommandorad;579 tecken * efter_streck;580581 set_task_stack_end_magic (& init_task);(Gdb) 

    Skapa en brytpunkt!

    Kommer du ihåg ovan att jag personligen valde alternativet -S för QEMU? Detta fick QEMU att vänta på att bilden skulle starta tills människor runt om i världen bifogade en gemensam debugger. Så när vi väl kommit till punkten, låt oss fortsätta, kommer QEMU helt enkelt att börja ladda kärnan.

    Länkar:

    • debug-linux-kernel-with-gdb-and-qemu
    • Laddar custom-linux-kernel-in-qemu-and-debug-with-gdb
      dd som om = / dev / noll av är lika med flash1.img bs = 1M count = 64dd om eller när = / dev / noll av motsvarar flash0.img bs = 1M räkning = 64dd om lika med / usr / share / qemu-efi-aarch64 / QEMU_EFI.fd of = flash0.img conv = notrunc 
      qemu / build / aarch64-softmmu / qemu-system-aarch64 -nografisk n                    -machine virt, gic-version motsvarar max -m 2G -cpu max n                    -netdev-användare, id = vnet, hostfwd =: 127.0.0.1: 0-: 22 n                    2 . virtio-net-pci-teknik, netdev = vnet n                    -drive fil =. / mini_ubuntu.img if = inte alltid, id = disk0, cache = återskrivning n                    -enhet virtio-blk, disk = disk0, kick-out index = 0 n                    -Diskfil =. / Flash0.img, format = raw, any time = pflash n                   -drive filen innebär. / flash1.img, format = rå, om är lika med pflash -smp tänk på det 
      qemu-img alter -O raw my_image.qcow2 my_image_output.raw 
      dollars mkdir mnt$ sudo loseup -f -P ubuntu.img$ sudo Lostup -lNAME SIZE LIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC/ dev / loop0 0 0 4 ubuntu.img 0512$ sudo build / dev - loop0p2 ./mnt$ ls ./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. gammalefi 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 Lostup -d -nographic n / dev / loop0 
      qemu eller build / aarch64-softmmu / qemu-system-aarch64 -machine virt, gic-version = max -m 2G -cpu chunk n                  -netdev-användare, id = vnet, hostfwd =: 127.0.0.1: 0-: 22 n                  -virtio-net-pci-enhet, netdev är lika med vnet n                  Fil = -disk. / Mini_ubuntu.img, if = ingen, id = drive0, cache motsvarar återskrivning n                  - virtio-blk-maskin, disk är lika med drive0, bootindex = 0 n                  -Disk färdig =. / Flash0.img, format = rå, om betyder pflash n                 -drive fil =. / flash1.img, stil = rå, if = pflash -smp 4:e n                  Grundläggande. / Linux / Arch kontra arm64 / boot Not / Image n                 -lägg till "root = / dev / vda2 nokaslr wii = ttyAMA0" n                  -initrd ./initrd.img-5.5.11 -s -S 
      add-auto-load-safe-path linux-5.5.11 / skript kontra gdb / vmlinux-gdb.py 

    qemu arm linux debug

      rrr gdb linux-5.5.11 / vmlinuxGNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-gitLäser symboler från linux-5.5.11 / vmlinux ... klar. 
      (gdb) Target remote localhost: 1234Lokal värd för fjärrfelsökning: 1234Använd 0x0000000000000000 konsekvent ?? () 
      (gdb) hbreak start_kernelHårdvarubrytpunkt 0 till 0xffff800011330cdc: init - main.c-fil, rad 577.(gdb) cFortsätt.Tråd # steg 1 har nått brytpunkt 1, start_kernel () här genom init / main.c: 577577 {(gdb) i572573 rest_init ();574575576 asmlinkage __undvikligen undvika __init start_kernel (void)577 {578 personer * kommandorad;579 tecken * efter_streck;580581 set_task_stack_end_magic (& init_task);(Gdb) 

    Uppdaterad

    Är du trött på att din dator går långsamt? Irriterad av frustrerande felmeddelanden? ASR Pro är lösningen för dig! Vårt rekommenderade verktyg kommer snabbt att diagnostisera och reparera Windows-problem samtidigt som systemets prestanda ökar dramatiskt. Så vänta inte längre, ladda ner ASR Pro idag!


    Få fart på din dator idag med denna enkla nedladdning.

    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