X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/blobdiff_plain/05a1b863a66bf72b26e5d87570c4e0e61b9736cd..790fa744f85c7dff5fe6f1905cd4268980c60dda:/INSTALL/grub/grub.cfg diff --git a/INSTALL/grub/grub.cfg b/INSTALL/grub/grub.cfg index 6872363..2a71af3 100644 --- a/INSTALL/grub/grub.cfg +++ b/INSTALL/grub/grub.cfg @@ -79,6 +79,10 @@ function uefi_windows_menu_func { vt_windows_chain_data ${1}${chosen_path} + if [ -n "${vtdebug_flag}" ]; then + sleep 5 + fi + if [ -n "$vtoy_chain_mem_addr" ]; then terminal_output console chainloader ${vtoy_path}/ventoy_x64.efi env_param=${env_param} isoefi=${LoadIsoEfiDriver} ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size} @@ -140,8 +144,15 @@ function uefi_iso_menu_func { loopback -d loop fi - unset LoadIsoEfiDriver - + if [ -n "$vtisouefi" ]; then + set LoadIsoEfiDriver=on + unset vtisouefi + elif [ -n "$VTOY_ISO_UEFI_DRV" ]; then + set LoadIsoEfiDriver=on + else + unset LoadIsoEfiDriver + fi + vt_chosen_img_path chosen_path if vt_is_udf ${1}${chosen_path}; then @@ -153,11 +164,22 @@ function uefi_iso_menu_func { loopback loop ${1}${chosen_path} get_os_type (loop) - vt_check_compatible (loop) + if [ -n "$vtcompat" ]; then + set ventoy_compatible=YES + unset vtcompat + elif [ -n "$VTOY_ISO_RAW" ]; then + set ventoy_compatible=YES + else + vt_check_compatible (loop) + fi vt_img_sector ${1}${chosen_path} if [ "$vtoy_os" = "Windows" ]; then + if [ "$ventoy_fs_probe" = "iso9660" ]; then + set ventoy_compatible=YES + fi + uefi_windows_menu_func $1 else uefi_linux_menu_func $1 @@ -166,6 +188,21 @@ function uefi_iso_menu_func { terminal_output gfxterm } +function uefi_iso_memdisk { + vt_chosen_img_path chosen_path + + echo 'Loading ISO file to memory ...' + vt_load_iso_to_mem ${1}${chosen_path} vtoy_iso_buf + + terminal_output console + chainloader ${vtoy_path}/ventoy_x64.efi memdisk env_param=${env_param} isoefi=${LoadIsoEfiDriver} ${vtdebug_flag} mem:${vtoy_iso_buf_addr}:size:${vtoy_iso_buf_size} + boot +} + + + + + function legacy_windows_menu_func { vt_windows_reset @@ -268,19 +305,35 @@ function legacy_iso_menu_func { get_os_type (loop) - vt_check_compatible (loop) + if [ -n "$vtcompat" ]; then + set ventoy_compatible=YES + unset vtcompat + elif [ -n "$VTOY_ISO_RAW" ]; then + set ventoy_compatible=YES + else + vt_check_compatible (loop) + fi vt_img_sector ${1}${chosen_path} - + if [ "$vtoy_os" = "Windows" ]; then + if [ "$ventoy_fs_probe" = "iso9660" ]; then + set ventoy_compatible=YES + fi legacy_windows_menu_func $1 else legacy_linux_menu_func $1 fi } +function legacy_iso_memdisk { + vt_chosen_img_path chosen_path - + linux16 $vtoy_path/memdisk iso raw + echo "Loading ISO file to memory ..." + initrd16 ${1}${chosen_path} + boot +} ############################################################# @@ -291,11 +344,15 @@ function legacy_iso_menu_func { ############################################################# ############################################################# -set VENTOY_VERSION="1.0.00" +set VENTOY_VERSION="1.0.04" #disable timeout unset timeout +set VTOY_MEM_DISK_STR="MEMDISK" +set VTOY_ISO_RAW_STR="ISO RAW" +set VTOY_ISO_UEFI_DRV_STR="UEFI FS" + vt_device $root vtoy_dev if [ "$vtoy_dev" = "tftp" ]; then @@ -342,9 +399,17 @@ if vt_cmp $ventoy_img_count ne 0; then vt_img_name $imgid img_name menuentry "$img_name" { if [ "$grub_platform" = "pc" ]; then - legacy_iso_menu_func $iso_path + if [ -n "$VTOY_MEM_DISK" ]; then + legacy_iso_memdisk $iso_path + else + legacy_iso_menu_func $iso_path + fi else - uefi_iso_menu_func $iso_path + if [ -n "$VTOY_MEM_DISK" ]; then + uefi_iso_memdisk $iso_path + else + uefi_iso_menu_func $iso_path + fi fi }