linux下的系统启动修复

linux下的系统启动修复

1.linux系统启动步骤

(1)POST加电自检

Linux系统在接通电源之后,会自动启动POST加电自检程序来对内部的各个配件进行自检;自检出现错误系统无法启动,重则停机
(2)BIOS启动引导阶段

BOIS 基本输入输出系统

加电自检后,系统会静入BIOS阶段,在该阶段系统会启动Boot Sequence来查找引导设备,当找到有引导程序的设备时,系统会读取该引导设备的0磁道一扇区mbr主引导程序,mbr会告诉系统下一步该干什么,进行下一阶段的启动
(3)GRUB启动引导阶段

GRUB 多重操作系统启动管理器

在该阶段系统会读取/etc/grub/grub.conf 系统配置文件,该文件为系统提供了菜单及加载的kernel位置,当kerenl被成功加载到内存重时,系统将进入下一阶段
(4)kerenl内核阶段

kerenl为系统的核心程序

进入内核阶段,系统会先探测可识别的所有硬件设备;随后系统会加载硬件驱动程序
(5)init初始化阶段

初始化阶段,系统开始完成启动前的初始化操作,根据文件执行脚本

2.linux系统故障排错
(1) 磁盘引导阶段
mbr=主引导记录=0磁道1扇区446
作用: 记录grub2引导文件的位置 当mbr数据丢失系统会因为找不到启动分区而停止启动
#fdisk -l * 所在的硬盘即为根所在的硬盘
在这里插入图片描述
模拟问题
dd if=/dev/zero of=/dev/vda bs=446 count=1 mbr 主引导程序丢失

解决方法:
1)为系统添加光盘,使用光盘启动系统,进入rescue援救模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2)chroot /mnt/sysimage 切换到主机真实环境
grub2-install /dev/vda 启动分区所在的硬盘
exit 退出主机环境
exit 退出援救模式

3)重新设置用硬盘启动系统,系统恢复正常

(2)grub文件引导阶段
位置 :
rhel7: /boot/grub2/grub.cfg
rhel8 /boot/grub2/grub.cfg /boot/loader/entries/xxxxxxxxx.conf
作用:指定/boot位置 指定系统启动时加载文件成名
1)引导文件丢失
模拟问题:rhel7: rm -fr /boot/grub2/grub.cfg
rhel8: rm -fr /boot/loader/entries/xxxxxxxxx.conf
解决方法:
umane -r 查看内核版本号
未重启系统时:
rhel7 grub2-mkconifg > /boot/grub2/grub.cfg
rhel8: kerne-install add 内核版本号 内核镜像

 kernel-install add  $(uname -r) /lib/modules/$(uname -r)/vmlinuz
`grub2-mkconfig > /boot/grub2/grub.cfg` 重新建立引导文件

重启系统时:
手动引导

set root='hd0,msdos1' 
linux16 /vmlinuz-3.10.0-957.el7.x86_64 ro root=/dev/nvme0n1p2 
initrd16 /initramfs-4.18.0-80.el8.x86_64.img boot

在这里插入图片描述

开机后
rhel7 grub2-mkconifg > /boot/grub2/grub.cfg
rhel8:kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz

2)内核文件丢失
加载内核作用: /boot/vmlinuz-$(uname -r)
系统初始化硬件设备 只读挂在/设备
模拟问题:rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64
解决方法:
未重启系统时:(系统中需要有镜像)
步骤与重启系统时类似,到镜像中找到我们丢失的内核引导文件,重新复制一份到/boot分区
重启系统时:
1)选择镜像启动系统
2)进入rescue模式:

chroot /mnt/sysimage` 切根
chroot /mnt/sysimage 
mount /dev/cdrom /mnt 
cd /mnt/BaseOS/Packages 
rpm -ivh kernel-xxxxx.rpm --force 在rhel7中恢复完成  
rhel8: mv /boot/vmlinuz-kernel-xxxxx   /boot/vmlinuz-xxxxx

    exit 切根
    exit 退出援救模式

在这里插入图片描述
4) 用硬盘启动系统

实验现象:

3)初始化镜像文件丢失
位置:/boot/initramfs-4.18.0-80.el8.x86_64.img
作用:加载系统时钟 加载selinux 加载系统主机信息 加载/etc/fstab文件中磁盘挂在策略 加载磁盘配额 初始化系统程序开启开机启动服务 开启虚拟控制台 开启图形
模拟问题:rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img
解决方法:
未重启系统时:mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) 重新建立镜像文件
注: $ (umane -r) 表示引用uame -r 这条命令的输出结果
重启系统时:
1)选择镜像启动系统
2)进入援救模式

 chroot /mnt/sysimage 切根
 mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
exit 切根
exit 退出援救模式

在这里插入图片描述
3)选择硬盘启动系统 重新启动

(3)开机启动级别被篡改

0 关机 1 单用户 2 无图形网络模式 3 无图形网络模式 4 无图形网络模式 5 有图形网络模式 6 重启
恢复: 在开机选择界面按进入到引导文件编辑模式 在内核加载选项最后加入启动级别5 ctrl+x systemctl set-default graphical.target
模拟问题:
systemctl set-defaults reboot.target 将系统启动级别设置为不断重启状态
解决方法:
1)让系统在读秒界面停止读秒 ,选择界面按进入到引导文件编辑模式 在内核加载选项最后加入启动级别5
2) ctrl+x
3)systemctl set-default graphical.target
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4) 超级用户密码忘记
恢复:
1.在开机选择界面按进入到引导文件编辑模式
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会重新初始化

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值