博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux kernel启动流程
阅读量:6079 次
发布时间:2019-06-20

本文共 1053 字,大约阅读时间需要 3 分钟。

linux kernel启动是从./init/main.c中开始的,其大概流程是:

1. 调用start_kernel()函数;
2. start_kernel()调用rest_init()函数;
3. rest_init()调用kernel_init()函数;
4. kernel_init()调用init_post()函数;
5. init_post()调用run_init_process()函数去创建init进程,
这个函数中的代码如下:
run_init_process("/init");
run_init_process("/sbin/init");
run_init_process("/etc/init");
run_init_process("/bin/init");
run_init_process("/bin/sh");
这时因为run_init_process()函数创建init进程成功后就不会返回了。

init程序会做哪些事呢?

1. 读/etc/inittab,从中读取当前系统预设的run level,
sh-# cat /etc/inittab
# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# The default runlevel.

id:4:initdefault:
....
sh-# exit
exit
INIT: Entering runlevel: 4

2. 根据读出的run level的值,选择执行不同的服务,比如:

如果系统预设的run level值为4,那么执行配置在/etc/rc4.d/下的服务;
如果系统预设的run level值为5,那么执行配置在/etc/rc5.d/下的服务。
用户自己的程序都是根据需要,进行相应的配置。

以上,linux kernel就启动起来了。

在shell下验证查看,init进程所执行的程序就是预设的/sbin/init程序。

sh-# ls -l /sbin/init
-rwxr-xr-x 1 root root 28323 Oct 10 03:00 /sbin/init
sh-# ls -l /proc/1/exe
lrwxrwxrwx 1 root root 0 Oct 10 06:19 /proc/1/exe -> /sbin/init
sh-#

 

转载地址:http://cnhgx.baihongyu.com/

你可能感兴趣的文章
筛选并保留最后一次记录(如筛选最后一次缴纳电费的记录 )
查看>>
亚马逊开源 Neo-AI 框架,可优化 AI 模型提升部署速度
查看>>
新网盘时代,私有云斐讯天天链N1开启智能家居新生活!
查看>>
《西游伏妖篇》明星全阵容曝光 相约大年初一
查看>>
有一种手机能让你一见钟情,华为P20 Pro亮黑色图赏
查看>>
京东商城CEO徐雷年会演讲:我们抗住风霜 业务基本面良好
查看>>
德国飞往意大利民航客机机翼撕裂 途中乘客发现裂痕
查看>>
菜鸟保税仓成全球商家进中国首选 秒级通关领先全球
查看>>
退休延迟致新老职员共事 澳大利亚管理者面临挑战
查看>>
适当时公布?新西兰会否重启父母团聚移民引关注
查看>>
春运中的“洋导游”
查看>>
探访高铁“火花侠”驾驶火龙专列 脚下钢花飞溅
查看>>
2019年美联储加息若放缓有何影响?外汇局回应
查看>>
2018年访日外国游客消费创新高 中国大陆居首
查看>>
瓜子二手车保障消费新举措 首家12315维权服务站于呼市成立
查看>>
2019CBA全明星周末举行正赛 南方明星队获胜
查看>>
韩国最大比特币交易所Bithumb被黑客攻击,损失超过350亿韩元
查看>>
如何在 Scala 中利用 ADT 良好地组织业务
查看>>
几种常见的CSS布局
查看>>
Netflix最新视频优化实践:用更少的带宽打造完美画质
查看>>