2. 环境准备:安装QEMU、安装交叉编译工具链、安装GDB多架构调试器
在进行kgdb远程调试之前,必须搭建一套完整的实验环境。本章将指导你依次安装三个核心组件:QEMU模拟器(提供虚拟硬件平台)、交叉编译工具链(编译目标架构内核与模块)、GDB多架构调试器(发起远程调试会话)。三者缺一不可,构成调试闭环。
环境概览:本课程以 ARM64 (aarch64) 为目标架构,宿主机为 x86_64 Linux。所有工具均通过包管理器或官方源码安装,确保版本兼容。
2.1 安装 QEMU 模拟器
QEMU 提供机器级虚拟化,支持多种目标架构。我们选择 qemu-system-aarch64 来模拟 ARM64 平台,配合 virt 机器类型,该类型对内核调试支持完善。
2.1.1 通过包管理器安装(推荐)
# Ubuntu / Debian
sudo apt update
sudo apt install qemu-system-arm qemu-utils
# Fedora / RHEL
sudo dnf install qemu-system-aarch64 qemu-img
# Arch Linux
sudo pacman -S qemu-system-aarch64 qemu-img
2.1.2 验证安装
# 检查 QEMU 版本
qemu-system-aarch64 --version
# 列出支持的机器类型(确认 virt 存在)
qemu-system-aarch64 -M help | grep virt
版本要求:建议 QEMU ≥ 7.0.0,以支持完整的 GDB stub 功能和 SMP 模拟。低于 6.0 的版本可能在断点处理上存在兼容性问题。
2.2 安装交叉编译工具链
交叉编译工具链用于在 x86_64 宿主机上编译 ARM64 架构的内核和模块。我们使用 GNU GCC 交叉工具链,目标三元组为 aarch64-linux-gnu-。
2.2.1 安装交叉编译器
# Ubuntu / Debian
sudo apt install gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu
# Fedora / RHEL
sudo dnf install gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu
# 验证安装
aarch64-linux-gnu-gcc --version
aarch64-linux-gnu-objdump --version
2.2.2 工具链组件清单
| 组件 | 命令前缀 | 用途 |
|---|---|---|
| C 编译器 | aarch64-linux-gnu-gcc |
编译内核 C 源码 |
| 汇编器 | aarch64-linux-gnu-as |
汇编启动代码 |
| 链接器 | aarch64-linux-gnu-ld |
链接内核映像 |
| 目标文件工具 | aarch64-linux-gnu-objcopy |
转换 ELF 到二进制 Image |
| 反汇编器 | aarch64-linux-gnu-objdump |
调试时查看汇编指令 |
| 符号查看器 | aarch64-linux-gnu-nm |
列出内核符号表 |
注意:不要使用宿主机自带的
gcc 编译 ARM64 内核,否则生成的二进制无法在 QEMU 中运行。必须使用带 aarch64-linux-gnu- 前缀的交叉工具。
2.3 安装 GDB 多架构调试器
GDB 是远程调试的核心。标准发行版自带的 GDB 通常只支持本机架构,我们需要安装支持 多架构 的版本,使其能够解析 ARM64 的 ELF 文件并连接 QEMU 的 GDB stub。
2.3.1 安装 GDB 多架构版本
# Ubuntu / Debian
sudo apt install gdb-multiarch
# Fedora / RHEL(需要启用 EPEL 或使用源码编译)
sudo dnf install gdb-multiarch
# 验证安装
gdb-multiarch --version
# 确认支持 aarch64 架构
gdb-multiarch -batch -ex "set architecture aarch64" -ex "info architecture"
2.3.2 架构支持对比
| GDB 版本 | 支持架构 | 适用场景 |
|---|---|---|
gdb(默认) |
仅宿主机架构(x86_64) | 调试本地程序 |
gdb-multiarch |
ARM64、ARM、RISC-V、MIPS 等 | 跨架构远程调试 |
aarch64-linux-gnu-gdb |
仅 ARM64 | 专用调试(可选) |
推荐选择:本课程统一使用
gdb-multiarch,因为它一次安装即可支持多种目标架构,适合后续扩展调试其他平台。
2.4 环境验证:快速连通测试
安装完成后,执行以下步骤验证三个组件能否协同工作:
- 编译一个最小的 ARM64 测试程序:
aarch64-linux-gnu-gcc -o test-arm64 test.c -static - 用 QEMU 用户态模式运行:
qemu-aarch64 ./test-arm64 - 用 GDB 多架构调试器加载:
gdb-multiarch -q --ex "file test-arm64" --ex "set architecture aarch64" --ex "info target"
如果以上三步均无报错,说明环境准备就绪,可以进入下一章的内核编译与调试配置。
环境清单速查:
- ✅ QEMU 模拟器:
qemu-system-aarch64已安装 - ✅ 交叉编译工具链:
aarch64-linux-gnu-gcc可用 - ✅ GDB 多架构调试器:
gdb-multiarch支持 aarch64