一、系统的启动过程
Centos6:过程可以分为5个阶段(串行加载):
-
1.内核的引导。
当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘或光盘)来启动。
操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。
-
2.运行 init。
运行 init
init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的父进程(相当于7系统中的systemd),没有这个进程,系统中任何进程都不会启动。
init 程序首先是需要读取配置文件 /etc/inittab。
运行级别
许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。
init进程的一大任务,就是去运行这些开机启动的程序。
但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。
Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。
-
3.系统初始化。
启动相应的程序,如:设置主机名、配置网络、装载服务等......因此,初始化就要启动或执行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本,/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些连接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。
-
4.建立终端 。
这时基本系统环境已经设置好了,各种守护进程也已经启动了。
init接下来会打开6个终端,以便用户登录系统。在inittab中的以下6行就是定义了6个终端:
1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6
但对我们来说都用的远程终端,因此,这六个可以忽略。
-
5.用户登录系统。
接下来加载用户的登陆程序,然后到了我们登陆系统的时候了,之后加载shell界面。
6.Centos7的启动流程(并行加载):
二、运行级别
1.Centos6有7个运行级别(runlevel):
- 运行级别0:系统停机或关机状态(系统默认运行级别不能设为0,否则不能正常启动)
- 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
- 运行级别2:多用户状态(没有NFS),不使用。
- 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
- 运行级别4:系统未使用,保留
- 运行级别5:图形化界面
- 运行级别6:系统正常关闭并重启(默认运行级别不能设为6,否则不能正常启动)
[root@oldzts16:19:02 ~]# runlevel N 3 #N表示上一次运行的级别 #3表示现在的运行级别 切换运行级别: [root@oldzts16:19:19 ~]# init 5 [root@oldzts16:20:06 ~]# runlevel 3 5 永久操作 修改/etc/inittab
2.Centos7运行级别(名称变成target):
Cento7里0-6运行级别的名称:
system V init运行级别 systemd目标名称 作用 运行级别0: runlevel0.target -> poweroff.target 关机 运行级别1 runlevel1.target -> rescue.target 单用户模式 运行级别2 runlevel2.target -> multi-user.target 多用户模式 运行级别3 runlevel3.target -> multi-user.target 终端模式 运行级别4 runlevel4.target -> multi-user.target 未使用 运行级别5 runlevel5.target -> graphical.target 图形模式 运行级别6 runlevel6.target -> reboot.target 重启
os7系统下运行级别的查看和切换:
为了os6的用户方便使用,os6系统的查看级别和切换级别的方式os7里面也可以使用
查看当前的运行级别:
[root@oldboyedu ~]# systemctl get-default
multi-user.target
修改系统下次启动时的运行级别的运行级别:
[root@oldboyedu ~]# systemctl set-default graphical.target
[root@oldboyedu ~]# systemctl get-default
graphical.target
systemd
#启动服务 systemctl start
[root@oldboyedu ~]# systemctl start nginx.service
#停止服务 systemctl stop
[root@oldboyedu ~]# systemctl stop nginx.service
#重启服务 systemctl restart
[root@oldboyedu ~]# systemctl restart nginx.service
#重载服务 systemctl reload
[root@oldboyedu ~]# systemctl reload nginx.service
#查看服务 systemctl status
[root@oldboyedu ~]# systemctl status nginx.service
#开机启动服务 systemctl enable
[root@oldboyedu ~]# systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
#取消开机启动服务 systemctl disable
[root@oldboyedu ~]# systemctl disable nginx.service
Removed symlink /etc/systemd/system/multi-user.target.wants/nginx.service.
#查看下次启动是开启还是关闭 systemctl is-enabled
[root@oldboyedu ~]# systemctl is-enabled nginx.service
disabled
3.单用户模式
1.确保系统正常,能正常通过引导进入系统
- 配置文件错误导致无法启动
- 忘记ROOT密码(我们可以通过快照或者单用户系统恢复)
1、重新启动或开启CentOS7.6系统,在选择进入系统的Grub菜单界面如下图3.1
根据提示按“e”小写字母进入编辑界面,如下图所示:
2.然后,要按方向键向下键(否则可能看不到想要找的行),找到以字符串“Linux16”开头的行,将光标移动到该行的结尾,然后输入“enforcing=0 init=/bin/bash”,如下图3.2所示:
注:如果不确定系统是否开启了Selinux或者刚装完没有修改过的系统,则最好加上enforcing=0,此命令是为了关闭Selinux。
3.图中的“mount-o rw,remount/”命令是重新挂载根目录为可写状态(rw表示可写,remount是重新挂载),在单用户模式下默认根文件系统是处于只读状态。
4.配置完成后,根据界面下面的英文提示按“Ctrl-x”组合键以单用户模式启动Linux如下图3.3所示:
5.成功后进入正常登录系统时输入密码的界面,此时再输入刚才修改的密码就可以成功登录了