Linux的启动方式通常有普通模式,安全模式(单用户模式)和救援模式三种。普通模式是系统的默认启动方式。安全模式和救援模式通常用来进行系统修复。

普通模式

Linux系统默认以普通模式启动,普通启动模式中分为七个级别

#   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 (graphical mode)
#   6 - reboot (Do NOT set initdefault to this) 

0 为停机,机器关闭。即开机之后马上又关机
1 为单用户模式,就像Win9x下的安全模式类似。
2 为多用户模式,但是没有NFS支持。
3 为完整的多用户模式,是标准的运行级。
4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5 就是X11桌面模式,进到X Window系统了。
6 为重启,运行init 6机器就会重启。

0和6一般不用;运行startx可启动到级别5。如果要修改启动模式,需要以管理员身份进入Linux,修改文件:/etc/inittab。找到“id:5:initdefault:”,其中的5就是X-Window,为默认的运行级别,一般我们把5改为3即可默认以字符模式启动系统。

永久切换字符/图形启动模式

CentOS默认启动模式的设置保存在/etc/inittab配置文件中,通常通过下面的命令修改默认启动模式。

#查看当前默认启动模式,字符模式为multi-user.target,图形模式为graphic.target
systemctl get-default

#设置字符/图形启动模式
systemctl set-default multi-user.target
systemctl set-default graphic.target

#重启系统reboot 或 init 6
reboot
init 6

安全模式(单用户模式)

Linux 的单用户模式有些类似 Windows 的安全模式,只启动最少的程序用于系统修复。在单用户模式(运行级别为 1)中,Linux 引导进入根 Shell,网络被禁用,只有少数进程运行。单用户模式可以用来修改文件系统损坏、还原配置文件、移动用户数据等。CentOS7和之前的CentOS系统进入安全模式的方式是不同的。我们分别介绍。

CentOS6-系统进入安全模式

CentOS6进入单用户模式比较简单,重新启动后在启动界面任意按一个字符,进入选择启动项菜单->a->输入S,s,single,1中的任意一个即可进入单用户模式。

重启服务器,在启动菜单(GRUB)读秒界面按e键进入编辑模式
在GRUB编辑界面,用上下键移动到kernel行,按e进入行编辑模式
在行编辑界面,在行末尾键入s,S,1,或者single
在末尾键入s,S,1,或者single,按回车返回上一界面,按B键启动安全模式

CentOS7进入安全模式

CentOS7进入单用户模式,和CentOS5,6系列不同,有点复杂,同样进入启动菜单->e->找到linux16开头的行,删除rhgb和quiet,同时在后面添加init=/sysroot/bin/sh->重新以可读可写方式挂载/分区.

启动系统,并在GRUB界面读秒时,按下e键进入编辑模式
按照标记修改linux16开头的行

按照提示,使用Ctrl+X启动系统进入安全模式。由于Linux系统的root目录实际路径为/sysroot, 所以进入安全模式后,应该将根目录切换到此目录下。

chroot /sysroot
如果在上一步未修改ro为rw,则执行mount -o remount,rw /,挂在文件为可写模式

进入安全模式后,即可进行诸如修改文件,修改系统密码等操作。因为CentOS7受SELinux的安全控制,所以需要创建relabel标记,如上图。在系统重启时,重新标记修改过的文件。

系统重启时,如果报错“SELinux is preventing *** from ***”, 这大概率是由于CentOS安全模式重启前,未标记relabel导致文件标签不匹配所致。修复方法为:

# 在重启之前 创建relabel标记
touch /.autorelabel
reboot #或者init 6

# 若忘记创建relabel标记,则需要重新进入安全模式,创建relabel标记后重新启动。

救援模式

救援模式是一种通过外部系统访问系统内数据的模式。通常在GRUB设置了密码,无法通过安全模式进入系统的情况下使用。救援模式可以通过U盘或者光驱启动。通过U盘启动需要制作启动U盘,具体制作过程有很多博文作为参考,此处不详述。

首先启动系统,在BIOS启动等待界面,按下F2进入BIOS设置界面。在Boot标签页下,将对应的设备项移动到最上方,代表优先从此设备启动。

将外部系统的启动设备移动到最上方,优先启动

设置完成后,按F10保存并重新启动系统。此时会加载外部设备中的系统,选择救援模式(Rescue installed system)。

选择救援模式启动外部设备中的系统

一路设置默认语言,点击OK,最后选择Shell,进入救援模式。进入救援模式后,需要加载原系统的分区。

#进入挂在分区
cd /mnt/sysimage/
#切换根目录
shchroot /mnt/sysimage/
#进行修复操作,如修改密码等
#...
#退出到外部设备系统中
exit
#重启
reboot # 或者 init 6

如果外部系统是CentOS7系统,在外部系统进入界面选择Troubleshooting选项,并在下一个页面选择Rescue a CentOS Linux system,回车,等待系统启动。系统启动后,选择1进入shell。类似于CentOS6-的系统,此处需要使用chroot /mnt/sysimage命令切换到原来的系统分区。此时,就可以对CentOS7系统进行修复操作了。

修复完成后,还需要进入BIOS,将BOOT的设备顺序还原,防止每次启动系统都会从外部设备载入。