X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/blobdiff_plain/a37c6af8d083a98e64bb6c30efccf60eb3f71a6d..1840cb8f38f3ee14a50a5779ecbf7897f8f02bd9:/INSTALL/grub/grub.cfg diff --git a/INSTALL/grub/grub.cfg b/INSTALL/grub/grub.cfg index 2a61314..85a630a 100644 --- a/INSTALL/grub/grub.cfg +++ b/INSTALL/grub/grub.cfg @@ -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 } @@ -528,7 +543,7 @@ function uefi_linux_menu_func { loopback loop "$1$2" fi - vt_load_cpio ${vtoy_path}/ventoy.cpio "$2" "$1" "busybox=$ventoy_busybox_ver" + vt_load_cpio $vtoy_path "$2" "$1" "busybox=$ventoy_busybox_ver" vt_linux_clear_initrd @@ -630,9 +645,45 @@ 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} - boot + ventoy_cli_console + + if [ "$VTOY_EFI_ARCH" != "mips" ]; then + 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 + fi + + # 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) + set vtback_cfg_find=0 + 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 + set vtback_cfg_find=1 + configfile "$cfg" + break + fi + done + + if [ "$vtback_cfg_find" = "0" ]; then + echo " " + echo "No bootfile found for UEFI!" + echo "Maybe the image does not support $VTOY_EFI_ARCH UEFI" + echo " " + sleep 30 + fi + + vt_unset_boot_opt + set root=$vtback_root + set theme=$vtback_theme + vt_pop_last_entry + ventoy_gui_console else echo "chain empty failed" ventoy_pause @@ -653,6 +704,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 +735,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}" @@ -777,7 +836,7 @@ function legacy_linux_menu_func { loopback loop "$1$2" fi - vt_load_cpio $vtoy_path/ventoy.cpio "$2" "$1" "busybox=$ventoy_busybox_ver" + vt_load_cpio $vtoy_path "$2" "$1" "busybox=$ventoy_busybox_ver" vt_linux_clear_initrd @@ -865,7 +924,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}" @@ -914,7 +973,7 @@ function iso_endless_os_proc { loopback loop "${1}${2}" vt_img_sector "${1}${2}" - vt_load_cpio $vtoy_path/ventoy.cpio "$2" "$1" "busybox=$ventoy_busybox_ver" + vt_load_cpio $vtoy_path "$2" "$1" "busybox=$ventoy_busybox_ver" vt_trailer_cpio "$1" "$2" noinit ventoy_debug_pause @@ -940,6 +999,8 @@ function ventoy_iso_busybox_ver { if [ "$VTOY_EFI_ARCH" = "aa64" ]; then set ventoy_busybox_ver=a64 + elif [ "$VTOY_EFI_ARCH" = "mips" ]; then + set ventoy_busybox_ver=m64 else set ventoy_busybox_ver=32 @@ -959,6 +1020,7 @@ function ventoy_iso_busybox_ver { fi } + function iso_common_menuentry { unset vt_system_id unset vt_volume_id @@ -981,7 +1043,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 +1117,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 +1156,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 +1201,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 +1270,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 +1295,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}" } @@ -1230,7 +1314,7 @@ function vtoy_unsupport_menuentry { function ventoy_img_easyos { - vt_load_cpio $vtoy_path/ventoy.cpio "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" + vt_load_cpio $vtoy_path "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" vt_trailer_cpio ${vtoy_iso_part} "${vt_chosen_path}" noinit loopback easysfs (vtimghd,1)/easy.sfs @@ -1256,7 +1340,7 @@ function ventoy_img_easyos { } function ventoy_img_volumio { - vt_load_cpio $vtoy_path/ventoy.cpio "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" + vt_load_cpio $vtoy_path "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" vt_trailer_cpio ${vtoy_iso_part} "${vt_chosen_path}" noinit ventoy_debug_pause @@ -1274,7 +1358,7 @@ function ventoy_img_volumio { function ventoy_img_openelec { elec_ver=$1 - vt_load_cpio $vtoy_path/ventoy.cpio "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" + vt_load_cpio $vtoy_path "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" vt_trailer_cpio ${vtoy_iso_part} "${vt_chosen_path}" noinit loopback vtloopex $vtoy_efi_part/ventoy/vtloopex.cpio @@ -1296,7 +1380,7 @@ function ventoy_img_openelec { function ventoy_img_freedombox { - vt_load_cpio $vtoy_path/ventoy.cpio "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" + vt_load_cpio $vtoy_path "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" vt_trailer_cpio ${vtoy_iso_part} "${vt_chosen_path}" noinit vt_get_lib_module_ver (vtimghd,1) /lib/modules/ vt_module_ver @@ -1317,7 +1401,7 @@ function ventoy_img_freedombox { } function ventoy_img_paldo { - vt_load_cpio $vtoy_path/ventoy.cpio "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" + vt_load_cpio $vtoy_path "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" vt_trailer_cpio ${vtoy_iso_part} "${vt_chosen_path}" noinit ventoy_debug_pause @@ -1339,7 +1423,7 @@ function ventoy_img_paldo { } function ventoy_img_ubos { - vt_load_cpio $vtoy_path/ventoy.cpio "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" + vt_load_cpio $vtoy_path "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" vt_trailer_cpio ${vtoy_iso_part} "${vt_chosen_path}" noinit vt_get_lib_module_ver (vtimghd,3) /lib/modules/ vt_module_ver @@ -1363,7 +1447,7 @@ function ventoy_img_ubos { } function ventoy_img_recalbox { - vt_load_cpio $vtoy_path/ventoy.cpio "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" + vt_load_cpio $vtoy_path "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" vt_trailer_cpio ${vtoy_iso_part} "${vt_chosen_path}" noinit ventoy_debug_pause @@ -1380,7 +1464,7 @@ function ventoy_img_recalbox { } function ventoy_img_batocera { - vt_load_cpio $vtoy_path/ventoy.cpio "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" + vt_load_cpio $vtoy_path "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver" vt_trailer_cpio ${vtoy_iso_part} "${vt_chosen_path}" noinit ventoy_debug_pause @@ -1418,6 +1502,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 +1584,7 @@ function img_unsupport_menuentry { ############################################################# ############################################################# -set VENTOY_VERSION="1.0.33" +set VENTOY_VERSION="1.0.37" #ACPI not compatible with Window7/8, so disable by default set VTOY_PARAM_NO_ACPI=1 @@ -1524,6 +1612,9 @@ else elif [ "$grub_cpu" = "arm64" ]; then set VTOY_EFI_ARCH=aa64 set VTOY_TEXT_MENU_VER="Ventoy $VENTOY_VERSION AA64 www.ventoy.net" + elif [ "$grub_cpu" = "mips64el" ]; then + set VTOY_EFI_ARCH=mips + set VTOY_TEXT_MENU_VER="Ventoy $VENTOY_VERSION MIPS www.ventoy.net" else set VTOY_EFI_ARCH=x64 set VTOY_TEXT_MENU_VER="Ventoy $VENTOY_VERSION UEFI www.ventoy.net"