linux启动级别//单用户模式//救援模式

开机启动流程#

CentOS6启动流程#


1.内核引导

加电自检,检查bios的配置,检测硬件,开机

2.运行init

  • 0:关机
  • 1:单用户模式
  • 2:多用户模式(没有文件系统和网络)
  • 3:多用户模式(命令行,默认模式)
  • 4:没有使用的模式
  • 5:多用户模式(图形化界面)
  • 6:重启

3.系统初始化

4.建立终端

5.用户登录

Copy
## 关机命令 init 0 halt shutdown -h now shutdown -h 20:20 shutdown -h +10 poweroff ## 重启命令 init 6 reboot shutdown -r now shutdonw -r 20:20 shutdown -r +10

img

CentOS7开机启动流程#

Copy
1.BIOS(开机自检) 2.MBR ( Master Boot Record 主引导记录) 3.GRUB2 Bootloader(引导菜单) 4.Kernel(内核引导) 5.Systemd (不再使用init,改成了systemd) - 找/etc/systemd/system/default.target - /usr/lib/systemd/system/multi-user.target - 找到/etc/systemd/system/multi-user.target.wants 6.Runlevel-Target (行级别) 7.建立终端 8.用户登录

运行级别:

Copy
init 0.target -> poweroff.target # 关机 init 1.target -> rescue.target # 单用户模式 init 2.target -> multi-user.target # 多用户模式(没有文件系统和网络) init 3.target -> multi-user.target # 多用户模式(命令行) init 4.target -> multi-user.target # 多用户模式(还是没有被使用) init 5.target -> graphical.target # 图形化模式 init 6.target -> reboot.target # 重启 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆 运行级别2:多用户运行级别(没有文件系统) 运行级别3:完全的多用户状态(有文件系统),登陆后进入控制台命令行模式 运行级别4:多用户运行级别 运行级别5:X11控制台,登陆后进入图形GUI模式 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动 # 设置开机自启动 systemctl enable nginx ln -s /usr/lib/systemd/system/nginx.service /etc/systemd/system/multi-user.target.wants/nginx.service
Copy
# 获取当前默认的运行级别 [root@qls ~]# systemctl get-default multi-user.target # 修改运行级别 [root@qls ~]# systemctl set-default poweroff ## 使用两条命令修改默认运行级别 [root@qls ~]# rm -f /etc/systemd/system/default.target [root@qls ~]# ln -s /usr/lib/systemd/system/poweroff.target /etc/systemd/system/default.target ## 相关目录 [root@qls ~]# ll /etc/systemd/system (默认的运行级别) [root@qls ~]# ll /usr/lib/systemd/system (运行级别和服务启动脚本)

修改开机默认运行级别#

单用户引导:方法一#


进入grub菜单按e进入单用户模式

**在linux7 行末,加上:enforcing=0 init=/bin/bash 修改完之后,按Ctrl + X**


注意:

  • 设置默认的启动级别实际上的操作是删除软连接和创建软连接的过程

    /etc/systemd/system/default.target # 此文件有软连接默认启动级别


Copy
## 修改默认启动方式 bash-4.2# mount -o rw,remount / # 将原本的只读权限,修改为读写权限并且重新挂载 bash-4.2# systemctl set-default(不能用) # 在当前此模式下无法修改启动级别 bash-4.2# rm -f /etc/systemd/system/default.target # 删除默认连接文件(和命令systemctl一样效果) # 创建新的连接文件 bash-4.2# ln -s /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target bash-4.2# exec /sbin/init # 重新引导

单用户引导:方法二#

同样需要进入到grub界面,按e进入

同样linux16行末添加内容,ctrl+x执行进入

Copy
switch_root:/# mount -o rw,remount /sysroot # 重新挂载文件系统 switch_root:/# chroot /sysroot # 提权切换 sh-4.2# systemctl set-default multi-user.target # 更换默认运行级别 sh-4.2# exit # 退出 sh-4.2# reboot # 重启

忘记root密码#


单用户模式重置:方法一#

找到linux行末,添加enforcing=0 init=/bin/bash 然后按ctrl+x开始执行

Copy
## 修改密码 bash-4.2# mount -o rw,remount / # 添加权限 bash-4.2# echo 123|passwd --stdin root # 修改密码 bash-4.2# exec /sbin/init # 重新引导


救援模式重置:方法二#

  1. 开机进入bios界面,选择CDROM设置为引导启动项

  1. 进入救援模式()

  2. 进入救援模式

  3. 选择继续,输入1回车即可

  4. 提权并进行密码修改

  5. 退出模式,并重新启动

救援模式(修复MBR损坏)#

  1. 模拟损坏MBR

    Copy
    dd < /dev/zero > /dev/sda bs=1 count=446 # 强行将硬盘MBR进行损坏

  1. 将光驱放入系统中,作为开机boot引导项

  2. 打开电源,进入bios界面

  3. 将CD-ROM设为引导启动项(shift+将CD置顶)

  4. f10保存退出

  5. 选择yes

  6. 进入救援模式

  7. 进入救援模式后选择继续

  8. 选择1选项

  9. 获取root环境变量(此图片仅作为解释,不以此图做任何操作)

  10. 回车后输入/mnt/sysimage(提权操作)

  11. 退出模式后重启

救援模式(误删除GRUB菜单)#

  1. 模拟误删除GRUB菜单,进入救援模式
Copy
rm -rf /boot/grub2 # 删除grub2菜单 reboot # 重启查看效果



  • 同MBR损坏操作一致,仅需要多敲一条命令
Copy
chroot /mnt/sysimage # 安装系统提示进行提权 grub2-install /dev/sda # grub2安装MBR引导项 grub2-mkconfig -o /boot/grub2/grub.cfg # 通过此命令在/boot/grub2/目录生成文件.cfg exit # 退出此模式 reboot # 重启

设置nginx开机启动(不用systemd方式)#

  • 前提:不使用systemctl的方式对nginx设置开机启动

  • 原理:使用systemctl命令开机启动nginx,是将nginx的启动脚本文件创建软连接到/etc/systemd/system目录下的对应运行级别的.wants目录下

  • 实现过程:

    ​ 一、找到默认nginx启动文件:/usr/lib/systemd/system/nginx.service

    ​ 二、创建软连接到:/etc/systemd/system/multi-usr.target.wants(针对运行级别三,其他级别不一样)

  • 查看结果

注:

一切详情可查看(zls网站)[https://www.driverzeng.com/zenglaoshi/1810.html]

systemd进程管理#

systemd优势#

1.最新系统都采用systemd管理(RedHat7,CentOS7,Ubuntu15...)
2.CentOS7 支持开机并行启动服务,显著提高开机启动效率
3.CentOS7关机只关闭正在运行的服务,而CentOS6,全部都关闭一次。
4.CentOS7服务的启动与停止不在使用脚本进行管理,也就是/etc/init.d下不在有脚本。
5.CentOS7使用systemd解决原有模式缺陷,比如原有service不会关闭程序产生的子进程。

systemd 相关文件#

相关文件 CentOS6 CentOS7
服务启动脚本存放路径 /etc/init.d /usr/lib/systemd/system
开机自启服务存放路径 /etc/rcN.d /etc/systemd/system/N.target.wants
默认运行级别 /etc/inittab /etc/systemd/system/default.target

systemd启动相关命令#

system V init CentOS6 systemd CentOS7 作用
/etc/init.d/nginx start systemctl start nginx 启动nginx服务
/etc/init.d/nginx stop systemctl stop nginx 停止nginx服务
/etc/init.d/nginx status systemctl status nginx 查看服务的启动状态
/etc/init.d/nginx restart systemctl restart nginx 重启服务
/etc/init.d/nginx reload systemctl reload nginx 不停止服务,重新加载nginx配置文件
systemctl is-acvite nginx 判断nginx服务是否存活
systemctl mask nginx 禁止服务运行
systemctl unmask nginx 取消禁止

systemd开机自启动相关命令#

C6 C7 作用
chkconfig --list systemctl list-unit-files 查看开机自启的服务
chkconfig nginx on systemctl enable nginx 加入开机自启动
chkconfig nginx off systemctl disable nginx 关闭开机自启动
chkconfig --list nginx systemctl is-enabled nginx 查看指定服务是否被开机自启
chkconfig --add nginx systemctl daemon-reload 当我们手写脚本时让系统认识

systemd服务状态#

服务状态 状态说明
loaded 服务单元的配置文件已经被处理
active(running) 服务的一个或多个进程在运行中
active(exited) 一次性运行的服务成功被执行并退出(服务运行后完成任务,相关进程会自动退出)
active(waiting) 服务已经运行但在等待某个事件
inactive 服务没有在运行
enable 服务设定为开机运行
disabled 服务设定为开机不运行
static 服务不能被设定开机启动,但可以由其他服务启动该服务
posted @   元气少女郭德纲!!  阅读(4447)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示
CONTENTS