首页 > 系统相关 >CentOS7单用户模式,救援模式操作记录

CentOS7单用户模式,救援模式操作记录

时间:2024-06-02 20:12:19浏览次数:34  
标签:修复 mnt boot 文件系统 模式 CentOS7 单用户 root

CentOS7单用户模式,救援模式操作记录

1. 单用户模式

单用户模式进入不需要密码,无网络连接,拥有root权限,禁止远程登陆。一般用于用于系统维护,例如忘记root密码后可以通过进入单用户模式进行重置。

开机启动,在出现内核选项时按"键盘e键"进行编辑,找到linux16行并在行尾添加内核参数 rd.break,修改完成后按下ctrl+x进入单用户模式

# 重新挂载文件系统
mount –o remount,rw /sysroot
# 切换根 
chroot /sysroot
# 修改密码 
passwd root
# 启用了selinux的情况下,创建下面的隐藏文件;如果禁用了selinux,可以忽略。
touch /.autorelabel 
# 重启系统
reboot

也可以在内核选项中,添加init=/bin/sh,可以直接配置读写,将ro改为rw,这样进入后就不需要进行mount操作了,如下:

进入后不需要挂载文件系统,不需要切换根,可以直接进行操作,比如修改密码等。

2. 救援模式

救援模式是从其他介质启动,这个介质可以是安装系统的光盘或U盘,相当于将系统盘作为了一个外挂的磁盘,所以当系统无法恢复时可以用来备份重要文件。一般用于单用户模式都无法进入时,除了可以修改用户密码,可以用于修复grub、修复boot分区损坏、修复文件系统等。

在光盘引导项里选择第三项:Troubleshooting(故障排除)

选择Rescue a System:

选择第一个:Continue(继续操作)输入1回车:

到了这一步启动的是镜像光盘里的系统,而原来系统里的文件被挂载到了/mnt/sysimage里。

系统输出了一条提示:如果你想让你的系统的根成为救援系统的根,就运行命令:chroot /mnt/sysimage

这条命令会更改root目录,执行后根目录就会变更到/mnt/sysimage下,这个时候的操作就和在正常系统里操作一样了。

2.1 更改root密码

第一种方法:

直接更改文件的方法,可以不用切换根:

vi /mnt/sysimage/etc/passwd
# 更改文件
root:x:0:0:root:/root:/bin/bash
##将root后面的x去掉,像下面这样:
root::0:0:root:/root:/bin/bash
# 重启
reboot

第二种方法:

获取系统root权限直接更改密码,这种方法有点像单用户模式了

chroot /mnt/sysimage     #切换为原系统的root权限#
passwd      #更改root密码#

exit        #退出原系统root权限#
reboot      #重启#

2.2 修复grub

操作如下步骤操作,模拟grub故障并修复:

  1. cd /boot/
  2. rm -rf grub* #手动删除grub下的所有文件 ,模拟grub故障。
  3. 重启以光盘启动引导系统,进入Rescue界面
  4. chroot /mnt/sysimage
  5. ls /boot
  6. mkdir /boot/grub2
  7. grub2-mkconfig -o /boot/grub2/grub.cfg
  8. grub2-install /dev/sda
  9. exit
  10. reboot
  11. 重启从硬盘启动

2.3 修复/boot目录

操作如下步骤操作,模拟/boot故障并修复:

  1. rm -rf /boot/*
  2. reboot
  3. 重启以光盘启动引导系统,进入Rescue界面
  4. chroot /mnt/sysimage
  5. mount /dev/sr0 /mnt
  6. rpm -ivh /mnt/Packages/kernel-3.10.0-693.e17.x86_64.rpm.rpm --force
  7. ls /boot
  8. grub2-install /dev/sda
  9. grub2-mkconfig -o /boot/grub2/grub.cfg
  10. exit
  11. reboot
  12. 重启从硬盘启动

2.4 文件系统修复

有时候将虚拟机从VMware迁移到KVM平台时,会遇到虚拟机启动自动进入emergency mode,提示使用journalctl可以查看到文件系统相关错误。同时使用mount -a挂载分区会提示失败,此时就需要修复文件系统错误。可以在当前进入的shell界面下操作,也可以借助iso进入rescue模式进行文件系统修复。

一般步骤如下:

  1. 通过挂载和卸载文件系统重新显示日志:
mount file-system
umount file-system

如果挂载失败,并带有结构需要清理的错误,则日志已损坏,且无法重播。

  1. 检查文件系统:
#xfs检查
xfs_repair -n block-device
# ext*检查
e2fsck -n block-device
  1. 修复文件系统:

修复文件系统(xfs):

# 如果挂载成功,则不需要额外的选项:
xfs_repair block-device
# 如果挂载失败,带有 Structure needs cleaning 错误,日志会破坏且无法重复显示。使用 -L 选项(强制日志归零)来清除日志:
xfs_repair -L block-device

说明:-L是修复xfs文件系统的最后手段,慎重选择,它会清空日志,会丢失用户数据和文件。

备注:在执行xfs_repair操作前,最好使用xfs_metadump工具保存元数据,一旦修复失败,最起码可以恢复到修复之前的状态。

修复文件系统(ext*):

e2fsck -p block-device

也可以尝试fsck命令,适用于多种文件系统类型。

参考:

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/8/html/managing_file_systems/checking-and-repairing-a-file-system__managing-file-systems

标签:修复,mnt,boot,文件系统,模式,CentOS7,单用户,root
From: https://www.cnblogs.com/lldhsds/p/18227534

相关文章

  • 常用设计模式总结,附完整图解
    UML类图类图定义规则属性和方法前加上(+、-、#、留空)分别代表:公开(public)、私有(private)、保护(protected)、缺省(default)方法括号内为参数类型,冒号后为返回值类型下划线表示静态(static),斜体表示抽象(abstract) 类图关系表示法其中关联、聚合、组合,比较容易混淆,它们的区别:关......
  • this,构造器,static,final,单例模式
    this,构造器,static,final,单例模式this关键字在java中this是一个引用变量,即指向当前对象地址的引用(指针),→可以把this当作当前对象,便于更好的索引.this()实际是调用了当前对象的构造器1.引用当前对象的属性当在方法中要访问当前对象的属性时,可以用this来区分局......
  • VMMap工具的基本功能和使用方法,包括如何分析内存分配情况、监控内存使用模式等;包括深
    VMMap初级应用的大纲:1.介绍VMMap简要介绍VMMap是什么,以及其在Windows系统中的作用和用途。解释VMMap能够提供的信息类型,如内存分配情况、内存使用模式等。2.VMMap的基本功能演示如何使用VMMap打开目标进程,并查看其内存映射和分配情况。介绍VMMap提供的基本过滤器和查看......
  • Java高并发核心编程.卷2,多线程、锁、JMM、JUC、高并发设计模式 (尼恩)电子版百度云
    书获取链接:python33  。c o  m我的阅读笔记:多线程:介绍Java多线程的基础概念,如线程的创建、启动、状态转换、线程间通信等。锁:深入探讨Java中的各种锁机制,包括内置锁(synchronized)、ReentrantLock、ReadWriteLock等,以及它们的使用场景和性能特点。Java内存模型(JMM):解释J......
  • 设计模式之原型模式
    问题背景在开发一个图形设计软件时,我们面临一个常见的需求:用户需要频繁地创建和编辑各种图形,如圆形、矩形和多边形。其中,许多图形元素在属性上非常相似,比如颜色、大小或样式可能只有细微的差别。用户希望能够快速复制一个已有图形,然后对其进行小的修改,而不是每次都从零开始......
  • 【Vue】深入理解MVVM模式的魔力
    目录前言一、MVVM模式是什么?二、具体示例总结前言    Vue.js是一种基于JavaScript的前端框架,它采用了MVVM(Model-View-ViewModel)模式来实现数据的双向绑定。在本篇博客中,我将介绍MVVM模式的基本概念,并演示如何使用Vue.js来实现这种模式。一、MVVM模式是什么? ......
  • 抽象工厂模式
    抽象工厂模式解决的是一系列相互依赖的对象的创建。classMyConnect{};classMyDatabse{};classMyCommand{};//sqlServer的连接classSqlServerConnect:publicMyConnect{};classSqlServerDatabse:publicMyDatabse{};classSqlServerCommand:publicMyComm......
  • 单例模式线程安全reorder问题
    单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。下面是一个使用C++实现的线程安全的单例模式的例子:classSingleton{private:staticstd::atomic<Singleton*>instance;//静态私有实例指针使用原子操作类atomic线程安全sta......
  • 观察者设计模式
    实现C++中的观察者设计模式通常包括以下几个关键组件: 1.**Subject(主题)**:这是被观察的对象,它维护一个观察者列表,并提供注册、注销观察者的方法以及通知所有观察者的方法。 2.**Observer(观察者)**:这是一个抽象接口或基类,定义了观察者需要实现的更新接口(如`update()`方法),以......
  • 反海淘商业模式案例分析 :Pandabuy淘宝代购集运系统解析丨1688代采集运系统
    反海淘商业模式是指通过代购、代采集运等方式,帮助海外消费者购买并运输国内商品的一种商业模式。这种模式可以帮助海外消费者解决购买国内商品的困难,同时也为国内商家提供了一个新的销售渠道。下面以Pandabuy淘宝代购集运系统和1688代采集运系统为例进行解析。Pandabuy淘宝代......