■ 引导过程总览
开机自检(BIOS) MBR引导MBR引导GRUB菜单加载内核 (kernel)init进程 (初始化)流程: 1. 加载BIOS的硬件信息与进行自我检测,根据BIOS设置来取得第一个可启动的设备 2. 读取并执行第-一个启动设备内MBR的启动引导程序(可以是grub2, 也可以是spfdisk) 3. 根据启动引导程序的设置加载kernel, kernel会开始检测硬件与加载驱动程序 4. 在硬件驱动成功后,kernel会主动调用systemd程序,并以default. target流程启动
systemd执行sysinit. target初始化系统及basic. target准备操作系统 systemd启动multi-user. target下的本机与服务器服务 systemd执行multi-user. target下的/etc/rc. d/rc. local文件 systemd执行multi -user. target下的getty. target及登录服务 systemd执行graphical需要的服务几个专有名称解释: BIOS: 不论是传统BI0S还是UEFI BIOS都会被简称为BIOS MBR:虽然分区表有传统MBR及新式GPT,GPT有保留-一块兼容MBR的区块,因此,都简称MBR 关于内核文件:内核文件存放路径: /boot/vml inuz
■ init进程 ● 由Linux内核加载运行/sbin/init程序 ● init进程是系统中第一个进程 ●init进程的PID (进程标记)号永远为1 ■ Systemd ● Systemd是Linux操作系统的一种init软件 ● CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit ● CentOS7中运行的第一个init进程 是/ib/systemd/systemd
■ 故障原因 ● 病毒、木马等造成的破坏 ● 不正确的分区操作、磁盘读写误操作 ■ 故障现象 ● 找不到引导程序,启动中断 ● 无法加载操作系统,开机后黑屏 ■ 解决思路 ● 应提前作好备份文件 ● 以安装光盘引导进入急救模式 ● 从备份文件中恢复 操作步骤模拟MBR扇区实验 准备工作:
加一块硬盘做实验 进系统查看磁盘 fdisk -1 ##看是否有sdb mkfs -t ext4 /dev/ sdb ###格式化sdb 挂载mount /dev/sdb /opt1、备份MBR扇区数据 dd if=/dev/sda of=/opt/ mbr. bak bs=512 count=1 2、模拟MBR扇区故障 dd if=/dev/zero of=/dev/sda bs=512 count=1 重启后观察系统是否有问题,出现 operating system not found 上述就是有故障了MBR挂了,光盘引导,进入急救模式,提示操作,从备份文件中恢复 MBR扇区,步骤如下: 1 装入光盘,在光盘引导界面选择troubleshooting: 2 进入troubleshooting菜单选择Rescue a centos system 3 进入引导可以按回车,或者等待 按1在按回车进入sh-4.2# 4 急救模式下sdb的挂载 mkdir / sdd mount /dev/sdb /sdd cd/sdd查询下该备份文件是否存在 5 dd if=/sdd/mbr. bak of=/dev/sda count=l bs=512 6 重启reboot进入系统测试是否正常。
备注:mbr扇区存在于第一块硬盘空间里,因此想要破坏mbr数据,只需要破坏第一块硬盘空间里的数据即可。对第一块硬盘备份时,注意备份磁盘空间不能小于第一块硬盘的空间大小。
■ 故障原因 ● MBR中的GRUB引导程序遭到破坏 ● grub.conf文件丢失、引导配置有误 ■ 故障现象 ● 系统引导停滞,显示“grub>" 提示符 ■ 解决思路 ● 尝试手动输入引导命令 ● 进入急救模式,重写或者从备份中恢复grub.conf ● 向MBR扇区中重建gru程序 准备工作:
cd /boot/ grub2 ###进入grub2 rm -rf grub. cfg ##删除grub2. cfg模拟故障 init 6 重启###修复如下### 1. 引导急救模式,加载系统镜像 chroot /mnt/ sys image/ 2. 重新建立加载sda分区 grub2- install /dev/ sda 3. 重新构建grub菜单配置文件 grub2- mkconfig -0 /boot/ grub2/grub. cfg 4. 退出bash环境 exit 5. 重启 reboot
■ 故障原因 ● 遗忘root用户的密码 ■ 故障现象 ● 无法进行需要root权限的管理操作 ● 若没有其他可用帐号,将无法登录系统 ■ 解决思路 ●进入急救模式,重设密码 步骤如下: sh-4. 2#chroot /mnt/sysimage 加载系统镜像 bash-4. 2#passwd root new : retry: 退出bash环境 exi t 重启reboot
■ 系统服务控制 systemctl 控制类型 服务名称 ■ 控制类型 ● start:启动 ● stop:停止 ● restart:重新启动 ● reload:重新加载 ● status:查看服务状态
备注:重新启动:先关闭服务再开启服务,服务会中断 重新加载:不会中断服务
查看运行级别 ● runlevel命令 ● systemctl工具 临时切换运行级别 ● init命令 ● systemctl工具 修改默认的运行级别: #set-default用来指定默认的运行级别 [root@centos8 ~]# systemcth set-default multi -user.target 提示信息: Removed /etc/ systemd/ system/ default.target. Created symlink /etc/ systemd/ system/default.target.→/usx/1ib/ systemd/ system/multi-user .targdt. 或 rm -f /etc/systemd/ system/default.target ln -sf /usr/lib/systemd/ system/ multi -user.target /etc/systemd/ system/ default.target Init 6/ reboot 两条命令功能相同,都要重启才能生效,说明:我们可以看到:set-default所做的操作
■ ntsysv工具 ● 提供一个交互式、可视化窗口 ● 可以在字符终端运行 ● 便于集中管理多个服务 ■ systemctl工具 ● 不提供交互式、可视化窗口 ● 管理单个服务效率更高
■ ntsysv系统服务管理工具 ntsysv ntsysv --level 级别列表 ■ 查看系统服务的启动状态 systemctl enable/disable 服务名称 ■ 设置系统服务的启动状态 systemctl enable/disable 服务名称 systemctl start 服务=service 服务 start systemctl stop 服务=service 服务 stop systemctl status 服务=service 服务 status systemctl reload 服务=service 服务 reload systemctl restart 服务=service 服务 restart 注意: systemctl 或service管理服务时,在/lib/systemd/system下面要有这个服务. service文件或者在/etc/init. d/服务的配置文件。