This commit is contained in:
zj
2026-02-12 02:28:30 +08:00
parent 5021598d77
commit 69b2a29f6c
2 changed files with 16 additions and 1 deletions

Binary file not shown.

View File

@@ -1194,6 +1194,16 @@ def check_and_install_efi_modules(mount_point: str, distro_type: str, is_uefi: b
log_warning(f"未知的发行版 '{distro_type}',无法自动安装 EFI 模块") log_warning(f"未知的发行版 '{distro_type}',无法自动安装 EFI 模块")
return False, f"无法确定 {distro_type} 的 EFI 包名" return False, f"无法确定 {distro_type} 的 EFI 包名"
# 安装 EFI 包前,先确保网络连接(复制 DNS 配置)
resolv_source = "/etc/resolv.conf"
resolv_target = os.path.join(mount_point, "etc/resolv.conf")
if os.path.exists(resolv_source):
try:
shutil.copy2(resolv_source, resolv_target)
log_info("已复制 DNS 配置到 chroot 环境")
except Exception as e:
log_debug(f"复制 DNS 配置失败: {e}")
# 安装 EFI 包 # 安装 EFI 包
if distro_type in ["centos", "rhel", "fedora", "rocky", "almalinux"]: if distro_type in ["centos", "rhel", "fedora", "rocky", "almalinux"]:
success, _, stderr = run_command( success, _, stderr = run_command(
@@ -1202,6 +1212,11 @@ def check_and_install_efi_modules(mount_point: str, distro_type: str, is_uefi: b
timeout=300 timeout=300
) )
elif distro_type in ["debian", "ubuntu"]: elif distro_type in ["debian", "ubuntu"]:
success, _, stderr = run_command(
chroot_cmd_prefix + ["apt-get", "update"],
f"更新包列表",
timeout=120
)
success, _, stderr = run_command( success, _, stderr = run_command(
chroot_cmd_prefix + ["apt-get", "install", "-y"] + efi_packages, chroot_cmd_prefix + ["apt-get", "install", "-y"] + efi_packages,
f"安装 UEFI GRUB 包", f"安装 UEFI GRUB 包",
@@ -1209,7 +1224,7 @@ def check_and_install_efi_modules(mount_point: str, distro_type: str, is_uefi: b
) )
elif distro_type in ["arch", "manjaro"]: elif distro_type in ["arch", "manjaro"]:
success, _, stderr = run_command( success, _, stderr = run_command(
chroot_cmd_prefix + ["pacman", "-S", "--noconfirm"] + efi_packages, chroot_cmd_prefix + ["pacman", "-Sy", "--noconfirm"] + efi_packages,
f"安装 UEFI GRUB 包", f"安装 UEFI GRUB 包",
timeout=300 timeout=300
) )