linux启动时的细节
本文章是为了在linux系统启动过程中(从打开到登陆输入密码)的诸多细节做一个总结。
第一步 grub 图形引导
选择要启动的内核
第二步 启动kernel内核文件
位置是:/boot/vmlinuz._* 系列文件
第三步 启动init程序
首先 读取init镜像文件(/boot/initrd_*.img);
然后 读取配置文件 (/boot/inittab._*.d),配置文件中记录了后续启动过程的顺序和需要运行的脚本;
到此为止都是在准备内存空间为下面要运行的进程做准备,换句话说从下一步开始就有进程启动去运行脚本。
——notice
第四步 运行脚本
首先 运行/etc/rc.d/sysinit.d 脚本
设置时钟、分区、主机名、键盘等,分区表的挂载/etc/fstab
(完成硬件和目录文件之间的映射)
然后运行/etc/rc.d/rc脚本
这里根据启动级别去选择要启动的rc脚本。比如3级别(常见的),就启动rc3.d。在这个目录(/etc/rc.d/)下 有rc0.d 、 rc1.d、rc2.d、rc3.d、rc4.d、rc5.d、rc6.d分别对应0~6个启动级别。
0代表关机,1代表单用户模式,3代表字符系统,5代表图形系统
在这些rc0~6文件中保存着S或者K开头的标记文件。S开头的标记文件表示运行这个rc脚本会运行这个程序(脚本),而K开头的标记文件则表示运行这个rc脚本时要关闭这个程序(脚本)。但是比如开机时刚启动由于没有程序(脚本)运行,所以不会关闭K开头的程序。——notice
也就是说此时运行rc3.d脚本,并且还会运行脚本中S标记的程序(脚本),而不会管K标记的程序(脚本)。
这些被标记的程序的源文件在init.d中。 ——notice
可以使用以下命令切换运行级别试一试,注意查看启动过程中启动的文件和流程。
// 将运行级别变为6,一般6模式中很多脚本都被3模式关闭,而3模式中的
//很多脚本都被6关闭了
//rc6.d中最后2条:
//S00KILLALL 程序关闭所有程序
//S01reboot 重启
# init 6
// 在重新启动过程中会有一条运行记录: runlevel 6
第五步 运行开机启动的程序
运行脚本/etc/rc.d/rc.local
这一步类似windows中的开启启动项。将那些需要开机就启动的程序启动起來。
// 如果需要添加一个开机启动程序,可以在rc.local中添加如下命令
service 程序名 start
第六步 运行登陆程序
进入登录界面。