Linux操作系统引导过程
引导过程总览
-
开机自检(BIOS,基本输入输出系统)——》MBR引导——》GRUB菜单——》加载内核(kernel)——》init进程初始化
-
UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)
- 一个现代、灵活且可扩展的接口,代替传统的BIOS启动过程
- 支持更大的磁盘容量
- 更快的启动速度
- 支持安全启动
- 支持从网络启动
- 更好的硬件兼容性
- 支持图形用户界面
-
MBR(Master Boot Record,主引导记录)
- 第一个扇区(0磁道0扇区,通常是512字节)
- 引导加载程序(boot loader):446字节(1--446)
- DPT:64字节(447--510)
- 每16个字节负责保存一个分区的信息
- 4个分区
- 结束标识55aa:2个字节(511--512)
-
GRUB(GRand Unified Boot loader)
- 多操作系统支持
- 模块化设计
- 强大的配置文件
- 图形界面
- 脚本支持
- 加密支持
- 与 UEFI 兼容
- 跨平台兼容性
-
Kernel
- 内核会进行一系列的初始化操作
-
init进程
- 由Linux内核加载运行/sbin/init程序
- init进程是系统中第一个进程
- init进程的PID(进程标记)号永远为1
-
Sstemd
- Systemd是Linux操作系统的一种init软件
- CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit
- CentOS7中运行的第一个init进程是/lib/systemd/systemd
-
Systemd单元类型
单元类型 | 扩展名 | 说明 |
Service | .service | 猫述一个系统服务 |
Socket | .socket | 描述一个进程间通信的套接字 |
Device | .device | 描述一个内核识别的设备文件 |
Mount | .mount | 描述一个文件系统的挂载点 |
Automount | .automount | 描述一个文件系统的自动挂载点 |
Swap | .swap | 描述一个内存交换设备或交换文件 |
Path | .path | 描述一个文件系统中文件或目录 |
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 | 重新启动,使用该级别时将会重启主机 |
命令 | 说明 |
runlevel | 查看当前系统的运行级别 |
systemctl get-default | 查看当前系统默认运行级别 |
systemctl start sshd | 启动该服务 |
systemctl stop sshd | 停止该服务 |
systemctl restart sshd | 重启该服务 |
systemctl status sshd | 查询该服务状态 |
systemctl enable sshd | 启用该服务,重启后也是开启状态 |
systemctl disable sshd | 禁用该服务,重启后也不会开启 |