跟踪分析 Linux 内核的启动过程
张晓攀+原创作品转载请注明出处+《Linux内核分析》MOOC课程https://mooc.study.163.com/course/1000029000
1.使用实验楼的虚拟机打开shell并使用命令启动内核进入menu程序
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img
-
qemu:这是 QEMU 模拟器,用来启动虚拟机的命令。 -
-kernel linux-3.18.6/arch/x86/boot/bzImage:指定要使用的 Linux 内核镜像文件bzImage。这个文件是在编译 Linux 内核时生成的,位于内核源码的arch/x86/boot/目录下。bzImage是经过压缩的内核镜像,负责在虚拟机中启动内核。 -
-initrd rootfs.img:指定要使用的初始内存盘rootfs.img。初始内存盘是内核启动时加载到内存中的一个临时文件系统,内核启动后会从这个文件系统中加载初始的用户空间程序(例如init进程)。这个rootfs.img文件通常包含基本的工具和库。
![]()
2.使用 GDB 跟踪调试内核
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S
-
-S:启动时冻结 CPU,等待调试器的连接(使用c命令启动执行)。 -
-s:为-gdb tcp::1234的简写,表示在 TCP 端口 1234 上等待 GDB 连接。
![]()
3、连接 GDB 调试器
(1)打开另一个 shell 窗口,并启动 GDB

(2)加载内核符号表
file linux-3.18.6/vmlinux

(3)建立 GDB 与 QEMU 之间的连接
target remote:1234

(4)设置断点
break start_kernel




浙公网安备 33010602011771号