LINUX开机启动流程解析

1: 系统加电后,主机第一步先做的就是查询BIOS(全称:basic input/output system 基本输入输出系统)信息。了解整个系统的硬件状态,如CPU,内存,显卡,网卡等。

2: 接下来,就是主机读取MBR(硬盘的第一个扇区)里的boot loader了,现在一般是使用grub。

3: 主机读取boot loader后:
装载stage1
装载stage1.5
装载stage2
读取/boot/grub.conf文件并显示启动菜单
装载所选的kernel和initrd文件到内存中
运行内核启动参数
解压initrd文件并挂载initd文件系统,装载必须的驱动
挂载根文件系统
4: 第一个运行程序是/sbin/init程序。用top查看,PID为1的就是了。

5:运行/etc/rc.d/rc.sysinit脚本,设置系统环境,启动swap分区,检查和挂载文件系统,要设置的环境如下:
设置网络环境/etc/sysconfig/network,如主机名,网关,IP,DNS等;
挂载/proc,此文件是个特殊文件,大小为0,因为它是在内存当中。里面东东最好别删;
根据内核在开机时的结果/proc/sys/kernel/modprobe,开始进行周边设备的侦测;
载入用户自定义的模块/etc/sysconfig/modules/*.modules;
读取/etc/sysctl.conf文件对内核进行设定;
设定时间,终端字体,硬盘LVM或RAID功能,以fsck进行磁盘检测;
将开机状况记录到/var/log/dmesg中,可以用命令dmesg查看结果。

6:读取/etc/inittab文件,运行在/et/rc.d/rc<#>.d中定义的不同运行级别的服务初始化脚本,默认的等级有以下几项:
0 – halt (系统直接关机)
1 – single user mode (单人模式,用于系统维护时使用)
2 – Multi-user, without NFS (类似3模式,不过少了NFS服务)
3 – Full multi-user mode (完整模式,不过,是文本模式)
4 – unused (系统保留功能)
5 – X11 (与3模式类似,不过,是X终端显示)
6 – reboot (重新开机)
(PS:不能选择0或4,6 否则,进不了系统的)

7: 接下来,就是启动系统服务了,不同的run-level会有不同的服务启动。到/etc/rc.d目录中,不同的level会有不同的目录。如启动3模式,会有个rc3.d目录,里面就保存着服务.其中,S(start)开头的表明开机启动,K(kill)开头的表明开机不启动。数字表示启动顺序,数字越小,启动越早。他们都是连接到etc/rc.d/init.d/目录中的相关文件。想手工启动某一服务,可以用”/etc /rc.d/init.d/某个服务 start”启动。可以把某个服务ln(链接命令)到不同run-level的目录中,需要打上S或者K+数字。

8: 读取服务后,主机会读取/etc/rc.d/rc.local文件。

至此,LINUX启动完成。

You May Also Like

About the Author: 曾迅

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据