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

20232826王朝昆 2023-10-12 22:00:57

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

 

一、ChatGPT提问教材知识点;

    

 

二、实验楼中实验三内容

 

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

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

内核启动完成后进入menu程序,支持三个命令 help、version 和 quit,也可以添加更多的命令。

                    

 

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,使用 gdb 跟踪调试内核从 start_kernel 到 init 进程启动

运行结果如下:

Linux内核启动的过程涉及多个步骤,从`start_kernel`到`init`进程启动可以简要概括如下:

1. 引导加载器:计算机首先由引导加载程序(通常是GRUB或类似的引导加载器)引导。引导加载程序会加载内核映像(通常是`vmlinuz`),并将控制权转交给内核。

2. 启动汇编代码:内核启动时,首先执行一些汇编代码,这些代码主要用于设置一些基本硬件状态,建立中断描述符表和全局描述符表,并将控制权转交给C代码。

3. `start_kernel`函数:这是Linux内核的入口点,它初始化了很多重要的数据结构和系统组件。`start_kernel`函数执行以下任务:
   
   a. 初始化内核的数据结构,如`task`(进程描述符)和`init_task`。
   
   b. 启动内核线程,它是系统的第一个内核线程,通常称为`init`进程线程。
   
   c. 初始化中断系统,包括初始化中断向量表和启动定时器中断。
   
   d. 初始化内存管理,包括页表设置和启用内存保护。

4. `init`进程启动:`init`进程是用户空间中的第一个进程,它负责启动并管理所有其他用户进程。在`start_kernel`函数中,内核创建了`init`进程的初始线程(通常是`/sbin/init`或其他`init`替代品)。`init`进程通常在用户空间中执行,它会进一步启动用户空间的初始化程序,如系统初始化脚本和服务。

总之,从`start_kernel`到`init`进程启动,内核完成了一系列初始化和设置任务,最终创建了用户空间的`init`进程,该进程负责启动并管理用户进程。这个过程是Linux启动的核心部分,后续会在用户空间执行初始化脚本和应用程序以构建完整的操作系统环境。

...全文
18 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
入门学习Linux常用必会60个命令实例详解doc/txt
hda1中的“1”代表hda的第一个硬盘分区 (partition),hda2代表hda的第二主分区,第一个逻辑分区从hda5开始,依此类推。此外,可以直接检查 /var/log/messages文件,在该文件中可以找到计算机开机后系统已辨认出来的...
2023-2024-1 20232818 《Linux内核原理分析》 第二周作业
【代码】2023-2024-1 20232818 《Linux内核原理分析》 第二周作业
2023-2024-1 20232829《Linux内核分析原理》第一周作业
2023-2024-1 20232829《Linux内核分析原理》第一周作业
2023-2024-1 20232828《Linux内核原理分析》第二周作业
​阅读学习教材「庖丁解牛Linux 分析 」第1,2...在本周日晚12:00前发学习博客(标题 学号《Linux内核原理分析》第二周作业),重点是遇到的问题和解决方案。不按时交作业会扣分。 完成蓝墨云班课中的测试。​​​​
2022-2023-1 20222814《Linux内核原理分析》第三周作业
2022-2023-1 20222814《Linux内核原理分析》第三周作业
BESTI.Linux内核原理与分析

39

社区成员

53

社区内容

发帖
与我相关
我的任务
社区描述
北京电子科技学院 《Linux内核原理与分析》课程
linuxarm开发系统安全 高校 北京·丰台区
社区管理员
  • rocflytosky
加入社区
  • 近7日
  • 近30日
  • 至今

加载中

查看更多榜单
社区公告
暂无公告

试试用AI创作助手写篇文章吧

+ 用AI写文章

深圳SEO优化公司长治seo网站优化哪家好苏州营销网站青岛关键词排名包年推广价格诸城网站定制哪家好汕头百度竞价价格通辽关键词按天扣费报价喀什阿里店铺运营哪家好坑梓营销型网站建设哪家好东营至尊标王价格阿坝企业网站改版多少钱延安网站推广工具价格鞍山网站优化按天扣费哪家好渭南网站推广哪家好桐城关键词排名包年推广报价安康营销网站哪家好宝安优化价格安康设计网站多少钱泰安网页设计价格安顺网站改版价格衡水网站优化按天收费哪家好兰州SEO按天计费公司罗湖百度seo报价广州seo排名价格大同建网站价格沙井如何制作网站推荐河源网站优化按天计费报价武汉seo网站优化张北百度标王价格常德企业网站建设哪家好绥化关键词排名包年推广价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化