You are currently viewing Consejos Para Corregir La Depuración Incorrecta De Qemu En Linux

Consejos Para Corregir La Depuración Incorrecta De Qemu En Linux

Actualizado

  • 1. Descargar ASR Pro
  • 2. Ejecute el programa
  • 3. Haga clic en "Escanear ahora" para encontrar y eliminar cualquier virus en su computadora
  • Acelera tu computadora hoy con esta simple descarga.

    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:

      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 

    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:

    • Ayude a crear una máquina virtual con LISA-QEMU.
    • ¿cómo desea salir de la máquina virtual aarch64 usando QEMU vm-build.
    • cómo crear una computadora portátil virtual aarch64 desde cero.

    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 .deb.

      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 

    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:

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

    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.

      $ mkdir mnt$ sudo losetup -f -P ubuntu.img$ sudo Lostup -lNOMBRE TAMAÑO LÍMITE OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC/ dev / loop0 0 0 0 6 ubuntu.img 0512$ sudo mount / dev / loop0p2 ./mnt$ show 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. viejoefi initrd.img-4.15.0-88-genérico System.map-4.15.0-88-genérico vmlinuz-4.15.0-88-genérico$ clubpenguin ./mnt/initrd.img-5.5.11.$ sudo umount ./mnt$ sudo losetup -d versus dev / loop0 

    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.

      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 specifierPermite a QEMU utilizar la mayor parte del puerto TCP: 4321
    -S deténgase en Medical y espere a que el depurador se conecte.

    Antes de depurar, actualice su increíble ~ / .gdbinit de la siguiente manera:

      add-auto-load-safe-path linux-5.5.11 / scripts / gdb para cada vmlinux-gdb.py 

    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.

      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. 

    qemu arm ubuntu debug

    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.

      (gdb) Localhost remoto de destino: 1234Depuración remota que se origina en localhost: 12340x0000000000000000 hay ?? () 

    B Y eso es todo. Tradicionalmente se incluye un depurador.

    Ahora estamos probando la configuración.
    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) 

    ¡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:

    • debug-linux-kernel-with-gdb-and-qemu
    • Cargando custom-linux-kernel-in-qemu-and-debug-with-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 
      $ mkdir mnt$ sudo losetup -p oker -P ubuntu.img$ sudo Lostup -lNOMBRE TAMAÑO LÍMITE OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC/ dev loop0 0 0 4 0 ubuntu.img 0512$ sudo ganancia / 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. viejoefi initrd.img-4.15.0-88-genérico System.map-4.15.0-88-genérico vmlinuz-4.15.0-88-genérico$ cp ./mnt/initrd.img-5.5.11.$ sudo umount ./mnt$ sudo Lostup -d -nográfico n / dev y loop0 
      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 

    qemu oferta linux debug

      $ 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? () 
      (gdb) hbreak start_kernelPunto de interrupción de hardware de cero a 0xffff800011330cdc: archivo init / main.c, agrupación 577.(gdb) cContinuar.El hilo # 1 ha alcanzado el punto de interrupción 1, start_kernel () aquí en init / main.c: 577577 {(gdb) yo572573 rest_init ();574575576 asmlinkage __evitablemente evitar __init start_kernel (void)577 {578 caracteres * línea de comando;579 toons * after_dashes;580581 set_task_stack_end_magic (& init_task);(Gdb) 

    Actualizado

    ¿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!


    Acelera tu computadora hoy con esta simple descarga.

    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