一、Centos7引导过程总览
- 开机加电自检(BIOS):当服务器上电之后,根据主板上bios的设置进行硬件的自检,如cpu、内存等并初始化,它找到可引导的硬盘(硬盘标识AA55或者55AA)之后把控制权交给MBR
- MBR引导:硬盘启动时根据MBR的设置,将系统控制权传递给包含系统操作引导文件的分区;或者直接根据MBR 记录中的引导信息调用启动菜单
- GRUB内核菜单:系统控制权传递给GRUB 以后,将会显示提供用于选择的系统内核版本,并根据选项加载linux内核文件
- 加载内核(kernel):系统引导器程序会从本地硬盘中加载内核以及内存文件系统 initramfs,其中包含启动时所有必要的硬件内核模块、初始化脚本等
- init/systemd进程初始化:在initramfs中找到驱动程序的所有硬件,然后作为PID 1从initramfs执行/lib/systemd/systemd
- systemd启动initrd.target中所有单元,包括挂载/etc/fstab
- 然后从initramfs根文件系统切换到磁盘根目录并且systemd启动默认target(字符界面还是图形化界面)也就是/etc/systemd/system/default.target ,最后等待用户登陆
- init 是Centos6 缺点:初始化按服务的序列运行,速度慢
- Systemd 是Centos7
- 优点:并行处理所有服务,加速开机流程,对于不依赖的服务不需要按次序启动,可以同时启动
- 立即响应,因为systemd常驻于内存中
- 服务依赖性的自我检查,systemd会自动启动服务需要的依赖服务
- 功能分类:定义所有的服务为一个服务单位unit,加入到不同的服务类型中,如service、target
二、Systemd 单元类型
单元类型 |
扩展名 |
说明 |
Service |
.service |
描述一个系统服务 |
Socket |
.socket |
描述一个进程间通信的套接字 |
Device |
.device |
描述一个内核识别的设备文件 |
Mount |
.mount |
描述一个文件系统的挂载点 |
Automount |
.automount |
描述一个文件系统的自动挂载点 |
Swap |
.swap |
描述一个内存交换设备或交换文件 |
Path |
.paht |
描述一个文件系统中文件或目录 |
Timer |
.timer |
描述一个定时器(用于实现类似cron的调度任务) |
Snapshot |
.snapshot |
用于保存一个systemd的状态 |
Scope |
.scope |
使用systemd的总线接口以编程的方式创建外部进程 |
Slice |
.slice |
描述居于Cgroup的一组通过层次组织的管理系统进程 |
Target |
.target |
描述一组systemd的单元 |
三、运行级别所对应的 Systemd 目标
运行级别 |
Systemd的target |
说明 |
0 |
target |
关机状态,使用该级别时将会关机 |
1 |
rescue.target |
单用户模式,不需要密码验证即可登录系统,多用于系统维护 |
2 |
multi-user.target |
用户定义/域特定运行级别。默认等同于3 |
3 |
multi-user.target |
字符界面的完整多用户模式,大多数服务器主机运行在此级别 |
4 |
multi-user.target |
用户定义/域特定运行级别。默认等同于3 |
5 |
graphical.target |
图形界面的多用户模式,提供了图形桌面操作环境 |
6 |
reboot.target |
重新启动,使用该级别时将会重启主机 |
服务启动的配置文件及Systemctl
- /etc/systemd/system/ 该目录存放不同级别的开启自启服务
- /run/systemd/system/ 系统执行过程中所产生的服务脚本所在目录
- /usr/lib/systemd/system 每个服务最主要的启动脚本设置
/usr/lib/systemd/system 目录下 sshd.service 配置文件内容
[root@localhost system]# vim sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network