目录
一、Linux操作系统引导过程
1.linux开机引导过程
第一步:开机自检
服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。
总结:检测硬件设备,找到能够引导系统的设备,比如硬盘,光盘等
第二步:MBR引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR 记录中的引导信息调用启动菜单(如 GRUB)。
总结:运行MBR扇区里的主引导程序GRUB
第三步:启动GRUB菜单
对于Linux操作系统来说,GRUB(统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核。
CentOS 7 采用的是 GRUB2 启动引导器。
总结:系统读取GRUB配置文件,获取内核的设置和位置,并且在屏幕显示GRUB菜单页面
第四步:加载Linux内核
Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程。
CentOS 7系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。
总结:把内核加载到内存,将系统控制权交接给内核
第五步:init进程初始化
为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init 进程负责完成整个系统的初始化,最后等待用户进行登录。
总结:内核将init进程加载到内存中运行,并且把init进程作为系统的第一个进程
第六步:系统初始化
启动内核模块,执行运行级别的启动脚本,执行/etc/rc.d/rc.local文件里的命令等
2.系统初始化进程
1.init进程
文件位于/sbin/init -> /lib/systemd/systemd
init进程pid号为1(PID为进程标记)
init进程是系统中的第一个进程,是所有进程的父进程
2.进程启动方式
CentOS 7开始的版本默认的启动方式为 systemd,开机服务程序为并行启动,启动效率较快;
CentOS 6及以前的版本的启动方式为sysVint,开机服务程序是通过串行启动/etc/init.d/目录下的shell脚本实现的,这种模式容易阻塞,启动效率较慢
注:CentOS6及以下版本可了解,应用不多
二、运行级别和Systemd单元类型
1.运行级别
一共7个运行级别,0-6,其他0是关机,6是重启,1是单用户模式,234是字符界面的多用户模式,3是最完整的有网络,2是无网络的,4是保留的,5是图形界面的多用户模式
运行级别 | 说明 | Systemd的target |
0 | 关机状态,使用该级别将会关闭主机 | poweroff.target |
1 | 单用户模式,不需要密码验证即可登录系统,多用于系统维护 | rescue.target |
2 | 用户定义/域特定运行级别,默认等同于3 | multi-user.target |
3 | 字符界面的完整多用户模式, |