From d0210d65823852b93bde7abfd6089fb1a47e09a8 Mon Sep 17 00:00:00 2001 From: zj <1052308357@qq.com> Date: Wed, 11 Feb 2026 03:23:56 +0800 Subject: [PATCH] fix2 --- __pycache__/backend.cpython-36.pyc | Bin 12582 -> 13064 bytes backend.py | 25 ++++++++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/__pycache__/backend.cpython-36.pyc b/__pycache__/backend.cpython-36.pyc index 1db805ea4e54ef5011dffc5fc05cf91e7c9204c1..f427b280c296e1db47ef444b5b890c55b6a35ebd 100644 GIT binary patch delta 985 zcmZuvOHUI~6u#$n+D@krs}P_(bhJpQrm%2fV%UfeqKSwQFhMZ3+_vG>;!I1F%%sMG zw5Tbj8chg^L`60hNR7c*Wk*ch=t_S818ri$!kr7_odKmNxw-eA@5`C*JLk-u^~U|& zF{_okId-@AV%H+q?Bt9Hp;L5=zfxXj4Wv^EXQfxtTaYkHILX*=5U&#R)@@O5VKj`1 zH3opfATdNw48%xSVhiX?5!n;NT{>AW8)T!T7guPe{h!Re0fy%7OHDZ)(V`vM-w2Rm z$vB0ku^+dg0FqfrM{23#cTySvnGLQ{T-J{#LBPa8%1K2)N7>Jmt<>0#u&$5k(@Tg{ z#jtGpi}q8*X~>|RM#&U|7(}Vid2)aX@tP2)#haoM6+Nhl4isegDSJp`Zx^sFH=2p- zH0o}U&3`NbnEJ+P15M?USv77!lW;wL8EyBZPF7;+oT>{aGzsEQ zI-|qeGa^UYkn3pXNA)L&R?(lRq!YPkW9?_op5vQZ+Z#8sab;K>4Lt$Qw3=M^Zu#a?dK7X$_6bcUpgigKoS)`q+UTO67^!tLOo6o(P zRUS;7;Hi+3e3Bne=F-dg$7$vHVlMjn#YXm?vM`;Sf3&)EfA#(H`olR*gRgbFgCTct zSnv$G_{|dQ>gqBx7{FVc=`#gWCk) iNPVmmp*+=4FG59Tp}q%-I?Eb3U@;4Js#Hu@3H}W*?>8j? delta 521 zcmYjNJxc>Y6x_FWxokEuMiXPy;8#$LjRp%FD?hQ3phy~RbWJdkfOjb@_K0u@QAC1g zCxReYSO{`pZDpgCm8FG({sk-FC2GQBVP^I*vpbdS^#-44Y2n$oqivSC<4Xyy5khA0 z7{~TTVi>0F!$iDXjFmvD!XqI^JBi>HT~kbtshM8sF?Iw9zx1Ay3!0@XBu7jp713AF z^nDS`fys(*$Xg3kKNBI*CfaifYR{;JQF|}ZypmTX5fO`;zJJz%jMtc_RCZT1>9fEB z{Z&NKq_bwiYq)MG(J)q^Rib}4ZDdjHLKXB-lbYUJ68*DeeaiIz1xkP3E4nd(nt|Wg zdTPLev;}Aobzd+2Zg84ZVKOax|15JImAPL%!tmneIu diff --git a/backend.py b/backend.py index 17dfc08..65fe621 100644 --- a/backend.py +++ b/backend.py @@ -394,11 +394,34 @@ def chroot_and_repair_grub(mount_point: str, target_disk: str, # 1. 安装GRUB到目标磁盘 if is_uefi: + # UEFI模式:首先尝试正常安装(注册NVRAM启动项) success, _, stderr = run_command( chroot_cmd_prefix + ["grub-install", "--target=x86_64-efi", "--efi-directory=/boot/efi", "--bootloader-id=GRUB"], - "安装UEFI GRUB" + "安装UEFI GRUB(带NVRAM)" ) + + # 如果失败是因为EFI变量不支持(常见于Live环境修复外部磁盘),使用 --no-nvram 重试 + if not success and ("EFI variables are not supported" in stderr or + "efibootmgr" in stderr or + "NVRAM" in stderr): + print(f"[Backend] 警告: EFI变量访问失败,尝试不使用NVRAM (--no-nvram) 安装...") + success, _, stderr = run_command( + chroot_cmd_prefix + ["grub-install", "--target=x86_64-efi", + "--efi-directory=/boot/efi", "--bootloader-id=GRUB", + "--no-nvram"], + "安装UEFI GRUB(不带NVRAM)" + ) + + # 如果仍然失败,尝试 --removable 选项(某些固件需要) + if not success: + print(f"[Backend] 警告: 标准安装失败,尝试 --removable 选项...") + success, _, stderr = run_command( + chroot_cmd_prefix + ["grub-install", "--target=x86_64-efi", + "--efi-directory=/boot/efi", + "--removable"], + "安装UEFI GRUB(可移动模式)" + ) else: success, _, stderr = run_command( chroot_cmd_prefix + ["grub-install", target_disk],