【报错处理】mount: /boot/efi: unknown filesystem type ‘LVM2_member‘.
从反复出现的错误来看,核心矛盾依然是 系统在配置 grub-efi-amd64-signed 时,错误地将某个 LVM 分区识别为
/boot/efi 所需的 ESP 分区(即使你手动挂载了正确的 vfat
分区)。这种情况通常是由于系统中存在残留的错误配置、分区表信息混乱,或 grub 脚本的硬编码逻辑与实际分区不符导致的。
彻底排查与解决步骤
- 再次确认所有分区的真实信息(关键)
先通过 lsblk 和 blkid 完整列出所有分区,明确区分 LVM 分区 和 ESP 分区(vfat),避免混淆:
# 列出所有分区的名称、类型、挂载点(重点看 FSTYPE 和 MOUNTPOINT)
lsblk -o NAME,FSTYPE,MOUNTPOINT,UUID,PARTTYPE# 列出所有分区的 UUID 和类型(确认 ESP 的 UUID 是 vfat 类型)
sudo blkid
关键输出解读:
- ESP 分区(正确):FSTYPE=“vfat”,PARTTYPE 应为 c12a7328-f81f-11d2-ba4b-00a0c93ec93b(EFI 系统分区的标准类型),通常挂载在 /boot/efi。
- LVM 分区(错误):FSTYPE=“LVM2_member”,PARTTYPE 通常为 e6d6d379-f507-44c2-a23c-238f2a3df928(LVM 分区类型),绝不应该挂载在 /boot/efi。
记录下 ESP 分区的路径(如 /dev/vdb1)和 UUID(如 1FD3-1641),后续步骤会用到。
- 检查 grub 配置脚本的逻辑(定位错误源头)
grub-efi-amd64-signed 的 post-install 脚本(负责配置的脚本)可能在自动检测 ESP 分区时出错,导致误选 LVM 分区。查看脚本内容:
# 打开 post-install 脚本
sudo vim /var/lib/dpkg/info/grub-efi-amd64-signed.postinst
在脚本中搜索与 mount 或 /boot/efi 相关的代码(通常是自动查找 ESP 分区的逻辑)。例如,脚本可能通过 blkid 或 parted 查找 ESP,但错误地匹配了 LVM 分区的 UUID 或路径。
临时修复:若找到脚本中自动挂载 /boot/efi 的命令(如 mount /boot/efi 或指定分区的命令),可手动将其修改为你确认的 ESP 分区(如 /dev/vdb1),保存后退出。
- 强制清除所有与 grub 相关的错误配置和缓存
# 卸载可能的错误挂载(若仍提示 busy,用 -l 强制)
sudo umount /boot/efi || sudo umount -l /boot/efi# 彻底删除 grub 相关的缓存和状态文件
sudo rm -rf /var/lib/grub/* /var/lib/dpkg/info/grub-efi-amd64-signed.* /var/lib/dpkg/info/shim-signed.*# 重新创建 /boot/efi 目录(确保干净)
sudo rm -rf /boot/efi && sudo mkdir -p /boot/efi# 重新挂载正确的 ESP 分区(用你记录的 ESP 路径)
sudo mount /dev/vdb1 /boot/efi # 替换为你的 ESP 分区
- 强制重新配置并安装包(忽略历史错误)
# 先修复 dpkg 数据库的一致性
sudo dpkg --configure -a --force-depends --force-confnew# 强制重新安装两个包,覆盖所有配置
sudo apt install --reinstall -o Dpkg::Options::="--force-all" grub-efi-amd64-signed shim-signed
- 手动重建 EFI 引导项(绕开脚本自动检测)
如果脚本仍出错,直接手动执行 grub-install 命令,跳过脚本的自动检测逻辑:
# 手动将 grub 安装到 ESP 分区(指定正确的 ESP 路径)
sudo grub-install \--target=x86_64-efi \--efi-directory=/boot/efi \--bootloader-id=ubuntu \--recheck \--no-nvram \ # 若提示 NVRAM 写入失败,添加此参数(部分虚拟机不支持)--debug # 可选,输出调试信息,方便排查
执行成功后,再更新 grub 配置:
update-grub
- 最终验证
# 检查包状态(目标为 "ii")
dpkg -l grub-efi-amd64-signed shim-signed# 检查 EFI 分区中是否生成了 grub 文件
ls /boot/efi/EFI/ubuntu/ # 应包含 grubx64.efi 等文件