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故障并修复:
- cd /boot/
- rm -rf grub* #手动删除grub下的所有文件 ,模拟grub故障。
- 重启以光盘启动引导系统,进入Rescue界面
- chroot /mnt/sysimage
- ls /boot
- mkdir /boot/grub2
- grub2-mkconfig -o /boot/grub2/grub.cfg
- grub2-install /dev/sda
- exit
- reboot
- 重启从硬盘启动
2.3 修复/boot目录
操作如下步骤操作,模拟/boot故障并修复:
- rm -rf /boot/*
- reboot
- 重启以光盘启动引导系统,进入Rescue界面
- chroot /mnt/sysimage
- mount /dev/sr0 /mnt
- rpm -ivh /mnt/Packages/kernel-3.10.0-693.e17.x86_64.rpm.rpm --force
- ls /boot
- grub2-install /dev/sda
- grub2-mkconfig -o /boot/grub2/grub.cfg
- exit
- reboot
- 重启从硬盘启动
2.4 文件系统修复
有时候将虚拟机从VMware迁移到KVM平台时,会遇到虚拟机启动自动进入emergency mode
,提示使用journalctl
可以查看到文件系统相关错误。同时使用mount -a
挂载分区会提示失败,此时就需要修复文件系统错误。可以在当前进入的shell界面下操作,也可以借助iso进入rescue模式进行文件系统修复。
一般步骤如下:
- 通过挂载和卸载文件系统重新显示日志:
mount file-system
umount file-system
如果挂载失败,并带有结构需要清理的错误,则日志已损坏,且无法重播。
- 检查文件系统:
#xfs检查
xfs_repair -n block-device
# ext*检查
e2fsck -n block-device
- 修复文件系统:
修复文件系统(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