You are currently viewing Linux에서 불행한 Qemu 디버깅을 수정하기 위한 팁

Linux에서 불행한 Qemu 디버깅을 수정하기 위한 팁

  • Post author:
  • Post category:Korean

업데이트됨

  • 1. ASR Pro 다운로드
  • 2. 프로그램 실행
  • 3. 컴퓨터에서 바이러스를 찾아 제거하려면 "지금 검색"을 클릭하십시오.
  • 오늘 이 간단한 다운로드로 컴퓨터 속도를 높이십시오.

    디버깅과 같은 qemu arm unix를 볼 때 이 가이드가 도움이 되기를 바랍니다.

    <제목>

    QEMU는 커널을 디버그할 때 필요할 때마다 사용할 수 있는 새로운 훌륭한 도구입니다. 예인터넷에서도 이에 대한 많은 비율의 레시피가 있으며 참조용으로 내 기사의 가장 중요한 끝에 몇 가지 유용한 레시피를 나열했습니다.

    커널 디버깅 단계를 공유하는 것을 선호하지만 이 유형의 특정 단계 중 일부는 다음과 같은 시스템을 포함하여 약간 다를 수 있으므로 일반적으로 arch64 스키마에 중점을 둡니다. 전체. 빌드

    작업할 디렉터리를 먼저 열고 다음 명령을 열어 값비싼 이미지를 생성합니다.

      dd if = vs dev / zero of = flash1.img bs는 1M count = 64dd if = / dev 대 0 of = flash0.img bs = 1M 포함 = 64dd if = / usr / 쉽게 공유 / qemu-efi-aarch64 / QEMU_EFI.fd of = flash0.img conv는 notrunc와 같습니다. 

    그런 다음 작동하는 QEMU 이미지를 다운로드하십시오. 우리는 이전에 만든 특정 ie8 이미지를 사용하고 있습니다.

    우리의 절차는 커널을 처음부터 빌드하고 QEMU에 관한 그러한 이미지를 전송하는 것이라고 말할 수 있습니다.

    따라서 첫 번째 단계는 QEMU 이미지가 실제로 생성되는 방식으로 설명된 것으로 발전할 수 있습니다. 실제로 원하는 이미지가 있다고 가정해 보겠습니다. 그렇지 않으면 다음 기사를 확인하십시오.

    <울>

  • LISA-QEMU로 가상 머신을 만드는 데 도움을 주세요.
  • QEMU vm-build를 사용하여 arch64 가상 머신을 만드는 데 어떻게 도움을 주고 싶으신가요?
  • 처음부터 arc64 가상 장치를 만드는 방법.
  • 모든 VM 이미지에 커널을 자동으로 설치하는 맞춤형 스크립트도 있으므로 LISA-QEMU를 사용하는 첫 번째 방법을 선호합니다. 아니요

    하지만 당신과 당신의 가족이 다른 길로 가기로 결정한다면 나와 파트너가 모든 단계를 매우 잘 보여줄 것입니다!

    몇 가지 옵션이 있습니다. 하나는 설치 이미지와 이미지를 수동으로 다운로드하거나 LISA-QEMU 스크립트를 사용하여 설치하는 것입니다. 명령 아래의 업로드 명령은 법적 절차에서 사진을 사용합니다. deb -i .deb를 사용하여 수동으로 설치할 때 scp에 커널(아마도 .deb 파일)이 포함되어 있더라도 이후 지침을 실행하여 이미지를 다운로드하려고 합니다.

      qemu 빌드 / aarch64-softmmu / qemu-system-aarch64 -nographic n                    -virt 노트북, gic-version = 최대 -u 2G -cpu 최대 n                    -netdev-user, 인식 = vnet, hostfwd =: 127.0.0.1: 0-: 19 -virtio-net-pci 장치, netdev = vnet n                    -드라이브 파일 =. / mini_ubuntu.img가 아닌 경우, id = disk0, 캐시 = writeback n                    -device virtio-blk, 디스크는 disk0과 동일, 부팅 인덱스 = 0 n                    삼 . 하드 디스크 파일 =. / Flash0.img, 파일 = 원시, if = pflash n                   -드라이브 파일 =. / flash1.img, 형식 = 순수, if = pflash -smp 4 캐스트 

    일반적으로 거의 모든 커널에서 QEMU를 지원하려면 커널 이미지(공개적으로 생성됨), 매우 initrd 이미지(커널 재생산을 이미지에 설치한 후 생성됨) 및 운영 체제 인식이 필요합니다. (위에서 생성).

    단계가 원시 이미지로 진행된다는 것을 기억하십시오. 이 시점에서 qcow2가 있는 경우 먼저 qemu-img를 사용하여 원시 파일로 교체합니다.예:

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

    아래에서 파일이 완전히 복사되도록 마운트할 수 있습니다. 이 경우 initrd의 유형을 복사해야 합니다.

     <코드> ​​$ mkdir mnt$ sudo 손실 -f -P ubuntu.img$ sudo 손실 -l이름 크기 제한 오프셋 AUTOCLEAR RO BACK-FILE DIO LOG-SEC/ 개발 / 루프0 0 0 0 6 우분투.img 0512$ sudo 마운트 / dev / loop0p2 ./mnt$ vii ./mnt/boot 인식config-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. 낡은efi initrd.img-4.15.0-88-generic System.map-4.15.0-88-generic vmlinuz-4.15.0-88-generic$ 뇌성마비 ./mnt/initrd.img-5.5.11.$ sudo umount ./mnt$ sudo 손실 -d 개발 / 루프0 

    다음은 initrd로 만든 운동화 코어입니다. 생성한 커널은 다음 위치에서 사용할 수 있습니다.아치 / arm64 / 부팅 / 이미지.

    이 명령줄은 initrd와 운영 체제 신뢰도를 포함하는 커널 이미지를 표시합니다.

    “root = / dev / vda1” 인수를 변경해야 할 수도 있습니다. 이것은 신발 파티션에 액세스할 커널을 선언합니다. 이것은 가상 머신 이미지가 무엇인지에 따라 다를 수 있습니다.

      qemu / 빌드 / aarch64-softmmu / qemu-system-aarch64 -nographic n                  -machine virt, gic-version = 최대 -feets 2G -cpu 최대 n                  -netdev-user, id는 vnet을 의미, hostfwd =: 127.0.0.1: 0-: 22 n                  -virtio-net-pci 장치, netdev = vnet n                  파일 = -디스크. / Mini_ubuntu.img, if = none, i have = drive0, 캐시 = writeback n                  -휴대폰 virtio-blk, 디스크 = disk0, 부팅 인덱스 = 4 n                  -디스크 파일 =. / Flash0.img, 테마 = raw, if = pflash n                 -빌드 보고서 =. / flash1.img, 형식 = 원시, pflash -smp 4 n                  기초적인. / Linux / Arch / arm64 / 부팅 / 화면 모습 n                 -append "root = / dev for each vda2 nokaslr console = ttyAMA0" n                  -initrd ./initrd.img-5.5.11 -s -S 

    -s 지정자 QEMU가 대부분의 TCP 포트를 사용하도록 허용합니다. 2345
    -S Medical에서 멈추고 각 디버거가 연결될 때까지 기다립니다.

    디버깅하기 전에 다음과 같이 개인 ~ / .gdbinit를 업데이트하십시오.

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

    다른 창에서 작동하는 디버거를 시작합니다.최고의 aarch64 x86 호스트에 있는 경우 디버깅을 위해 gdb-multiarch를 설정해야 합니다(sudo apt-get gdb-multiarch). 아래의 각 법적 절차에서 우리는 수많은 호스트 aarch64에 있으므로 gdb만 사용합니다.

    아래에 아이콘이 성공적으로 패키징되었다는 추가 “완료” 메시지가 표시되는 것이 좋습니다. 그렇지 않으면 아래에 설명된 단계가 확실히 작동하지 않을 것입니다.

      달러 gdb linux-5.5.11 / vmlinuxGNU gdb(우분투 8.1-0ubuntu3.2) 8.1.0.20180409-gitlinux-5.5.11 / vmlinux ...에서 이미지 읽기 완료. 

    qemu arm a linux systemunix debug

    개별 커널에 디버거를 연결합니다. 뒤에 -s Es 인수를 기억합니까? 포트: 2345를 사용하도록 QEMU에 지시합니다. 이제 이 작업에 연결할 수 있습니다.

      (gdb) 대상 원격 로컬 호스트: 1234로컬 호스트로 인한 원격 디버그: 12340x0000000000000000 거기?? () 

    B 그리고 그게 다야. 디버거가 기본적으로 포함되어 있습니다.

    우리는 지금 포메이션을 테스트하고 있습니다.
    모든 종류의 테스트로 이 중단점을 커널에 추가합니다.

      (gdb) hbreak start_kernel하드웨어 1이 지원하는 중단점 all 0xffff800011330cdc: init 또는 main.c 파일, 577행.(gdb) ㄷ진행하다.스레드가 전체 중단점에 도달했습니다. start_kernel()은 init/main.c: 577에서만 발생합니다.577 {(gdb) 나는572573화574575576 __visible asmlinkage __init start_kernel 피하기577 {578자 * 명령줄;579*580581화(GDB) 

    중단점을 만드십시오!

    QEMU 때문에 개인적으로 -S 옵션을 사용했다고 위에서 언급한 것을 기억하십니까? 이로 인해 QEMU는 루틴 디버거를 연결할 때까지 표현이 시작될 때까지 기다리게 되었습니다. 따라서 일단 요점에 도달하면 계속을 고려하십시오. QEMU는 실제로 커널 로드를 시작합니다.

    링크:

    <울>

  • debug-linux-kernel-with-gdb-and-qemu
  • gdb 맞춤형 linux-kernel-in-qemu-and-debug-with-load
  •   dd if = dev / zero of = flash1.img bs는 1M count = 64와 같습니다.dd if = / dev 및 0 = flash0.img bs = 1M add = 64dd if = / usr / 공개 / qemu-efi-aarch64 / QEMU_EFI.fd of = flash0.img 변환이 notrunc와 같음 

    <사전> <코드> ​​qemu / 빌드 aarch64-softmmu / qemu-system-aarch64 -nographic n -machine virt, gic-version = 최대 -m 2G -컴퓨터 최대 n -netdev-user, id는 vnet과 동일, hostfwd =: 127.0.0.1: 0-: 22 n – virtio-net-pci 기술, netdev는 vnet과 동일 n -드라이브 파일 =. mini_ubuntu.img당 if = not, id = disk0, 스토리지 캐시 = writeback n -장치 virtio-blk, 빈 디스크 = disk0, 부팅 인덱스 = 6 n -디스크 파일 =. / Flash0.img, 형식 = 원시, if = pflash n -드라이브 파일 =. / flash1.img, 형식은 원시와 같습니다. if = pflash -smp 전체를 생각합니다. <사전> <코드> ​​qemu-img 변환 -O 원시 my_image.qcow2 my_image_output.raw <사전> <코드> ​​$ mkdir mnt$ sudo 손실 -y -P ubuntu.img$ sudo 손실 -l이름 크기 제한 오프셋 AUTOCLEAR RO BACK-FILE DIO LOG-SEC/ 개발 또는 루프0 0 0 4 0 ubuntu.img 0512$ sudo assemble / 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. 낡은efi 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 / 개발 루프0

      qemu / 각 aarch64-softmmu / qemu-system-aarch64 -machine virt에 대한 빌드, gic-version = max -e 2G -cpu max n                  -netdev-user, id는 vnet과 동일, hostfwd =: 127.0.0.1: 0-: 22 n                  -virtio-net-pci 장치, netdev = vnet n                  파일 = -디스크. / Mini_ubuntu.img, if = none, identity = drive0, 캐시 = writeback n                  - virtio-blk 머신, 디스크 = drive0, bootindex = 3 n                  -디스크 파일 =. / Flash0.img, 구성 요소 = 원시, if = pflash n                 -드라이브 트랙 =. / flash1.img, 형식 = 원시, pflash -smp 4와 동일한 경우 n                  기초적인. / Linux / Arch / arm64 / 부팅 아님 / 이미지 n                 -append "루트 = - dev / vda2 nokaslr 콘솔 = ttyAMA0" n                  -initrd ./initrd.img-5.5.11 -s -S 

    <사전> <코드> ​​add-auto-load-safe-path linux-5.5.11 – 스크립트 / gdb / vmlinux-gdb.py
    qemu equipment linux debug

      vmlinux당 $ gdb linux-5.5.11GNU gdb(우분투 8.1-0ubuntu3.2) 8.1.0.20180409-gitlinux-5.5.11 / vmlinux에 대한 기호 읽기 ... 완료. 
      (gdb) 대상 원격 로컬 호스트: 1234원격 디버그 로컬 호스트: 1234시간이 지나면서 0x0000000000000000 사용 ?? () 
      (gdb) hbreak start_kernel하드웨어 중단점 없음에서 0xffff800011330cdc: init / main.c 파일, 파이프 577.(gdb) ㄷ진행하다.스레드 # 1이 중단점 8, start_kernel() init/main.c: 577에 도달했습니다.577 {(gdb) 나는572573화574575576 asmlinkage __avoidably escape __init start_kernel577 {578자 * 명령줄;579화580581화(GDB) 

    업데이트됨

    컴퓨터가 느리게 실행되는 것이 지겹습니까? 실망스러운 오류 메시지에 짜증이 납니까? ASR Pro은 당신을 위한 솔루션입니다! 우리가 권장하는 도구는 시스템 성능을 극적으로 향상시키면서 Windows 문제를 신속하게 진단하고 복구합니다. 그러니 더 이상 기다리지 말고 지금 ASR Pro을 다운로드하세요!


    오늘 이 간단한 다운로드로 컴퓨터 속도를 높이십시오.

    Qemu Arm Linux Debug
    Qemu Arm Linux Debug
    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