目录
五阶段
- 内核的引导
- 运行init
- 系统初始化
- 建立终端
- 用户登录系统
内核引导
在计算机电源打开后,首先是BIOS(基本输入输出系统)开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件后,首先读入/boot目录(存放用于系统引导时使用的各种文件)下的内核文件。
注释:BIOS对硬件进行检测,CPU从起始地址为0xFFF0处开始执行程序,其自检内容主要包括CPU、内存、硬盘等设备和即用设备
运行init
init进程是系统所有进程的起点,没有这个进程,系统中任何进程都不会启动。init程序首先需要读取配置文件/etc/inittab(etc存放系统的配置文件)。
运行级别runlevel
Linux为允许不同的场合,分配不同的开机启动程序就叫做运行级别。启动时会根据运行级别,确定运行哪些程序
很多程序需要开机启动,他们在windows叫做service(服务),在Linux叫做daemon(守护进程)
运行级别0 | 系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 |
---|---|
运行级别1 | 单用户工作状态,root权限,用于系统维护,禁止远程登录 |
运行级别2 | 多用户状态(没有NFS网络文件系统) |
运行级别3 | 完全的多用户状态(有NFS),登录后进入控制台命令行模式 |
运行级别4 | 系统未使用,保留 |
运行级别5 | X11控制台,登录后进入图形GUI模式 |
运行级别6 | 系统正常关闭并启动,默认运行级别不能设为6,否则不能正常启动 |
target文件保存在:/lib/systemd/system 目录中
运行级别设置由 /etc/systemd/system/default.target 文件来控制
运行级别服务程序存放位置: /etc/rc.d/
服务进程存放在运行级别对应目录中:Snnxxxx或Knnxxxx服务程序的脚本存放位置:/etc/rc.d/init.d/
运行级别切换
- runlevel --当前运行级别
- ll /etc/systemd/system/default.target --启动时的运行级别
- init 3/5/6 --命令级别切换:字符模式/图形模式/重启
修改系统启动运行级别
举个栗子
- 法一:重新设置链接文件
#rm -rf /etc/systemd/system/default.target
#ln -s /lib/systemd/system/runlevel3.target /etc/systemd/default.target
- 法二:使用systemctl命令
#systemctl set-default runlevel3.target
系统初始化
在init的配置文件中有一行:si::sysinit:/etc/rc.d/rc.sysinit(它是调用执行/etc/rc.d/rc.sysinit,其中rc.sysinit是一个bash shell的脚本,是每一个运行级别都要首先运行的重要脚本,其主要是用于完成一些系统初始化的工作。)
主要完成的工作有:
- 激活交换分区
- 检查磁盘
- 加载硬件模块
- 以及其它一些需要优先执行的任务
举个栗子
15:5:wait:/etc/rc.d/rc 5 //这一行表示以5为参数去运行/etc/rc.d/rc,/etc/rc.d/rc是一个Shell脚本,它接受的参数是5,去执行/etc/rc.d/rc5.d/目录下的所有rc启动脚本,注意/etc/rc.d/rc5.d/目录下的这些启动脚本实际上都是一些连接文件,而不是真正的rc启动脚本,真正rc启动脚本都放在/etc/rc.d/init.d/目录下。
rc启动脚本他们一般接受start、stop、restart、status等参数。在/etc/rc.d/rc5.d/中的rc启动脚本通常是K或S(以Start参数运行)开头的连接文件,倘若发现存在相应的脚本也存在K开头的连接,而且已经处于运行态(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已启动的守护进程,然后重新运行。(这样是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。每个运行级别中将运行哪些守护进程,用户可以通过chkconfig或setup中的“System Services”来自行设定。)
建立终端
rc执行完毕后,返回init。(基本系统环境已经设置好,各种守护进程也启动好)init这是会打开6个终端,以便用户登录系统。在inittab中的定义的6个终端
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
// /sbin类似/bin目录,也存放二进制可执行文件,只能root权限才能访问,mingetty程序能打开终端、设置模式。
而后它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。
用户登录系统
三种登录方式:
- 命令行登录
- ssh登录
- 图形界面登录
Linux关机
关机流程:sync (必须先运行sync命令)> shutdown > reboot > halt
关机指令:shutdown
sync //将数据由内存同步到硬盘中
shutdown //关机指令,可以使用 man shutdown 来看一下帮助文档
//关机命令
shutdown -h 10 'This server will shutdown after 10 mins' //表示计算机将在10分钟后关机,并且会显示在登录用户的当前屏幕中
shutdown -h/-r now //立马关机/重启
shutdown -h 20:45 //系统将在20:45关机
shutdown -h/-r +10 //十分钟后关机/重启
reboot //重启,==》shutdown -r now ==》shutdown -r now reboot init 6
halt //关闭系统,==》shutdown -h now ==》poweroff ==》 shutdown -h now halt poweroff 和 init 0