构造一个简单的Linux系统MenuOS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造一个简单的Linux系统MenuOS相关的知识,希望对你有一定的参考价值。

陈智威20135125

原创作品转载请注明出处 

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

 

实验指导

 

 

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

 

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

技术分享

 

使用gdb跟踪调试内核

 

  1. qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S # 关于-s和-S选项的说明:
  2. # -S freeze CPU at startup (use ’c’ to start execution)
  3. # -s shorthand for -gdb tcp::1234 若不想使用1234端口,则可以使用-gdb tcp:xxxx来取代-s选项技术分享

 另开一个shell窗口

  1. gdb
  2. (gdb)file linux-3.18.6/vmlinux # 在gdb界面中targe remote之前加载符号表
  3. (gdb)target remote:1234 # 建立gdb和gdbserver之间的连接,按c 让qemu上的Linux继续运行
  4. (gdb)break start_kernel # 断点的设置可以在target remote之前,也可以在之后

技术分享

技术分享技术分享技术分享

 

 实验结果理解与体会:

        经过对start_kernel()函数的分析,我发现start_kernel() 中调用了一系列初始化函数,以完成kernel本身的设置。这些动作有的是公共的,有的则是需要配置的才会执行的。

        和孟宁老师说的一样,start_kernel()函数相当于C语言函数中的main.c函数,start_kernel()在启动后会一直存在,并且其中的rest_init中的kernel_init 并且会创建1号进程,即init process(一号进程,第一个用户态进程)。

 

以上是关于构造一个简单的Linux系统MenuOS的主要内容,如果未能解决你的问题,请参考以下文章

作业3:构造一个简单的Linux系统MenuOS 20135115臧文君

《Linux内核分析》第三周笔记 构造一个简单的Linux系统MenuOS

3构造一个简单的linux系统MenuOS

20135327郭皓--Linux内核分析第三周 构造一个简单的Linux系统MenuOS

第三周 构造一个简单的Linux系统MenuOS

Linux内核分析——构造一个简单的Linux系统MenuOS