]> glassweightruler.freedombox.rocks Git - Ventoy.git/commitdiff
Add Temporary Control Settings menu.
authorlongpanda <admin@ventoy.net>
Thu, 22 Dec 2022 14:14:51 +0000 (22:14 +0800)
committerlongpanda <admin@ventoy.net>
Thu, 22 Dec 2022 14:14:51 +0000 (22:14 +0800)
Refer https://www.ventoy.net/en/doc_ctrl_settings.html for details.

24 files changed:
GRUB2/MOD_SRC/grub-2.04/grub-core/normal/menu.c
GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c
GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_def.h
INSTALL/grub/debug.cfg
INSTALL/grub/menu/ar_AR.json
INSTALL/grub/menu/bn_BN.json
INSTALL/grub/menu/de_DE.json
INSTALL/grub/menu/en_US.json
INSTALL/grub/menu/fr_FR.json
INSTALL/grub/menu/hi_HI.json
INSTALL/grub/menu/hr_HR.json
INSTALL/grub/menu/hu_HU.json
INSTALL/grub/menu/id_ID.json
INSTALL/grub/menu/ja_JP.json
INSTALL/grub/menu/ka_GE.json
INSTALL/grub/menu/ko_KR.json
INSTALL/grub/menu/pl_PL.json
INSTALL/grub/menu/pt_PT.json
INSTALL/grub/menu/ru_RU.json
INSTALL/grub/menu/sr_RS.json
INSTALL/grub/menu/ta_IN.json
INSTALL/grub/menu/tr_TR.json
INSTALL/grub/menu/zh_CN.json
INSTALL/grub/menu/zh_TW.json

index c6fd501b172215c6a068fd7533fb4d6000ccf2c6..ac9e835ba55828d4b5f098c2a34b917b87d2ea63 100644 (file)
@@ -1133,6 +1133,7 @@ show_menu (grub_menu_t menu, int nested, int autobooted)
     
   while (1)
     {
+      int ndown;
       int boot_entry;
       grub_menu_entry_t e;
       int auto_boot;
@@ -1175,6 +1176,16 @@ show_menu (grub_menu_t menu, int nested, int autobooted)
 
       if (2 == e->argc && e->args && e->args[1] && grub_strncmp(e->args[1], "VTOY_RUN_RET", 12) == 0)
         break; 
+      else if (2 == e->argc && e->args && e->args[1] && grub_strncmp(e->args[1], "VTOY_RUN_SET", 12) == 0) {        
+        ndown = (int)grub_strtol(e->args[1] + 12, NULL, 10);
+        while (ndown > 0)
+        {
+            ventoy_menu_push_key(GRUB_TERM_KEY_DOWN);
+            ndown--;
+        }
+        ventoy_menu_push_key('\n');
+        break;         
+      }
     }
 
   return GRUB_ERR_NONE;
index 1167478813df9aa63db382452bad7f66ea92d213..588e51f7be91d9c564c1973de7710124174df88f 100644 (file)
@@ -6227,6 +6227,66 @@ static char * ventoy_gfxmode_write_hook(struct grub_env_var *var, const char *va
     return grub_strdup(val);
 }
 
+static ctrl_var_cfg g_ctrl_vars[] = 
+{
+    { "VTOY_WIN11_BYPASS_CHECK",  0 },
+    { "VTOY_LINUX_REMOUNT",       0 },
+    { "VTOY_SECONDARY_BOOT_MENU", 1 },
+    { NULL, 0 }
+};
+
+static const char * ventoy_ctrl_var_read_hook(struct grub_env_var *var, const char *val)
+{
+    int i;
+
+    for (i = 0; g_ctrl_vars[i].name; i++)
+    {
+        if (grub_strcmp(g_ctrl_vars[i].name, var->name) == 0)
+        {
+            return g_ctrl_vars[i].value ? "1" : "0";
+        }
+    }
+
+    return val;
+}
+
+static char * ventoy_ctrl_var_write_hook(struct grub_env_var *var, const char *val)
+{
+    int i;
+
+    for (i = 0; g_ctrl_vars[i].name; i++)
+    {
+        if (grub_strcmp(g_ctrl_vars[i].name, var->name) == 0)
+        {
+            if (val && val[0] == '1' && val[1] == 0)
+            {
+                g_ctrl_vars[i].value = 1;
+                return grub_strdup("1");
+            }
+            else
+            {
+                g_ctrl_vars[i].value = 0;
+                return grub_strdup("0");
+            }
+        }
+    }
+
+    return grub_strdup(val);
+}
+
+static int ventoy_ctrl_var_init(void)
+{
+    int i;
+
+    for (i = 0; g_ctrl_vars[i].name; i++)
+    {
+        ventoy_env_export(g_ctrl_vars[i].name, g_ctrl_vars[i].value ? "1" : "0");
+        grub_register_variable_hook(g_ctrl_vars[i].name, ventoy_ctrl_var_read_hook, ventoy_ctrl_var_write_hook);
+    }
+
+    return 0;
+}
+
 int ventoy_env_init(void)
 {
     int i;
@@ -6237,6 +6297,8 @@ int ventoy_env_init(void)
     grub_register_variable_hook("gfxmode", ventoy_gfxmode_read_hook, ventoy_gfxmode_write_hook);
     grub_register_vtoy_menu_lang_hook(ventoy_menu_lang_read_hook);
 
+    ventoy_ctrl_var_init();
+
     g_part_list_buf = grub_malloc(VTOY_PART_BUF_LEN);
     g_tree_script_buf = grub_malloc(VTOY_MAX_SCRIPT_BUF);
     g_list_script_buf = grub_malloc(VTOY_MAX_SCRIPT_BUF);
index 40f859ee7069b8596550008f7bc8d5861623fb85..290f6eaa2979623f7a46d7cff710edc1d211e82f 100644 (file)
@@ -1256,6 +1256,12 @@ typedef struct systemd_menu_ctx
     int len;
 }systemd_menu_ctx;
 
+typedef struct ctrl_var_cfg
+{
+    const char *name;
+    int value;
+}ctrl_var_cfg;
+
 #define vtoy_check_goto_out(p)  if (!p) goto out
 
 extern char *g_tree_script_buf;
index 9dd977f4dfd60cce22e132b16bdbbb1e3de7c341..1bf076d703733da08a301e05bb7a127af204b6d8 100644 (file)
@@ -1,7 +1,45 @@
+#
+# VTLANG_TEMP_SETTING must be the first
+# And the inside item order can not be changed
+#
+submenu "$VTLANG_CTRL_TEMP_SET" --class=debug_temp_set --class=F5tool {
+    menuentry "[ $VTOY_WIN11_BYPASS_CHECK ]  $VTLANG_WIN11_BYPASS_CHECK" --class=debug_temp_win11_bypass --class=debug_temp_set --class=F5tool \
+        VTOY_RUN_SET0 {
+        if [ "$VTOY_WIN11_BYPASS_CHECK" = "0" ]; then
+            set VTOY_WIN11_BYPASS_CHECK=1
+        else
+            set VTOY_WIN11_BYPASS_CHECK=0
+        fi
+    }
+    
+    menuentry "[ $VTOY_LINUX_REMOUNT ]  $VTLANG_LINUX_REMOUNT" --class=debug_temp_linux_remount --class=debug_temp_set --class=F5tool \
+        VTOY_RUN_SET1 {
+        if [ "$VTOY_LINUX_REMOUNT" = "0" ]; then
+            set VTOY_LINUX_REMOUNT=1
+        else
+            set VTOY_LINUX_REMOUNT=0
+        fi
+    }
+    
+    menuentry "[ $VTOY_SECONDARY_BOOT_MENU ]  $VTLANG_SECONDARY_BOOT_MENU" --class=debug_temp_second_menu --class=debug_temp_set --class=F5tool \
+        VTOY_RUN_SET2 {
+        if [ "$VTOY_SECONDARY_BOOT_MENU" = "0" ]; then
+            set VTOY_SECONDARY_BOOT_MENU=1
+        else
+            set VTOY_SECONDARY_BOOT_MENU=0
+        fi
+    }
+
+    menuentry "$VTLANG_RETURN_PREVIOUS" --class=vtoyret VTOY_RET {
+        echo "Return ..."
+    }
+}
+
 
 submenu "$VTLANG_MENU_LANG" --class=debug_menu_lang --class=F5tool {
     source $prefix/menulang.cfg
 }
+
 source $prefix/power.cfg
 source $prefix/hwinfo.cfg
 source $prefix/keyboard.cfg
index bc57818553fa0ac83b3cfb7f7462e8c8e9e20b00..d2ef6447bab2bbc64bb0ea2ba93c8c32daa1ed77 100644 (file)
     "VTLANG_ENTER_REBOOT": "اضغط على مفتاح Enter لإعادة التشغيل",
     "VTLANG_ENTER_CONTINUE": "اضغط على مفتاح Enter للمتابعة",
     
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+    
     "MENU_STR_XXX": ""
 }
index 231f185e9662178c6dbe0306f8dc16b7e95d9a42..29e368cb2ca737aa847b5ec1c6840e6b2112fce6 100644 (file)
     "VTLANG_ENTER_REBOOT": "রিবুট করতে এন্টার কী টিপুন",
     "VTLANG_ENTER_CONTINUE": "চালিয়ে যেতে এন্টার কী টিপুন",
     
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+    
     "MENU_STR_XXX": ""
 }
index b159bca99855251982ab1a9c157e5e4bc2318858..6b246f2106d6174f2f3449a6519099cc06897bfe 100644 (file)
     "VTLANG_ENTER_REBOOT": "Drücken Sie die Eingabetaste, um neu zu starten",
     "VTLANG_ENTER_CONTINUE": "Drücken Sie die Eingabetaste, um fortzufahren",
     
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+    
     "MENU_STR_XXX": ""
 }
index 31d1b0d02c57a74a2ee7a0c50337edf71f7714d2..5fd6ce815ac5896cebd84538aa54320ab20d08ce 100644 (file)
     "VTLANG_ENTER_REBOOT": "press Enter key to reboot",
     "VTLANG_ENTER_CONTINUE": "press Enter key to continue",
     
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+    
     "MENU_STR_XXX": ""
 }
index debf5eb2bddc125b8f99e38bef908d13a068eb89..2bcfbb698761aea56cda1e88c5490e32050df3e9 100644 (file)
     "VTLANG_ENTER_REBOOT": "appuyez sur la touche Entrée pour redémarrer",
     "VTLANG_ENTER_CONTINUE": "appuyez sur la touche Entrée pour continuer",
     
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+    
     "MENU_STR_XXX": ""
 }
index 3dd9d6b328513c442fe2c1f4fa8f4fde86ccca1b..2b36dd3dd237a4fa0f3fe19ea1046628ed2a999a 100644 (file)
     "VTLANG_ENTER_REBOOT": "रिबूट करने के लिए एंटर कुंजी दबाएं",
     "VTLANG_ENTER_CONTINUE": "जारी रखने के लिए एंटर कुंजी दबाएं",
     
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+    
     "MENU_STR_XXX": ""
 }
index dc4c93a1192ebeeb34c8847c67f01b5b81385def..a494cfe48bb6156b92bb3883896a889e1b3623ee 100644 (file)
     "VTLANG_ENTER_REBOOT": "pritisnite tipku Enter za ponovno pokretanje",
     "VTLANG_ENTER_CONTINUE": "pritisnite tipku Enter za nastavak",
     
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+    
     "MENU_STR_XXX": ""
 }
index 11fed6edf981f3bb89f9c8344b63182a24451610..542d111d3d33e6ca80158a82806fdc86a552f34e 100644 (file)
     "VTLANG_ENTER_REBOOT": "nyomja meg az Enter billentyűt az újraindításhoz",\r
     "VTLANG_ENTER_CONTINUE": "a folytatáshoz nyomja meg az Enter billentyűt",\r
     \r
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",\r
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",\r
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",\r
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",\r
+    \r
     "MENU_STR_XXX": ""\r
 }
\ No newline at end of file
index a1b0cd9b35a8d18baf78de700a77631b95d92ce9..cf487c292b5566ad062ef4b4baa22f62faf7c406 100644 (file)
     "VTLANG_ENTER_REBOOT": "tekan tombol Enter untuk reboot",
     "VTLANG_ENTER_CONTINUE": "tekan tombol Enter untuk melanjutkan",
     
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+    
     "MENU_STR_XXX": ""
 }
index df63fa64f4be71e6379817ae8ab3a4df9056ec68..e64df43035497a3af21adf2aceb5c9f6e39f7c2d 100644 (file)
     "VTLANG_ENTER_REBOOT": "[Enter]を押して再起動します",
     "VTLANG_ENTER_CONTINUE": "[Enter]を押して続行します",
     
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+    
     "MENU_STR_XXX": ""
 }
index 94950d74d3e6bc7f4b6fcfd75f0e67f02fcd78b0..98b5c4e949c82ab90b2b9ad38ba588b76c11d253 100644 (file)
     "VTLANG_ENTER_REBOOT": "დააჭირეთ Enter ღილაკს გადატვირთვისთვის",
     "VTLANG_ENTER_CONTINUE": "გასაგრძელებლად დააჭირეთ Enter ღილაკს",
 
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+
     "MENU_STR_XXX": ""
 }
index 8011bf27e42ae977b01805acda73977df6370250..62a6ba86d090598513f9a1362843276112f2638d 100644 (file)
     "VTLANG_ENTER_REBOOT": "Enter 키를 눌러 재부팅",
     "VTLANG_ENTER_CONTINUE": "계속하려면 Enter 키를 누르십시오",
     
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+    
     "MENU_STR_XXX": ""
 }
index 438643dc0994f4eaea4fd7a37e701f48b8462d38..49c95b121478a9ebb6231c10a1f49a7e3dc1bee6 100644 (file)
     "VTLANG_ENTER_REBOOT": "naciśnij klawisz Enter, aby ponownie uruchomić",\r
     "VTLANG_ENTER_CONTINUE": "naciśnij klawisz Enter, aby kontynuować",\r
     \r
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",\r
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",\r
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",\r
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",\r
+    \r
     "MENU_STR_XXX": ""\r
 }\r
index f41fa5b4da2dc1cf8e1c8bf77333e9b0dfb9dd74..36cc355883fb701831ffb8b454f4c93cc3bb543a 100644 (file)
     "VTLANG_ENTER_REBOOT": "pressione a tecla Enter para reiniciar",
     "VTLANG_ENTER_CONTINUE": "pressione a tecla Enter para continuar",
     
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+    
     "MENU_STR_XXX": ""
 }
index 7572d4917435d78c70e359af0d394f4c0ebe6f52..23aed38006d7a3931c628a8e70b1b2fd9ecd6220 100644 (file)
     "VTLANG_ENTER_REBOOT": "нажмите клавишу Enter для перезагрузки",
     "VTLANG_ENTER_CONTINUE": "нажмите клавишу Enter, чтобы продолжить",
     
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+    
     "MENU_STR_XXX": ""
 }
index 3286b663b2e354ef133fe96442a6618825052195..868362ae7ed9465b50dea0dab9f387197e89a30a 100644 (file)
@@ -1,4 +1,4 @@
-{
+
     "VTLANG_LANGUAGE_NAME": "Serbian Latin (Srpski)",
     
     "VTLANG_STR_HOTKEY_LIST": "L:Језик  F1:Help  F2:Browse  F3:ListView  F4:Localboot  F5:Tools  F6:ExMenu",
     "VTLANG_ENTER_REBOOT": "press Enter key to reboot",
     "VTLANG_ENTER_CONTINUE": "press Enter key to continue",
     
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+    
     "MENU_STR_XXX": ""
 }
index 08f56a0daa620a930acc380d4714f96b7a8134af..b70e86c743e7ae0d79c16c20fb888b7860284b6b 100644 (file)
     "VTLANG_ENTER_REBOOT": "மறுதொடக்கம் செய்ய Enter விசையை அழுத்தவும்",
     "VTLANG_ENTER_CONTINUE": "தொடர Enter விசையை அழுத்தவும்",
     
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+    
     "MENU_STR_XXX": ""
 }
index 2790507ce65189ee9ec2e8a8c4106b28c4a6c4ca..cd75f7e14aea76d87d30f3a6c3fb015a15d8eedf 100644 (file)
     "VTLANG_ENTER_REBOOT": "yeniden başlatmak için ENTER'a basın",
     "VTLANG_ENTER_CONTINUE": "devam etmek için ENTER'a basın",
 
+    "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
+    "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11",
+    "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
+    "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
+
     "MENU_STR_XXX": ""
 }
index 73e6e621e9f2dda6a3643b00d4d9ec05315b0805..3bc13113348934ba1fd266652818c6cdf220b60e 100644 (file)
     "VTLANG_ENTER_REBOOT": "按回车键重启",
     "VTLANG_ENTER_CONTINUE": "按回车键继续",
     
+    "VTLANG_CTRL_TEMP_SET": "控制变量设置",
+    "VTLANG_WIN11_BYPASS_CHECK": "安装 Windows 11 时绕过硬件检查",
+    "VTLANG_LINUX_REMOUNT": "启动 Linux 系统后挂载 Ventoy 分区",
+    "VTLANG_SECONDARY_BOOT_MENU": "显示二级启动菜单",
+    
     "MENU_STR_XXX": ""
 }
index ed99f44303b6e40252d8cfdbeee01dce92e7052f..c161c9bf007fca64b24cfe51803927a62257a776 100644 (file)
     "VTLANG_ENTER_EXIT": "按回車鍵退出",
     "VTLANG_ENTER_REBOOT": "按回車鍵重啟",
     "VTLANG_ENTER_CONTINUE": "按回車鍵繼續",
+
+    "VTLANG_CTRL_TEMP_SET": "控制變量設置",
+    "VTLANG_WIN11_BYPASS_CHECK": "安裝 Windows 11 時繞過硬件檢查",
+    "VTLANG_LINUX_REMOUNT": "啟動 Linux 系統後掛載 Ventoy 分區",
+    "VTLANG_SECONDARY_BOOT_MENU": "顯示二級啟動菜單",
     
     "MENU_STR_XXX": ""
 }