单用户模式启动 CentOS/RHEL 7/8 的三种方法

 

单用户模式,也被称为维护模式,超级用户可以在此模式下恢复/修复系统问题。

通常情况下,这类问题在多用户环境中修复不了。系统可以启动但功能不能正常运行或者你登录不了系统。

在基于 Red Hat(RHEL)7/8 的系统中,使用 runlevel1.target 或 rescue.target 来实现。

在此模式下,系统会挂载所有的本地文件系统,但不开启网络接口。

系统仅启动特定的几个服务和修复系统必要的尽可能少的功能。

当你想运行文件系统一致性检查来修复损坏的文件系统,或忘记 root 密码后重置密码,或要修复系统上的一个挂载点问题时,这个方法会很有用。

你可以用下面三种方法以单用户模式启动 CentOS/RHEL 7/8 系统。

  • 方法 1:通过向内核添加 rd.break 参数来以单用户模式启动 CentOS/RHEL 7/8 系统
  • 方法 2:通过用 init=/bin/bash 或 init=/bin/sh 替换内核中的 rhgb quiet 语句来以单用户模式启动 CentOS/RHEL 7/8 系统
  • 方法 3:通过用 rw init=/sysroot/bin/sh 参数替换内核中的 ro 语句以单用户模式启动 CentOS/RHEL 7/8 系统

方法 1

通过向内核添加 rd.break 参数来以单用户模式启动 CentOS/RHEL 7/8 系统。

重启你的系统,在 GRUB2 启动界面,按下 e 键来编辑选中的内核。你需要选中第一行,第一个是最新的内核,然而如果你想用旧的内核启动系统你也可以选择其他的行。

根据你的 RHEL/CentOS 版本,找到 linux16 或 linux 语句,按下键盘上的 End 键,跳到行末,像下面截图中展示的那样添加关键词 rd.break,按下 Ctrl+x 或 F10 来进入单用户模式。

如果你的系统是 RHEL/CentOS 7,你需要找 linux16,如果你的系统是 RHEL/CentOS 8,那么你需要找 linux

这个修改会让你的 root 文件系统以 “只读(ro)” 模式挂载。你可以用下面的命令来验证下。下面的输出也明确地告诉你当前是在 “ 紧急模式(Emergency Mode)”。

# mount | grep root

为了修改 sysroot 文件系统,你需要用读写模式(rw)重新挂载它。

# mount -o remount,rw /sysroot

运行下面的命令修改环境,这就是大家熟知的 “监禁目录” 或 “chroot 监狱”。

# chroot /sysroot

现在,单用户模式已经完全准备好了。当你修复了你的问题要退出单用户模式时,执行下面的步骤。

CentOS/RHEL 7/8 默认使用 SELinux,因此创建下面的隐藏文件,这个文件会在下一次启动时重新标记所有文件。

# touch /.autorelabel

最后,用下面的命令重启系统。你也可以输入两次 exit 命令来重启你的系统。

# reboot -f

方法 2

通过用 init=/bin/bash 或 init=/bin/sh 替换内核中的 rhgb quiet 语句来以单用户模式启动 CentOS/RHEL 7/8 系统。

重启你的系统,在 GRUB2 启动界面,按下 e 键来编辑选中的内核。

找到语句 rhgb quiet,用 init=/bin/bash 或 init=/bin/sh 替换它,然后按下 Ctrl+x 或 F10 来进入单用户模式。

init=/bin/bash 的截图。

init=/bin/sh 的截图。

默认情况下,上面的操作会以只读(ro)模式挂载你的 / 分区,因此你需要以读写(rw)模式重新挂载 / 文件系统,这样才能修改它。

# mount -o remount,rw /

现在你可以执行你的任务了。当结束时,执行下面的命令来开启重启时的 SELinux 重新标记。

# touch /.autorelabel

最后,重启系统。

# exec /sbin/init 6

方法 3

通过用 rw init=/sysroot/bin/sh 参数替换内核中的 ro 单词,以单用户模式启动 CentOS/RHEL 7/8 系统。

为了中断自动启动的过程,重启你的系统并在 GRUB2 启动界面按下任意键。

现在会展示你系统上所有可用的内核,选择最新的内核,按下 e 键来编辑选中的内核参数。

找到以 linux 或 linux16 开头的语句,用 rw init=/sysroot/bin/sh 替换 ro。替换完后按下 Ctrl+x 或 F10 来进入单用户模式。

运行下面的命令把环境切换为 “chroot 监狱”。

# chroot /sysroot

如果需要,做出必要的修改。修改完后,执行下面的命令来开启重启时的 SELinux 重新标记。

# touch /.autorelabel

最后,重启系统。

# reboot -f

单用户模式启动 CentOS/RHEL 7/8 的三种方法的更多相关文章

  1. 单用户模式启动SQL Server实例总结

      在SQL Server的数据库维护过程中,有时候在一些特殊情况下需要在单用户模式下启动SQL Server实例. 下面总结一下单用户模式启动SQL Server的几种方式: 1:命令模式(sqls ...

  2. 单用户模式进入centos

    修改root密码----------------单用户模式操作 个人原创博客,转载请注明,否则追究法律责任 author: headsen chen date: 2017-9-30 1,开机后,迅速按 ...

  3. [CentOS] 环境变量设置的三种方法

    在CentOS系统中添加环境变量的方法有几种,推荐第三种方法.这里以添加 TexLive 2017 的环境变量为例进行说明. 1. 修改  ~/.bash_profile  文档,在文末添加以下代码: ...

  4. 在CentOS上安装Python3的三种方法

    Centos7默认自带了Python2.7版本,但是因为项目需要使用Python3.x你可以按照此文的三个方法进行安装. 注:本文示例安装版本为Python3.5, 一.Python源代码编译安装 安 ...

  5. 虚拟机下CentOS 配置IP地址的三种方法

    1.自动获取IP地址(我不是用的这种方法,不做过多介绍) 虚拟机使用桥接模式,相当于连接到物理机的网络里,物理机网络有DHCP服务器自动分配IP地址. #dhclient 自动获取ip地址命令 #if ...

  6. CentOS 添加环境变量的三种方法

    在CentOS 系统上安装完 MATLAB 后,为了使用方便,需要将 matlab 命令加到系统命令中,如果在没有添加到环境变量之前,执行“matlab”命令时,则会提示命令不存在的错误,如下所示: ...

  7. CentOS下安装JDK的三种方法

    方法一:手动解压JDK的压缩包,然后设置环境变量 1.在/usr/目录下创建java目录 [root@localhost ~]# mkdir/usr/java[root@localhost ~]# c ...

  8. centos安装jdk1.8的三种方法

    一.手动解压安装包: 1.在user目录下新建java文件夹:   # cd /usr/   # mkdir java   # cd java 2.下载jdk1.8,进入http://www.orac ...

  9. Linux学习之CentOS(二十二)--单用户模式下修改Root用户的密码

    在上一篇随笔里面详细讲解了Linux系统的启动过程 (Linux学习之CentOS(二十一)--Linux系统启动详解),我们知道Linux系统的启动级别一共有6种级别,通过 /etc/inittab ...

  10. Linux基础——centos 跳过管理员密码进行登录(单用户模式、救援模式)

    这里列举了两种更改或者取消管理员密码登录Linux系统的方法,其实两种方法类似,都是想方设法跳过用户认定,直接更改用户文件.更改密码的过程. 为了跳过系统正常启动过程中的某些步骤,必须知道大致的系统启 ...

随机推荐

  1. JVM性能优化, Part 5:Java的伸缩性

    本文由 ImportNew - ImportNew读者 翻译自 Javaworld.如需转载本文,请先参见文章末尾处的转载要求. ImportNew注: JVM性能优化系列文章前4篇由ImportNe ...

  2. Java垃圾回收器总结

    什么是Java垃圾回收器 Java垃圾回收器是Java虚拟机(JVM)的三个重要模块(另外两个是解释器和多线程机制)之一,为应用程序提供内存的自动分配(Memory Allocation).自动回收( ...

  3. 【实战问题】-- 并发的时候分布式锁setnx细节

    前面讲解到实战问题]-- 设计礼品领取的架构设计以及多次领取现象解决?,如果出现网络延迟的情况下,多个请求阻塞,那么恶意攻击就可以全部请求领取接口成功,而针对这种做法,我们使用setnx来解决,确保只 ...

  4. GUETSEC

    1. GUETSEC栈溢出 可以看到它看起来好像有四个栈溢出,我们逐个点进去 __isoc99_scanf("%20s", v1):限制了读取20个字符串(但其实无法完全杜绝缓冲区 ...

  5. 一款 IDEA 必备的 JSON 处理工具插件 — Json Assistant

    Json Assistant 是基于 IntelliJ IDEs 的 JSON 工具插件,让 JSON 处理变得更轻松! 主要功能 完全支持 JSON5 JSON 窗口(多选项卡) 选项卡更名 移动至 ...

  6. 【深度剖析】自主可控的全国产方案,基于龙芯LS2K1000LA-i!

    龙芯LS2K1000LA-i产品简介 LS2K1000LA-i是龙芯双核LoongArch LA264自主架构处理器.创龙科技基于LS2K1000LA-i设计的工业核心板(SOM-TL2K1000)板 ...

  7. [转]奇异值分解(SVD)方法求解最小二乘问题的原理

    原文链接:奇异值分解(SVD)方法求解最小二乘问题的原理 翻译 搜索 复制

  8. JVM实战—11.OOM的原因和模拟以及案例

    大纲 1.线上系统突然由于OOM内存溢出挂掉 2.什么是内存溢出及哪些区域会发生内存溢出 3.Metaspace如何因类太多而发生内存溢出 4.无限制调用方法如何让线程的栈内存溢出 5.对象太多导致堆 ...

  9. Appium_WebDriverAgent设置

            在使用真机调试的时候犯了一个错误,我把WebDriverAgent 下载到本地的A目录下,然后进行build安装,这样在模拟器上执行是无法发现问题的,但是使用appium 在真机上执行 ...

  10. 使用CRM REST Builder的Predefined Query在js结合FetchXML语句进行查询

    一般情况下使用拓展工具RESTBuilder编辑器,可以很方便的进行操作js中增删改查均能实现,但在某些较为特殊的场景下,需要根据条件去拼接查询过滤条件的,使用编辑器生成的代码无法实现,需要结合使用f ...