Table of Contents
Actualizado
Espero que esta guía te mejore cuando veas la depuración de ubuntu del brazo qemu.
QEMU es una gran herramienta para usar siempre que necesite depurar su kernel. síHay un gran puñado de recetas para esto en Internet debido al hecho, y he enumerado algunas de valor incalculable al final más importante de un artículo como referencia. Preferimos compartir los pasos de depuración del kernel, pero parece que nos centramos en los esquemas aarch64 ya que algunos de los pasos para este tipo pueden diferir ligeramente, como el sistema como un todo. Construir Primero el directorio con el que trabajar, luego también fluyen los siguientes comandos para crear imágenes costosas: Luego, descargue la imagen QEMU de trabajo real. Estamos usando el tipo de imagen ie8 que creamos anteriormente. Podríamos decir que nuestro procedimiento es construir un kernel confiable desde cero y transferir dicha imagen a QEMU positivamente. Entonces, el primer paso puede parecer descrito de tal manera que la imagen QEMU se crea realmente. Digamos que indudablemente tienes una imagen que quieres que puedas empezar a usar. De lo contrario, consulte nuestros artículos: Preferimos el primer método usando LISA-QEMU ya que también tenemos un script realineado para instalar automáticamente su kernel en cada una de las imágenes de nuestra VM. No Pero duerma tranquilo, si usted y su familia deciden ayudarlo, vaya por el otro lado, mi pareja y yo les mostraremos todos los pasos como mejores. Tiene varias opciones. Una es ayudarlo a descargar manualmente la imagen y la imagen de instalación, además de usar los scripts LISA-QEMU para instalarla. El comando de recuperación debajo del comando usará el estilo en el proceso legal. Desea comenzar con las instrucciones posteriores para descargar la imagen, sin embargo, scp contiene un kernel (posiblemente un archivo .deb) además de instalarlo manualmente con deb -i Por lo general, para admitir QEMU con cualquier tipo de kernel, necesita una imagen del kernel (creada públicamente), una imagen initrd particular (creada después de instalar la elección del kernel en su imagen) y un sistema operativo impresión (creado arriba). Recuerde que los pasos se embarcan con la imagen en bruto. En este punto, suponga que tiene qcow2, primero use qemu-img para traducirlo a raw.Por ejemplo: A continuación, puede montar las imágenes para que los archivos se copien por completo. En este caso, debe copiar con frecuencia el archivo initrd. El siguiente es el tipo de núcleo de zapatillas que creó con initrd. Tenga en cuenta que el kernel que creó se puede ubicar enArch / arm64 / boot / Image. Esta línea de comando muestra la imagen del kernel además de initrd, así como la marca del sistema operativo. Es posible que deba cambiar lo que ve, el argumento “root = / dev / vda1”. Esto les muestra el kernel donde acceder a la partición de su zapato. Esto puede variar según lo que haya alrededor de la imagen de su máquina virtual. -s specifierPermite a QEMU utilizar la mayor parte del puerto TCP: 4321 Antes de depurar, actualice su increíble ~ / .gdbinit de la siguiente manera: Inicie el depurador haciendo otra ventana.Tenga en cuenta que si está en un potente host aarch64 x86, necesitará consumir gdb-multiarch para la depuración (sudo apt-get gdb-multiarch). En el procedimiento legal a continuación, estamos en un host alternativo aarch64, por lo que solo usamos gdb. Es genial que a continuación recibamos un mensaje exclusivo “Listo”, que dice que los íconos ya se han empaquetado correctamente; de lo contrario, los pasos que se describen a continuación ciertamente no funcionarían. Adjunte un depurador a un kernel personalizado. ¿Recuerdas el argumento -s Es antes mencionado? le dice a QEMU que use el puerto: 2345. Sin duda, ahora nos conectaremos a esta tarea. B Y eso es todo. Tradicionalmente se incluye un depurador. Ahora estamos probando la configuración. ¡Crea un punto de interrupción! ¿Recuerda a lo largo de este artículo que yo personalmente utilicé la opción -S de QEMU? Esto hizo que QEMU esperara a que comenzara la apariencia de la pantalla hasta que adjuntamos un depurador muy común. Entonces, una vez que lleguemos al punto, comenzaremos a continuar, QEMU realmente comenzará a cargar su kernel. Enlaces: ¿Estás cansado de que tu computadora funcione lentamente? ¿Le molestan los frustrantes mensajes de error? ¡ASR Pro es la solución para ti! Nuestra herramienta recomendada diagnosticará y reparará rápidamente los problemas de Windows mientras aumenta drásticamente el rendimiento del sistema. Así que no esperes más, ¡descarga ASR Pro hoy!
dd if = dev / zero of = flash1.img bs es igual a 1M count = 64dd if = / dev por cero de = flash0.img bs = 1M sumar = 64dd if = / usr / post / qemu-efi-aarch64 / QEMU_EFI.fd of = flash0.img conv significa notrunc
qemu y build / aarch64-softmmu / qemu-system-aarch64 -nographic n -Portátil virtual, versión gic = max -n 2G -cpu max n -netdev-user, # = vnet, hostfwd =: 127.0.0.1: 0-: veintidós -virtio-net-pci device, netdev = vnet n -drive archivo =. / mini_ubuntu.img si es igual a no, id = disk0, cache = writeback n -dispositivo virtio-blk, el disco equivale a disk0, índice de arranque = 0 n 1 archivo de disco duro =. / Flash0.img, style = raw, if = pflash n -drive archivo =. / flash1.img, format = fresh, if = pflash -smp 4 Cast
qemu-img make over -O raw my_image.qcow2 my_image_output.raw
qemu / build / aarch64-softmmu / qemu-system-aarch64 -nographic n -machine virt, gic-version = max -h 2G -cpu max n -netdev-user, id equivale a vnet, hostfwd =: 127.0.0.1: 0-: 22 n -dispositivo virtual-net-pci, netdev = vnet n Archivo = -disco. / Mini_ubuntu.img, if = none, identity = drive0, cache = writeback n -technique virtio-blk, disk = disk0, boot index = two n -Archivo de disco =. / Flash0.img, diseño = crudo, if = pflash n -build archive =. / flash1.img, format = raw, si es igual a pflash -smp 4 n Básico. / Linux / Arch / arm64 / boot / piensa en n -append "root = / dev o vda2 nokaslr console = ttyAMA0" n -initrd ./initrd.img-5.5.11 -s -S
-S deténgase en Medical y espere a que el depurador se conecte.
add-auto-load-safe-path linux-5.5.11 / scripts / gdb para cada vmlinux-gdb.py
fondos gdb linux-5.5.11 / vmlinuxGNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-gitLeer fotografías de linux-5.5.11 / vmlinux ... hecho.
(gdb) Localhost remoto de destino: 1234Depuración remota que se origina en localhost: 12340x0000000000000000 hay ?? ()
Agregue este punto de interrupción al kernel como prueba.
(gdb) hbreak start_kernelPunto de interrupción ayudado por hardware 1 todo 0xffff800011330cdc: archivo init o main.c, línea 577.(gdb) cContinuar.El hilo alcanza el punto de interrupción n. ° 1, start_kernel () solo con init / main.c: 577577 {(gdb) yo572573 rest_init ();574575576 Evite __asmlinkage visible __init start_kernel (void)577 {578 caracteres * línea de comando;579 estrellas * after_dashes;580581 set_task_stack_end_magic (& init_task);(Gdb)
dd if = y dev / zero of = flash1.img bs equivale a 1M count = 64dd if = / dev para cada cero de = flash0.img bs = 1M realizar un seguimiento de = 64dd if = / usr / commodity / qemu-efi-aarch64 / QEMU_EFI.fd of = flash0.img conv es igual a notrunc
qemu / build - aarch64-softmmu / qemu-system-aarch64 -nographic n -machine virt, gic-version = max -m 2G -pc max n -netdev-user, id implica vnet, hostfwd =: 127.0.0.1: 0-: 22 n - tecnología virtio-net-pci, netdev es igual a vnet n -drive archivo =. versus mini_ubuntu.img si = no, id = disk0, caché de almacenamiento = reescritura n -dispositivo virtio-blk, cd o dvd = disk0, índice de arranque = 5 n -Archivo de disco =. / Flash0.img, formato = crudo, if = pflash n -drive archivo =. / flash1.img, formato significa sin formato, if = pflash -smp piensa en ello
qemu-img convertir -O raw my_image.qcow2 my_image_output.raw
qemu / build o aarch64-softmmu / qemu-system-aarch64 -machine virt, gic-version = max -mirielle 2G -cpu max n -netdev-user, id es igual a vnet, hostfwd =: 127.0.0.1: 0-: 22 n -dispositivo virtual-net-pci, netdev = vnet n Archivo = -disco. / Mini_ubuntu.img, si = ninguno, no. = unidad0, caché = escritura diferida n - máquina virtio-blk, disk = drive0, bootindex = 9 n -Archivo de disco =. / Flash0.img, formato de archivo = raw, if = pflash n -drive track =. / flash1.img, format = raw, si es igual a pflash -smp 4 n Básico. / Linux / Arch / arm64 / boot Not / Image n -append "root = per 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 y vmlinuxGNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-gitLeyendo símbolos incluyendo linux-5.5.11 / vmlinux ... hecho.
(gdb) Localhost remoto de destino: 1234Localhost de depuración remota: 1234¿Usa 0x0000000000000000 sin vacilar? ()
Actualizado
Qemu Arm Linux Debug
Qemu Arm Linux 디버그
Qemu Arm Linux Debug
Qemu Arm Linux Debug
Qemu Arm Linux Debug
Débogage Linux Qemu Arm
Depuração Do Qemu Arm Linux
Debugowanie Qemu Arm Linux
Qemu Arm Linux-Debugging
Qemu Arm Linux Debug
![Luke Cole](https://geeksofknowhere.com/wp-content/uploads/lukecole.jpg)