『学了就忘』Linux启动引导与修复 — 74、Linux系统的修复模式(光盘修复模式)
1、光盘修复模式概念
Linux系统的光盘修复模式,也叫光盘救援模式,或者叫光盘安全模式都可以。
Linux系统的最终修复模式就是光盘修复模式(进入光盘下的安全模式启动系统),光盘修复模式会绕开系统的硬盘启动,也就是说拿光盘做为启动盘进行系统的启动,这样的话硬盘上所有的内容都没有被系统加载,最后把硬盘作为数据盘,挂载到光盘系统下,就可以修改系统硬盘上的数据了。通过光盘修复模式登陆到系统后,一些系统上的错误,理论上都可以进行修复(理论上)。
注意:
光盘修复模式的前提也是拿到本机,虽然Linux系统有修复模式,但是你最好能不用就别用,我们不应该把宝压在修复模式上,而是应该压在完整的操作规范,合理的权限划分等这些方面。不要随意操作,不要想着出现问题再进行修复,只要是修复就代表系统就已经出现问题了。
2、光盘修复模式修复系统问题
(1)准备系统光盘
首先需要有系统光盘,或系统修复光盘。
我们这里只需要把CentOS 6.8的第一张光盘放入光驱,在关机的状态下进行操作。
如下图所示:
(2)进入BIOS
开启虚拟机,选择启动时进入BIOS。
如下图所示:
(3)修改BIOS的启动顺序
修改BIOS的启动顺序,让系统从光盘启动。
1)选择Boot选项
2)光标移动到CD-ROM上
按+
号,向上移动到第一位。
3)选择Exit界面
选择第一选项保存并退出。
(4)进入光盘修复模式
1)系统重新启动后,选择第三项Rescue installed systen
(救援已安装的系统)
稍等一会就会进入到光盘启动系统的设置中。
2)首先选择系统语言。
这里要注意,默认选择English。
这里是Linux系统的纯字符界面,不能选择中文,不支持。
3)键盘默认选择美式键盘。
按tab
键进行切换,按空格或者回车进行确认。
4)光盘安全启动模式是否需要启动网络。
需要你选择,光盘安全启动模式是否需要启动网络。
启不启动都可以,反正光盘修复模式是需要拿到本机进行操作的,选择不启动就很好。
5)在救援模式下需要进行的操作。
需要你选择在救援模式下,你需要进行什么样的操作。
点击Continue
继续。
Continue
:可以对系统进行任何所需的更改,如果要继续此步骤,请选择“继续”。Read-Only
:以只读方式挂载文件系统。Skip
:表示跳出光盘安全模式,直接进行系统安装。Advanced
:高级选项。
如下图所示:
选择OK
选择OK
6)选择通过打开shell的方式进入安全模式。
7)可以看到shell的命令行模式出现了。
上图中可以看到,现在出现的提示符和我们常规的Linux提示符是不一样的。是因为光盘的修复模式中的环境变量和配置文件都没有加载,所以看到bash-4.1#
这样的提示符是正常的。
(5)修复系统
我们是通过光盘启动的光盘修复模式,所以我们现在所在的根目录不是真正的系统根目录,而是光盘的模拟根目录。系统根目录被当成外来设备放在了/mnt/sysimage/
目录中。(重点)
所以,Linux系统真正的根目录,是自动被挂载在/mnt/sysimage/
目录上,我们此时的目录是在光盘的模拟根目录中,我们要切换到/mnt/sysimage/
目录中,来执行我们需要的系统修复工作。
需要执行chroot
命令,chroot
命令的作用是change root directory
改变系统根目录的意思。把我们现在的所在目录移动到真正的系统根目录(换句话说就是把根目录暂时移动到某个目录当中。)。
执行命令:bash-4.1 # chroot /mnt/sysimage/
只要该命令执行完,我所在的访问目录就是真正的系统盘了。
我们可以从上图中看到,执行完bash-4.1 # chroot /mnt/sysimage/
命令后,系统提示符发生了一些变化,还有就是根目录中的内容也发生了变化,执行完命令之后看到的目录中的文件就和我们实际系统中根目录中的文件就一样了。
这个时候你就可以修复原Linux系统中出现的问题了,系统有任何错误都可以直接修复。
比如重要系统文件丢失,导致系统无法正常启动。比如如果忘记了密码,直接执行丢改root用户密码就可以。比如如果系统默认的运行级别修改错了,直接编辑/etc/inittab
文件进行修改就可以了。再比如如果是硬盘信息配置错误导致系统启动不了,修改/etc/fstab
文件就可以。
(6)修复系统实操
我们就拿上边说的重要系统文件丢失,导致系统无法启动来进行修复。
假设把/etc/inittab
文件丢失了,我们通过系统启动过程知道这个文件是定义系统默认运行级别的,如果丢失了这个文件,系统就不能正常启动。
操作流程如下:
- 改变根目录
bash-4.1# chroot/mnt/sysimage
- 进入
root
目录。因为默认进入的是/
目录,如果不进入root
,提取的inittab
文件是会报错。
sh-4.1# cd/root
- 查询
/etc/inittab
文件属于哪个包。如果系统中文件丢失不能查询,需要通过其他Linux
系统查询。sh-4.1# rpm -qf /etc/inittab initscripts-9.03.31-2.el6.centos.1686
- 建立挂载点
sh-4.1# mkdir /mnt/cdrom
- 挂载光盘
sh-4.1# mount /dev/sr0 /mnt/cdrom
- 提取
inittab
文件到当前目录
sh-4.1# rpm2cpio /mnt/cdrom/Packages/ini tscripts-9.03.31-2.el6.centos.1686.rpm cpio -idv ./etc/inittab
- 复制
inittab
文件到指定位置
sh-4.1# cp etc/inittab /etc/inittab
注意:
此命令执行时不能将文件直接恢复至
/etc
目录,只能提取到当前目录下,且恢复的文件名称所在路径要写完整的绝对路径。提取文件成功后,将其复制到根分区所在的/mnt/sysimage
目录下相应位置即可。
(7)总结
在光盘修复模式下,如果你能确认系统到底出现了什么问题,就把它修复回来就好了。怕的就是你也不知道是什么原因出现的系统问题,这样即使你进入了系统的光盘修复模式,也很难进行系统的修复,如果修复不了就只能重装系统了。