2.9 使用系统光盘修复Linux系统

简介: 如果系统错误已经导致单用户模式不能进入了,那么是否需要重新安装Linux 系统?不用着急,为了应对单用户模式也无法修复的错误,Linux 系统提供了 rescue 救援(光盘修复)模式。

如果系统错误已经导致单用户模式不能进入了,那么是否需要重新安装Linux 系统?不用着急,为了应对单用户模式也无法修复的错误,Linux 系统提供了 rescue 救援(光盘修复)模式。

rescue 救援模式的原理是不再使用硬盘中的文件系统启动 Linux,而是使用光盘中的文件系统启动 Linux。这样,就算硬盘中的 Linux 系统已经不能登录了(单用户也不能登录),rescue 救援还是可以使用的。当然,此模式也不是万能的,这时就只能重新安装 Linux 系统了。

如何进入rescue模式

首先需要有系统光盘或系统修复光盘。这里只需要把 CentOS 6.x 的第一张光盘放入光驱,然后重启系统,修改 BIOS 的启动顺序,让系统从光盘启动,就会看到如图 1 所示的光盘启动界面。

在这个界面上选择 "Rescue installed system" 进入rescue 救援,然后系统就会提示选择语言,如图 2 所示。

选择 "English",接下来就会让我们选择键盘,如图 3 所示。

选择 "US",即美式标准键盘,之后会进入选择修复模式所在介质界面,如图 4 所示。

选择光盘介质,然后确定,就会进入网络配置界面,如图 5 所示。

选择"No",即不启用网络配置,就会进入 Rescue 模式选择界面,如图 6 所示。

选择 "Continue" 进入光盘修复模式,在之后弹出的界面中选择 "OK",就会进入启动功能选择界面,如图 7 所示。

选择 "shell Start shell",就会进入光盘修复模式,看到命令提示符。

rescue模式常见的错误修复

利用 rescue 救援模式,主要可以修复什么错误呢?其实能在单用户模式中修复的错误都能在该模式中修复,当然还可以修复一些在单用户模式中无法修复的错误。

1) 多系统并存,GRUB被覆盖

还记得在前面章节中讲解的手工安装 GRUB 吗?有一种情况就是先安装 Linux,后安装 Windows,导致 MBR 中的启动引导程序被 Windows 引导程序覆盖,需要重新安装 GRUB 引导程序。

重新安装 GRUB 的过程已经讲过了,但是重新安装 GRUB 的命令需要在 rescue 模式中执行。我们重新写一遍覆盖安装 GRUB 的过程,如下:

\#放入光盘重启,进入 rescue 模式
sh-4.1#grub
\#启动GRUB交互界面。注意到了吗?提示符不一样了,那是因为从光盘启动了系统,所以环境变量配件文件没有生效
gmb> root (hd0.0)
\#设置GRUB的主目录
grub>setup (hd0)
\#因为直接把GRUB安装到MBR中,所以不需要指定分区
grub> quit
\#退出

这样GRUB覆盖安装的实验才算完成了。

2) 重要系统文件丢失,导致系统无法启动

如果系统中的重要系统文件丢失,则会导致系统无法正常启动,这时也可以利用 rescue 模式来进行修复。我们假设 /etc/inittab 文件丟失了,通过系统启动过程知道这个文件是于定义系统默认运行级别的,如果丟失了这个文件,那么系统当然不能正常启动,这时就需要进入 rescue 模式中,然后执行 chroot 命令。命令格式如下:

[root@localhost ~]#chroot 目录名

chroot 命令的作用是改变系统根目录,也就是可以把根目录暂时移动到某个目录当中。我们是通过光盘启动的 rescue 模式,所以我们现在所在的根目录并不是真正的系统根目录,而是光盘的模拟根目录,真正的系统根目录被当成外来设备放在了 /mnt/sysimage/ 目录中。

这时,就需要使用 chroot 命令把我们现在所在的根目录改成真正的系统根目录。命令如下:

bash-4.1# chroot /mnt/sysimage

执行这条命令之后,当前的根目录就是真正的系统根目录了。如果系统有任何错误,则可以直接修复。比如 /etc/inittab 文件丟失了。这时如果我们备份过系统重要文件,那么只需要把备份文件复制到 /etc/ 目录下即可。如果没有备份的文件,就需要从 RPM 包中提取 inittab 文件,然后复制。具体命令如下:

bash-4.1# chroot /mnt/sysimage
\#改变主目录
sh-4.1#cd/root
\#进入root目录。因为默认进入的是/目录,所以如果不进入root目录,那么一会提取的inittab文件会报错
sh-4.1# rpm -qf /etc/inittab
initscripts-9.03.31-2.el6.centos.i686
\#查询一下/etc/inittab文件属于哪个包。如果系统中文件丢失不能查询,则需要通过其他Linux系统查询
sh-4.1# mkdir /mnt/cdrom
\#建立挂载点
sh-4.1# mount /dev/sr0 /mnt/cdrom
\#挂载光盘
sh-4.1# rpm2cpio /mnt/cdrom/Packages/initscripts-9.03.31-2.el6.centos.i686.rpm|cpio -idv ./etc/inittab
\#提取inittab文件到当前目录
sh-4.1# cp etc/inittab /etc/inittab
\#复制inittab文件到指定位置

注意,在执行此命令时不能将文件直接恢复到 /etc/ 目录,只能提取到当前目录,且恢复的文件名称所在路径要写完整的绝对路径。提取文件成功后,将其复制到根分区所在的 /mnt/sysimage/ 目录下的相应位置即可。

系统修复模式是维护 Linux 的有力武器,本节通过两个例子讲解了它的应用方法,希望能够给读者一点启示。解决 Linux 系统启动的故障,必须充分理解 Linux 的引导过程,才能够对故障进行有效的判断和处理。

目录
相关文章
|
6月前
|
Ubuntu Linux Anolis
Linux系统禁用swap
本文介绍了在新版本Linux系统(如Ubuntu 20.04+、CentOS Stream、openEuler等)中禁用swap的两种方法。传统通过注释/etc/fstab中swap行的方式已失效,现需使用systemd管理swap.target服务或在/etc/fstab中添加noauto参数实现禁用。方法1通过屏蔽swap.target适用于新版系统,方法2通过修改fstab挂载选项更通用,兼容所有系统。
528 3
Linux系统禁用swap
|
6月前
|
Linux
Linux系统修改网卡名为eth0、eth1
在Linux系统中,可通过修改GRUB配置和创建Udev规则或使用systemd链接文件,将网卡名改为`eth0`、`eth1`等传统命名方式,适用于多种发行版并支持多网卡配置。
1052 3
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
638 3
Linux系统初始化脚本
|
7月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
465 18
|
6月前
|
安全 Linux Shell
Linux系统提权方式全面总结:从基础到高级攻防技术
本文全面总结Linux系统提权技术,涵盖权限体系、配置错误、漏洞利用、密码攻击等方法,帮助安全研究人员掌握攻防技术,提升系统防护能力。
624 1
|
6月前
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
1200 1
|
7月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
2010 10
|
缓存 Linux 测试技术
安装【银河麒麟V10】linux系统--并挂载镜像
安装【银河麒麟V10】linux系统--并挂载镜像
7590 0
|
关系型数据库 MySQL Linux
卸载、下载、安装mysql(Linux系统centos7)
卸载、下载、安装mysql(Linux系统centos7)
545 0
|
Linux
手把手教会你安装Linux系统
手把手教会你安装Linux系统
320 0