当前位置: 首页 > news >正文

【Linux-云原生-笔记】系统引导修复(grub、bios、内核、系统初始化等)

一、系统启动流程

1、通电

启动所有的硬件,并为进入系统做准备

开始前检查所有的电源设备、确定供电设备正常、所有的线缆是否插紧、线缆是否有损坏

2、BIOS环境检测

BIOS会检测:

(1)检查硬件是否正常

(2)检查硬件是否插紧

3、磁盘引导阶段

这个阶段系统会先找到/boot分区,而如果此阶段出现问题,那么系统会处于黑屏并闪烁光标状态

我们可以模拟一下出现这种问题的情况

(1)模拟问题的命令: 

dd if=/dev/zero of=/dev/sda bs=446 count=1

/dev/sda 是系统boot分区所在磁盘

注意“bs=”这一块后面的一定是446,千万不要写错了,写错了系统就起不来了

此命令标识用无限零字节覆盖/dev/sda上最前面的446个字节(mbr主引导记录,负责找到/boot)

然后输入reboot重启,就会进入这个界面:

(2)如何解决?

进入挽救模式:

之后会进入到这个界面,选择Troubleshooting

选择Rescue....进入挽救模式

等待些许时间,进入这个界面,输入1来选择continue

随后按enter获取shell

然后按照下面来执行命令:

chroot /mnt/sysroot
fdisk -l
grub2-install
  • chroot /mnt/sysroot —— 从挽救模式的环境切换到系统环境
  • fdisk -l —— 通过命令找出启动设备(*在那个设备上那个就是启动设备)
  • grub2-install —— 启动设备(/dev/sda)

之后,输入两次exit,重回系统

exit
exit

 等待系统重启,系统修复完毕

二、文件引导阶段

在文件引导阶段,系统会读取/boot/grub2/grub.cfg (自动引导文件),在此文件中指定系统系统过程中读 取什么文件,加载什么参数

1、如何修改grub参数(以修改时间为例)

vim /etc/default/grub

示例

更改为10,即为设定grub启动时等待时间为10

wq


然后生成新grub.cfg

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

 2、问题模拟

问题:/boot/grub2/grub.cfg文件丢失,那么系统将无法完成自动启动

模拟问题前先用df命令查看一下自己的根分区(/)和boot分区(/boot)的路径,最好截个屏记住,待会要用

df

示例

  • / —— 根分区
  • /boot —— boot分区

 重现问题:

rm -fr /boot/grub2/grub.cfg

示例

 

此文件如果被删除,并把系统重新启动,那么 出现如下界面:

出现grub界面后,我们手动引导进入系统:

(1)指定boot分区位置

set root=(hd0,msdos1)

示例

名词解释:

  • 指定boot分区位置
  • hdn 便是boot分区在那个硬盘上
  • msdosn在那个分区

 (2)指定内核文件

linux16 /vmlinuz-5.14.0-427.13.1.el9_4.x86_64 ro root=/dev/sda3 selinux=0

示例 

initrd16 /initramfs-5.14.0-427.13.1.el9_4.x86_64.img

示例 

红框处同样tab补齐,不要手打


 (3)启动系统

boot

示例

不是reboot!不要写错了!reboot的话就又要重头开始搞了

这样搞完后就可以进入到系统了:

成功进入系统

这就是手动引导系统,从而进入系统

注意以上步骤只能完成本次引导,系统重启后仍然需要手动引导

如需永久恢复,则:

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

三、内核参数文件

cd /boot/loader/entries/
ls

能够查看到这两个文件:

一个是挽救内核参数,一个是常规内核参数信息


问题复现指令:

enter后reboot重启,又会进入这个grub界面

按照上面刚刚说过的方法,先手动引导进入系统(不再赘述)

进入系统,登录完后,输入这个

 等待其恢复

恢复完后,我们查看一下我们删除的文件目录,看其恢复没

 

已恢复,完成 

四、启动内核

1、问题模拟

模拟内核文件丢失的命令:
rm -fr /boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64

示例

这时reboot会进入这个报错界面:

2、如何修复?

(1)关机,进入主机bios,让主机从光盘启动

关机

点击小三角,选择 打开电源时进入固件(bios)

 进入bios后,选择boot,然后选择CD-ROM.....,再按+加号(shift+加号键),将其搞到最上面

F10保存,选择yes

(2)通过设置进入到rescue(挽救模式)

之后会进入到这个界面,选择Troubleshooting

选择Rescue....进入挽救模式

等待些许时间,进入这个界面,输入1来选择continue

随后按enter获取shell

然后按照下面来执行命令:

chroot /mnt/sysroot
mount /dev/cdrom /media
cd /media/BaseOS/Packages/
cp kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm /mnt
cd /mnt
ls

示例

可以看到文件kernel....已经复制到/mnt里

接着:

rpm2cpio kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm | cpio -id
cd lib/modules/5.14.0-427.13.1.el9_4.x86_64/
cp vmlinuz /boot/vmlinuz-$(uname -r)

示例

 

最后输入两次exit,进入系统

exit
exit

(3)修复完成后,将光盘启动改成硬盘启动

修复完成后需要把光盘启动切换至硬盘启动:

 回到那个界面后,不用进入任何选项,选择小三角,关机,然后再选择从固件启动

继续选择boot,再按+加号(shift+加号键),将+Hard...搞到最上面

 F10保存,选择yes

这样,就能成功重回系统了

五、系统初始化

1、问题重现

使用初始化环境开启系统所有开机启动服务

模拟问题的命令:

rm -fr /boot/initramfs-5.14.0-427.13.1.el9_4.x86_64.img

reboot重启后又会进入这个界面:

2、如何解决?

这里的步骤和前面的大部分相同,所以就不重复赘述,只简短描述

(1)还是关机,进入bios,选择光盘引导进入挽救模式

(2)输入这些命令

chroot /mnt/sysroot
mount /dev/cdrom /media/
cd /media/BaseOS/Packages/
rpm -ivh kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm --force

示例

等待装好后,两次exit:

exit
exit

(3)设置启动顺序,把硬盘启动放在第一位 

进入系统后,继续关机,进入bios ,选择硬盘启动放在最上面

F10退出保存,就能进入系统了

http://www.lryc.cn/news/584977.html

相关文章:

  • Grok-4 发布会图文总结
  • 苹果UI 设计
  • SLICEGPT: COMPRESS LARGE LANGUAGE MODELSBY DELETING ROWS AND COLUMNS
  • Deepseek-如何从零开始开发需要专业知识的prompt
  • 8155平台SPI学习笔记
  • 从零实现一个GPT 【React + Express】--- 【4】实现文生图的功能
  • 深入剖析Spring Bean生命周期:从诞生到消亡的全过程
  • 英文国际期刊推荐:MEDS Chinese Medicine,中医药方向可发
  • 47-RK3588 用瑞芯微官方提供recovery进行OTA升级
  • Auto-GPT 简易教程
  • 前端抓包(不启动前端项目就能进行后端调试)--whistle
  • UI前端与数字孪生融合新领域:智慧环保的垃圾分类与回收系统
  • Windos服务器升级MySQL版本
  • 中国银联豪掷1亿采购海光C86架构服务器
  • 如何查看自己本地的公网IP地址?内网环境网络如何开通服务器公网ip提供互联网访问?
  • 电力分析仪的“双语对话”:CCLinkIE与Modbus TCP的无缝连接
  • 从《哪吒 2》看个人IP的破局之道|创客匠人
  • 【实用IP查询工具】IP数据云-IP地址查询离线库使用方案
  • 服务器机柜与网络机柜各自的优势
  • 解决Linux绑定失败地址已使用(端口被占用)的问题
  • python的卷烟营销数据统计分析系统
  • AIStarter新版重磅来袭!永久订阅限时福利抢先看
  • Spring Cloud Gateway介绍 - -基础概念,简单工作原理和配置示例
  • Element Plus和Ant Design Vue深度对比分析与选型指南
  • 飞算 JavaAI:开启 Java 开发新时代
  • C++——构造函数的补充:初始化列表
  • TypeScript---泛型
  • WD0407 40V 7A 超级肖特基二极管,应用于开关汽车工业控制
  • 企业级配置:Azure 邮件与 Cloudflare 域名解析的安全验证落地详解
  • 大数据在UI前端的应用深化:用户行为数据的跨渠道整合分析