Linux系统引导过程及引导修复

#################################
#         1.通电        #
#################################


#################################
#         2.bios初始化        #
#################################
对硬件检测
初始化硬件时钟


#################################
#         3.磁盘引导        #
#################################
mbr=主引导记录=0磁道1扇区446
作用:
记录grub2引导文件的位置

当mbr数据丢失系统会因为找不到启动分区而停止启动

问题模拟方式
系统磁盘/dev/vda

dd if=/dev/zero of=/dev/vda bs=446 count=1        ##清空系统/dev/vda上的mbr数据

 

恢复方式:
用光盘进入系统挽救模式

 

 

chroot /mnt/sysimage
grub2-install     /dev/xxxxxx                ##重新安装grub2到系统硬盘上

vim /etc/selinux/config                       ## 改为disable 之后修复速度变快

 

完成之后断电改回硬盘启动开机即可。

 

#################################
#         4.grub2文件引导    #
#################################

rhel8
/boot/grub2/grub.cfg
/boot/loader/entries/xxxxxxxxx.conf

指定/boot位置
指定系统启动时加载文件成名

模拟问题:
rhel8:
rm -fr /boot/loader/entries/xxxxxxxxx.conf


修复:

rhel8:
kerne-install   add    内核版本号    内核镜像
kernel-install add  $(uname -r) /lib/modules/$(uname -r)/vmlinuz

删除其中一个时:

当两个全部删除时:

 

 

手动引导

 

set root='hd0,msdos1'
linux16 /vmlinuz-4.18.0-80.el8.x84z_64 ro root=/dev/vda
initrd16 /initramfs-4.18.0-80.el8.x86_64.img
boot

进入之后使用kernel-install add  $(uname -r) /lib/modules/$(uname -r)/vmlinuz进行修复

#################################
#         5.内核加载        #
#################################
加载内核作用:
/boot/vmlinuz-$(uname -r)
系统初始化硬件设备
只读挂在/设备


问题出现:
rm -fr /boot/vmlinuz-$(uname -r)

恢复:
拆解内核文安装包并复制内核压缩镜像到/boot

进入到挽救模式
chroot /mnt/sysimage

mount /dev/cdrom /media

cd /media/BaseOS/Packages
cp kernel-core-$(uname -r).rpm  /mnt/
cd /mnt
rpm2cpio kernel-core-$(uname -r).rpm | cpio -id

cp /mnt/lib/modules/$(uname -r)/vmlinuz  /boot/vmlinuz-$(uname -r)

exit
exit

 


#################################
#         6.系统初始化镜像    #
#################################
/boot/initramfs-4.18.0-80.el8.x86_64.img
加载系统时钟
加载selinux
加载系统主机信息
加载/etc/fstab文件中磁盘挂在策略
加载磁盘配额
初始化系统程序开启开机启动服务
开启虚拟控制台
开启图形


问题出现:
rm -fr /boot/initramfs-xxxxx.img

恢复:
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)    用法可以   --help


#################################
#         7.系统启动级别    #
#################################

0    关机
1    单用户
2    无图形网络模式
3    无图形网络模式
4    无图形网络模式
5    有图形网络模式
6    重启

 


问题出现:
systemctl set-default reboot.target          

此时将进入无限重启状况

恢复:
在开机选择界面按<e>进入到引导文件编辑模式
在内核加载选项最后加入启动级别5
ctrl+x

systemctl set-default graphical.target

 


#################################
#         8.超级用户密码忘记    #
#################################

恢复:
1.在开机选择界面按<e>进入到引导文件编辑模式
2.在内核加载选项最后删除到ro选项
3.更改ro---->rw
4.加入rd.break参数终止系统启动进入单用户模式
5.ctrl+x启动


6.chroot /sysroot
7.echo lee| passwd --stdin root
8.touch /.autorelabel        ##当/.autorelabel文件存在selinux会重新初始化cp kernel-core-4.18.0-80.el8.x86_64.rpm  /mnt/
cd /mnt
rpm2cpio kernel-core-4.18.0-80.el8.x86_64.rpm | cpio -id

cp /mnt/lib/modules/4.18.0-80.el8.x86_64/vmlinuz  /boot/vmlinuz-$(uname -r)

exit
exit


实验:
rm -fr /boot/*


恢复步骤
grub2-install  /dev/vda

rpm -ivh  kernel-core-xxxx.rpm

grub2-mkconfig > /boot/grub2/grub.cfg

系统引导修复练习脚本

 

#!/bin/bash
case $1 in
    test1)
    echo westosbasepassword | password --stdin root &> /dev/null
    touch /tmp/test1
    clear
    echo "test1: Your LinuxOS will reboot after 5 sec,Please login root successful !!"
    sleep 5
    reboot
    ;;
    test2)
    dd if=/dev/zero of=/dev/vda bs=446 count=1 &> /dev/null
    clear
    echo "test2: Your LinuxOS will reboot after 5 sec,Please set OS boot successful !!"
    sleep 5
    reboot
    ;;
    test3)
    rm -fr /boot/loader/entries/*
    clear
    echo "test3: Your LinuxOS will reboot after 5 sec,Please set OS boot successful !!"
    sleep 5
    reboot
    ;;
    test4)
    rm -fr /boot/vmlinuz-$(uname -r) /boot/initramfs-$(uname -r).img
    clear
    echo "test4: Your LinuxOS will reboot after 5 sec,Please set OS boot successful !!"
    sleep 5
    reboot
    ;;
    test5)
    systemctl set-default reboot.target &> /dev/null
    clear
    echo "test5: Your LinuxOS will reboot after 5 sec,Please set OS boot successful !!"
    sleep 5
    reboot
    ;;
    test6)
    rm -fr /boot/*
    clear
    echo "test6: Your LinuxOS will reboot after 5 sec,Please set OS boot successful !!"
    sleep 5
    reboot
    ;;
    *)
    echo "Please input test1|test2|test3|test4|test5|test6 following script!!"
esac

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值