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

【银河麒麟】/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验证映射器设备状态。
http://www.cnnetsun.cn/news/506542.html

相关文章:

  • 3步快速掌握星火应用商店:Linux新手的完美应用解决方案
  • Delta模拟器主题商店终极指南:个性化你的游戏体验
  • 智能知识平台深度实战:从零构建企业级AI大脑
  • PureLive Flutter直播应用开发终极指南
  • AMD ROCm异构计算环境:从零开始的完整配置手册
  • QLVideo完整指南:让macOS视频预览功能更强大
  • 云端开发革命:零配置部署浏览器VS Code的终极指南
  • Zotero DEB包安装完全指南:为Debian系统用户打造的文献管理利器
  • 开源利器OpenBoardView:让电路板设计文件触手可及
  • QLVideo完整指南:让macOS视频预览体验全面升级
  • 终极指南:快速搭建SENAITE LIMS实验室信息管理系统
  • PureLive:Flutter跨平台直播应用开发终极指南
  • POI数据处理新境界:如何用POIKit高效获取地理信息数据
  • 7天掌握Flutter直播开发:从零到上架的终极实战手册
  • WinDirStat多语言本地化实践:AI驱动的软件国际化方案
  • 掌握Frappe Gantt:打造完美项目时间线可视化的终极指南
  • 突破性媒体融合:Plex for Kodi的智能集成革命
  • OpenBoardView:免费开源的电路板查看终极指南
  • OFD转PDF终极指南:3步搞定电子文档格式转换
  • Sketch Measure:重新定义设计师与开发者的协作体验
  • 建筑设计中的生成式空间规划
  • 5分钟快速部署DeepWiki-Open:AI文档生成终极指南
  • 高效处理高德地图POI数据的完整操作指南
  • Windows系统苹果设备驱动兼容性终极解决方案:解锁iPhone完整功能
  • AI对话持久化终极指南:告别对话丢失的烦恼
  • Windirstat软件本地化技术实战:从零构建多语言支持体系
  • 终极指南:3分钟掌握Ofd2Pdf免费OFD转PDF全流程
  • 喜马拉雅音频下载器:三步实现VIP内容本地化存储的完整指南
  • M2FP模型处理低光照图像的优化方案
  • Chatbox数据守护者:揭秘桌面AI助手的智能存储革命