一、CentOS 6的启动流程
https://www.runoob.com/linux/linux-system-boot.html
1、启动的过程 (5个阶段)
- 系统内核的引导
- 运行 父进程init
- 系统的初始化
- 建立终端
- 用户登录系统
1)内核的引导 ——
当计算机打开电源后,首先是BIOS开机自检,按照BIOS中的设置启动装备(通常是硬盘)启动,操作系统接管硬件以后,首先读入/boot 目录下的内核文件
2)运行父进程 init ——
init进程是所有进程的起点,没有这个进程,系统中的任何进程都不会启动,init首先需要读取配置文件 /etc/inittab
3)系统的初始化 ——
初始化即起动操作系统相应的程序,如网络的的配置,系统名称的加载等(加载/etc/init.d下的所有文件)
4)建立终端 ——
所有的系统初始化完成后,加载出一个给用户提供一个登录的窗口
5)用户登录系统 ——
- 登录的方式有 3 种
(1)命令行登录
(2)ssh登录
(3)图形界面登录
CentOS 6启动流程示意图:
二、CentOS 7的启动流程
三、CentOS 6 和CentOS 7的区别
CentOS6 主要是用于 串行 启动,启动速度缓慢,而CentOS 7 是并行启动,启动速度比较快。
1、运行级别
6 (init)和7 级别 | 含义 | 7 systemd | 作用 |
---|---|---|---|
0 | 关机 | runlevel0.target,poweroff.target | 关机 |
1 | 单用户模式 | runlevel1.target,rescue.target | 单用户模式 |
2 | 暂未使用 | runlevel2.target,multi-user.target | |
3 | 字符界面 | runlevel3.target,multi-user.target | 多用户的文本界面 |
4 | 暂未使用 | runlevel4.target,multi-user.target | |
5 | 图形界面 | runlevel5.target,garphical.target | 多用户的图形界面 |
6 | 重启 | runlevel2.target,reboot.target | 重启 |
#临时性的操作
[root@oldboy:~]# runlevel 查看级别
N 3
#N 表示:上一次是什么级别
#3 表示:当前系统运行的级别
[root@oldboy:~]# init 5 切换级别5
[root@oldboy:~]# runlevel
3 5
#永久的操作,在文件中修改后,开机遵从设置的级别
[root@oldboy:~]# /etc/inittab
CentOS 7 中的运行级别
#查看相关文件
[root@oldboy:~]# cat /etc/inittab
#systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#2.查看CentOS 7的当前级别
[root@oldboy:~]# systemctl get-default
multi-user.target 当前级别为字符级别即为3级别
[root@oldboy:~]# ls /usr/lib/systemd/system/runlevel3.target -l
lrwxrwxrwx. 1 root root 17 Jul 25 17:16 /usr/lib/systemd/system/runlevel3.target -> multi-user.target
2、什么是systemd
systemd 即为 systemd daemon 守护进程,systemd的目标是为了启动和管理提供一套完整的解决方案。
3、systemd 的优势
1.最新的系统都采用systemd的管路
2.CentOS 7 支持开机并行启动服务,提高了开机的启动效率。
3.CentOS 7关机只关闭正在运行的服务。
4.CentOS 7服务和启动与停止不在使用脚本进行管理,也就是 /etc/init.d 脚本
5.CentOS 7使用systemd 解决了原有的模式缺陷,比如原有的servicp 不会关闭的子进程。
4、systemd 的相关配置文件
/usr/lib/systemd/system
/etc/systemd/system 开机启动级别时加载对应的相关服务
/etc/systemd/system/multi-usser.target.wants/
5、systemd 管理系统服务的相关命令
- 管理服务的 启动、重启、停止、重载、查看状态等命令
。临时启动服务
命令 | 作用 |
---|---|
systemctl start vsftpd | 启动服务vsftpd |
systemctl stop vsftpd | 关闭服务vsftpd |
systemctl status vsftpd | 查看服务的状态vsftpd |
systemctl restart nginx | 重启服务nginx |
systemctl reload nginx | 平滑重载服务配置nginx |
。加入开机自启相关服务
命令 | 作用 |
---|---|
systemctl enable nginx | 下次开机启动nginx,与当前无关 |
systemctl disable nginx | 下次开机不启动nginx,与当前无关 |
。管理服务关机和重启的命令
[root@oldboy ~]# systemdctl poweroff 立即关机命令
[root@oldboy ~]# systemdctl reboot 立即重启命令
#关机
[root@oldboy ~]#
shutdown -h now
poweroff
halt
init 0
systemctl poweroff
#重启
[root@oldboy ~]#
reboot
shutdown -r now
init 6 s
ystemctl reboot
。通过systemd status 查看守护的进程状态
状态 | 描述 |
---|---|
loaded | 服务单元的配置文件已经被处理 |
active(running) | 服务持续运行 |
active(exited) | 服务成功完成一次的配置 |
active(waiting) | 服务已经运行但在等待某个事件 |
inactive | 服务没有在运行 |
enabled | 服务设定为开机运行 |
disabled | 服务设定为开机不运行 |
static | 服务开机不启动,但可以被其他服务调用启动 |
systemdctl的 journalctl 日志管理
journalctl -n 20 查看日志的最后20行
journalctl -f 动态的查看日志
journalctl -p err 查看日志的级别
journalctl -u crond 查看某个服务器的单元日志
四、单用户模式和救援模式
1、单用户模式 超级权限 必须面对实体硬件
1、使用前提:
系统必须是能正常引进入系统
2、使用场合:
(1)配置文件错误信息导致无法启动
(2).忘记root密码,修改root密码
1)、重新启动或开启CentOS7.6系统,在选择进入系统的Grub菜单界面如下图1-1,根据提示按“ e ”小写字母进入编辑界面,如下图1-2所示:
2)、然后,要按方向键向下键(否则可能看不到想要找的行),找到以字符串“Linux16”开头的行,将光标移动到该行的结尾,然后输入“enforcing=0 init=/bin/bash”,如下图1-2所示:
3)、配置完成后,根据界面下面的英文提示按“Ctrl-x”组合键以单用户模式启动Linux如下图1-4所示:
特别说明
(1)上图中的“mount-o rw,remount/”命令是重新挂载根目录为可写状态(rw表示可写,remount是重新挂载),在单用户模式下默认根文件系统是处于只读状态。
(2)也可以在增加内核参数时,把以字符串“Linux16”开头的行中间部分的ro参数改为rw,则可以替代繁琐的“mount-o rw,remount /”命令,修改方法如下图1-5所示:
(3)、配置完成后,根据界面下面的英文提示按“Ctrl-x”组合键以单用户模式启动,修改密码有种方式,交互式和非交互式,如下图
4)、配置完后,执行exec /sbin/init命令重启系统,注意,此时,无法使用其它重启命令。如下图1-6
5)、重启系统后验证修改后的密码是否能登录,出现如下图1-5 所示,表示密码修改并登录成功。
2、救援模式
1、使用前提
系统无法正常进入
2、使用场合
(1).没有内核文件
(2).grub被修改(引导开机的系统文件)
(3).系统奔溃
1)当系统坏了,无法登陆系统,但需要把里面的数据复制出来
步骤一、先挂载光盘,然后选择光盘引导为第一位
步骤二、进入故障排除模式-->然后选择救援模式
步骤三、挂载真实系统后,发现数据都还存在
2)修复MBR,主要出现在安装双系统时,后安装的系统把原来系统的MBR删除了,需要修复。
步骤一、破坏硬盘的前446字节,模拟MBR引号损坏,会发现重启无法启动系统
[root@oldboy ~]# dd if=/dev/zero of=/dev/sda bs=1 count=446
步骤二、重启系统,然后按照之前的操作进入救援模式,然后分配一个shell终端,挂载真实的操作系统进行修复
步骤三、修复MBR引导,然后重启连接服务器
#1.使用grub修复
# grub2-install /dev/sda
#2.然后退出
# exit
#3.最后重启进入系统
# reboot
3)、Centos7误删除grub文件如何进行修复
步骤一、模拟误删故障
#1.删除grub2
[root@oldboy ~]# rm -rf /boot/grub2
#2.重启计算机
[root@m01 ~]# reboot
步骤二、重启系统,然后按照之前的操作进入救援模式,然后分配一个shell终端,挂载真实的操作系统进行修复
步骤三、使用grub2-install /dev/sda、grub2-mkconfig恢复配置文件
: 最后别忘记修改 BIOS 引导,让硬盘回归到第一引导
总结
通过学习,了解了Linux的启动流程,CentOS6和CentOS7的启动流程的加载还是有一定的区别,主要学习CentOS 7的启动流程的相关的配置文件,最后学习了单用户模式和救援模式的应用。