]> glassweightruler.freedombox.rocks Git - Ventoy.git/commitdiff
grub2 boot mode for UEFI
authorlongpanda <admin@ventoy.net>
Sat, 10 Apr 2021 05:57:20 +0000 (13:57 +0800)
committerlongpanda <admin@ventoy.net>
Sat, 10 Apr 2021 05:57:20 +0000 (13:57 +0800)
GRUB2/MOD_SRC/grub-2.04/grub-core/gfxmenu/gui_label.c
GRUB2/MOD_SRC/grub-2.04/grub-core/normal/menu.c
GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy.c
GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_def.h
INSTALL/grub/grub.cfg
INSTALL/grub/themes/ventoy/theme.txt

index e1c1d478d78a215ec932fc17df3734e7a3ce4e77..3fd1390abb1a9e1be99463ba2983a3ff9f377f19 100644 (file)
@@ -28,6 +28,7 @@
 
 extern int g_ventoy_memdisk_mode;
 extern int g_ventoy_iso_raw;
 
 extern int g_ventoy_memdisk_mode;
 extern int g_ventoy_iso_raw;
+extern int g_ventoy_grub2_mode;
 extern int g_ventoy_iso_uefi_drv;
 
 static const char *align_options[] =
 extern int g_ventoy_iso_uefi_drv;
 
 static const char *align_options[] =
@@ -205,6 +206,9 @@ label_set_property (void *vself, const char *name, const char *value)
        else if (grub_strcmp (value, "@VTOY_ISO_RAW@") == 0) {
             value = g_ventoy_iso_raw ? grub_env_get("VTOY_ISO_RAW_STR") : " ";
        }
        else if (grub_strcmp (value, "@VTOY_ISO_RAW@") == 0) {
             value = g_ventoy_iso_raw ? grub_env_get("VTOY_ISO_RAW_STR") : " ";
        }
+       else if (grub_strcmp (value, "@VTOY_GRUB2_MODE@") == 0) {
+            value = g_ventoy_grub2_mode ? grub_env_get("VTOY_GRUB2_MODE_STR") : " ";
+       }
        else if (grub_strcmp (value, "@VTOY_ISO_UEFI_DRV@") == 0) {
             value = g_ventoy_iso_uefi_drv ? grub_env_get("VTOY_ISO_UEFI_DRV_STR") : " ";
        }
        else if (grub_strcmp (value, "@VTOY_ISO_UEFI_DRV@") == 0) {
             value = g_ventoy_iso_uefi_drv ? grub_env_get("VTOY_ISO_UEFI_DRV_STR") : " ";
        }
index a83aeccafceb976043c29ac688c514f8d3f27a6b..f682fa8ad0731935b7c137094e30a1207be9de2d 100644 (file)
@@ -37,6 +37,7 @@
 int g_ventoy_menu_refresh = 0;
 int g_ventoy_memdisk_mode = 0;
 int g_ventoy_iso_raw = 0;
 int g_ventoy_menu_refresh = 0;
 int g_ventoy_memdisk_mode = 0;
 int g_ventoy_iso_raw = 0;
+int g_ventoy_grub2_mode = 0;
 int g_ventoy_iso_uefi_drv = 0;
 int g_ventoy_last_entry = -1;
 int g_ventoy_suppress_esc = 0;
 int g_ventoy_iso_uefi_drv = 0;
 int g_ventoy_last_entry = -1;
 int g_ventoy_suppress_esc = 0;
@@ -897,6 +898,12 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot)
             g_ventoy_menu_refresh = 1;
             goto refresh;
             
             g_ventoy_menu_refresh = 1;
             goto refresh;
             
+        case (GRUB_TERM_CTRL | 'r'):
+            menu_fini ();
+            g_ventoy_grub2_mode = 1 - g_ventoy_grub2_mode;
+            g_ventoy_menu_refresh = 1;
+            goto refresh;
+            
         case (GRUB_TERM_CTRL | 'u'):
             menu_fini ();
             g_ventoy_iso_uefi_drv = 1 - g_ventoy_iso_uefi_drv;
         case (GRUB_TERM_CTRL | 'u'):
             menu_fini ();
             g_ventoy_iso_uefi_drv = 1 - g_ventoy_iso_uefi_drv;
index 6d288c733ee01329acfa2eda8499862ec41badfb..c5d3fa32fabd3c014deb0d68e105dc54e47eada8 100644 (file)
@@ -3023,6 +3023,10 @@ static grub_err_t ventoy_cmd_check_mode(grub_extcmd_context_t ctxt, int argc, ch
     {
         return g_ventoy_iso_uefi_drv ? 0 : 1;
     }
     {
         return g_ventoy_iso_uefi_drv ? 0 : 1;
     }
+    else if (args[0][0] == '3')
+    {
+        return g_ventoy_grub2_mode ? 0 : 1;
+    }
 
     return 1;
 }
 
     return 1;
 }
index f5911565c353cd2ba35b80865a0111620002c2db..349a233719586097beb397bce6b52001c1656aee 100644 (file)
@@ -903,6 +903,7 @@ extern int g_ventoy_suppress_esc;
 extern int g_ventoy_last_entry;
 extern int g_ventoy_memdisk_mode;
 extern int g_ventoy_iso_raw;
 extern int g_ventoy_last_entry;
 extern int g_ventoy_memdisk_mode;
 extern int g_ventoy_iso_raw;
+extern int g_ventoy_grub2_mode;
 extern int g_ventoy_iso_uefi_drv;
 extern int g_ventoy_case_insensitive;
 extern grub_uint8_t g_ventoy_chain_type;
 extern int g_ventoy_iso_uefi_drv;
 extern int g_ventoy_case_insensitive;
 extern grub_uint8_t g_ventoy_chain_type;
index e8fd971572c1d4081766c2c4cacaeb35c80c4f2e..89ea98085a81ab63c0d782b37d06f4398559761f 100644 (file)
@@ -648,10 +648,14 @@ function uefi_linux_menu_func {
     if [ -n "$vtoy_chain_mem_addr" ]; then
         ventoy_acpi_param ${vtoy_chain_mem_addr} 2048
         ventoy_cli_console     
     if [ -n "$vtoy_chain_mem_addr" ]; then
         ventoy_acpi_param ${vtoy_chain_mem_addr} 2048
         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
+
+        if vt_check_mode 3; then
+            ventoy_debug_pause
+        else
+            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
         fi
 
         # fallback
         fi
 
         # fallback
@@ -1620,6 +1624,7 @@ set VTOY_DEFAULT_MENU_MODE=0
 
 set VTOY_MEM_DISK_STR="[Memdisk]"
 set VTOY_ISO_RAW_STR="Compatible Mode"
 
 set VTOY_MEM_DISK_STR="[Memdisk]"
 set VTOY_ISO_RAW_STR="Compatible Mode"
+set VTOY_GRUB2_MODE_STR="GRUB2 Mode"
 set VTOY_ISO_UEFI_DRV_STR="UEFI FS"
 
 set VTOY_F2_CMD="ventoy_power"
 set VTOY_ISO_UEFI_DRV_STR="UEFI FS"
 
 set VTOY_F2_CMD="ventoy_power"
index dda7f27fda80a99fa17a874d793b2ab19abb935e..a8f0585d082fd547b711ea80dcb4de4c797626a1 100644 (file)
@@ -70,6 +70,14 @@ terminal-box: "terminal_box_*.png"
 }
 
 
 }
 
 
++ hbox{ 
+    left = 30%+100
+    top = 95%-50
+    width = 10%
+    height = 25
+    + label {text = "@VTOY_GRUB2_MODE@" color = "red" align = "left"} 
+}
+
 + hbox{ 
     left = 90%
     top = 55 
 + hbox{ 
     left = 90%
     top = 55