您的位置:首页 > 运维架构 > Linux

linux内核启动过程

2011-10-03 14:29 197 查看
执行体系结构相关的设置代码:
如果需要,解压缩并移动内核代码本身
初始化硬件
这可能包括底层内存管理的设置

将控制权转交给函数
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
在何处打印出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息