]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - INSTALL/grub/grub.cfg
menu language update
[Ventoy.git] / INSTALL / grub / grub.cfg
index 8b5396fad14f9dde03757c2892a4fef7027a16c0..10260146ff077ad588e6cb3ff3dd49fd2b53014e 100644 (file)
 # 
 #************************************************************************************
 
+if [ "$grub_platform" = "pc" ]; then
+    insmod setkey
+    insmod regexp
+    insmod video_fb
+fi
+
 function ventoy_pause {
     echo "press Enter to continue ......"
     read vtTmpPause
@@ -65,6 +71,10 @@ function ventoy_vcfg_proc {
     fi
 }
 
+function ventoy_language {
+    configfile $prefix/menulang.cfg
+}
+
 function ventoy_diagnosis {
     vt_enum_video_mode    
     configfile $prefix/debug.cfg
@@ -81,7 +91,7 @@ function ventoy_ext_menu {
         unset ventoy_new_context
     else
        echo "ventoy_grub.cfg NOT exist."
-       echo -e "\npress ENTER to exit ..."
+       echo -V "VTMENU_ENTER_EXIT ..."
        read vtInputKey
     fi
 }
@@ -99,8 +109,9 @@ function ventoy_show_help {
         fi
 
         loopback vt_help_tarfs mem:${vtoy_help_txt_mem_addr}:size:${vtoy_help_txt_mem_size}
-        if [ -f "(vt_help_tarfs)/help/${VTOY_HELP_TXT_LANGUAGE}.txt" ]; then
-            cat "(vt_help_tarfs)/help/${VTOY_HELP_TXT_LANGUAGE}.txt"
+        vt_cur_menu_lang vtCurLang
+        if [ -f "(vt_help_tarfs)/help/${vtCurLang}.txt" ]; then
+            cat "(vt_help_tarfs)/help/${vtCurLang}.txt"
         else
             cat "(vt_help_tarfs)/help/en_US.txt"
         fi        
@@ -108,6 +119,11 @@ function ventoy_show_help {
     fi
 }
 
+function ventoy_load_menu_lang_file {
+    vt_load_file_to_mem "auto" $vtoy_efi_part/grub/menu.tar.gz vtoy_menu_lang_mem
+    loopback vt_menu_tarfs mem:${vtoy_menu_lang_mem_addr}:size:${vtoy_menu_lang_mem_size}    
+}
+
 function get_os_type {
     set vtoy_os=Linux
     
@@ -836,6 +852,13 @@ function uefi_linux_menu_func {
                 configfile "mem:${vt_sys_menu_mem_addr}:size:${vt_sys_menu_mem_size}"
             fi
         fi
+        
+        if [ $vtback_cfg_find -eq 0 ]; then
+            if [ -f (loop)/boot/isolinux/syslnx64.cfg ]; then
+                syslinux_configfile (loop)/boot/isolinux/syslnx64.cfg
+                set vtback_cfg_find=1
+            fi
+        fi
 
         if [ "$vtback_cfg_find" = "0" ]; then
             echo " "
@@ -936,6 +959,7 @@ function uefi_iso_menu_func {
         vt_show_secondary_menu "$vt_chosen_path" "$vtoy_os" $vt_chosen_size
         if vt_check_mode 0 "$vt_chosen_name"; then
             uefi_iso_memdisk $vtoy_iso_part  "$vt_chosen_path"
+            vt_secondary_recover_mode
             return
         fi
     fi
@@ -957,6 +981,7 @@ function uefi_iso_menu_func {
     fi
 
     ventoy_gui_console
+    vt_secondary_recover_mode
 }
 
 function uefi_iso_memdisk {    
@@ -1301,6 +1326,13 @@ function legacy_linux_menu_func {
                     configfile "mem:${vt_sys_menu_mem_addr}:size:${vt_sys_menu_mem_size}"
                 fi
             fi
+            
+            if [ $vtback_cfg_find -eq 0 ]; then
+                if [ -f (loop)/boot/isolinux/syslnx64.cfg ]; then
+                    syslinux_configfile (loop)/boot/isolinux/syslnx64.cfg
+                    set vtback_cfg_find=1
+                fi
+            fi
 
             vt_unset_boot_opt
             set root=$vtback_root        
@@ -1368,6 +1400,7 @@ function legacy_iso_menu_func {
         vt_show_secondary_menu "$vt_chosen_path" "$vtoy_os" $vt_chosen_size  
         if vt_check_mode 0 "$vt_chosen_name"; then
             legacy_iso_memdisk $vtoy_iso_part  "$vt_chosen_path"
+            vt_secondary_recover_mode
             return
         fi        
     fi
@@ -1387,6 +1420,7 @@ function legacy_iso_menu_func {
         vt_check_compatible_linux (loop)
         legacy_linux_menu_func  "$1" "${chosen_path}"
     fi
+    vt_secondary_recover_mode
 }
 
 function legacy_iso_memdisk {
@@ -1467,7 +1501,7 @@ function iso_common_menuentry {
             echo -e "\n $vt_volume_space $vt_chosen_size $vt_chosen_size_mod\n"
             echo -e "\n The size of the iso file \"$vt_chosen_size\" is invalid. File corrupted ?\n"
             echo -e " 此ISO文件的大小 \"$vt_chosen_size\" 有问题,请确认文件是否损坏。\n"
-            echo -e "\n press ENTER to continue (请按 回车 键继续) ..."
+            echo -v "VTMENU_ENTER_CONTINUE ..."
             read vtInputKey
         fi
     fi
@@ -1555,7 +1589,7 @@ function miso_common_menuentry {
 function common_unsupport_menuentry {
     echo -e "\n The name of the iso file could NOT contain space or non-ascii characters. \n"
     echo -e " 文件名中不能有中文或空格 \n"    
-    echo -e "\npress ENTER to exit (请按 回车 键返回) ..."    
+    echo -V "VTMENU_ENTER_EXIT ..."    
     read vtInputKey
 }
 
@@ -1702,7 +1736,7 @@ function vhd_common_menuentry {
                 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 (请按 回车 键继续) ..."    
+                echo -vn "VTMENU_ENTER_CONTINUE ..."    
                 read vtInputKey
             fi
         fi
@@ -1811,7 +1845,7 @@ function vtoy_unsupport_menuentry {
 
 function only_uefi_tip {
     echo -e "\n This IMG file is only supported in UEFI mode. \n"
-    echo -e "\n press ENTER to exit ..."
+    echo -V "VTMENU_ENTER_EXIT ..."
     read vtInputKey 
 }
 
@@ -1843,6 +1877,41 @@ function ventoy_img_easyos {
     loopback -d easysfs
 }
 
+function ventoy_img_easyos2 {
+    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,2)/easyos/easy.sfs ]; then
+        loopback easysfs (vtimghd,2)/easyos/easy.sfs
+    elif [ -d (vtimghd,2)/easyos/releases ]; then
+        vt_fs_enum_1st_dir (vtimghd,2) /easyos/releases/ vt_dir_name
+        loopback easysfs (vtimghd,2)/easyos/releases/$vt_dir_name/easy.sfs
+    fi
+    
+    vt_get_lib_module_ver (easysfs) /lib/modules/ vt_module_ver
+    
+    if [ -n "$vt_module_ver" ]; then        
+        for mod in "kernel/drivers/md/dm-mod.ko" "kernel/drivers/dax/dax.ko"; do
+            if [ -e (easysfs)/lib/modules/$vt_module_ver/$mod ]; then
+                vt_img_extra_initrd_append  (easysfs)/lib/modules/$vt_module_ver/$mod
+            fi
+        done
+    fi
+
+    ventoy_debug_pause
+
+    #boot image file
+    vt_set_boot_opt rdinit=/vtoy/vtoy
+    vt_img_hook_root
+    
+    vt_limine_menu (vtimghd,1)/limine.cfg vt_sys_menu_mem
+    configfile "mem:${vt_sys_menu_mem_addr}:size:${vt_sys_menu_mem_size}"
+    
+    vt_img_unhook_root
+    vt_unset_boot_opt
+    loopback -d easysfs
+}
+
 function ventoy_img_volumio {
     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
@@ -2034,7 +2103,7 @@ function ventoy_img_openwrt {
             ventoy_gui_console
             echo -e "\n ventoy_openwrt.xz not found. Please refer https://www.ventoy.net/en/doc_openwrt.html.\n"
             echo -e " 未找到 ventoy_openwrt.xz 文件。请参考 https://www.ventoy.net/cn/doc_openwrt.html\n"
-            echo -e "\n press ENTER to exit (请按 回车 键返回) ..."
+            echo -V "VTMENU_ENTER_EXIT ..."
             read vtInputKey
             ventoy_cli_console
             return
@@ -2166,7 +2235,7 @@ function ventoy_img_memtest86 {
 function img_unsupport_tip {
     echo -e "\n This IMG file is NOT supported now. \n"
     echo -e " 当前不支持启动此 IMG 文件 \n"    
-    echo -e "\npress ENTER to exit (请按 回车 键返回) ..."    
+    echo -V "VTMENU_ENTER_EXIT ..."
     read vtInputKey 
 }
 
@@ -2258,19 +2327,22 @@ function img_common_menuentry {
         ventoy_img_esysrescue
     elif [ -e (vtimghd,1)/easy.sfs ]; then
         ventoy_img_easyos
+    elif [ -d (vtimghd,2)/easyos ]; then
+        ventoy_img_easyos2
     elif [ -e (vtimghd,1)/volumio.initrd ]; then
         ventoy_img_volumio
     elif [ -f (vtimghd,2)/loader/entries/ubos.conf ]; then
         ventoy_img_ubos
     elif [ -f (vtimghd,2)/etc/openwrt_version ]; then
-        ventoy_img_openwrt
-    elif [ -f (vtimghd,1)/efi/boot/mt86.png ]; then 
-        if [ "$grub_platform" = "pc" ]; then
-            img_unsupport_tip
-        else
-            ventoy_img_memtest86            
-        fi    
+        ventoy_img_openwrt    
     else
+        if [ -f (vtimghd,1)/efi/boot/mt86.png ]; then 
+            if [ "$grub_platform" = "pc" ]; then
+                img_unsupport_tip
+            fi 
+        fi
+
+        #common chain
         vt_linux_chain_data "${vtoy_iso_part}${vt_chosen_path}"
         ventoy_acpi_param ${vtoy_chain_mem_addr} 512
         if [ "$grub_platform" = "pc" ]; then 
@@ -2295,6 +2367,28 @@ function img_unsupport_menuentry {
     common_unsupport_menuentry
 }
 
+function mimg_common_menuentry {
+    vt_chosen_img_path vt_chosen_path vt_chosen_size vt_chosen_name
+
+    if vt_check_password "${vt_chosen_path}"; then
+        return
+    fi
+
+    echo "memdisk mode boot for $vt_chosen_path"
+    echo ""
+    ventoy_debug_pause
+
+    if [ "$grub_platform" = "pc" ]; then
+        legacy_img_memdisk $vtoy_iso_part "$vt_chosen_path"
+    else
+        vt_load_img_memdisk "$vtoy_iso_part$vt_chosen_path" vtoy_img_buf
+        ventoy_cli_console
+        chainloader ${vtoy_path}/ventoy_${VTOY_EFI_ARCH}.efi memdisk env_param=${env_param} isoefi=${LoadIsoEfiDriver} ${vtdebug_flag} mem:${vtoy_img_buf_addr}:size:${vtoy_img_buf_size}
+        boot
+        ventoy_gui_console    
+    fi      
+}
+
 #############################################################
 #############################################################
 #############################################################
@@ -2303,7 +2397,7 @@ function img_unsupport_menuentry {
 #############################################################
 #############################################################
 
-set VENTOY_VERSION="1.0.80"
+set VENTOY_VERSION="1.0.84"
 
 #ACPI not compatible with Window7/8, so disable by default
 set VTOY_PARAM_NO_ACPI=1
@@ -2327,6 +2421,7 @@ set VTOY_HELP_CMD="ventoy_show_help"
 set VTOY_CHKSUM_CMD="ventoy_checksum"
 set VTOY_HELP_TXT_LANGUAGE="en_US"
 set VTOY_CHKSUM_FILE_PATH="X"
+set VTOY_LANG_CMD="ventoy_language"
 
 
 if [ "$grub_platform" = "pc" ]; then
@@ -2392,6 +2487,9 @@ fi
 #Load Partition Table
 vt_load_part_table $vtoydev
 
+#Load menu lang file
+ventoy_load_menu_lang_file
+
 #Load Plugin
 if [ -f $vtoy_iso_part/ventoy/ventoy.json ]; then
     clear
@@ -2401,6 +2499,12 @@ else
     vt_check_json_path_case $vtoy_iso_part
 fi
 
+if [ -n "$VTOY_MENU_LANGUAGE" ]; then
+    vt_init_menu_lang "$VTOY_MENU_LANGUAGE"
+else
+    vt_init_menu_lang en_US
+fi
+
 if [ -n "$VTOY_MENU_TIMEOUT" ]; then
     set timeout=$VTOY_MENU_TIMEOUT
 else
@@ -2422,10 +2526,8 @@ 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: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:Browser  F3:ListView  F4:Localboot  F5:Tools  F6:ExMenu"
 fi
 
 terminal_output  console
@@ -2534,6 +2636,7 @@ export VTOY_HELP_CMD
 export VTOY_CHKSUM_CMD
 export VTOY_HELP_TXT_LANGUAGE
 export VTOY_CHKSUM_FILE_PATH
+export VTOY_LANG_CMD
 
 
 #colect all image files (iso files)