开机启动流程
CentOS6 启动流程
开机流程分为5个阶段
内核引导
- BIOS自检,检测主板上的硬件设备,根据BIOS设置启动系统
- 读取/boot分区下,所有内核
运行init
inint程序类型:
1.sysv:CentOS5之前使用的pid为1的进程
2.Upstart:CentOS6使用的init进程
3.Systemd:CentOS7
## 加载init,涉及到Linux系统中7个运行级别
0:关机运行级别
1:单用户运行级别
2:多用户运行级别,没有文件系统
3:多用户运行级别,有文件系统(命令行模式)
4:CentOS6和7,系统未使用,保留
5:多用户,图形化运行级别
6:重启运行级别
# 查看Linux系统当前的运行级别
[root@localhost ~]# runlevel
N 3
# N代表在进入这个级别前,上一个级别是什么;3代表当前级别
# 运行init,会读取 /etc/inittab配置文件
# 读取配置文件中的默认运行级别
CentOS6
id:3:initdefault:
CentOS7
multi-user.target
# 启动init进程
系统初始化
## 根据运行级别中设置了开机启动服务来启动对应服务
CentOS6
[root@localhost ~]# chkconfig --list
CentOS7
systemctl list-unit-files
[root@localhost ~]# ll /etc/systemd/system/multi-user.target.wants/
建立终端
rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动。
init接下来会打开6个终端,以便用户登录系统。在inittab中的以下6行就是定义了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
用户登录系统
## 用户登录分为三种
1.命令行登录
2.ssh登录
3.图形化界面登录
CentOS7 开机流程
1.BIOS(开机自检)
- BIOS加电自检,检测主板上的硬件设备,根据BIOS设置启动系统
- 读取/boot分区,所有内核文件
2.MBR(Master Boot Record 主引导记录)
3.GRUB2 Bootloader(引导菜单)
加载grub2菜单,选择要进入的系统
4.Kernel(内核引导)
读取/boot目录下所有内核文件
5.Systemd(不再使用init,改成了systemd)
runlevel0.target -> poweroff.target
runlevel1.target -> rescue.target
runlevel2.target -> multi-user.target
runlevel3.target -> multi-user.target
runlevel4.target -> multi-user.target
runlevel5.target -> graphical.target
runlevel6.target -> reboot.target
6.Runlevel-Target(运行级别)
CentOS7 开机启动流程
CentOS6 开机启动流程
CentOS7进入单用户模式-忘记root密码
1.关机
halt
poweroff
shutdown -h now
init 0
2.开机
3.进入gurb2菜单
CentOS7进入单用户模式-修改默认运行级别
1.关机
2.进入grub2菜单
3.按e编辑grub2菜单的内核参数
救援模式
需要有系统盘,才可以进入救援模式
要进入安装系统的界面,才能进入救援模式
# 1.关机
# 2.将系统放入光驱中
# 3.进入BIOS
开机后,一直按F2,即可进入救援模式
案例1—当系统损坏,无法登录系统,但是需要把里面的数据拷贝出来,怎么办?
# 1.根据上述步骤进入救援模式并获取root的环境
# 2.输入命令
bash-4.2# mkfs.xfs -f /dev/sdc
bash-4.2# mkdir /data
bash-4.2# mount /dev/sdc /data
bash-4.2# cp -a /raid0 /data
bash-4.2# umount /dev/sdb
案例2—损坏系统扇区(前512字节)
## 破坏硬盘的钱446字节,模拟MBR引导损坏,会发现重启无法启动系统
[root@localhost ~]# dd </dev/zero >/dev/sda bs=1 count=446
446+0 records in
446+0 records out
446 bytes (446 B) copied, 0.00026418 s, 1.7 MB/s
## 扇区损坏需要进入救援模式修复扇区
## 根据上述步骤进入到救援模式
案例3—修复grub菜单(CentOS7 误删除grub文件,进行修复)
## 模拟故障
[root@localhost ~]# rm -fr /boot/grub2/
[root@localhost ~]# reboot
## 需要进入救援模式进行修复
# 1.获取root环境
chroot /mnt/sysimage
# 2.修复 /dev/sda 第一块盘
grub2-install /dev/sda
# 3.重置grub.cfg配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
# 4.查看 /boot/grub2是否修复
ls /boot/grub2
# 5.退出root环境
exit
# 6.重启
reboot
systemd管理服务
systemd的优势
1.最新系统都采用systemd管理(RedHat7,CentOS7,Ubuntu15...)
2.CentOS7 支持开机并行启动服务,显著提高开机启动效率
3.CentOS7关机只关闭正在运行的服务,而CentOS6,全部都关闭一次。
4.CentOS7服务的启动与停止不在使用脚本进行管理,也就是/etc/init.d下不在有脚本。
5.CentOS7使用systemd解决原有模式缺陷,比如原有service不会关闭程序产生的子进程。
systemd相关配置文件
## 系统中所有服务启动的脚本存放路径
# CentOS 6
/etc/init.d/
# CentOS 7
/usr/lib/systemd/system/
## 系统运行级别相关目录
# CentOS 6
/etc/rc*.d
# CentOS 7
/etc/systemd/system
## 默认运行级别需要开机自启的服务存放目录
# CentOS 6
/etc/rc3.d/
# CentOS 7
/etc/systemd/system/multi-user.target.wants/
systemd管理服务的命令
System V init(6系统) |
systemctl(7系统) |
作用 |
service 服务名 start |
systemctl start 服务名 |
启动服务 |
service 服务名 stop |
systemctl stop 服务名 |
停止服务 |
service 服务名 restart |
systemctl restart 服务名 |
重启服务 |
service 服务名 reload |
systemctl reload 服务名 |
重新加载配置(不终止服务) |
service 服务名 status |
systemctl status 服务名 |
检查服务的启动状态 |
|
systemctl is-active 服务名 |
查看服务是否在运行中 |
|
systemctl mask 服务名 |
禁止服务运行 |
|
systemctl unmask 服务名 |
取消禁止服务运行 |
开机自启服务管理
System V init(6系统) |
systemctl(7系统) |
作用 |
chkconfig |
systemctl list-unit-files |
查看开机自启的服务 |
chkconfig 服务名 on |
systemctl enable 服务名 |
设置开机自启动 |
chkconfig 服务名 off |
systemctl disable 服务名 |
关闭开机自启 |
chkconfig --list 服务名 |
systemctl is-enabled 服务名 |
查看指定服务是否开机自启 |
|
systemctl daemon-reload |
如果启动脚本被修改,重新加载启动脚本 |