# 本章练习

# 通过光盘进入救援模式

利用光盘来处理系统的错误导致无法开机的问题:

  • 目标:了解救援光盘的功能
  • 前提:了解 grub 的原理,并且知道如何使用 chroot 功能
  1. 利用光盘开机时,看到开机项目后,选择 Troubleshooting -> Rescur a CentOS system 进入救援模式

  2. 该光盘会找出目前你的主机里面与 CentOS 7.x 相关的操作系统,并将该操作系统汇总成一个 chroot 的环境等待你的处理,有 3 个模式可以选择:

    1. continue:继续成为可擦写挂载
    2. Read-Only:将检测到的操作系统变成只读挂载
    3. Skip:忽略当次救援动作

    这里我们需要选择 continue

  3. 如果你安装了多个 CentOS 7.x 操作系统(多重操作系统),那就会出现选单让你选择想要处理的根目录是哪一个

  4. 然后系统会将检测到的信息通知你,一般来说可能会再屏幕上显示类似 chroot /mnt/sysimage 的信息,此时按下确认键开始挂载

  5. 确认之后,会给你一个 shell ,可以先用 df 看下挂载情况是否正确,若不正确,你可以自行手动挂载其他未被挂载的 partition。等一切搞定后,利用 chroot /mnt/sysimage 来转成你原本的操作系统环境。

救援模式环境就准备好了,处理完问题之后,就可以重新开机了

# 简答题部分

  1. 忘记了 root 密码,使用 rd.break 的核心参数重新启动,并且修改完 root 密码,重新启动后可以顺利开机,但是使用所有的账户都无法登陆系统,是为什么?

    最有可能的原因是 /.autorelabel 没有建立,且 SELinux ENforcing 的模式的原因;这样的情况,就只能重新进入救援模式,增加该文件,让系统开机重新恢复默认的安全本文

  2. 万一不幸,一些模块无法让 Linux 核心捕捉到,但是偏偏这个核心就能支持该模块,需要让该模块在开机时就被加载,如何做?

    应该写入 /etc/modprobe.d/*.conf 文件,他是模块加载相关的地方,还可以写入 /etc/sysconfig/modules/*

  3. 如何在 grub2 开机过程中,指定已 multi-user.target 来开机

    在开机进入 boot loader 后,利用 grub shell 功能,即按 e 键进入编辑模式,找到 linux16 的后面增加 systemd.unit=multi-user.target 就能够进入纯文本模式了

  4. 如果不小心先安装 Linux 再安装 Windows 导致 boot loader 无法找到 Linux 的开机选单,如何挽救?

    方法有很多,例如:

    • 借助第三方软件,安装类似 spfdisk 的软件在 MBR 里,因为它同时认识 Linux 与 windows,可以利用它来进入 Linux
    • 使用类似 KNOPPIX 的 Live CD 以光盘开机进入 LInux 之后,再以 chroot 软件切换到根目录,然后重新安装 grub 等 boot loader,同样也可以重新让两个操作系统存在

    总之,原理都是需要知道 MBR、Super block、boot loader 之间的相关性,才能知道怎么做