系统启动流程:
通电
||
bios(主板上的只读存储中,basicinput or output system)
作用,硬件检测,激活硬件
||
grub系统引导(grub引导分为两个阶段)
1)阶段1mbr(主引导记录)主引导记录在硬盘上的0磁道,一扇区,446个字节
2)阶段2grub文件引导阶段
||
启动内核,只读挂载/设备
检测设备
对设备驱动进行初始化
进入系统初始化阶段
||
系统初始化阶段
系统初始化阶段加载initrd镜像
开启初始化进程systemd
开始selinux
加载内核参数
初始化系统时钟,键盘,主机名称
重新读写挂载/设备
激活raid,lvm
激活配额
启动multi-user.target.wants中的所有服务
开启虚拟控制台
启动图形
一、误删MBR(关机了)
模拟误删MBR,一定严格按照此步骤来:
1、ddif=/dev/zero of=/dev/vda bs=446 count=1 ---可以清空mbr
2、reboot
3、设置个光盘启动
4、进入挽救模式
1
ENTER
chroot/mnt/sysimage ---切换到真实环境
grub2-install/dev/vda ---安装引导 (未关机直接执行此命令)
exit
exit
5、改回硬盘启动即可发现系统修复好了
二、误删grub.cfg(记清楚自己的根分区所在位置df)
同样模拟删除grub.cfg,然后按以下步骤依次执行:
1、rm-rf /boot/grub2/grub.cfg
2、启动系统后执行
(1)setroot='hd0,msdos1' ---boot启动分区
(2)linux16/vmlinuz-3.10.0-327.e17.x86_64 ro root=/dev/vda2---路径为自己根所在路径
(3)initrd16/initramfs-3.10.0-327.e17.x86_64.img ---系统初始化程序
(4)boot
3、系统启动后
grub2-mkconfig>/boot/grub2/grub.cfg(未关机直接执行此命令重新制作该文件)
三、误删内核文件
同样模拟删除,一定要按照下列步骤进行:
1、rm-rf /boot/vmlinuz-3.10.0-327.e17.x86_64 ---删除内核
2、进入拯救模式后执行
1
ENTER
chroot/mnt/sysimage
mount/dev/sr0 /mnt/ ---挂载系统镜像
cd/mnt/Packages
rpm-ivh kernel-3.10.0-327.e17.x86_64.rpm --force
exit
exit
3、最后改回硬盘启动即可
误删内核文件第二种方式修改
进入挽救模式
直接 cp /run/install/repo/Packages/kernel-3....rpm /mnt/sysimage/mnt ---复制内核安装包到真实环境某一位置
cd /mnt/sysimage/mnt
rpm2cpio kernel-3....rpm | cpio -id ---解包得到二进制文件
cd boot
cp vmlinuz-3.... /mnt/sysimage/boot/ ---复制内核文件到boot分区下
exit
3、系统初始化镜像文件丢失
rm -rf /boot/initramfs-3.10....img
未关机情况:
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) $(uname -r)输出内核版本号
关机后:
进入挽救模式
chroot /mnt/sysimage
cd /boot/
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
4、误删boot分区
进入拯救模式
chroot /mnt/sysimage
mkdir /boot
grub2-install /dev/vda
mount /dev/sr0 /mnt
cd /mnt/Packages
rpm -ivh kernel-3.10.0-327.e17.x86_64.rpm --force
grub2-mkconfig >/boot/grub2/grub.cfg
exit
exit
修改为硬盘启动
5、开机启动级别更改
模拟:systemctl set-default reboot.target ---开机一直重启
开机后 e 进入内核
chroot /sysroot/
rm -rf /etc/systemd/system/default.target ---删除错误的链接
ln -s /usr/lib/systemd/system/graphical.target /etc/systemd/system/default.target ---创建正确的链接