2023-2024-1 20232806《Linux内核原理与分析》第四周作业

本文详细描述了如何通过实验楼的虚拟机和QEMU加载Linux内核,利用GDB跟踪内核初始化,揭示了Linux启动过程的各个阶段,包括BIOS/UEFI、引导加载、内核启动、用户空间初始化和运行。作者强调了AI辅助学习在理解过程中的作用,加深了对Linux内核关键函数执行的认识。
摘要由CSDN通过智能技术生成

跟踪分析 Linux 内核的启动过程

1.使用实验楼的虚拟机打开 shell

输入以下代码,代码含义:
1)进入目录LinuxKernel。
2)使用QEMU虚拟机软件,在指定的硬件平台上加载Linux内核镜像文件,并在其中运行Linux操作系统。

cd ~/LinuxKernel/
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img

运行结果如下
在这里插入图片描述

2.使用 gdb 跟踪调试内核

输入如下代码

qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S

# 关于-s和-S选项的说明:
# 1. -S
#   -S freeze CPU at startup (use ’c’ to start execution)
# 2. -s
#   -s shorthand for -gdb tcp::1234
# 若不想使用1234端口,则可以使用-gdb tcp:xxxx来取代-s选项

在这里插入图片描述
另开一个 shell 窗口

# 打开 GDB 调试器
$ gdb

# 在 GDB 中输入以下命令:

# 在gdb界面中targe remote之前加载符号表
(gdb)file linux-3.18.6/vmlinux

# 建立gdb和gdbserver之间的连接,按c 让qemu上的Linux继续运行
(gdb)target remote:1234

# 断点的设置可以在target remote之前,也可以在之后
(gdb)break start_kernel

在这里插入图片描述
其中,start_kernel函数负责完成Linux内核的初始化工作,包括硬件初始化、内存管理、子系统和驱动程序的初始化等。一旦start_kernel函数执行完成,系统将进入用户空间,开始运行用户程序。这个过程标志着整个Linux操作系统的启动过程的完成。

3.实验总结

使用AI工具进行辅助学习,增进对于实验原理的理解。
在这里插入图片描述
在这里插入图片描述
由此得知,Linux系统启动过程大致分为BIOS/UEFI阶段、引导加载程序阶段、内核启动阶段、用户空间初始化阶段和用户空间运行阶段。其中,idle进程和1号进程(init进程)是通过内核的初始化过程创建的。总之,通过本次实验,我对于Linux内核有了更进一步的了解,以及重要函数的执行过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

20232806安星宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值