Day23-Linux-开机启动流程

一、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 6 启动流程

二、CentOS 7的启动流程

CentOS 7

三、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所示:

图1-1CentOS7.6系统Grub菜单界面

2)、然后,要按方向键向下键(否则可能看不到想要找的行),找到以字符串“Linux16”开头的行,将光标移动到该行的结尾,然后输入“enforcing=0 init=/bin/bash”,如下图1-2所示:

图1-2 CentOS7.6系统Grub菜单进入编辑界面配置图

3)、配置完成后,根据界面下面的英文提示按“Ctrl-x”组合键以单用户模式启动Linux如下图1-4所示:

图1-4单用户模式界面重新挂载修改密码图界面

特别说明

(1)上图中的“mount-o rw,remount/”命令是重新挂载根目录为可写状态(rw表示可写,remount是重新挂载),在单用户模式下默认根文件系统是处于只读状态。
(2)也可以在增加内核参数时,把以字符串“Linux16”开头的行中间部分的ro参数改为rw,则可以替代繁琐的“mount-o rw,remount /”命令,修改方法如下图1-5所示:
图1-5修改内核参数ro为rw配置图

(3)、配置完成后,根据界面下面的英文提示按“Ctrl-x”组合键以单用户模式启动,修改密码有种方式,交互式和非交互式,如下图

密码修改的方式

4)、配置完后,执行exec /sbin/init命令重启系统,注意,此时,无法使用其它重启命令。如下图1-6

图1-6处理SELinux以及重启系统界面

5)、重启系统后验证修改后的密码是否能登录,出现如下图1-5 所示,表示密码修改并登录成功。

登录验证

Centos7单用户破解密码更为详细版

2、救援模式

1、使用前提

系统无法正常进入

2、使用场合

(1).没有内核文件
(2).grub被修改(引导开机的系统文件)
(3).系统奔溃

1)当系统坏了,无法登陆系统,但需要把里面的数据复制出来

步骤一、先挂载光盘,然后选择光盘引导为第一位
图片.png
步骤二、进入故障排除模式-->然后选择救援模式
图片.png
图片.png
步骤三、挂载真实系统后,发现数据都还存在
图片.png

2)修复MBR,主要出现在安装双系统时,后安装的系统把原来系统的MBR删除了,需要修复。

步骤一、破坏硬盘的前446字节,模拟MBR引号损坏,会发现重启无法启动系统
[root@oldboy ~]# dd if=/dev/zero of=/dev/sda bs=1 count=446
图片.png
步骤二、重启系统,然后按照之前的操作进入救援模式,然后分配一个shell终端,挂载真实的操作系统进行修复
图片.png
步骤三、修复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 

图片.png
步骤二、重启系统,然后按照之前的操作进入救援模式,然后分配一个shell终端,挂载真实的操作系统进行修复
图片.png
步骤三、使用grub2-install /dev/sda、grub2-mkconfig恢复配置文件
图片.png
图片.png
: 最后别忘记修改 BIOS 引导,让硬盘回归到第一引导

总结

通过学习,了解了Linux的启动流程,CentOS6和CentOS7的启动流程的加载还是有一定的区别,主要学习CentOS 7的启动流程的相关的配置文件,最后学习了单用户模式和救援模式的应用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容