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

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

1. 单用户模式

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

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

shell 复制代码
# 重新挂载文件系统
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密码

第一种方法:

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

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

第二种方法:

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

bash 复制代码
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. 通过挂载和卸载文件系统重新显示日志:
shell 复制代码
mount file-system
umount file-system

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

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

修复文件系统(xfs):

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

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

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

修复文件系统(ext*):

shell 复制代码
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

相关推荐
AlfredZhao2 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
戴为沐3 天前
Linux内存扩容指南
linux
zylyehuo3 天前
Linux 彻底且安全地删除文件
linux
用户805533698034 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297914 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
乘云数字DATABUFF4 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
Web3探索者6 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo6 天前
Linux系统中网线与USB网络共享冲突
linux
荣--6 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森6 天前
动手实战学 Docker — 从零到集群编排完全指南
运维