文章目录
展开CentOS6启动流程
1) 内核引导
- BIOS加电自检,检测主板上的硬件设备,根据BIOS设置启动系统
- 读取/boot分区下,所有内核文件
2) 运行init流程:init是系统中所有进程的父进程 进程号为 1 关闭它的方式只有关机
- 加载init,涉及到Linux系统中7个运行级别1.加载init,涉及到Linux系统中7个运行级别
运行级别
# 7个运行级别 0 ~ 6 :
0 :关机运行级别 # 系统默认的运行级别要是设置成了0 就会变成一开机就关机状态
1 :单用户运行级别 # root权限 禁止远程登陆
2 :多用户运行级别 # 没有文件系统
3 :多用户运行级别 # 有文件系统(普通终端就是这个运行级别 命令行模式)
4 :CentOS6和7里 保留的运行级别 未使用
5 :也是多用户,图形化运行级别 # 图形化界面就是这个运行级别
6 :重启运行级别 # 重启命令:init 6
查看Linux系统当前的运行级别指令
[root@localhost ~]# runlevel
N 3 # N 代表上一个运行级别 3 代表当前运行级别
# CentOS7查看当前运行级别命令
[root@localhost ~]# systemctl get-default
multi-user.target
临时切换运行级别指令
[root@localhost ~]# init 5
[root@localhost ~]# runlevel
3 5
永久切换运行级别
[root@localhost ~]# vim /etc/inittab
id:3:initdefault
# CentOS6运行级别配置文件:/etc/inittab
0 - halt (Do NOT set initdefault to this)
1 - Single user mode
2 - Multiuser, without NFS (The same as 3, if you do not have networking)
3 - Full multiuser mode
4 - unused
5 - X11
6 - reboot (Do NOT set initdefault to this)
- 运行init,会读取配置文件 /etc/inittab
- 配置文件中的默认运行级别设置
- CentOS6 的/etc/inittab中只有以下一条命令是生效的 就是默认了开机的运行级别是3
id:3:initdefault:
- CentOS6 的/etc/inittab中只有以下一条命令是生效的 就是默认了开机的运行级别是3
- CentOS7 的开机默认的运行级别是3.multi-user.target
multi-user.target
- 启动init进程
3) 系统初始化
# 根据运行级别中设置了开机自启服务来启动对应服务
# 查看开机自启服务有哪些的指令↓
# CentOS6查看指令↓
[root@localhost ~]# chkconfig --list
# CentOS7查看指令↓
[root@localhost ~]# systemctl list-unit-files
# CentOS7自启动服务的文件位置↓
/etc/systemd/system/
# 例:查看第三级别里的自启动服务有哪些
[root@localhost ~]# ll /etc/systemd/system/multi-user.target.wants/
4) 建立终端
5) 用户登录系统
CentOS7开机流程
1) BIOS(开机自检)
- BIOS加电自检,检测主板上的硬件设备,根据BIOS设置启动系统
- 读取/boot分区下,所有内核文件
2) MBR引导 ( Master Boot Record 主引导记录)
3) GRUB2 Bootloader(引导菜单)
加载grub2菜单,选择要进入的系统
4) Kernel(内核引导)
读取/boot目录下所有内核文件
5) Systemd (不再使用init,改成了systemd)
## CentOS7里各运行级别的名字和作用
# 第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 -> graphical.target
# 第6个运行级别 重启运行级别
runlevel6.target -> reboot.target
6) Runlevel-Target (运行级别)
CentOS7进入单用户模式-忘记root密码
1) 关机
关机,重启命令
1: halt
2: poweroff
3: shutdown -h now
4: init 0 # init指令是切换运行级别 0 级别就是关机
## 重启命令
reboot
2) 开机
3)进入gurb2菜单 在gurb2菜单界面按 e 进入编辑模式
# selinux 是部署在 Linux 上用于增强系统安全的功能模块
vim /etc/sysconfig/selinux
selinux=enforcing ==> selinux=disabled
在linux16行末,写入:
enforcing=0 init=/bin/bash # 在这里写入内容 是在修改内核的参数
# 就相当于在修改上面的配置文件内容 关闭安全协议 获得修改权限
按Ctrl + x # 安照我们修改的参数去启动系统
4) 修改密码
- 重新挂载/目录的方法
无法直接修改密码 因为当前/目录是只读状态 所以无法直接修改密码
## 重新挂载/
mount -o rw,remount /
## 修改密码
passwd root
echo 111 |passwd --stdin root
## 重新给系统打上selinux的标签
touch /.autorelabel
## 重新加载init
exec /sbin/init
- 不需要重新挂载的方法
在第3步中
linux16行末,写入 enforcing=0 init=/bin/bash
并将Linux16行中的 ro 改成 rw
# 就是因为写的是ro 所以进入系统是只读权限 rw就是可读可写
修改完成以后 按Ctrl + x 直接修改密码即可
CentOS7进入单用户模式-修改默认运行级别
-
关机
-
进入grub2菜单
-
按e编辑grub2菜单的内核参数
Linux16行中 ro改成rw
行末写:rd.break
修改完成后,按Ctrl + x
- 重新配置默认运行级别
# 1.重新挂载root权限目录
mount -o rw,remount /sysroot
# 2.获取root权限
chroot /sysroot
# 3.修改默认运行级别
systemctl set-default multi-user.target
# 4.退出
exit
# 5.重启
reboot
救援模式
前提:需要有系统盘,才可以进入救援模式 要进入安装系统的界面,才能进入救援模式
# 1.关机
init 0
halt
poweroff
shutdown -h now
# 2.将系统盘放入光驱中
# 3.进入BIOS
将系统启动的顺序,改为从光盘启动
方法一:
开机时,不断按f2
方法二:
在电源里面点击,进入固件
# 4,进入bios以后
1.右建到boot界面
2.下建到CD-ROM 按 + 把它提到第一个 优先启动光驱 # 先要改回来就把 Hard 按 + 提回到第一个
3.按f10保存并退出 选择yes
4.重新进入安装系统的界面
# 5,进入救援模式
1.输入 1 或者 Cont inue 继续
2.输完 1 以后按回车 获得一个shell
# 6,进入shell以后
1.获取root的环境(root权限)
chroot /mnt/sysimage
2.现在就已经进入的救援模式 并且有了权限
3.修改完成后退出命令是: exit
案例1-损坏系统扇区(存放系统启动服务文件的前512字节被损坏)
# 更改命令↓ 将字节改成446 此时启动文件已经损坏 重新登陆就登陆不了
dd </dev/zero >/dev/sda bs=1 count=446
## 扇区损坏的修复方法
1.首先按照上面的方法进入 救援模式 并获取root的环境
2.修复扇区 # 这个是指令修复你的第一块磁盘 因为你损坏了这块磁盘内的数据
grub2-install /dev/sda
3.退出root环境
exit
4.重启
reboot
案例2-grub菜单损坏
## 修复grub菜单的方法
1.首先按照上面的方法进入 救援模式 并获取root的环境
2.修复扇区 # 这个是指令修复你的第一块磁盘 因为你损坏了这块磁盘内的数据
grub2-install /dev/sda
3.重置grub.cfg配置文件 # 上面修复磁盘以后会重新创建出grub2文件 然后重新配置grub菜单
grub2-mkconfig -o /boot/grub2/grub.cfg
4.退出root环境
exit
5.重启
reboot
systemd管理服务
systemd的优势
1.最新系统都采用systemd管理(RedHat7,CentOS7,Ubuntu15...)
# systemd 即为 system # daemon systemd就是system进程的守护进程 # daemon:守护进程
2.CentOS7支持开机并行启动服务,显著提高开机启动效率
3.CentOS7关机只关闭正在运行的服务,而CentOS6,全部都关闭一次。
4.CentOS7服务的启动与停止不在使用脚本进行管理,也就是/etc/init.d下不在有脚本。
5.CentOS7使用systemd解决原有模式缺陷,比如原有service不会关闭程序产生的子进程。
systemd相关配置文件
# 系统中所有服务启动的脚本存放路径
CentOS7:
/usr/lib/systemd/system/
CentOS6:
/etc/init.d/
# 系统运行级别相关目录
CentOS7:
/etc/systemd/system
CentOS6:
/etc/rc*.d -d
# 默认运行级别(3级别)需要开机自启的服务存放目录
CentOS7:
/etc/systemd/system/multi-user.target.wants/
CentOS6:
/etc/rc3.d/
systemd管理服务的命令
# 1.启动服务指令↓
CentOS7:
1: systemctl start 服务名
2: service 服务名 start
CentOS6:
1: /etc/init.d/服务名 start
2: service 服务名 start
# 2.停止服务指令↓
CentOS7:
1: systemctl stop 服务名
2: service 服务名 stop
CentOS6:
1: /etc/init.d/服务名 stop
2: service 服务名 stop
# 3.服务重启指令↓
CentOS7:
1: systemctl restart 服务名
2: service 服务名 restart (重新加载服务 但加载时会停止服务)
CentOS6:
1: /etc/init.d/服务名 restart
2: service 服务名 restart
# 4.服务重新加载指令↓
CentOS7:
1: systemctl reload 服务名
2: service 服务名 reload (重新加载服务 不会停止服务)
CentOS6:
1: /etc/init.d/服务名 reload
2: service 服务名 reload
# 5.检查服务的启动状态指令↓
CentOS7:
systemctl status 服务名 (运行命令后指示灯绿了就是在运行)
CentOS6:
/etc/init.d/服务名 status
例↓
[root@localhost ~]# /etc/init.d/sshd status
openssh-daemon (pid 1508) is running...
## 检测服务状态 这个服务pid为1508 正在运行中..
# 6.判断服务是否在运行指令↓(以下6.7.8选项都是CentOS7的指令 CentOS6没有)
systemctl is-active 服务名 (这个指令是一个判断 判断该服务有没有在运行)
1.返回值为
active:服务正在运行
2.返回值为
inactive:服务没有运行
# 7.禁用某个服务指令↓
systemctl mask 服务名
# 8.取消禁用某个服务指令↓
systemctl unmask 服务名
开机自启服务管理
# 1.查看所有开机自启的服务有指令↓
CentOS7:
systemctl list-unit-files
例↓
[root@localhost ~]# systemctl list-unit-files
proc-sys-fs-binfmt_misc.mount static # static:系统自己会开机自启的服务
run-vmblock\x2dfuse.mount disabled # disabled:禁止开机自启的服务
auditd.service enabled # enabled:允许开机自启的服务
CentOS6:
chkconfig
# 2.查看指定开机自启的服务指令↓
CentOS7:
systemctl is-enabled 服务名
systemctl list-unit-files|grep 服务名
CentOS6:
chkconfig --list 服务名
chkconfig |grep 服务名
# 3.设置开机自启动指令
CentOS7:
systemctl enable 服务名
例↓
[root@localhost ~]# systemctl enable sshd
CentOS6:
chkconfig 服务名 on (默认 2 3 4 5 运行级别都会自启)
例↓
[root@localhost ~]# chkconfig sshd on
[root@localhost ~]# chkconfig |grep sshd
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
## 指定一个运行级别设置开机自启动↓
[root@localhost ~]# chkconfig |grep sshd
sshd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost ~]# chkconfig sshd --level 3 on
[root@localhost ~]# chkconfig |grep sshd
sshd 0:off 1:off 2:off 3:on 4:off 5:off 6:off
# 4.关闭开机自启指令↓
CentOS7:
systemctl disable 服务名
CentOS6:
chkconfig 服务名 off
# 5.如果启动脚本被修改,需要重新加载启动脚本指令↓ 才能让你修改的启动脚本生效
CentOS7:
systemctl daemon-reloa
1.最新系统都采用systemd管理(RedHat7,CentOS7,Ubuntu15...)
# systemd 即为 system # daemon systemd就是system进程的守护进程 # daemon:守护进程
2.CentOS7支持开机并行启动服务,显著提高开机启动效率
3.CentOS7关机只关闭正在运行的服务,而CentOS6,全部都关闭一次。
4.CentOS7服务的启动与停止不在使用脚本进行管理,也就是/etc/init.d下不在有脚本。
5.CentOS7使用systemd解决原有模式缺陷,比如原有service不会关闭程序产生的子进程。
# 系统中所有服务启动的脚本存放路径
CentOS7:
/usr/lib/systemd/system/
CentOS6:
/etc/init.d/
# 系统运行级别相关目录
CentOS7:
/etc/systemd/system
CentOS6:
/etc/rc*.d -d
# 默认运行级别(3级别)需要开机自启的服务存放目录
CentOS7:
/etc/systemd/system/multi-user.target.wants/
CentOS6:
/etc/rc3.d/
systemd管理服务的命令
# 1.启动服务指令↓
CentOS7:
1: systemctl start 服务名
2: service 服务名 start
CentOS6:
1: /etc/init.d/服务名 start
2: service 服务名 start
# 2.停止服务指令↓
CentOS7:
1: systemctl stop 服务名
2: service 服务名 stop
CentOS6:
1: /etc/init.d/服务名 stop
2: service 服务名 stop
# 3.服务重启指令↓
CentOS7:
1: systemctl restart 服务名
2: service 服务名 restart (重新加载服务 但加载时会停止服务)
CentOS6:
1: /etc/init.d/服务名 restart
2: service 服务名 restart
# 4.服务重新加载指令↓
CentOS7:
1: systemctl reload 服务名
2: service 服务名 reload (重新加载服务 不会停止服务)
CentOS6:
1: /etc/init.d/服务名 reload
2: service 服务名 reload
# 5.检查服务的启动状态指令↓
CentOS7:
systemctl status 服务名 (运行命令后指示灯绿了就是在运行)
CentOS6:
/etc/init.d/服务名 status
例↓
[root@localhost ~]# /etc/init.d/sshd status
openssh-daemon (pid 1508) is running...
## 检测服务状态 这个服务pid为1508 正在运行中..
# 6.判断服务是否在运行指令↓(以下6.7.8选项都是CentOS7的指令 CentOS6没有)
systemctl is-active 服务名 (这个指令是一个判断 判断该服务有没有在运行)
1.返回值为
active:服务正在运行
2.返回值为
inactive:服务没有运行
# 7.禁用某个服务指令↓
systemctl mask 服务名
# 8.取消禁用某个服务指令↓
systemctl unmask 服务名
开机自启服务管理
# 1.查看所有开机自启的服务有指令↓
CentOS7:
systemctl list-unit-files
例↓
[root@localhost ~]# systemctl list-unit-files
proc-sys-fs-binfmt_misc.mount static # static:系统自己会开机自启的服务
run-vmblock\x2dfuse.mount disabled # disabled:禁止开机自启的服务
auditd.service enabled # enabled:允许开机自启的服务
CentOS6:
chkconfig
# 2.查看指定开机自启的服务指令↓
CentOS7:
systemctl is-enabled 服务名
systemctl list-unit-files|grep 服务名
CentOS6:
chkconfig --list 服务名
chkconfig |grep 服务名
# 3.设置开机自启动指令
CentOS7:
systemctl enable 服务名
例↓
[root@localhost ~]# systemctl enable sshd
CentOS6:
chkconfig 服务名 on (默认 2 3 4 5 运行级别都会自启)
例↓
[root@localhost ~]# chkconfig sshd on
[root@localhost ~]# chkconfig |grep sshd
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
## 指定一个运行级别设置开机自启动↓
[root@localhost ~]# chkconfig |grep sshd
sshd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost ~]# chkconfig sshd --level 3 on
[root@localhost ~]# chkconfig |grep sshd
sshd 0:off 1:off 2:off 3:on 4:off 5:off 6:off
# 4.关闭开机自启指令↓
CentOS7:
systemctl disable 服务名
CentOS6:
chkconfig 服务名 off
# 5.如果启动脚本被修改,需要重新加载启动脚本指令↓ 才能让你修改的启动脚本生效
CentOS7:
systemctl daemon-reloa
# 1.启动服务指令↓
CentOS7:
1: systemctl start 服务名
2: service 服务名 start
CentOS6:
1: /etc/init.d/服务名 start
2: service 服务名 start
# 2.停止服务指令↓
CentOS7:
1: systemctl stop 服务名
2: service 服务名 stop
CentOS6:
1: /etc/init.d/服务名 stop
2: service 服务名 stop
# 3.服务重启指令↓
CentOS7:
1: systemctl restart 服务名
2: service 服务名 restart (重新加载服务 但加载时会停止服务)
CentOS6:
1: /etc/init.d/服务名 restart
2: service 服务名 restart
# 4.服务重新加载指令↓
CentOS7:
1: systemctl reload 服务名
2: service 服务名 reload (重新加载服务 不会停止服务)
CentOS6:
1: /etc/init.d/服务名 reload
2: service 服务名 reload
# 5.检查服务的启动状态指令↓
CentOS7:
systemctl status 服务名 (运行命令后指示灯绿了就是在运行)
CentOS6:
/etc/init.d/服务名 status
例↓
[root@localhost ~]# /etc/init.d/sshd status
openssh-daemon (pid 1508) is running...
## 检测服务状态 这个服务pid为1508 正在运行中..
# 6.判断服务是否在运行指令↓(以下6.7.8选项都是CentOS7的指令 CentOS6没有)
systemctl is-active 服务名 (这个指令是一个判断 判断该服务有没有在运行)
1.返回值为
active:服务正在运行
2.返回值为
inactive:服务没有运行
# 7.禁用某个服务指令↓
systemctl mask 服务名
# 8.取消禁用某个服务指令↓
systemctl unmask 服务名
# 1.查看所有开机自启的服务有指令↓
CentOS7:
systemctl list-unit-files
例↓
[root@localhost ~]# systemctl list-unit-files
proc-sys-fs-binfmt_misc.mount static # static:系统自己会开机自启的服务
run-vmblock\x2dfuse.mount disabled # disabled:禁止开机自启的服务
auditd.service enabled # enabled:允许开机自启的服务
CentOS6:
chkconfig
# 2.查看指定开机自启的服务指令↓
CentOS7:
systemctl is-enabled 服务名
systemctl list-unit-files|grep 服务名
CentOS6:
chkconfig --list 服务名
chkconfig |grep 服务名
# 3.设置开机自启动指令
CentOS7:
systemctl enable 服务名
例↓
[root@localhost ~]# systemctl enable sshd
CentOS6:
chkconfig 服务名 on (默认 2 3 4 5 运行级别都会自启)
例↓
[root@localhost ~]# chkconfig sshd on
[root@localhost ~]# chkconfig |grep sshd
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
## 指定一个运行级别设置开机自启动↓
[root@localhost ~]# chkconfig |grep sshd
sshd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost ~]# chkconfig sshd --level 3 on
[root@localhost ~]# chkconfig |grep sshd
sshd 0:off 1:off 2:off 3:on 4:off 5:off 6:off
# 4.关闭开机自启指令↓
CentOS7:
systemctl disable 服务名
CentOS6:
chkconfig 服务名 off
# 5.如果启动脚本被修改,需要重新加载启动脚本指令↓ 才能让你修改的启动脚本生效
CentOS7:
systemctl daemon-reloa
Comments | NOTHING