linux内核启动过程
2011-10-03 14:29
197 查看
执行体系结构相关的设置代码:
如果需要,解压缩并移动内核代码本身
初始化硬件
这可能包括底层内存管理的设置
将控制权转交给函数
打印内核版本和命令行
启动控制台输出
启用中断
校准延迟循环
调用
启动一个内核线程来运行
进入空闲循环
启动其他处理器(在 SMP 机器上)
启动设备子系统
挂载 root 文件系统
释放不使用的内核内存
运行
此时,用户级
加入自己的
如果需要,解压缩并移动内核代码本身
初始化硬件
这可能包括底层内存管理的设置
将控制权转交给函数
start_kernel()
start_kernel()去执行以下事情(以及其他事情):
打印内核版本和命令行
启动控制台输出
启用中断
校准延迟循环
调用
rest_init(),这个函数会:
启动一个内核线程来运行
init()函数
进入空闲循环
init():
启动其他处理器(在 SMP 机器上)
启动设备子系统
挂载 root 文件系统
释放不使用的内核内存
运行
/sbin/init(或者
/etc/init,或者...)
此时,用户级
init程序正在运行;它将完成启动网络设备并在控制台上运行
getty(登录程序)等任务。
加入自己的
printk,并观察那个子系统的
printk相对于自己的
printk何时出现,就可以指出那个子系统是在
start_kernel()中还是在
init()中初始化的。例如,如果想要知道 ALSA 声音系统何时被初始化,那么将
printk加入到
start_kernel()和
init()的起始处,然后找到“Advanced Linux Sound Architecture [...]” 相对于您的
printk在何处打印出来。
相关文章推荐
- ?【内核修炼】Linux启动过程流程简析
- 分析Linux内核的启动过程
- Linux 2.6内核启动传递命令行的过程分析
- Linux课程3:分析Linux内核的启动过程
- 操作系统基础:Linux内核启动过程
- 跟踪分析Linux内核的启动过程
- Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7)
- Linux内核分析实验三----跟踪分析Linux内核的启动过程
- 3.分析Linux内核的启动过程
- Linux内核分析:跟踪分析Linux内核的启动过程
- 跟踪分析Linux内核的启动过程
- linux 之内核启动过程
- linux内核启动内核解压过程分析
- Linux0.11内核--启动引导过程
- Linux内核源码分析--内核启动命令行的传递过程(Linux-3.0 ARMv7)
- Linux内核分析第三周学习博客——跟踪分析Linux内核的启动过程
- linux内核启动过程——zImage自解压
- Linux内核分析(三)内核启动过程分析——构造一个简单的Linux系统
- Linux内核启动分析过程-《Linux内核分析》week3作业
- Linux内核启动过程分析 ___x86