news 2026/4/15 8:57:33

【银河麒麟】/boot目录被清空、无法进入系统问题排查

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【银河麒麟】/boot目录被清空、无法进入系统问题排查

【 问题描述 】

/boot目录下的内容被清空,无法正常进入系统,报错如下:


【 排查思路 】

挂安装光盘进入救援模式,通过chroot环境,重新安装grub引导、内核,生成grub.cfg配置文件


【 解决方法 】

1、插入系统安装光盘/U盘→开机根据提示进入启动项选择界面→根据实际情况进行选择

-

2、选择Troubleshooting→Rescue....

3、完成上述选择后,等个几分钟,会跳转至这个页面。这里选择3→回车→然后按enter键,即可进入到安装光盘提供的救援环境中

4、lsblk可以看到/dev/sda是原系统盘,有/dev/sda1和/dev/sda2两个分区。从空间大小可知/dev/sda1是boot分区,/dev/sda2可能是普通分区或者做了LVM,后者可能性更大,因为如果是普通分区的话,就没有swap分区了

5、需要确定原系统的根是普通分区还是LVM,如果是普通分区,可以直接将对应的设备名挂载到救援环境的一个空目录中(mount /dev/sda2 /mnt);如果是LVM,则需先激活卷组。如下图,不确定的情况下,可以尝试挂载一下,能正常挂载说明是普通分区,如果是LVM则挂载不成功,而且会有LVM文件系统类型的提示

当然,也可以通过lsblk -f查看文件系统类型

6、通过pvscan→vgscan→lvscan,可以看到/dev/sda2为物理卷(不能直接挂载)属于klas卷组,卷组下有/dev/klas/root(即根分区)和/dev/klas/swap(即swap分区)两个逻辑卷,都处于未激活状态,因此要挂载根,需要先将其激活

7、使用vgchange -ay命令激活卷组

8、激活之后可以看到klas-root的逻辑卷,路径为/dev/mapper/klas-root,使用mount /dev/mapper/klas-root /mnt挂载,至于这里为什么使用/dev/mapper/klas-root,而不用/dev/klas/root挂载,在【知识扩展】中会解释

9、为了使chroot切换到原系统后能获取到完整的系统环境,还需要将/sys、/proc、/run、/dev虚拟文件系统挂载,使用mount --bind命令,目的是将当前系统中的虚拟文件系统(或目录)“绑定挂载” 到另一个位置(这里是/mnt/...

# mount --bind sys /mnt/sys # mount --bind proc /mnt/proc # mount --bind dev /mnt/dev # mount --bind run /mnt/run

注意:如果没有挂载这些虚拟文件系统,会导致chroot环境中很多命令如法使用、块设备也无法访问等,如图:

10、chroot /mnt切换到原系统环境,lsblk看到/dev/sda1没有挂载

11、使用mount -a挂载,/boot目录下的确实没有内容

12、挂载安装镜像,先安装内核文件,虽然内核包没有被卸载,但是由于其提供的/boot/vmlinux...内核文件及/boot/initramfs映像文件等都没有了,需要再装一下以重新生成

# mount /dev/sr0 /mnt # cd /mnt/Pacakages # rpm -ivh kernel-*.rpm --force

13、安装好kernel*内核包后,会重新再/boot目录下生成以下文件

14、grub2-install /dev/sda重新安装grub引导,这一步骤会在/boot/grub2目录下生成以下四个文件

15、grub-mkconfig -o /boot/grub2/grub.cfg生成grub配置文件

16、退出、重启,即可正常进入系统


【 知识扩展 】

1、Linux 逻辑卷管理(LVM)命名机制

LVM 使用分层命名结构,逻辑卷路径通常位于/dev目录下的卷组(VG)子目录中。命名规则如下:

  • 物理卷(PV):以/dev/sdX/dev/nvmeXnY等原始块设备命名,或通过 UUID 标识。
  • 卷组(VG):自定义名称,创建时指定(如vg00)。
  • 逻辑卷(LV):路径格式为/dev/<vg_name>/<lv_name>,例如/dev/vg00/lv_root
  • 精简池(Thin Pool):命名类似普通 LV,但通常带有_tpool_thin后缀。

LVM 还支持别名(/dev/mapper/vg00-lv_root),通过符号链接指向/dev/dm-X设备。

2、设备映射器(device-mapper)命名机制

device-mapper 是内核驱动,为 LVM、加密(LUKS)、多路径(multipath)等提供底层支持。其命名规则如下:

  • 设备节点:动态生成的虚拟设备,路径为/dev/dm-XX为数字,按创建顺序分配)。
  • 用户友好名:通过/dev/mapper/目录映射,例如/dev/mapper/vg00-lv_root/dev/mapper/luks-<uuid>
  • 符号链接/dev/dm-X设备通常与/dev/mapper/名称通过符号链接关联。

3、关键区别与联系

  • 层级关系:LVM 在 device-mapper 之上构建,逻辑卷最终表现为/dev/dm-X设备。
  • 持久化命名:LVM 通过 VG/LV 名称提供持久化标识,而dm-X名称可能随系统重启变化。
  • 多路径场景:device-mapper 还可用于存储多路径设备(如/dev/mapper/mpatha),独立于 LVM。

4、操作示例

查看 LVM 设备与 device-mapper 关联:

ls -l /dev/mapper/vg00-* # 显示 LVM 逻辑卷的映射名 dmsetup ls # 列出所有 device-mapper 设备及其主次设备号

从上图可以看出/dev/klas/root/dev/mapper/klas-root都指向同一个底层设备:/dev/dm-2

项目名称类型说明
lvscan/dev/klas/root符号链接传统路径,由udev 规则自动创建
lsblkklas-root设备名device-mapper 层的真实设备名
实际设备/dev/mapper/klas-root真实块设备挂载时应使用此路径

5、那么为什么不用/dev/klas/root直接挂载,而用/dev/mapper/klas-root挂载

1)设备映射与路径差异

/dev/mapper/klas-root是设备映射器(Device Mapper)生成的逻辑设备路径,而/dev/klas/root是 udev 规则创建的符号链接。设备映射器是内核提供的框架,用于创建虚拟块设备,而 udev 是用户空间的设备管理器,负责动态创建设备节点。

2)内核与用户空间协作

设备映射器在内核层面直接管理逻辑卷,确保卷的完整性和功能(如加密、快照等)。/dev/mapper/klas-root直接对应内核生成的设备节点,可靠性更高。/dev/klas/root是 udev 根据规则生成的符号链接,可能因规则未加载或延迟而暂时不可用。

3)启动过程的依赖顺序

系统启动时,设备映射器模块通常比 udev 更早初始化。使用/dev/mapper/klas-root可避免因 udev 未完成初始化导致的挂载失败。这在 initramfs 阶段尤为重要,因为该阶段用户空间工具可能尚未完全可用。

4)一致性与兼容性

/dev/mapper/路径是 LVM(逻辑卷管理)和设备映射器的标准接口,所有相关工具(如dmsetupcryptsetup)默认操作该路径。使用标准路径可确保与系统工具的兼容性,减少配置冲突的风险。

5)动态设备管理的风险

/dev/klas/root的生成依赖于特定 udev 规则,若规则被误删或修改,会导致符号链接消失。而/dev/mapper/klas-root由内核直接管理,除非主动删除映射,否则始终存在。对于关键操作(如挂载根文件系统),直接依赖内核接口更安全。

6、实际使用建议

  • 系统配置:在/etc/fstab或内核命令行中优先使用/dev/mapper/klas-root,确保启动可靠性。
  • 手动操作:交互式命令可使用任一路径,但脚本建议使用标准映射器路径以避免环境差异。
  • 调试:若符号链接失效,可通过dmsetup lslsblk验证映射器设备状态。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/12 17:34:15

ComfyUI-GGUF:释放低配置GPU潜力的量化革命

ComfyUI-GGUF&#xff1a;释放低配置GPU潜力的量化革命 【免费下载链接】ComfyUI-GGUF GGUF Quantization support for native ComfyUI models 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-GGUF 在AI图像生成领域&#xff0c;ComfyUI-GGUF通过提供GGUF量化支持…

作者头像 李华
网站建设 2026/4/10 0:31:07

Rete.js终极指南:从零构建可视化编程应用的完整教程

Rete.js终极指南&#xff1a;从零构建可视化编程应用的完整教程 【免费下载链接】rete JavaScript framework for visual programming 项目地址: https://gitcode.com/gh_mirrors/re/rete 你是否曾经想要创建一个拖拽式的工作流编辑器&#xff0c;却因为复杂的图形渲染和…

作者头像 李华
网站建设 2026/4/15 4:28:28

M2FP实战:构建智能健身教练系统

M2FP实战&#xff1a;构建智能健身教练系统 在智能健身设备与在线运动课程快速发展的今天&#xff0c;如何实现精准的人体动作识别与姿态分析成为核心技术挑战。传统的姿态估计算法多依赖关键点检测&#xff0c;难以满足对身体部位精细化语义理解的需求。为此&#xff0c;M2FP&…

作者头像 李华
网站建设 2026/4/15 4:27:50

如何快速使用GIMP Export Layers:图层批量导出的完整指南

如何快速使用GIMP Export Layers&#xff1a;图层批量导出的完整指南 【免费下载链接】gimp-export-layers Batch layer export and editing in GIMP 项目地址: https://gitcode.com/gh_mirrors/gi/gimp-export-layers 在图形设计工作中&#xff0c;你是否曾经为了导出几…

作者头像 李华
网站建设 2026/4/15 4:27:15

NeverSink过滤器技术深度解析:构建POE2高效物品识别系统

NeverSink过滤器技术深度解析&#xff1a;构建POE2高效物品识别系统 【免费下载链接】NeverSink-Filter-for-PoE2 This is a lootfilter for the game "Path of Exile 2". It adds colors, sounds, map icons, beams to highlight remarkable gear and inform the us…

作者头像 李华
网站建设 2026/4/15 4:26:09

PureLive实战指南:用Flutter打造跨平台直播应用的完整解决方案

PureLive实战指南&#xff1a;用Flutter打造跨平台直播应用的完整解决方案 【免费下载链接】pure_live A Flutter project can make you watch live with ease. 项目地址: https://gitcode.com/gh_mirrors/pu/pure_live 在移动互联网时代&#xff0c;直播已经成为人们娱…

作者头像 李华