跟踪分析 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

posted @ 2024-10-20 18:47  zzzxp13  阅读(58)  评论(0)    收藏  举报