系统修复模式
1 单用户模式
Linux 的单用户模式有些类似 Windows 的安全模式,
只启动最少的程序用于系统修复。在单用户模式(运行级别为 1)中,Linux 引导进入根 shell,网络被禁用,只有少数进程运行。单用户模式可以用来修改文件系统损坏、还原配置文件、移动用户数据等。
1)如何进入单用户模式
2)单用户模式常见的错误修复
我们已经进入单用户模式了,那么我们在单用户模式中主要可以修复哪些系统错误呢?我们举几个例子:
☆遗忘 root 密码
这是管理员最容易犯的错误,那么应该如何修复呢?当然是使用单用户模式进行修复 了,进入单用户模式最大的特点就是不需要输入用户名和密码就能登录。既然已经登录 了单用户模式,那么直接给 root 用户设定新密码即可。命令如下:
[root@localhost /]# passwd root
☆修改系统默认运行级别
如果我们把系统的默认运行级别修改错误,比如改为了 0 或 6,系统就不能正常启动了。这时也可以利用单用户模式进行修复,只要直接修改默认运行级别配置文件/etc/inittab,把系统默认运行级别修改回来即可。命令如下:
[root@localhost /]# vi /etc/inittab
id:3:initdefault:
#把默认运行级别修改为 3 或 5。注意系统的默认运行级别只能使用 3 或 5
绝大多数系统错误都可以通过单用户模式进行修复,理论上是只要能够进入单用户模式,那么系统错误就可以被单用户模式修复。当然判断系统到底是哪里出现了问题,是需要不断的经验积累的。
2 光盘修复模式
1)如何进入光盘修复模式
首先你需要有系统光盘,或系统修复光盘。我们这里只需要把 CentOS6.x 的第一张光盘放入光驱,然后重启系统。修改 BIOS 的启动顺序,让系统从光盘启动。就会看到如图 所示的光盘启动界面:
2)光盘修复模式常见的错误修复
我们在光盘修复模式中主要可以修复什么错误呢?其实能在单用户模式中修复的错误,都能在光盘修复模式中修复。当然还可以修复一些在单用户模式下无法修复的错误,我们举几个例子:
☆重要系统文件丢失,导致系统无法启动
如果系统中的重要系统文件丢失,当然会导致系统无法正常启动。这时也可以利用光盘修复模式修复。我们假设把/etc/inittab 文件丢失了,我们通过系统启动过程知道这个文件是定义系统默认运行级别的,如果丢失了这个文件,系统当然不能正常启动,这时就需要进入光盘修复模式中了。然后需要利用 chroot 命令。命令格式如下:
[root@localhost ~]# chroot 目录名
chroot 命令的作用是“change root directory”改变系统根目录的意思。也就是可以把根目录暂时移动到某个目录当中。我们是通过光盘启动的光盘修复模式,所以我们现在所在的根目录不是真正的系统根目录,而是光盘的模拟根目录。系统根目录被当成外来设备放在了/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 目录下相应位置即可。