第一个用户进程 --- 根文件系统 sbin/init 进程 及其配置文件 /etc/inittab
sbin/init 是根文件系统提供的用户进程,它是第一个被执行的用户进程。执行过程会读取配置文件 /etc/inittab,运行inittab文件中的各个子进程。
sbin/init 和 /etc/inittab 作为根文件系统的一部分,都是通过 busybox 生成的
inittab配置文件格式
Format for each entry: <id>:<runlevels>:<action>:<process>
id: 表示这个子进程要使用的控制台,如果省略,则使用与init进程一样的控制台
runlevels:可以被忽略
action: 运行时机,指应用程序何时行动,它的参数有(参数必须小写):
- sysinit(用来初始化时启动)
- respawn(每当相应的进程终止运行时,该进程就会重新启动)
- askfirst(每次启动进程之前等待用户按下enter键)
- wait(告诉init必须等到相应的进程执行完成之后才能继续执行)
- once(仅执行相应的进程一次,而且不会等待它执行完成)
- restart(当重新读取分析inittab配置文件时,会执行相应进程)
- ctrlaltdel(当按下Ctrl+Alt+Delete组合键时,会执行相应进程)
- shutdown(该进程用于系统关机时执行)
process:应用程序或者脚本, 就是要启动的进程(如果有“-”字符,说明这个程序被称为”交互的”)。
init 进程的 init_main()流程图如下:
最小的根文件系统至少需要
(1) /dev/console(终端控制台, 提供标准输入、标准输出以及标准错误)
(2) init进程的程序(也就是busybox,因为init程序位于busybox中)
(3) /etc/inittab(用于init进程读取配置, 然后执行inittab里的指定应用程序)
(4) 应用程序(被inittab配置文件调用的应用程序)
(5) C库(被应用程序调用的C库函数,比如:printf,strcmp,fopen等)
标签:
linux 内核
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2021-05-31 scanf --- ("%[^\n]", str)正则用法
2018-05-31 CoAP