一、引导过程
引导过程总览
1.1开机自检
服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。网络启动加载网络批量pxe。
- 硬件启动POST:加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘等硬件情况的检测。
- 主板的ROM:保存着有关计算机系统最重要的基本输入输出程序,系统信息设置,开机加电自检程序和系统启动自举程序等。
1.2MBR引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR记录中的引导信息调用启动菜单(如GRUB)
总结:运行放在MBR扇区里的启动GRUB引导程序
1.3GRUB菜单
对于 Linux 操作系统来说,GRUB(统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)准备加载Linux内核文件,然后将系统控制权转交给内核。需要注意的是,CentOS 7采用的是GRUB2启动引导器。
总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置。
grub功能和组成
bootloader:引导加载器,引导硬件去找到内核(操作系统的核心)
- Windows:ntloader,仅是启动OS
- Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开、并把系统控制权移交给内核
Linux的bootloader
- LILO:LInux LOader,早期的bootloader,功能单一
- GRUB:GRand Unified Bootloader,CentOS 5,6 ;GRUB 0.97,GRUB Legacy,CentOS 7以后使用GRUB 2.02
GRUB 启动阶段
(1)primary boot loader:
- 1st stage:MBR的前446个字节引导硬件去找内核
- 1.5 stage:MBR之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统
(2)secondary boot loader:2nd stage,分区文件/boot/grub2/grub.cfg
1.4加载linux内核,操作系统调度硬件
Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过程。在 CentOS 系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。
总结:把内核和镜像文件系统加载到内存中可以使用
1.5init进程初始化这是linux运行的第一个程序
为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init进程负责完成一系列的系统初始化过程,最后等待用户进行登录。
总结:加载硬件驱动程序,内核把init进程加载到内存中运行
- 传统init依赖于串行执行Shell脚本启动服务,导致效率低下,系统启动速度较慢需要排队启动。
- systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度大家一起。
二、服务
2.1systemd服务
systemd服务:
- 对比5和6可以解决依赖关系并行启动
- 按需启动
- 自动解决依赖关系
负责在系统启动或运行时,激活系统资源,服务器进程和其它进程
Systemd新特性
- 系统引导时实现服务并行启动
- 按需启动守护进程
- 自动化的服务依赖关系管理
- 同时采用socket式与D-Bus总线式激活服务
- socket与服务程序分离
- 向后兼容sysv init脚本
- 使用systemctl命令管理systemctl命令固定不变,不可扩展,非由systemd启动的服务
- systemctl无法与之通信和控制
- 系统状态快照
systemd 核心概念:
- unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听
- socket保存的系统快照以及其它与init相关的信息
2.2修复MBR分区
- 备份mbr引导扇区到其他磁盘
- 模拟破坏mbr引导扇区
- 引导镜像急救模式进行mbr扇区恢复
实验1:没有出错情况下
出错情况下:
1 总结: 2 1.先备份第一块硬盘的前512字节,不要备份再同一块硬盘上 3 命令:dd if=/dev/sda of=/mnt/mvr.bak conut=1 bs=512 4 5 2.模拟破坏前512字节 6 命令:dd if=/dev/zero of=/dev/sda conut=1 bs=512 7 hexdump -C -n 512 /dev/sda(看sda前512字节) 8 9 3.重启 10 选第三个选项,再选第二个文件,输入1回车,回车 11 创建空文件夹,挂载到空文件夹上 12 把文件夹复制到sda下
2.3修复GRUB分区
实验2:重新构建grub文件
出错情况:
- 将整个boot文件删除
- 将/boot/grub2文件删除
- 将/boot/grub2/grub.cfg文件删除
1 总结: 2 rm -rf /boot/grub2/grub.cfg #模拟删除grub.cf 文件 3 进入急救模式,选择1 继续 4 chroot /mnt/sysimage #进入急救模式后,更改环境 5 grub2-install /dev/sda #重新建立加载sda分区 6 grub2-mkconfig -o /boot/grub2/grub.cfg #重新构建grub菜单配置文件 7 exit #退出当前系统 8 reboot #重启
2.4修改密码
实验3:有光驱前提下
没有光驱的情况下重启出现下面的图片:
补充:centos6修改密码
启动时按上下键---->按a---->输入s 空格 1进入单用户模式---->passwd修改密码
2.5启动关闭服务
1 开启关闭服务: 2 查看服务状态:systemctl status 服务名 3 启动服务:systemctl start 服务名 4 关闭服务:systemctl stop 服务名 5 重新加载服务:systemctl reload 服务名 6 重启服务:systemctl restart 服务名 7 立刻开机自启:systemctl enable --now 服务名 8 立刻关闭服务开机不自启:systemctl disable --now 服务名标签:引导,服务,GRUB,启动,systemctl,内核,linux From: https://www.cnblogs.com/feizirui/p/16767534.html