2026/3/4 16:21:49
网站建设
项目流程
南京网站建设与维护,模仿 网站,100款应用软件安装入口,网站雪花飘落代码【 问题描述 】/boot目录下的内容被清空#xff0c;无法正常进入系统#xff0c;报错如下#xff1a;【 排查思路 】挂安装光盘进入救援模式#xff0c;通过chroot环境#xff0c;重新安装grub引导、内核#xff0c;生成grub.cfg配置文件【 解决方法 】1、插入系统安装光…【 问题描述 】/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 --force13、安装好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逻辑卷管理和设备映射器的标准接口所有相关工具如dmsetup、cryptsetup默认操作该路径。使用标准路径可确保与系统工具的兼容性减少配置冲突的风险。5动态设备管理的风险/dev/klas/root的生成依赖于特定 udev 规则若规则被误删或修改会导致符号链接消失。而/dev/mapper/klas-root由内核直接管理除非主动删除映射否则始终存在。对于关键操作如挂载根文件系统直接依赖内核接口更安全。6、实际使用建议系统配置在/etc/fstab或内核命令行中优先使用/dev/mapper/klas-root确保启动可靠性。手动操作交互式命令可使用任一路径但脚本建议使用标准映射器路径以避免环境差异。调试若符号链接失效可通过dmsetup ls或lsblk验证映射器设备状态。