系统启动流程:
一、BIOS检
1.硬件检测
2.选择合适的引导设备
二、引导部分 GRUB2
1.读取引导设备的启动扇区
MBR模式
GPT模式 (大于硬盘2TB就使用GPT模式)
1扇区=512Byte字节
446字节引导程序+16*4分区表+2个字节的结束位 = 512Byte
2.读取引导程序的配置文件
/boot/grub2/grub.cfg
3.根据配置文件,加载内核,加载ramdisk文件
三、启动网络服务
故障案例一:引导程序故障
:star: 使用虚拟机来模拟,需要事先挂载一个镜像
:one: 前446字节是引导程序,我们可以使用dd命令来把前446字节给覆盖了来模拟引导程序故障
dd if=/dev/zero of=/dev/sda bs=446 count=1
##使用dd命令覆盖
# if 输入 of 输出 bs s输出文件大小 count 输出几块
# 我这的系统盘名为sda
[root@5317 ~]# dd if=/deu/zero of =/dev/sda bs=446 count=1
1+records in
1+records out
446 bytes (446 B) copied,0.B88318632s,1.4 MB/s
:two: 重启系统会直接进入安装界面表示引导程序已经没了,选择Troubleshoting
,在选择Rescue a Centos system
:three: 这样就会进入LiveCD 也就是假系统类似于winPE ,LiveCD加载到内存中的系统,启动时尝试去查找本地硬盘中已经安装好的linux系统根分区,并且挂载至LiveCD系统的/mnt/sysimage目录
它会有三个选项,选择:one: 直接进入
就会得到一个shell
:four: 这样就进入liveCD系统了,输入以下命令
chroot /mnt/sysiimage ###切换根的位置
grub2-install /dev/sda ##重新写入引导文件 因为引导文件是固定的
exit //输入两次退出liveCD
故障案列二:不小心删除/boot目录中的所有文件,引导程序坏了
:one: 先按照上面的方法把引导程序修复好
:two: 我们首先先看一下的boot里面的文件是来自哪里
[root@tancserver2 boot]# ls
config-3.10.0-1160.45.1.el7.x86_64 symvers-3.10.0-1160.45.1.el7.x86_64.gz
config-3.10.0-957.21.3.el7.x86_64 symvers-3.10.0-957.21.3.el7.x86_64.gz
config-3.10.0-957.el7.x86_64 symvers-3.10.0-957.el7.x86_64.gz
efi System.map-3.10.0-1160.45.1.el7.x86_64
grub System.map-3.10.0-957.21.3.el7.x86_64
grub2 System.map-3.10.0-957.el7.x86_64
initramfs-0-rescue-20190711105006363114529432776998.img vmlinuz-0-rescue-20190711105006363114529432776998
initramfs-3.10.0-1160.45.1.el7.x86_64.img vmlinuz-3.10.0-1160.45.1.el7.x86_64
initramfs-3.10.0-957.21.3.el7.x86_64.img vmlinuz-3.10.0-957.21.3.el7.x86_64
initramfs-3.10.0-957.el7.x86_64.img vmlinuz-3.10.0-957.el7.x86_64
initramfs-3.10.0-957.el7.x86_64kdump.img
###可以看见这是一个rpm包,那么rpm包就好解决了
[root@tancserver2 boot]# rpm -qf vmlinuz-3.10.0-1160.45.1.el7.x86_64
kernel-3.10.0-1160.45.1.el7.x86_64
:three: rpm包安装好就好解决了,我们可以直接挂载CD镜像里面有rpm包
mount /dev/cdrom /media
cd /medion/Packages/
rpm -qf /boot/vmlinuz-3.10.0-862.el7.x86_64
rpm -ivh kernel-3.10.0-862.el7.x86_64 --force ##强制安装
grub2-mkconfig -o /boot/grub2/grub.cfg ##重写boot引导文件
故障案列三:文件系统损害,根损坏
fdisk -l 查看硬盘
查找到后挂载
xfs_repair 假如你的文件系统是xfs就可以使用这个来修复
fsck就是修复ext3 ext4的文件系统的
故障案例四:根在逻辑分区
fdisk -l会看见根是在一个逻辑分区
lvsdisplay 查看逻辑卷的状态
你会发现它挂载不起来lvdiplay倒数第六行查看状态会发现是不可用的
使用
lvchange -a y [逻辑卷]
在查看lvdisplay就会发现逻辑卷是活动状态了
在挂载根查看uuid然后查看fstab里面的是否正确修改
故障案例五:磁盘文件系统损坏**
如果是EXT4的文件系统 直接执行年 fsck -y [硬盘]
如果是xfs xfs_repair
原理:文件系统有个superblock ,记录文件系统的元数据结构的,在系统中有多份备份
dumpe2fs [硬盘] 可以查看