|
|
|
@ -599,34 +599,35 @@ function ventoy_unix_comm_proc {
|
|
|
|
|
function uefi_windows_menu_func {
|
|
|
|
|
vt_windows_reset
|
|
|
|
|
|
|
|
|
|
if [ "$ventoy_compatible" = "NO" ]; then
|
|
|
|
|
|
|
|
|
|
if [ "$ventoy_fs_probe" = "iso9660" ]; then
|
|
|
|
|
loopback -d loop
|
|
|
|
|
vt_iso9660_nojoliet 1
|
|
|
|
|
loopback loop "$1$2"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
for file in "efi/microsoft/boot/bcd"; do
|
|
|
|
|
vt_windows_collect_wim_patch bcd (loop)/$file
|
|
|
|
|
done
|
|
|
|
|
if vt_check_mode 4 "$vt_chosen_name"; then
|
|
|
|
|
vt_windows_chain_data "${1}${chosen_path}"
|
|
|
|
|
ventoy_debug_pause
|
|
|
|
|
vtoy_wimboot_func
|
|
|
|
|
else
|
|
|
|
|
if [ "$ventoy_compatible" = "NO" ]; then
|
|
|
|
|
|
|
|
|
|
if [ "$ventoy_fs_probe" = "iso9660" ]; then
|
|
|
|
|
loopback -d loop
|
|
|
|
|
vt_iso9660_nojoliet 1
|
|
|
|
|
loopback loop "$1$2"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
for file in "efi/microsoft/boot/bcd"; do
|
|
|
|
|
vt_windows_collect_wim_patch bcd (loop)/$file
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
vt_windows_count_wim_patch vt_wim_cnt
|
|
|
|
|
if [ $vt_wim_cnt -eq 0 ]; then
|
|
|
|
|
distro_specify_wim_patch_phase2
|
|
|
|
|
vt_windows_count_wim_patch vt_wim_cnt
|
|
|
|
|
if [ $vt_wim_cnt -eq 0 ]; then
|
|
|
|
|
distro_specify_wim_patch_phase2
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
ventoy_debug_pause
|
|
|
|
|
locate_wim "${chosen_path}"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
ventoy_debug_pause
|
|
|
|
|
locate_wim "${chosen_path}"
|
|
|
|
|
vt_windows_chain_data "${1}${chosen_path}"
|
|
|
|
|
ventoy_debug_pause
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
vt_windows_chain_data "${1}${chosen_path}"
|
|
|
|
|
ventoy_debug_pause
|
|
|
|
|
|
|
|
|
|
if vt_check_mode 4 "$vt_chosen_name"; then
|
|
|
|
|
vtoy_windows_wimboot_func
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ -n "$vtoy_chain_mem_addr" ]; then
|
|
|
|
|
ventoy_acpi_param ${vtoy_chain_mem_addr} 2048
|
|
|
|
|
ventoy_cli_console
|
|
|
|
@ -942,8 +943,7 @@ function uefi_iso_memdisk {
|
|
|
|
|
ventoy_gui_console
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function vtoy_windows_wimboot_func {
|
|
|
|
|
function vtoy_windows_wimboot {
|
|
|
|
|
if [ -f (loop)/x86/sources/boot.wim -a -f (loop)/x64/sources/boot.wim ]; then
|
|
|
|
|
vt_sel_wimboot vtoy_wimboot_bit
|
|
|
|
|
if [ "$vtoy_wimboot_bit" = "32" ]; then
|
|
|
|
@ -961,7 +961,7 @@ function vtoy_windows_wimboot_func {
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ -n "${vtdebug_flag}" ]; then
|
|
|
|
|
echo vtoy_wimboot_prefix=$vtoy_wimboot_prefix vtoy_wimboot_bit=$vtoy_wimboot_bit
|
|
|
|
|
echo vtoy_wimboot_prefix=$vtoy_wimboot_prefix vtoy_wimboot_bit=$vtoy_wimboot_bit vt_wimkernel=$vt_wimkernel
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
for wmfile in sources/boot.wim boot/bcd boot/boot.sdi; do
|
|
|
|
@ -971,33 +971,24 @@ function vtoy_windows_wimboot_func {
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
if [ -f $vtoy_wimboot_prefix/sources/install.wim -o -f $vtoy_wimboot_prefix/sources/install.esd ]; then
|
|
|
|
|
vt_windows_wimboot_data
|
|
|
|
|
vt_windows_wimboot_data "$vtoy_wimboot_prefix/sources/boot.wim" vtoy_init_exe
|
|
|
|
|
else
|
|
|
|
|
return
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ "$grub_platform" = "pc" ]; then
|
|
|
|
|
set vt_wimkernel=wimboot.x86_64.xz
|
|
|
|
|
|
|
|
|
|
linux16 "$vtoy_path/$vt_wimkernel" quiet
|
|
|
|
|
ventoy_debug_pause
|
|
|
|
|
|
|
|
|
|
vt_set_wim_load_prompt 1 "Loading files......"
|
|
|
|
|
initrd16 newc:vtoyjump.exe:$vtoy_path/vtoyjump${vtoy_wimboot_bit}.exe \
|
|
|
|
|
newc:wimboot.data:mem:${vtoy_wimboot_mem_addr}:size:${vtoy_wimboot_mem_size} \
|
|
|
|
|
newc:winpeshl.ini:mem:${vtoy_winpeshl_ini_addr}:size:${vtoy_winpeshl_ini_size} \
|
|
|
|
|
initrd16 newc:winpeshl.exe:mem:${vtoy_wimboot_mem_addr}:size:${vtoy_wimboot_mem_size} \
|
|
|
|
|
newc:vtoy_wimboot:$vtoy_wimboot_prefix/boot/bcd \
|
|
|
|
|
newc:bcd:$vtoy_wimboot_prefix/boot/bcd \
|
|
|
|
|
newc:boot.sdi:$vtoy_wimboot_prefix/boot/boot.sdi \
|
|
|
|
|
newc:boot.wim:$vtoy_wimboot_prefix/sources/boot.wim
|
|
|
|
|
vt_set_wim_load_prompt 0
|
|
|
|
|
boot
|
|
|
|
|
else
|
|
|
|
|
if [ "$grub_cpu" = "i386" ]; then
|
|
|
|
|
set vt_wimkernel=wimboot.i386.efi.xz
|
|
|
|
|
else
|
|
|
|
|
set vt_wimkernel=wimboot.x86_64.xz
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
vt_set_wim_load_prompt 1 "Loading files......"
|
|
|
|
|
vt_load_file_to_mem "nodecompress" $vtoy_wimboot_prefix/sources/boot.wim vtoy_wimfile_mem
|
|
|
|
|
vt_set_wim_load_prompt 0
|
|
|
|
@ -1010,9 +1001,8 @@ function vtoy_windows_wimboot_func {
|
|
|
|
|
|
|
|
|
|
ventoy_cli_console
|
|
|
|
|
chainloader "$vtoy_path/$vt_wimkernel" quiet \
|
|
|
|
|
"vf=wimboot.data:mem:${vtoy_wimboot_mem_addr}:size:${vtoy_wimboot_mem_size}" \
|
|
|
|
|
"vf=winpeshl.ini:mem:${vtoy_winpeshl_ini_addr}:size:${vtoy_winpeshl_ini_size}" \
|
|
|
|
|
"vf=vtoyjump.exe:$vtoy_path/vtoyjump${vtoy_wimboot_bit}.exe" \
|
|
|
|
|
"vf=winpeshl.exe:mem:${vtoy_wimboot_mem_addr}:size:${vtoy_wimboot_mem_size}" \
|
|
|
|
|
"vf=vtoy_wimboot:$vtoy_wimboot_prefix/boot/bcd" \
|
|
|
|
|
"vf=bcd:$vtoy_wimboot_prefix/boot/bcd" \
|
|
|
|
|
"vf=boot.sdi:$vtoy_wimboot_prefix/boot/boot.sdi" \
|
|
|
|
|
"vf=boot.wim:$vtoy_wimfile_path" \
|
|
|
|
@ -1023,37 +1013,118 @@ function vtoy_windows_wimboot_func {
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function legacy_windows_menu_func {
|
|
|
|
|
vt_windows_reset
|
|
|
|
|
function vtoy_winpe_wimboot {
|
|
|
|
|
unset vtoy_boot_mgr_exe
|
|
|
|
|
unset vtoy_boot_mgr_efi
|
|
|
|
|
set vtoy_wimboot_prefix=(loop)
|
|
|
|
|
set vtoy_bcd_path="$1"
|
|
|
|
|
set vtoy_sdi_path="$2"
|
|
|
|
|
set vtoy_wim_path="$3"
|
|
|
|
|
set vtoy_mgr_flag="$4"
|
|
|
|
|
|
|
|
|
|
if [ "$ventoy_compatible" = "NO" ]; then
|
|
|
|
|
|
|
|
|
|
if [ "$ventoy_fs_probe" = "iso9660" ]; then
|
|
|
|
|
loopback -d loop
|
|
|
|
|
vt_iso9660_nojoliet 1
|
|
|
|
|
loopback loop "$1$2"
|
|
|
|
|
if [ $vtoy_mgr_flag -eq 1 ]; then
|
|
|
|
|
set vtoy_boot_mgr_exe="newc:bootmgr.exe:$vtoy_wimboot_prefix/$5"
|
|
|
|
|
elif [ $vtoy_mgr_flag -eq 2 ]; then
|
|
|
|
|
set vtoy_boot_mgr_efi="vf=bootmgr.efi:$vtoy_wimboot_prefix/$5"
|
|
|
|
|
elif [ $vtoy_mgr_flag -eq 3 ]; then
|
|
|
|
|
set vtoy_boot_mgr_exe="newc:bootmgr.exe:$vtoy_wimboot_prefix/$5"
|
|
|
|
|
set vtoy_boot_mgr_efi="vf=bootmgr.efi:$vtoy_wimboot_prefix/$6"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
vt_windows_wimboot_data $vtoy_wimboot_prefix/$vtoy_wim_path vtoy_init_exe
|
|
|
|
|
|
|
|
|
|
if [ "$grub_platform" = "pc" ]; then
|
|
|
|
|
linux16 "$vtoy_path/$vt_wimkernel" quiet
|
|
|
|
|
ventoy_debug_pause
|
|
|
|
|
|
|
|
|
|
vt_set_wim_load_prompt 1 "Loading files......"
|
|
|
|
|
initrd16 newc:$vtoy_init_exe:mem:${vtoy_wimboot_mem_addr}:size:${vtoy_wimboot_mem_size} \
|
|
|
|
|
$vtoy_boot_mgr_exe \
|
|
|
|
|
newc:vtoy_wimboot:$vtoy_wimboot_prefix/$vtoy_bcd_path \
|
|
|
|
|
newc:bcd:$vtoy_wimboot_prefix/$vtoy_bcd_path \
|
|
|
|
|
newc:boot.sdi:$vtoy_wimboot_prefix/$vtoy_sdi_path \
|
|
|
|
|
newc:boot.wim:$vtoy_wimboot_prefix/$vtoy_wim_path
|
|
|
|
|
vt_set_wim_load_prompt 0
|
|
|
|
|
boot
|
|
|
|
|
else
|
|
|
|
|
vt_set_wim_load_prompt 1 "Loading files......"
|
|
|
|
|
vt_load_file_to_mem "nodecompress" $vtoy_wimboot_prefix/$vtoy_wim_path vtoy_wimfile_mem
|
|
|
|
|
vt_set_wim_load_prompt 0
|
|
|
|
|
|
|
|
|
|
if [ $? -eq 0 ]; then
|
|
|
|
|
set vtoy_wimfile_path=mem:${vtoy_wimfile_mem_addr}:size:${vtoy_wimfile_mem_size}
|
|
|
|
|
else
|
|
|
|
|
set vtoy_wimfile_path=$vtoy_wimboot_prefix/$vtoy_wim_path
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
for file in "boot/bcd" "/efi/microsoft/boot/bcd" "SSTR/BCD" "boot/bce"; do
|
|
|
|
|
vt_windows_collect_wim_patch bcd (loop)/$file
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
distro_specify_wim_patch
|
|
|
|
|
|
|
|
|
|
vt_windows_count_wim_patch vt_wim_cnt
|
|
|
|
|
if [ $vt_wim_cnt -eq 0 ]; then
|
|
|
|
|
distro_specify_wim_patch_phase2
|
|
|
|
|
ventoy_cli_console
|
|
|
|
|
chainloader "$vtoy_path/$vt_wimkernel" quiet \
|
|
|
|
|
"vf=$vtoy_init_exe:mem:${vtoy_wimboot_mem_addr}:size:${vtoy_wimboot_mem_size}" \
|
|
|
|
|
"vf=vtoy_wimboot:$vtoy_wimboot_prefix/$vtoy_bcd_path" \
|
|
|
|
|
"$vtoy_boot_mgr_efi" \
|
|
|
|
|
"vf=bcd:$vtoy_wimboot_prefix/$vtoy_bcd_path" \
|
|
|
|
|
"vf=boot.sdi:$vtoy_wimboot_prefix/$vtoy_sdi_path" \
|
|
|
|
|
"vf=boot.wim:$vtoy_wimfile_path" \
|
|
|
|
|
pfsize=$vtoy_chain_file_size \
|
|
|
|
|
pfread=$vtoy_chain_file_read
|
|
|
|
|
boot
|
|
|
|
|
ventoy_gui_console
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function vtoy_wimboot_func {
|
|
|
|
|
echo -e "\n===================== VENTOY WIMBOOT ===================\n"
|
|
|
|
|
|
|
|
|
|
if [ "$grub_platform" = "pc" ]; then
|
|
|
|
|
set vt_wimkernel=wimboot.x86_64.xz
|
|
|
|
|
else
|
|
|
|
|
if [ "$grub_cpu" = "i386" ]; then
|
|
|
|
|
set vt_wimkernel=wimboot.i386.efi.xz
|
|
|
|
|
else
|
|
|
|
|
set vt_wimkernel=wimboot.x86_64.xz
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
ventoy_debug_pause
|
|
|
|
|
locate_wim "${chosen_path}"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
vt_windows_chain_data "${1}${chosen_path}"
|
|
|
|
|
ventoy_debug_pause
|
|
|
|
|
if vt_str_begin "$vt_volume_id" "Modified-Win10PEx64"; then
|
|
|
|
|
vtoy_winpe_wimboot 'Boot/bcd' 'Boot/boot.sdi' 'sources/boot.wim' 1 'bootmgr.exe'
|
|
|
|
|
else
|
|
|
|
|
vtoy_windows_wimboot
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function legacy_windows_menu_func {
|
|
|
|
|
vt_windows_reset
|
|
|
|
|
|
|
|
|
|
if vt_check_mode 4 "$vt_chosen_name"; then
|
|
|
|
|
vtoy_windows_wimboot_func
|
|
|
|
|
vt_windows_chain_data "${1}${chosen_path}"
|
|
|
|
|
ventoy_debug_pause
|
|
|
|
|
vtoy_wimboot_func
|
|
|
|
|
else
|
|
|
|
|
if [ "$ventoy_compatible" = "NO" ]; then
|
|
|
|
|
|
|
|
|
|
if [ "$ventoy_fs_probe" = "iso9660" ]; then
|
|
|
|
|
loopback -d loop
|
|
|
|
|
vt_iso9660_nojoliet 1
|
|
|
|
|
loopback loop "$1$2"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
for file in "boot/bcd" "/efi/microsoft/boot/bcd" "SSTR/BCD" "boot/bce"; do
|
|
|
|
|
vt_windows_collect_wim_patch bcd (loop)/$file
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
distro_specify_wim_patch
|
|
|
|
|
|
|
|
|
|
vt_windows_count_wim_patch vt_wim_cnt
|
|
|
|
|
if [ $vt_wim_cnt -eq 0 ]; then
|
|
|
|
|
distro_specify_wim_patch_phase2
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
ventoy_debug_pause
|
|
|
|
|
locate_wim "${chosen_path}"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
vt_windows_chain_data "${1}${chosen_path}"
|
|
|
|
|
ventoy_debug_pause
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ -n "$vtoy_chain_mem_addr" ]; then
|
|
|
|
|