14
This commit is contained in:
16
backend.py
16
backend.py
@@ -2217,11 +2217,19 @@ def chroot_and_repair_grub(mount_point: str, target_disk: str,
|
||||
|
||||
# 方法2: 如果 /boot 是独立分区,尝试在挂载的主机路径创建
|
||||
if not os.path.exists(grubenv_path):
|
||||
# 根据发行版确定正确的目录名 (grub2 vs grub)
|
||||
if distro_type in ["centos", "rhel", "fedora", "rocky", "almalinux", "opensuse"]:
|
||||
grub_dir_name = "grub2"
|
||||
else:
|
||||
grub_dir_name = "grub"
|
||||
|
||||
# 尝试多种可能的路径(处理独立 /boot 分区的情况)
|
||||
possible_grubenv_paths = [
|
||||
grubenv_path, # 标准路径
|
||||
os.path.join(mount_point, "boot", grub_dir_name, "grubenv"),
|
||||
os.path.join(mount_point, "boot", "grub2", "grubenv"),
|
||||
os.path.join(mount_point, "boot", "grub", "grubenv"),
|
||||
os.path.join(mount_point, grub_dir_name, "grubenv"),
|
||||
os.path.join(mount_point, "grub2", "grubenv"),
|
||||
os.path.join(mount_point, "grub", "grubenv"),
|
||||
]
|
||||
@@ -2233,6 +2241,14 @@ def chroot_and_repair_grub(mount_point: str, target_disk: str,
|
||||
break
|
||||
else:
|
||||
# 没有找到现有文件,尝试创建
|
||||
# 首先确保首选目录存在(通过主机直接创建)
|
||||
preferred_dir = os.path.join(mount_point, "boot", grub_dir_name)
|
||||
try:
|
||||
os.makedirs(preferred_dir, exist_ok=True)
|
||||
log_info(f"✓ 确保目录存在: {preferred_dir}")
|
||||
except Exception as e:
|
||||
log_warning(f"创建目录失败: {e}")
|
||||
|
||||
for test_path in possible_grubenv_paths:
|
||||
try:
|
||||
dir_path = os.path.dirname(test_path)
|
||||
|
||||
Reference in New Issue
Block a user