diff --git a/trans.sh b/trans.sh index 7e6782a..50cbfff 100644 --- a/trans.sh +++ b/trans.sh @@ -2328,6 +2328,10 @@ get_disk_logic_sector_size() { blockdev --getss "$1" } +is_4kn() { + [ "$(blockdev --getss "$1")" = 4096 ] +} + is_xda_gt_2t() { disk_size=$(get_disk_size /dev/$xda) disk_2t=$((2 * 1024 * 1024 * 1024 * 1024)) @@ -6527,6 +6531,12 @@ EOF sed -i 's/EnableEMS=0/EnableEMS=1/i' $startnet_cmd fi + # 4kn EFI 分区最少要 260M + # https://learn.microsoft.com/windows-hardware/manufacture/desktop/hard-drives-and-partitions + if is_4kn /dev/$xda; then + sed -i 's/is4kn=0/is4kn=1/i' $startnet_cmd + fi + # Windows Thin PC 有 Windows\System32\winpeshl.ini # [LaunchApps] # %SYSTEMDRIVE%\windows\system32\drvload.exe, %SYSTEMDRIVE%\windows\inf\sdbus.inf diff --git a/windows-setup.bat b/windows-setup.bat index 1789490..a71e8a0 100644 --- a/windows-setup.bat +++ b/windows-setup.bat @@ -93,6 +93,14 @@ for /f "tokens=3" %%a in (X:\disk.txt) do ( ) del X:\disk.txt +rem 这个变量会被 trans.sh 修改 +set is4kn=0 +if "%is4kn%"=="1" ( + set EFISize=260 +) else ( + set EFISize=100 +) + rem 重新分区/格式化 (if "%BootType%"=="efi" ( echo select disk %DiskIndex% @@ -104,7 +112,7 @@ rem 重新分区/格式化 echo select part 3 echo delete part override - echo create part efi size=100 + echo create part efi size=%EFISize% echo format fs=fat32 quick echo create part msr size=16