一、linux 系统引导过程
1.1 开机自检
服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU(Central Processing Unit,
中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移
交系统控制权,大多时候会移交给本机硬盘。
总结:检测出第一个能够引导系统的设备 比如硬盘或光驱
1.2 MBR引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(Master Boot Record,
主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据
MBR 记录中的引导信息调用启动菜单(如 GRUB)。 总结:运行放在MBR扇区里的启动GRUB引导程序
1.3 GRUB菜单
对于 Linux 操作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是 使用最为广泛的多系统引导器程序。系统控制权传递给 GRUB 以后,将会显示启动菜单给 用户选择,并根据所选项(或采用默认值)加载 Linux 内核文件,然后将系统控制权转交给 内核。需要注意的是,CentOS 7 采用的是 GRUB2 启动引导器。 总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置
1.4 加载 Linux 内核
Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间, 负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过 程。在 CentOS 系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。 总结:把内核和镜像文件系统加载到内存中
1.5 init进程初始化
为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内 存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录 总结:加载硬件驱动程序,内核把init进程加载到内存中运行
二、系统初始化进程 (centos 6和7 的区别)
2.1 centos 6 的引导过程 init 进程
Centos 6 系统启动过程
-
加载BIOS的硬件信息,获取第一个启动设备
-
读取第一个启动设备MBR的引导加载程序(grub)的启动信息
-
加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
-
核心执行init程序,并获取默认的运行信息
-
init程序执行/etc/rc.d/rc.sysinit文件,重新挂载根文件系统
-
启动核心的外挂模块
-
init执行运行的各个批处理文件(scripts)
-
init执行/etc/rc.d/rc.local
-
执行/bin/login程序,等待用户登录
-
登录之后开始以Shell控制主机
2.2 centos 7(systemd进程)
CentOS7 引导顺序
-
UEFi 或 BIOS 初始化,运行 POST 开机自检
-
选择启动设备
-
引导装载程序, centos7 是 grub2
-
加载装载程序的配置文件:/etc/grub.d/(根据此目录下文件设置 grub.cfg) /etc/default/grub(根据此文件设置 grub.cfg) /boot/grub2/grub.cfg
-
加载内核选项
-
加载 initramfs 初始化伪文件系统 (虚拟文件系统,/boot/initramfs 能通过 boot loader 加载到内存中。用于提供启动过程中的重要内核模块。)
-
内核初始化,centos7 使用 systemd 代替 init
-
执行 initrd.target 所有单元,包括挂载/etc/fstab
-
从 initramfs 根文件系统切换到磁盘根目录
-
systemd 执行默认 target 配置,配置文件/etc/systemd/system/default.target
-
systemd 执行 sysinit.target 初始化系统及 basic.target 准备操作系统
-
systemd 启动 multi-user.target 下的本机与服务器服务 inti 3
-
systemd 执行 multi-user.target 下的/etc/rc.d/rc.local
-
Systemd 执行 multi-user.target 下的 getty.target 及登录服务
-
systemd 执行 graphical 需要的服务 init 5
init进程
由 Linux 内核加载运行 /sbin/init 程序
init进程是系统中第一个进程
init进程的PID(进程标记)号永远为1
Systemd
Systemd是Linux操作系统的一种init软件
CentoS7中采用全新的Systemd启动方式,取代传统的SysVinit
CentOS7中运行的第一个init进程是/ib/systemd/systemd
2.3 systemd单元类型
2.4 运行级别所对应的Systemd目标
各个级别的作用:
0 (poweroff.target):关机
1 (rescue.target):单用户模式
2、3、4 (mulit-user.target):多用的文本界面
5 (graphical.target):多用的图形界面
6 (reboot.target):重启
centos6 和 7 运行级别的变化:
在 centOS6 上,我们切换级别使用 init,在 centOS7 上虽然也能使用,但是调用的不再是原来的程序了。 centos7 使用 systemctl isolate name.target 来切换 target
修复MBR扇区故障
1.备份MBR扇区数据到其它磁盘( /dev/sdb1)
2.模拟破坏MBR引导扇区
3.引导界面进入急救模式,从备份文件中恢复MBR扇区数据
先加载好光盘镜像,重启操作系统,
当出现安装向导界面时,选择"Troubleshooting"选项,
再选择"Rescue a CentOS Linux system"选项,进入急救模式
选择“1"选择Continue并按Enter 键继续
再次按Enter 键后将进入带“sh-4.2#"提示符的Bash Shell环境
exit 退出后自动重启
修复GRUB 引导故障
进入急救模式,恢复GRUB引导程序
MBR位于第一 块硬盘( /dev/sda) 的第一个物理扇区处,总共512字节,前446字节是主引导记录,分区表保存在MBR扇区中的第447 -510字节中
模拟对MRB中的GRUB引导程序的破坏,但并不破坏分区表
引导界面进入急救模式,从备份文件中恢复GRUB引导程序
CentOS7遗忘root用户的密码或是重置
1.重启开机按esc,第一行按e在启动GRUB菜单中选择编辑选项,按键 "e" 进入编辑;
2.编辑修改:大约在第16行找到 "ro" 将 "ro" 修改为 " rw init=/sysroot/bin/bash ";
3.按Ctrl+X重启,输入命令进入系统
三、管理服务程序
3.1 systemctl 控制类型
start:启动
stop:停止
restart:重新启动
reload:重新加载
status:查看服务状态
3.2 优化启动过程
systemctl 控制选项 服务名称 常用的选项有三种:
enable:开机自动启动。
disable:开机自动关闭。
is-enabled:查看开机启动状态。
查看 http.service 处于停止状态;设置开机自启动
重启设备后显示 httpd.service 在运行
使用 systemctl is-enabled 程序 可以查看到开机启动状态