跟踪调试Linux内核的启动过程

跟踪调试Linux内核的启动过程---使用gdb

符钰婧

原创作品转载请注明出处

《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”

本次的实验是使用gdb跟踪调试内核从start_kernel到init进程启动,并分析启动的过程。

1、首先是在实验楼虚拟机上进行调试跟踪的过程。

(1) 先构造一个简单的Linux系统

(2) 接下来使用gdb跟踪调试内核

启动(窗口被冻结)

另开一个shell窗口(水平分割),然后gdb

先读取符号表,接着连接Linux系统并设断点(start_kernel)

按“c"回车,系统开始启动到start_kernel处:

“list”可看到start_kernel上下的代码

设断点rest_init并运行

“list”可看到rest_init上下的代码(可看出它是在start_kernel函数的尾部被调用)

还可再设断点(如kernel_init),查看运行结果

2、接下来简单分析一下start_kernel(这里只关注较重要的地方)

(1)先打开init目录下的main.c找到start_kernel:

510行处的init_task为全局变量,相当于一个进程的pcb,0号进程为最终的idle进程。

注:不管内核的哪一方面都会涉及到start_kernel。

(2) 搜索trap_init,找到arch/x86下的代码:

其中的一个硬件中断:

这里的SYSCALL_VECTOR是一个系统调用,用指令的方式来触发中断。

(3)之后有很多个初始化,需要注意的还有整个函数的最后一句rest init():

总结:

时间: 2024-12-26 10:04:47

跟踪调试Linux内核的启动过程的相关文章

20135239 益西拉姆 linux内核分析 跟踪分析Linux内核的启动过程

回顾 1.中断上下文的切换——保存现场&恢复现场 本节主要课程内容 Linux内核源代码简介 1.打开内核源代码页面 arch/目录:支持不同CPU的源代码:其中的X86是重点 init/目录:内核启动相关的代码基本都在该目录中(比如main.c等) start_kernel函数就相当于普通C程序的main函数 kernel/目录:Linux内核核心代码在kernel目录中 README 介绍了什么是Linux,Linux能够在哪些硬件上运行,如何安装内核源代码等 构造一个简单的linux系统m

跟踪分析Linux内核的启动过程--实验报告 分析 及知识重点

跟踪分析Linux内核的启动过程 攥写人:杨光  学号:20135233 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ) 知识总结: ****Linux内核中关键目录: arch:不同cpu的支持,我们主要关注的是其中x86文件夹 init:内核启动的相关代码,期中main.c是内核启动的起点,main.c中的start_kernel是内核初始化的起点 ker

实验三:跟踪分析Linux内核的启动过程 ----- 20135108 李泽源

实验要求: 使用gdb跟踪调试内核从start_kernel到init进程启动 详细分析从start_kernel到init进程启动的过程并结合实验截图撰写一篇署名博客,并在博客文章中注明“真实姓名(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”,博客内容的具体要求如下: 题目自拟,内容围绕Linux内核的启动过程,即从start_kernel

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

李亚健    <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验过程: 实验内容为使用gdb跟踪调试内核从start_kernel到init进程启动 1.根据实验指导按照过程,在实验楼环境下打开shell: cd LinuxKernel/ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 输入help指令: 2.使用gdb

Linux内核分析 实验三:跟踪分析Linux内核的启动过程

贺邦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一. 实验过程 1.打开shell,输入启动指令,内核启动完成后进入menu程序,支持三个命令help.version和quit. 2.然后使用gdb跟踪调试内核,输入命令qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S 3.按住

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

一.实验过程 使用实验楼虚拟机打开shell cd LinuxKernel/ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 内核启动进入 menu 程序.下面是用 gbd 来跟踪内核的启动过程: gdb (gdb)file linux-3.18.6/vmlinux # 在gdb界面中targe remote之前加载符号表 (gdb)target remote:1234 # 建立gdb和gdbserver之间的

linux内核分析作业3:跟踪分析Linux内核的启动过程

内核源码目录 1. arch:录下x86重点关注 2. init:目录下main.c中的start_kernel是启动内核的起点 3. ipc:进程间通信的目录 实验 使用实验楼的虚拟机打开shell cd LinuxKernel/ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 使用gdb跟踪调试内核 qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initr

Linux内核设计第三周学习总结 跟踪分析Linux内核的启动过程

陈巧然 原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验步骤 登陆实验楼虚拟机http://www.shiyanlou.com/courses/195 打开shell终端,执行以下命令: cd LinuxKernel/ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage-initrd rootfs.img 执行完毕后会弹出QEMU窗口,输

实验三:跟踪分析Linux内核的启动过程

Ubuntu 16.04下搭建MenuOS的过程: 1.下载内核源代码编译内核 1 # 下载内核源代码编译内核 2 cd ~/LinuxKernel/ 3 wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.6.tar.xz 4 xz -d linux-3.18.6.tar.xz 5 tar -xvf linux-3.18.6.tar 6 cd linux-3.18.6 7 make i386_defconfig 8 make