目录
一.引导过程
-
加载BIOS的硬件信息,获取第一个启动设备
-
读取第一个启动设备MBR的引导加载程序(grub)的启动信息
-
加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
-
核心执行init程序,并获取默认的运行信息
-
init程序执行/etc/rc.d/rc.sysinit文件,重新挂载根文件系统
-
启动核心的外挂模块
-
init执行运行的各个批处理文件(scripts)
-
init执行/etc/rc.d/rc.local
-
执行/bin/login程序,等待用户登录
-
登录之后开始以Shell控制主机
综上所述:操作系统的引导过程分为五步:
1.bios 开机自检,硬件没问题,就继续下一步,根据bios中第一启动项的设置,去找操作系统(硬盘 外接设备 网卡)
2.mbr:过渡到mbr阶段,是引导的第一阶段,由于该阶段程序不完整,会引导你找到下一阶段完整的引导器
3.grub:通过grub程序中的配置文件找到操作系统
4.kernel :加载内核文件并启动内核
5.启动第一个程序 :init
二.服务
2.1 systemd服务
systemd新特性
-
系统引导时实现服务并行启动
-
按需启动守护进程
-
自动化的服务依赖关系管理
-
同时采用socket式与D-Bus总线式激活服务
-
socket与服务程序分离
-
向后兼容sysv init脚本
-
使用systemctl 命令管理,systemctl命令固定不变,不可扩展,非由systemd启动的服务,
-
systemctl无法与之通信和控制
-
系统状态快照
systemd 核心概念:unit
unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听、socket、保存的系统快照以及其它与init相关的信息。
2.2 service文件
2.2.1 service文件 格式说明:
-
以 “#” 开头的行后面的内容会被认为是注释
-
相关布尔值,1、yes、on、true 都是开启,0、no、off、false 都是关闭
-
时间单位默认是秒,所以要用毫秒(ms)分钟(m)等须显式说明
service unit file文件通常由三部分组成:
-
[Unit]:定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等
-
[Service]:与特定类型相关的专用选项;此处为Service类型
-
[Install]:定义由“systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到的一些选项
2.2.2Unit段的常用选项
unit 部分主要用于描述服务的依赖关系、启动顺序、冲突关系等元数据配置项。
常见的配置项包括:
常用选项 | 作用 | 示例 |
---|---|---|
Description | 描述信息 | Description=web server |
After | 定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反 | After=nginx.service |
Before | 定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与After相反 | Before=nginx.service |
Requires | 依赖到的其它units,强依赖,被依赖的units无法激活时,当前unit也无法激活 | Requires=mysql.service |
Wants | 依赖到的其它units,弱依赖 | Wants=mysql.service |
Conflicts | 定义units间的冲突关系 | Conflicts=mysql.service |
Documentation | 指定与服务相关的文档位置,例如手册、在线文档、帮助链接等。可以包含 URL 或文件路径。 | Documentation=http://exple.com |
Alias | 为服务定义别名,系统可以通过别名来引用该服务。常用于创建快捷方式或简化服务 | Alias=webapp.service |
2.3 systemctrl管理服务
systemctl start 服务 启动服务
systemctl restart 服务 重启服务
systemctl reload 服务 重新加载配置文件
systemctl enable 服务 开机自启服务
systemctl enable --now 服务 开机自启服务并立即启动
systemctl disable 服务 关闭自启服务
systemctl disable --now 服务 关闭自启服务并立即停止
systemctl status 服务 服务运行状态
2.4 init级别
1、init 0级别
init 0是关机
2、init 1级别
init 1是单用户安全模式
3、init 2 3 4级别
init 2、init 3 、init 4都是纯字符界面,但是init 2 和init 4各缺乏一些功能,所以常用的是init 3级别
4、init 5级别
init 5是图形化界面
5、init 6级别
init 6是重启
三.修复mbr分区(centos 7)
#备份MBR分区表
dd if=/dev/sda of=/data/dpt.img bs=1 count=64 skip=446
scp /data/dpt.img 10.0.0.102:
#破坏MBR分区表
dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
#无法启动
reboot
#用光盘启动,进入rescue mode,选第3项skip to shell
#配置网络
#ifconfig ens33 10.0.0.8/24
#ip a a 10.0.0.8/24 dev ens33
#scp 10.0.0.102:/root/dpt.img ./
#恢复MBR分区表
#dd if=dpt.img of=/dev/sda bs=1 seek=446
#reboot
四.修复grub分区(centos)
rm -rf /boot/grub2/grub.cfg 配置文件
#模拟删除grub.cf 文件
进入急救模式,选择1 继续
chroot /mnt/sysimage
#进入急救模式后,更改环境
grub2-install /dev/sda
#重新建立加载sda分区 重新
grub2-mkconfig -o /boot/grub2/grub.cfg
#重新构建grub菜单配置文件