使用Qemu调试内核(host=aarch64)

本文详细介绍了在AArch64架构的主机上如何进行内核调试的过程,包括编译QEMU、下载并编译内核、安装gdb和gcc-c++等步骤,并提供了调试内核的具体命令和注意事项。

在前一篇文章http://blog.youkuaiyun.com/jefbai/article/details/44901447
已经介绍过主机为x86_64的情况下如何进行内核调试,但是如果主机换做AArch64呢??方法类似~

1、编译qemu-system-aarch64

git clone https://github.com/qemu/qemu
./configure && make -j8

随后将该目录添加到PATH变量并source ~/.bashrc

2、 下载并编译内核

git clone https://git.fedorahosted.org/git/kernel-arm64.git
make -j8 Image

3、安装gdb和gcc-c++
4、调试内核(本机,也可以通过网络)
qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine ↪ type=virt -nographic -smp 1 -m 2048 -kernel arch/arm64/boot/ ↪ Image –append “console=ttyAMA0” -s -S
-s表示加入 gdb debug的功能,-S是让kernel停在第一行指令,不要往下跑。(可以写成脚本)
cd kernel-arm64
gdb ./vmlinux
target remote localhost:1234

run first scene
5、此时可以使用gdb进行内核调试了
例如

b start_kernel
c

这里写图片描述

QEMU 是一个通用的开源机器模拟器和虚拟化器,它支持多种架构,包括 ARM64aarch64)。`qemu-system-aarch64` 是 QEMU 中用于模拟 ARM64 架构的虚拟机的命令行工具。通过这个工具,用户可以在非 ARM64 的宿主机上模拟 ARM64 环境,例如在 x86_64 架构的宿主机上运行 ARM64 Linux 内核。 以下是使用 `qemu-system-aarch64` 启动 ARM64 Linux 内核的一些关键步骤和参数: 1. **查看版本号**: ```shell qemu-system-aarch64 --version ``` 这个命令用于查看当前安装的 `qemu-system-aarch64` 版本信息。 2. **启动 ARM64 Linux 内核**: ```shell qemu-system-aarch64 -M virt -cpu cortex-a53 -nographic -kernel linux-6.7/arch/arm64/boot/Image --append "console=ttyAMA0" -initrd ./rootfs.cpio ``` 这个命令启动了一个虚拟机,其中 `-M virt` 指定了使用虚拟的机器类型,`-cpu cortex-a53` 指定了 CPU 类型,`-nographic` 表示不使用图形界面,`-kernel` 指定了内核映像的路径,`--append` 用于添加启动参数,`-initrd` 指定了初始 RAM 磁盘的路径。 3. **退出 QEMU 虚拟机**: 在 QEMU 虚拟机运行时,同时按下 `ctrl + a`,然后松开,再按下 `x`,即可退出虚拟机回到原本的终端窗口。 4. **启动带有 virtio 设备的虚拟机**: ```shell qemu-system-aarch64 -name vm2 -daemonize -enable-kvm -M virt -cpu host -smp 2 -m 4096 -global virtio-blk-device.scsi=off -device virtio-scsi-device,id=scsi -kernel vmlinuz-4.18 --append "console=ttyAMA0 root=UUID=6a09973e-e8fd-4a6d-a8c0-1deb9556f477" -initrd initramfs-4.18 -drive file=vhuser-test1.qcow2 -netdev user,id=unet,hostfwd=tcp:127.0.0.1:1122-:22 -device virtio-net-device,netdev=unet -vnc :10 ``` 这个命令启动了一个带有 virtio 设备的虚拟机,其中 `-enable-kvm` 表示启用 KVM 加速,`-M virt` 指定了使用虚拟的机器类型,`-cpu host` 表示使用宿主机的 CPU 类型,`-smp` 指定了虚拟 CPU 的数量,`-m` 指定了内存大小,`-drive` 指定了磁盘镜像文件,`-netdev` 和 `-device` 用于配置网络设备。 5. **环境信息**: 用户的环境信息包括宿主机硬件平台为 x86_64,宿主机操作系统为 Ubuntu 20.04,QEMU 版本为 qemu-4.2.1,实验内核为 linux-5.19,busybox 版本为 busybox-1.35.0。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值