标签:
构造一个简单的linux系统menuOS.
一、简介
1.两把宝剑:中断-上下文的切换(保存现场和恢复现场) 进程-上下文的切换
2.linux-3.18.6
arch/x86目录下的代码是我们重点关注的;
内核启动相关代码基本在init目录下;(start_kernel函数相当于普通C程序的main函数)
linux内核的核心代码在kernel目录下
二、构造一个简单的linux系统
1.wget xxxxxxx 下载源代码
xd -d
tar -xvf 解压
make i386_defconfig
编译内核
2.cd ~~~~
........
........
cd menu
gcc -o init(1号用户态进程)
制作根文件系统
3............
find
..........(打包)
启动menuOS系统
三、跟踪调试linux内核的启动过程
1.使用gdb跟踪调试linux内核的方法
启动Menu程序
输入(gdb)file linux-3.18.6/vmlinux
在targe remote之前加载符号表
再输入(gdb)targetn remote:1234
再输入(gdb)break_startkernel
(设置断点)
简单分析start_kernel
init——task,手工创建的PCB,0号进程即最终 idle进程
trap_int,涉及到一些中断
rest_init
当系统没有进程时候,需要执行就调度到idle进程。
标签:
原文地址:http://www.cnblogs.com/java44/p/5257602.html