]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - INSTALL/grub/grub.cfg
Add VTOY_MAX_SEARCH_LEVEL option in global control plugin
[Ventoy.git] / INSTALL / grub / grub.cfg
index 2a61314fd12810a9a0f2c0e1724937b4cf5cd115..9edba9e1cce97cdecd9fe4bc8f528b0f9549783e 100644 (file)
@@ -50,6 +50,21 @@ function ventoy_acpi_param {
     fi
 }
 
+function ventoy_vcfg_proc {
+    if vt_check_custom_boot "${1}" vt_vcfg; then
+        set vtoy_chosen_path="${1}"
+        vt_file_basefile "${vtoy_chosen_path}" vtoy_chosen_file
+        
+        export vtoy_chosen_path
+        export vtoy_chosen_file
+        ventoy_debug_pause
+        configfile "${vtoy_iso_part}${vt_vcfg}"
+        true
+    else
+        false
+    fi
+}
+
 function ventoy_power {
     configfile $prefix/power.cfg
 }
@@ -631,8 +646,35 @@ function uefi_linux_menu_func {
     if [ -n "$vtoy_chain_mem_addr" ]; then
         ventoy_acpi_param ${vtoy_chain_mem_addr} 2048
         ventoy_cli_console       
-        chainloader ${vtoy_path}/ventoy_${VTOY_EFI_ARCH}.efi  env_param=${env_param} isoefi=${LoadIsoEfiDriver} FirstTry=${FirstTryBootFile} ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}
+        chainloader ${vtoy_path}/ventoy_${VTOY_EFI_ARCH}.efi fallback env_param=${env_param} isoefi=${LoadIsoEfiDriver} FirstTry=${FirstTryBootFile} ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}
         boot
+        
+        # fallback
+        set vtback_root=$root        
+        vt_push_last_entry
+        set vtback_theme=$theme
+        unset theme
+        
+        vt_trailer_cpio "$vtoy_iso_part" "$vt_chosen_path" noinit
+        vt_set_boot_opt rdinit=/vtoy/vtoy
+
+        set root=(loop)
+        for cfg in "/boot/grub/grub.cfg" "/EFI/BOOT/grub.cfg" "/EFI/debian/grub.cfg" "EFI/boot/grub.cfg" "efi/boot/grub.cfg" "/grub/grub.cfg" "EFI/BOOT/BOOTX64.conf"; do
+            if [ -e "$cfg" ]; then
+                configfile "$cfg"
+                break
+            fi
+        done
+
+        vt_unset_boot_opt
+        set root=$vtback_root        
+        set theme=$vtback_theme
+        vt_pop_last_entry
+        ventoy_gui_console
+
+        echo "No bootfile found for UEFI!"
+        echo "Maybe the image does not support $VTOY_EFI_ARCH UEFI"
+        echo " "
     else
         echo "chain empty failed"
         ventoy_pause
@@ -653,6 +695,14 @@ function uefi_unix_menu_func {
     fi
 }
 
+function ventoy_reset_nojoliet {
+    if vt_str_begin "$vt_volume_id" "ARCARESCUE"; then
+        vt_iso9660_nojoliet 1
+    else
+        vt_iso9660_nojoliet 0
+    fi
+}
+
 function uefi_iso_menu_func {
 
     if [ -d (loop)/ ]; then
@@ -676,7 +726,7 @@ function uefi_iso_menu_func {
         set ventoy_fs_probe=udf
     else
         set ventoy_fs_probe=iso9660
-        vt_iso9660_nojoliet 0
+        ventoy_reset_nojoliet
     fi
 
     loopback loop "${1}${chosen_path}"
@@ -865,7 +915,7 @@ function legacy_iso_menu_func {
         set ventoy_fs_probe=udf
     else
         set ventoy_fs_probe=iso9660
-        vt_iso9660_nojoliet 0
+        ventoy_reset_nojoliet
     fi
     
     loopback loop "${1}${chosen_path}"
@@ -959,6 +1009,7 @@ function ventoy_iso_busybox_ver {
     fi
 }
 
+
 function iso_common_menuentry {
     unset vt_system_id
     unset vt_volume_id
@@ -981,7 +1032,11 @@ function iso_common_menuentry {
     if vt_check_password "${vt_chosen_path}"; then
         return
     fi
-        
+
+    if ventoy_vcfg_proc "${vt_chosen_path}"; then        
+        return
+    fi
+
     if vt_str_begin "$vt_volume_id" "Avira"; then 
         vt_skip_svd "${vtoy_iso_part}${vt_chosen_path}"
     fi
@@ -1051,6 +1106,10 @@ function wim_common_menuentry {
         return
     fi
     
+    if ventoy_vcfg_proc "${vt_chosen_path}"; then        
+        return
+    fi
+    
     if vt_wim_check_bootable "${vtoy_iso_part}${vt_chosen_path}"; then
         vt_wim_chain_data "${vtoy_iso_part}${vt_chosen_path}"
     else
@@ -1086,6 +1145,10 @@ function efi_common_menuentry {
         return
     fi
     
+    if ventoy_vcfg_proc "${vt_chosen_path}"; then        
+        return
+    fi
+    
     vt_concat_efi_iso "${vtoy_iso_part}${vt_chosen_path}" vtoy_iso_buf
     
     ventoy_debug_pause
@@ -1127,6 +1190,10 @@ function vhd_common_menuentry {
         return
     fi
     
+    if ventoy_vcfg_proc "${vt_chosen_path}"; then        
+        return
+    fi
+    
     vt_patch_vhdboot "$vt_chosen_path"
     
     ventoy_debug_pause    
@@ -1192,7 +1259,9 @@ function vtoyboot_common_func {
                 linux16 $vtoy_path/ipxe.krn ${vtdebug_flag} bios80  sector512  mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}   
                 boot
             else
-                vt_acpi_param ${vtoy_chain_mem_addr} 512
+                if vt_check_secureboot_var; then
+                    vt_acpi_param ${vtoy_chain_mem_addr} 512
+                fi
                 ventoy_cli_console
                 chainloader ${vtoy_path}/ventoy_${VTOY_EFI_ARCH}.efi sector512 env_param=${ventoy_env_param} ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}
                 boot
@@ -1215,6 +1284,10 @@ function vtoy_common_menuentry {
         return
     fi    
     
+    if ventoy_vcfg_proc "${vt_chosen_path}"; then        
+        return
+    fi
+    
     vtoyboot_common_func "${vtoy_iso_part}${vt_chosen_path}"
 }
 
@@ -1418,6 +1491,10 @@ function img_common_menuentry {
         return
     fi
 
+    if ventoy_vcfg_proc "${vt_chosen_path}"; then        
+        return
+    fi
+
     if [ -d (vtimghd)/ ]; then
         loopback -d vtimghd
     fi
@@ -1496,7 +1573,7 @@ function img_unsupport_menuentry {
 #############################################################
 #############################################################
 
-set VENTOY_VERSION="1.0.33"
+set VENTOY_VERSION="1.0.36"
 
 #ACPI not compatible with Window7/8, so disable by default
 set VTOY_PARAM_NO_ACPI=1