Table of Contents
Aggiornato
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: 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: 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 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: Sotto puoi individuare l’immagine in modo che i file vengano meravigliosamente copiati. In questo caso, devi simulare il file initrd. 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. -exercise specifierConsente a QEMU di utilizzare la maggior parte della porta TCP: 1234 Prima di eseguire il debug, aggiorna il tuo ~ / .gdbinit come segue: 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. 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à. B E basta. Di solito è incluso un debugger. Ora stiamo sperimentando la configurazione. 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: 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!
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
qemu-img make over -O non salato my_image.qcow2 my_image_output.raw
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
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
-S fermati a Medical e attendi che il debugger si connetta.
add-auto-load-safe-path linux-5.5.11 / script per gdb / vmlinux-gdb.py
(gdb) Localhost remoto di destinazione: 1234Debug remoto da localhost: 12340x0000000000000000 lì?? ()
Aggiungi questo punto di interruzione ad alcuni kernel come test.
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
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.
Aggiornato
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