X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/blobdiff_plain/a4200ed99eaae5ec2b3034077d9a5ff461d5e8e8..5b0fca84688ac0fa7fd34e45f7a9f9e10c551bee:/INSTALL/grub/grub.cfg diff --git a/INSTALL/grub/grub.cfg b/INSTALL/grub/grub.cfg index 6e1dd64..fe74ffa 100644 --- a/INSTALL/grub/grub.cfg +++ b/INSTALL/grub/grub.cfg @@ -65,10 +65,6 @@ function ventoy_vcfg_proc { fi } -function ventoy_power { - configfile $prefix/power.cfg -} - function ventoy_diagnosis { vt_enum_video_mode configfile $prefix/debug.cfg @@ -157,9 +153,7 @@ function vt_check_compatible_pe { #Check for PE without external tools #set compatible if ISO file is less than 80MB if [ $vt_chosen_size -gt 33554432 -a $vt_chosen_size -le 83886080 ]; then - set ventoy_compatible=YES - elif [ -e $1/WEPE/WEPE.INI ]; then - set ventoy_compatible=YES + set ventoy_compatible=YES fi return @@ -168,6 +162,8 @@ function vt_check_compatible_pe { function vt_check_compatible_linux { if vt_str_begin "$vt_volume_id" "embootkit"; then set ventoy_compatible=YES + elif [ -e "$1/casper/tinycore.gz" ]; then + set ventoy_compatible=YES fi return @@ -236,6 +232,8 @@ function distro_specify_initrd_file { vt_linux_specify_initrd_file /initrd.gz elif [ -e (loop)/slax/boot/initrfs.img ]; then vt_linux_specify_initrd_file /slax/boot/initrfs.img + elif [ -e (loop)/minios/boot/initrfs.img ]; then + vt_linux_specify_initrd_file /minios/boot/initrfs.img elif [ -e (loop)/pmagic/initrd.img ]; then vt_linux_specify_initrd_file /pmagic/initrd.img elif [ -e (loop)/boot/initrd.xz ]; then @@ -259,6 +257,10 @@ function distro_specify_initrd_file { vt_linux_specify_initrd_file /isolinux/initrd.gz fi + if vt_str_begin "$vt_volume_id" "QUBES"; then + vt_linux_specify_initrd_file /images/pxeboot/initrd.img + fi + if [ "$vt_chosen_size" = "1133375488" ]; then if [ -d (loop)/boot/grub/x86_64-efi ]; then vt_cpio_busybox64 "64h" @@ -360,6 +362,9 @@ function distro_specify_initrd_file_phase2 { vt_linux_specify_initrd_file /pyabr/boot/initrfs.img elif [ -f (loop)/initrd0.img ]; then vt_linux_specify_initrd_file /initrd0.img + elif [ -f (loop)/sysresccd/boot/i686/sysresccd.img ]; then + vt_linux_specify_initrd_file /sysresccd/boot/i686/sysresccd.img + fi } @@ -721,7 +726,9 @@ function uefi_linux_menu_func { elif [ -e (loop)/syslinux/alt0/full.cz ]; then vt_add_replace_file 0 "EFI\\BOOT\\full.cz" set FirstTryBootFile='@EFI@BOOT@grubx64.efi' - + + elif vt_str_begin "$vt_volume_id" "SolusLive"; then + vt_add_replace_file 0 "initrd" fi @@ -739,7 +746,16 @@ function uefi_linux_menu_func { ventoy_acpi_param ${vtoy_chain_mem_addr} 2048 ventoy_cli_console + unset vtGrub2Mode if vt_check_mode 3; then + set vtGrub2Mode=1 + elif vt_str_begin "$vt_volume_id" "KRD"; then + if [ -f (loop)/boot/grub/grub.cfg.sig ]; then + set vtGrub2Mode=1 + fi + fi + + if [ -n "$vtGrub2Mode" ]; then ventoy_debug_pause else if [ "$VTOY_EFI_ARCH" != "mips" ]; then @@ -1386,7 +1402,19 @@ function efi_common_menuentry { return fi - vt_concat_efi_iso "${vtoy_iso_part}${vt_chosen_path}" vtoy_iso_buf + unset vt_vlnk_dst + if vt_is_vlnk_name "${vt_chosen_path}"; then + vt_get_vlnk_dst "${vtoy_iso_part}${vt_chosen_path}" vt_vlnk_dst + if [ -z "$vt_vlnk_dst" ]; then + echo -e "\n### VLNK FILE NOT FOUND ###\n### VLNK 文件不存在 ###\n" + ventoy_pause + return + fi + else + vt_vlnk_dst="${vtoy_iso_part}${vt_chosen_path}" + fi + + vt_concat_efi_iso "${vt_vlnk_dst}" vtoy_iso_buf ventoy_debug_pause @@ -1398,7 +1426,7 @@ function efi_common_menuentry { if [ -n "$vtoy_dotefi_retry" ]; then unset vtoy_dotefi_retry - chainloader "${vtoy_iso_part}${vt_chosen_path}" + chainloader "${vt_vlnk_dst}" boot fi @@ -1434,17 +1462,6 @@ function vhdboot_common_func { } function vhd_common_menuentry { - - if [ "$VTOY_VHD_NO_WARNING" != "1" ]; then - if [ "$vtoy_iso_fs" != "ntfs" ]; then - echo -e "!!! WARNING !!!\n" - echo -e "\nPartition1 ($vtoy_iso_fs) is NOT ntfs, the VHD(x) file may not boot normally \n" - echo -e "\nVHD(x) 文件所在分区不是 ntfs 格式, 可能无法正常启动 \n\n" - echo -n "press ENTER to continue boot (请按 回车 键继续) ..." - read vtInputKey - fi - fi - vt_chosen_img_path vt_chosen_path vt_chosen_size if vt_check_password "${vt_chosen_path}"; then @@ -1455,7 +1472,28 @@ function vhd_common_menuentry { return fi - vhdboot_common_func "${vt_chosen_path}" + unset vt_vlnk_dst + if vt_is_vlnk_name "${vt_chosen_path}"; then + vt_get_vlnk_dst "${vtoy_iso_part}${vt_chosen_path}" vt_vlnk_dst + if [ -z "$vt_vlnk_dst" ]; then + echo -e "\n### VLNK FILE NOT FOUND ###\n### VLNK 文件不存在 ###\n" + ventoy_pause + return + fi + else + vt_vlnk_dst="${vt_chosen_path}" + if [ "$VTOY_VHD_NO_WARNING" != "1" ]; then + if [ "$vtoy_iso_fs" != "ntfs" ]; then + echo -e "!!! WARNING !!!\n" + echo -e "\nPartition1 ($vtoy_iso_fs) is NOT ntfs, the VHD(x) file may not boot normally \n" + echo -e "\nVHD(x) 文件所在分区不是 ntfs 格式, 可能无法正常启动 \n\n" + echo -n "press ENTER to continue boot (请按 回车 键继续) ..." + read vtInputKey + fi + fi + fi + + vhdboot_common_func "${vt_vlnk_dst}" } function vhd_unsupport_menuentry { @@ -1531,7 +1569,19 @@ function vtoy_common_menuentry { return fi - vtoyboot_common_func "${vtoy_iso_part}${vt_chosen_path}" + unset vt_vlnk_dst + if vt_is_vlnk_name "${vt_chosen_path}"; then + vt_get_vlnk_dst "${vtoy_iso_part}${vt_chosen_path}" vt_vlnk_dst + if [ -z "$vt_vlnk_dst" ]; then + echo -e "\n### VLNK FILE NOT FOUND ###\n### VLNK 文件不存在 ###\n" + ventoy_pause + return + fi + else + vt_vlnk_dst="${vtoy_iso_part}${vt_chosen_path}" + fi + + vtoyboot_common_func "${vt_vlnk_dst}" } function vtoy_unsupport_menuentry { @@ -1684,9 +1734,23 @@ function ventoy_img_ubos { } function ventoy_img_recalbox { + if [ $vtoy_img_max_part_end -gt $vt_chosen_size ]; then + echo -e "\nPlease extend the img file size before boot it. \n" + ventoy_pause + return + fi + 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 + if [ -e (vtimghd,1)/boot/recalbox ]; then + loopback recalbox (vtimghd,1)/boot/recalbox + vt_get_lib_module_ver (recalbox) /lib/modules/ vt_module_ver + if [ -n "$vt_module_ver" ]; then + vt_img_extra_initrd_append (recalbox)/lib/modules/$vt_module_ver/kernel/drivers/md/dm-mod.ko + fi + fi + ventoy_debug_pause #boot image file @@ -1967,7 +2031,7 @@ function img_common_menuentry { ventoy_img_batocera elif vt_str_begin "$vtImgHd1Label" "Tails"; then ventoy_img_tails - elif [ "$vtImgHd2Label" = "RECALBOX" ]; then + elif [ "$vtImgHd2Label" = "RECALBOX" -o "$vtImgHd1Label" = "RECALBOX" ]; then ventoy_img_recalbox elif [ "$vtImgHd1Label" = "ESYSRESCUE" ]; then ventoy_img_esysrescue @@ -2018,7 +2082,7 @@ function img_unsupport_menuentry { ############################################################# ############################################################# -set VENTOY_VERSION="1.0.61" +set VENTOY_VERSION="1.0.70" #ACPI not compatible with Window7/8, so disable by default set VTOY_PARAM_NO_ACPI=1 @@ -2034,7 +2098,7 @@ set VTOY_GRUB2_MODE_STR="GRUB2 Mode" set VTOY_WIMBOOT_MODE_STR="WIMBOOT Mode" set VTOY_ISO_UEFI_DRV_STR="UEFI FS" -set VTOY_F2_CMD="ventoy_power" +set VTOY_F2_CMD="vt_browser_disk" set VTOY_F4_CMD="ventoy_localboot" set VTOY_F5_CMD="ventoy_diagnosis" set VTOY_F6_CMD="ventoy_ext_menu" @@ -2132,12 +2196,13 @@ fi if [ $VTOY_DEFAULT_MENU_MODE -eq 0 ]; then set VTOY_F3_CMD="vt_dynamic_menu 1 1" - set VTOY_HOTKEY_TIP="h:Help F1:Memdisk F2:Power F3:TreeView F4:Localboot F5:Tools F6:ExMenu" + set VTOY_HOTKEY_TIP="h:Help F1:Memdisk F2:Browser F3:TreeView F4:Localboot F5:Tools F6:ExMenu" else set VTOY_F3_CMD="vt_dynamic_menu 1 0" - set VTOY_HOTKEY_TIP="h:Help F1:Memdisk F2:Power F3:ListView F4:Localboot F5:Tools F6:ExMenu" + set VTOY_HOTKEY_TIP="h:Help F1:Memdisk F2:Browser F3:ListView F4:Localboot F5:Tools F6:ExMenu" fi +terminal_output console if [ -n "$vtoy_gfxmode" ]; then set gfxmode=$vtoy_gfxmode @@ -2254,9 +2319,7 @@ if [ -n "$VTOY_DEFAULT_IMAGE" ]; then export timeout export default - if [ "$vtHotkey" = "F2" ]; then - ventoy_power - elif [ "$vtHotkey" = "F4" ]; then + if [ "$vtHotkey" = "F4" ]; then ventoy_localboot elif [ "$vtHotkey" = "F5" ]; then ventoy_diagnosis