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


    如果系统错误已经导致单用户模式不能进入了,那么是否需要重新安装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 的引导过程,才能够对故障进行有效的判断和处理。

  • 相关阅读:
    LOJ 2553 「CTSC2018」暴力写挂——边分治+虚树
    hdu 1028 & hdu 1398 —— 整数划分(生成函数)
    bzoj 4827 [Hnoi2017] 礼物 —— FFT
    bzoj 4503 两个串 —— FFT
    bzoj 3527 [Zjoi2014] 力 —— FFT
    bzoj 3160 万径人踪灭 —— FFT
    bzoj 2194 快速傅立叶之二 —— FFT
    bzoj 2179 FFT快速傅立叶 —— FFT
    洛谷 P3803 多项式乘法(FFT) —— FFT
    CF 1009 F Dominant Indices —— 长链剖分+指针
  • 原文地址:https://www.cnblogs.com/qinlulu/p/16224962.html
Copyright © 2020-2023  润新知