CentOS的单用户和救援模式

GO

1. CentOS 6


1.1 CentOS 6 的七个运行级别


运行级别的配置文件为 /etc/inittab。查看这个文件,其中有七个运行级别的说明。

  1. cat /etc/inittab 查看该文件的的内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # Default runlevel. The runlevels used are:
    # 0 - halt (Do NOT set initdefault to this)
    # 1 - Single user mode
    # 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
    # 3 - Full multiuser mode
    # 4 - unused
    # 5 - X11
    # 6 - reboot (Do NOT set initdefault to this)
    #
    id:3:initdefault:
  2. 七个运行级别的说明

运行级别 说明
0 关机
1 单用户
2 多用户模式,但没有NFS服务
3 命令行模式
4 预留,没有用
5 图形界面模式
6 重启
  • 默认运行级别的设置
    • /etc/inittab配置文件的最后一行便是用来设置默认运行级别的。
    • id:3:initdefault:

    • 把其中的数字更改,就更改了默认的运行级别
  • 默认是3级别,在命令行下,运行 init 5 就是启动图形模式了。
    • 同理,init 0 为关机,init 6 为重启
    • 要想启动图像,要提前安装好图形的支持,用下面的命令安装:
    • yum groupinstall “Desktop” “X Window System”


1.2. CentOS 6 的单用户模式


单用户相当于Windows里的安全模式,假如忘记了root密码,则进入该模式即可重新修改root密码。按下面的方法进入这种模式(init 1 是进不了的):

  1. 重启Linux,3秒内,按一下回车
  2. 若有设置grub密码,需先按p,输入密码后方可进行后面的操作
    • 此时 CentOS (2.6.32-504.el6.x86_64) 这一行是高亮的,即我们选中的就是这一行,这行的意思是 Linux版本为 CentOS,后面小括号内是内核版本信息。
    • 另外在这个界面里,我们还可以获取一些信息,输入 e会在启动前编辑命令行; 输入 a 会在启动前更改内核的一些参数; 输入 c 则会进入命令行。
  3. 按e,选择第二行,再按e(目的是修改启动参数)
  4. 在最后面加入single或者数字1,再或者大写字母S
  5. 先按回车再按b(boot)
  6. 这样就成功进入单用户模式,我们可以在该模式下修改root 密码。
  7. 说明:如果在Linux的启动参数中,去掉rhgb,则系统在启动过程中就没有进度条了,只显示详细的进程启动

1.3. CentOS 6 的救援模式


救援模式即 rescue,这个模式主要是应用于,系统无法进入的情况。如 grub 损坏或者某一个配置文件修改出错。救援模式相当于Windows的WinPE,是一个内存操作系统。使用方法如下:

  1. 光盘或USB启动,进入系统安装盘启动界面。
  2. 使用上下方向键选择 Rescue installed system 然后回车。语言这一项保持默认,直接回车。
  3. 键盘类型,也默认,直接回车。
  4. 接着让我们设置网络,如果不需要联网直接用 tab 键选择 no,然后回车。
  5. 接下来这一步,提示我们 Rescue 环境将会找到我们已经安装的 Linux 系统,并将其挂载到/mnt/sysimage 下,这一步我们选择 Continue 然后回车。
  6. 回车后,将会看到一个小提示框,它告诉我们 Linux 系统挂载到了/mnt/sysimage,如果想获得 root 环境,需要执行命令 chroot /mnt/sysimage。
  7. 继续回车,又弹出下面的提示。
  8. 再继续回车,此时又出现一个框,有三种模式可以选择:
    • shell 模式会直接进入命令行,可以进行的操作有编辑文件、修改用户密码等;
    • fakd 是诊断模式;
    • reboot 会直接重启;
    • 这一步我们选择第一个 shell 模式,然后回车,进入 root 环境。
  9. 此时还不能操作 Linux 系统上的文件,因为目前还在光盘上的系统上。要想修改原来 Linux 系统上的文件还需要执行一个命令:
    • chroot /mnt/sysimage
  10. 原来的 bash-4.1 变成了 sh-4.1 , 此时我们才可以像在原来的Linux 系统上做一些操作,比如更改 root 密码或者修改某个文件等。任务完成后,需要先exit,才能关机或重启。

2. CentOS 7


2.1. CentOS 7 的emergency模式


这个模式相当与CentOS 6的单用户模式,只不过在 7 版本开始已经不用运行级别这一概念了,所以也就没有了单用户模式。不过,在emergency模式下可以达到之前的单用户模式下的操作目的。

这个模式的使用方法如下:

  1. 重启系统
    • 重启Linux,3秒内,按一下回车
    • 按方向键移动光标,定位在第一行,按字母e编辑它,然后进入另一个界面
    • 移动向下的方向键,把光标定位到linux16开头的行
  2. 进入emergency模式
    • 按向右的方向键,将光标移动到 ro 那里,把 ro 改成 rw init=/sysroot/bin/bash
    • 同时按住Ctrl和x这两个键,系统就会进入该模式了
  3. 修改root密码
    • 首先切换到原始系统,chroot /sysroot/
    • 然后再进行修改密码passwd等操作,若是出现乱码,可以设置语系为英语,LANG=en
    • 修改密码后,需要执行下这个命令: touch /.autorelabel
      • 这个命令一定要写对,否则更改的密码将不能生效
      • 执行这一步的作用是让SELinux生效,如果不执行,所修改的密码不会生效
    • 执行完上述命令后,同时按Ctrl和d键(即等同于输入exit),再进行系统的重启(reboot)。之后就可以用新的密码登陆了

2.2. CentOS 7 的救援模式


CentOS 7 的救援模式的使用方法如下:

  1. 光盘或USB启动进入到安装界面
  2. 进入rescue模式
    • 使用上下方向键选择 Troubleshooting 回车进入另一界面
    • 使用上下方向键选择 Rescure a CentOS Linux system,连续敲两次回车进入下一界面
    • 这一界面里会有很多提示。按照提示,选择第1项,所以输入数字”1”,回车后再次回车,由出现了一个界面
    • 这一界面告诉我们:原始系统已挂载到了 /mnt/sysimage,若要进入原始系统,需要执行 chroot /mnt/sysimage 命令
    • 执行命令后,进行救援工作。
    • 救援工作完成后,退出原始系统(exit或Ctrl+D),然后重启系统。

3. Systemd初始化进程

红帽RHEL7系统已经替换掉了以往熟悉的初始化进程System V init,正式采用全新的Systemd初始化进程服务。systemd初始化进程服务采用了并发启动机制,开机速度得到了不小的提升。既然RHEL7系统选择了systemd初始化进程服务,随之也没有了运行级别这个概念,Linux系统启动时要做大量的初始化工作——例如挂在文件系统和交换分区、启动各类进程服务等等操作,这些都可以看作是一个个的单元(Unit),即用目标(target)代替了运行级别这个概念,区别如下表所示:

sysvinit运行级别 systemd目标名称 作用
0 runlevel0.target,poweroff.target 关机
1 runlevel1.target,rescue.target 单用户模式
2 runlevel2.target,multi-user.target 等同于级别3
3 runlevel3.target,multi-user.target 多用户的文本界面
4 runlevel4.target,multi-user.target 等同于级别3
5 runlevel5.target,graphical.target 多用户的图形界面
6 runlevel6.target,reboot.target 重启
emergency emergency.target 紧急Shell

如果想要将系统默认的运行目标修改为”多用户,无图形”的模式,那么这可以用ln命令把该文件链接到/etc/systemd/system/目录下的default.target文件即可,命令如下:
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target


OK

0%