You are currently viewing Suggerimenti Per Trattare Con Successo Il Debug Di Qemu Scadente Su Linux

Suggerimenti Per Trattare Con Successo Il Debug Di Qemu Scadente Su Linux

Aggiornato

  • 1. Scarica ASR Pro
  • 2. Esegui il programma
  • 3. Fai clic su "Scansiona ora" per trovare e rimuovere eventuali virus sul tuo computer
  • Accelera il tuo computer oggi con questo semplice download.

    Spero che questa guida specifica ti aiuti quando vedi qemu fornire il debug di Linux.

    QEMU è un ottimo strumento da utilizzare ogni volta che il pubblico ha bisogno di eseguire il debug del kernel. sìCi sono un gran numero di ricette funzionali per questo anche su un particolare Internet, e ho elencato ognuna di quelle utili nella cura più importante dell’articolo come riferimento.

    Preferiamo condividere i passaggi di debug del kernel, fortunatamente ci stiamo concentrando sugli schemi aarch64 poiché alcuni passaggi per questo tipo possono variare leggermente dal sistema nel suo insieme. Costruisci

    Innanzitutto la directory con cui lavorare, nella quale eseguire anche i seguenti comandi per creare immagini più alte:

      dd if significa / dev / zero of = flash1.img crap = 1M count = 64dd if = e dev / zero of = flash0.img bs è uguale a 1M count = 64dd if = e usr / share / qemu-efi-aarch64 / QEMU_EFI.fd di equivale a flash0.img conv = notrunc 

    Quindi scarica l’immagine QEMU funzionante. Stiamo lavorando l’immagine ie8 che abbiamo creato in precedenza.

    Potremmo menzionare che la nostra procedura consiste nell’hobby di un kernel da zero e trasferire tale immagine a QEMU.

    Quindi, il primo livello può essere descritto in modo tale che l’immagine QEMU possa essere effettivamente creata. Diciamo che hai già un’immagine che la tua azienda vuole che tu possa usare. Altrimenti, dai un’occhiata ai nostri articoli:

    • Aiuta a creare una macchina virtuale con LISA-QEMU.
    • come ti piacerebbe creare una macchina virtuale aarch64 usando QEMU vm-build.
    • come creare da zero un’incredibile macchina virtuale aarch64.

    Preferiamo una sorta di primo metodo utilizzando LISA-QEMU poiché abbiamo anche bisogno di uno script modificato per installare automaticamente il tuo kernel in ciascuna delle nostre immagini VM. No

    Ma stai tranquillo, se tu e i tuoi familiari decidete di andare dall’altra parte, io e il mio complice vi mostreremo anche tutte le scale!

    Hai diverse opzioni. Uno è scaricare manualmente l’immagine di installazione e semplicemente l’immagine, oppure utilizzare gli script LISA-QEMU per installarne uno. Il comando di download sotto il comando investirà nell’immagine nel processo legale. Dovresti usare le istruzioni successive per scaricare la tua immagine, ma scp contiene un kernel (forse il miglior file .deb) e lo installa manualmente con ve had -i .deb.

      qemu / build / aarch64-softmmu / qemu-system-aarch64 -nographic n                    -virt laptop, versione gic significa max -m 2G -cpu max n                    -netdev-user, id = vnet, hostfwd =: 127.0.0.1: 0-: 22 -virtio-net-pci device, netdev = vnet n                    -drive file =. o mini_ubuntu.img if = not, id = disk0, cache uguale writeback n                    -device virtio-blk, cd / dvd = disk0, indice di avvio = 0 n                    - file del disco rigido =. per ogni Flash0.img, format = raw, if = pflash n                   -drive file =. / flash1.img, composizione = raw, if = pflash -smp 4 Cast 

    In genere, per supportare QEMU a causa di un kernel, è necessario un logo del kernel (creato pubblicamente), un’immagine initrd (creata dopo aver installato il tipo di kernel sulla propria immagine) e un’immagine di sistema di attivazione ( creato sopra).

    Ricorda che tutti i passaggi iniziano con l’immagine non elaborata. In un punto specifico, se hai qcow2, prima vai con qemu-img per convertirlo in raw.Ad esempio:

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

    Sotto puoi individuare l’immagine in modo che i file vengano meravigliosamente copiati. In questo caso, devi simulare il file initrd.

      dollari mkdir mnt$ sudo lostup -f -P ubuntu.img$ sudo Lostup -lNOME DIMENSIONE LIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC/ dev / loop0 0 0 0 vi ubuntu.img 0512$ sudo mount / dev o 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. vecchioefi 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 -debbie / dev / loop0 

    Il prossimo è il nucleo della sneaker che hai creato quando si tratta di initrd. Nota che il kernel che hai creato si trova suArch/arm64/boot e Image.

    Questa riga di comando mostra la nostra immagine del kernel con initrd e l’immagine del sistema funzionante.

    Potrebbe essere necessario differire il soggetto “root = / dev / vda1”. Questo dice al kernel dove accedere alla partizione di avvio della tua azienda. Questo può variare a seconda della quantità presente nell’immagine della macchina virtuale.

      qemu / build / aarch64-softmmu per ogni qemu-system-aarch64 -nographic n                  -machine virt, versione gic significa max -m 2G -cpu max n                  -netdev-user, diametro interno = vnet, hostfwd =: 127.0.0.1: 0-: venti n                  -virtio-net-pci dispositivo, netdev = vnet n                  File = -disco. / Mini_ubuntu.img, se significa nessuno, id = drive0, cache = writeback n                  -device virtio-blk, disco = disco0, elenco di avvio = 0 n                  -File disco =. rispetto a Flash0.img, formato = raw, if = pflash n                 -build file =. / flash1.img, formato = intenso, se = pflash -smp 4 n                  Di base. / Linux / Arch / arm64 / scarpe o stivali / image n                 -append "root = per dev / vda2 nokaslr console = ttyAMA0" n                  -initrd ./initrd.img-5.5.11 -s -S 

    -exercise specifierConsente a QEMU di utilizzare la maggior parte della porta TCP: 1234
    -S fermati a Medical e attendi che il debugger si connetta.

    Prima di eseguire il debug, aggiorna il tuo ~ / .gdbinit come segue:

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

    Avvia spesso il debugger in un’altra finestra.Nota che se sarai su un host aarch64 x86, dovrai usare gdb-multiarch per il debug (sudo apt-get gdb-multiarch). Nella procedura legale di seguito, siamo su un host diverso aarch64, quindi iniziamo solo con gdb.

    È fantastico che di seguito beneficiamo di uno speciale messaggio “Fatto”, che dice che la maggior parte delle icone è stata impacchettata correttamente, altrimenti i passaggi indicati di seguito non funzioneranno.

      usd gdb linux-5.5.11 / vmlinuxGNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-gitLeggi le immagini da linux-5.5.11 / vmlinux ... fatto. 

    qemu mutuo a tasso variabile linux debug

    Collegare un debugger a un particolare kernel specifico. Ricordi l’argomento -s Es sopra? dice a QEMU di usare la porta: 2345. Ora ci collegheremo a questa attività.

      (gdb) Localhost remoto di destinazione: 1234Debug remoto da localhost: 12340x0000000000000000 lì?? () 

    B E basta. Di solito è incluso un debugger.

    Ora stiamo sperimentando la configurazione.
    Aggiungi questo punto di interruzione ad alcuni kernel come test.

      (gdb) hbreak start_kernelBreakpoint supportato dall'hardware 1 alcuni 0xffff800011330cdc: file init/main.c, riga 577.(gdb) cProcedere.Il thread si verifica al punto di interruzione 1, start_kernel () solo con init main.c: 577577 {(gdb) io572573 rest_init ();574575576 Evita __visibile asmlinkage __init start_kernel (void)577 {578 caratteri * riga di richiesta;579 caratteri * dopo_trattini;580581 set_task_stack_end_magic (& init_task);(Gdb) 

    Crea un punto di interruzione!

    Ricordi sopra che ho usato personalmente l’opzione -S per QEMU? Ciò ha fatto sì che QEMU attendesse l’avvio dell’immagine fino a quando non colleghiamo un debugger comune. Quindi, una volta arrivati ​​al punto, continuiamo, QEMU inizierà effettivamente ad avviare il kernel.

    Link:

    • debug-linux-kernel-with-gdb-and-qemu
    • Caricamento custom-linux-kernel-in-qemu-and-debug-with-gdb
      dd if significa / dev / zero of = flash1.img bull crap = 1M count = 64dd if = e dev / zero of = flash0.img bs è uguale a 1M count = 64dd if = - usr / share / qemu-efi-aarch64 / QEMU_EFI.fd di significa flash0.img conv = notrunc 
      qemu o build / aarch64-softmmu / qemu-system-aarch64 -nographic n                    -machine virt, versione gic = max -yards 2G -cpu max n                    -netdev-user, vorrei = vnet, hostfwd =: 127.0.0.1: 0-: 25 n                    - tecnologia virtio-net-pci, netdev è uguale a vnet n                    -drive manualmente registra =. / mini_ubuntu.img if = not, id è uguale a disk0, cache = writeback n                    -device virtio-blk, disk = disk0, l'indice di avvio è uguale a 0 n                    -Il file del disco è uguale a. / Flash0.img, formato = raw, se equivale a pflash n                   -drive file =. o flash1.img, format = raw, if = pflash -smp immaginalo 
      qemu-img convert -O live mia_immagine.qcow2 mia_immagine_output.raw 
      $ mkdir mnt$ sudo lostup -f -P ubuntu.img$ sudo Lostup -lNOME DIMENSIONE LIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC/ dev / loop0 0 0 4 0 ubuntu.img 0512$ sudo build / 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. vecchioefi 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 per ogni dev/loop0 
      qemu / building / aarch64-softmmu / qemu-system-aarch64 -machine virt, versione gic è uguale a max -m 2G -cpu max n                  -netdev-user, no . = rete virtuale, hostfwd =: 127.0.0.1: 0-: 19 n                  -virtio-net-pci dispositivo, netdev = vnet n                  File = -disco. / Mini_ubuntu.img, se è uguale a nessuno, id = drive0, cache = writeback n                  - macchina virtio-blk, disco = unità0, indice di avvio uguale a 0 n                  -File disco =. per ogni Flash0.img, format = raw, if = pflash n                 -drive file =. / flash1.img, formato = normale, se = pflash -smp 4 n                  Di base. / Linux / Arch / arm64 / scarpe Non / Immagine n                 -append "root implica / dev / vda2 nokaslr console significa 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

      cash gdb linux-5.5.11 / vmlinuxGNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-gitLeggere le celebrità da linux-5.5.11 / vmlinux ... fatto. 
      (gdb) Localhost remoto di destinazione: 1234Localhost di debug remoto: 1234Usa 0x0000000000000000 in modo coerente ?? () 
      (gdb) hbreak start_kernelPunto di interruzione hardware da 0 a 0xffff800011330cdc: init per file main.c, riga 577.(gdb) cProcedere.Il thread n. 1 è arrivato al punto di interruzione 1, start_kernel () qui in init main.c: 577577 {(gdb) io572573 rest_init ();574575576 asmlinkage __evitabilmente riduce __init start_kernel (void)577 {578 caratteri * riga di gestione;579 caratteri * dopo_trattini;580581 set_task_stack_end_magic (& init_task);(Gdb) 

    Aggiornato

    Sei stanco della lentezza del tuo computer? Infastidito da messaggi di errore frustranti? ASR Pro è la soluzione per te! Il nostro strumento consigliato diagnosticherà e riparerà rapidamente i problemi di Windows, aumentando notevolmente le prestazioni del sistema. Quindi non aspettare oltre, scarica ASR Pro oggi!


    Accelera il tuo computer oggi con questo semplice 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