Linux 系统启动过程shell
Linux系统的启动过程能够分为5个阶段:bash
1. 内核引导服务器
当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(一般是硬盘)来启动。操做系统接管硬件之后,首先读入 /boot 目录下的内核文件。ssh
2. 运行initide
init 进程是系统全部进程的起点,你能够把它比拟成系统全部进程的老祖宗,没有这个进程,系统中任何进程都不会启动。init 程序首先是须要读取配置文件 /etc/inittab。spa
nit程序的类型:操作系统
SysV: init, CentOS 5以前, 配置文件: /etc/inittab。命令行
Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf。orm
Systemd: systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system。blog
许多程序须要开机启动。它们在Windows叫作"服务"(service),在Linux就叫作"守护进程"(daemon)。
init进程的一大任务,就是去运行这些开机启动的程序。
可是,不一样的场合须要启动不一样的程序,好比用做服务器时,须要启动Apache,用做桌面就不须要。
Linux容许为不一样的场合,分配不一样的开机启动程序,这就叫作"运行级别"(runlevel)。也就是说,启动时根据"运行级别",肯定要运行哪些程序。
Linux系统有7个运行级别(runlevel):
运行级别0:系统停机状态,系统默认运行级别不能设为0,不然不能正常启动
运行级别1:单用户工做状态,root权限,用于系统维护,禁止远程登录
运行级别2:多用户状态(没有NFS)
运行级别3:彻底的多用户状态(有NFS),登录后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登录后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,不然不能正常启动
4. 系统初始化
在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工做,rc.sysinit是每个运行级别都要首先运行的重要脚本。
它主要完成的工做有:激活交换分区,检查磁盘,加载硬件模块以及其它一些须要优先执行任务。
/etc/rc.d/rc5.d/中的rc启动脚本一般是K或S开头的链接文件,对于以以S开头的启动脚本,将以start参数来运行。
5. 用户登陆系统
通常来讲,用户的登陆方式有三种:
(1)命令行登陆
(2)ssh登陆
(3)图形界面登陆
文本方式登陆的状况:当咱们看到mingetty的登陆界面时,咱们就能够输入用户名和密码来登陆系统了。
Linux的帐号验证程序是login,login会接收mingetty传来的用户名做为用户名参数。
而后login会对用户名进行分析:若是用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,而后退出。
这一般用来系统维护时防止非root用户登陆。只有/etc/securetty中登记了的终端才容许root用户登陆,若是不存在这个文件,则root能够在任何终端上登陆。
/etc/usertty文件用于对用户做出附加访问限制,若是不存在这个文件,则没有其余限制。