Linux 系统启动过程
- 过程可以分为5个阶段
- 内核的引导
- 运行init
- 系统初始化
- 建立终端
- 用户登录系统
- 内核引导
- 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。
- 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。
graph LR
操作系统-->/boot
- 运行init
- init 进程是系统所有进程的起点,没有这个进程,系统中任何进程都不会启动。
- init 程序首先是需要读取配置文件 /etc/inittab。
graph LR
操作系统-->/boot
/boot-->init进程
- 运行级别
- 许多程序需要开机启动。它们在Windows叫做”服务”(service),在Linux就叫做”守护进程”(daemon)。
- init进程的一大任务,就是去运行这些开机启动的程序。
- Linux允许为不同的场合,分配不同的开机启动程序,这就叫做”运行级别”(runlevel)。启动时根据“运行级别”,确定要运行哪些程序。不是程序的优先级而是是否运行。
- Linux 系统有7个运行级别 0~7
graph LR
操作系统-->/boot
/boot-->init进程
init进程-->运行级别
- 系统初始化
- /etc/rc.d/rc.sysinit 完成系统初始化的工作,是每一个运行级别都要首先运行的重要脚本。
- 真正的rc启动脚本在 /etc/rc.d/init.d/ 目录下。
- rc启动脚本一般能接受start、stop、restart、status等参数
- /etc/rc.d/rc5.d/中的rc启动脚本通常是K或S开头的连接文件,对于以S开头的启动脚本,将以start参数来运行。
- 而如果发现存在相应的脚本也存在K打头的连接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行,这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。
graph LR
操作系统-->/boot
/boot-->init进程
init进程-->运行级别
运行级别-->/etc/init.d
- 建立终端
- rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。
- init接下来会打开6个终端,以便用户登录系统。
- 显示登陆界面。
- 用户登录系统
- 一般来说,用户登录方式有三种:
- (1)命令行登录
- (2)ssh登录
- (3)图形界面登录
- 一般来说,用户登录方式有三种:
graph LR
操作系统-->/boot
/boot-->init进程
init进程-->运行级别
运行级别-->/etc/init.d
/etc/init.d-->用户登录
- Linux 关机
- 关机指令
- shutdown –h now
- 或者 halt、poweroff、init 0
- 重启系统
- shutdown -r now
- 或者 reboot、init6
- 关机指令