diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_def.h b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_def.h index 387bda2f..b3512843 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_def.h +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_def.h @@ -52,6 +52,12 @@ #define VTOY_WARNING "!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!" +#ifdef GRUB_MACHINE_EFI +#define VTOY_DUAL_MODE_SUFFIX "uefi" +#else +#define VTOY_DUAL_MODE_SUFFIX "legacy" +#endif + typedef struct ventoy_initrd_ctx { const char *path_prefix; diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_plugin.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_plugin.c index 098505c7..bf9f75c8 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_plugin.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_plugin.c @@ -1184,11 +1184,6 @@ static plugin_entry g_plugin_entries[] = { { "control", ventoy_plugin_control_entry, ventoy_plugin_control_check }, { "theme", ventoy_plugin_theme_entry, ventoy_plugin_theme_check }, -#ifdef GRUB_MACHINE_EFI - { "theme_uefi", ventoy_plugin_theme_entry, ventoy_plugin_theme_check }, -#else - { "theme_legacy", ventoy_plugin_theme_entry, ventoy_plugin_theme_check }, -#endif { "auto_install", ventoy_plugin_auto_install_entry, ventoy_plugin_auto_install_check }, { "persistence", ventoy_plugin_persistence_entry, ventoy_plugin_persistence_check }, { "menu_alias", ventoy_plugin_menualias_entry, ventoy_plugin_menualias_check }, @@ -1201,6 +1196,7 @@ static plugin_entry g_plugin_entries[] = static int ventoy_parse_plugin_config(VTOY_JSON *json, const char *isodisk) { int i; + char key[128]; VTOY_JSON *cur = json; grub_snprintf(g_iso_disk_name, sizeof(g_iso_disk_name), "%s", isodisk); @@ -1209,7 +1205,8 @@ static int ventoy_parse_plugin_config(VTOY_JSON *json, const char *isodisk) { for (i = 0; i < (int)ARRAY_SIZE(g_plugin_entries); i++) { - if (grub_strcmp(g_plugin_entries[i].key, cur->pcName) == 0) + grub_snprintf(key, sizeof(key), "%s_%s", g_plugin_entries[i].key, VTOY_DUAL_MODE_SUFFIX); + if (grub_strcmp(g_plugin_entries[i].key, cur->pcName) == 0 || grub_strcmp(key, cur->pcName) == 0) { debug("Plugin entry for %s\n", g_plugin_entries[i].key); g_plugin_entries[i].entryfunc(cur, isodisk); @@ -1240,7 +1237,7 @@ grub_err_t ventoy_cmd_load_plugin(grub_extcmd_context_t ctxt, int argc, char **a } debug("json configuration file size %d\n", (int)file->size); - + buf = grub_malloc(file->size + 1); if (!buf) { @@ -1263,6 +1260,9 @@ grub_err_t ventoy_cmd_load_plugin(grub_extcmd_context_t ctxt, int argc, char **a ret = vtoy_json_parse(json, buf); if (ret) { + grub_env_set("VTOY_PLUGIN_SYNTAX_ERROR", "1"); + grub_env_export("VTOY_PLUGIN_SYNTAX_ERROR"); + debug("Failed to parse json string %d\n", ret); grub_free(buf); return 1; @@ -1601,6 +1601,7 @@ grub_err_t ventoy_cmd_plugin_check_json(grub_extcmd_context_t ctxt, int argc, ch int i = 0; int ret = 0; char *buf = NULL; + char key[128]; grub_file_t file; VTOY_JSON *node = NULL; VTOY_JSON *json = NULL; @@ -1643,9 +1644,10 @@ grub_err_t ventoy_cmd_plugin_check_json(grub_extcmd_context_t ctxt, int argc, ch goto end; } + grub_snprintf(key, sizeof(key), "%s_%s", args[1], VTOY_DUAL_MODE_SUFFIX); for (node = json->pstChild; node; node = node->pstNext) { - if (grub_strcmp(node->pcName, args[1]) == 0) + if (grub_strcmp(node->pcName, args[1]) == 0 || grub_strcmp(node->pcName, key) == 0) { break; } diff --git a/INSTALL/EFI/BOOT/grubx64_real.efi b/INSTALL/EFI/BOOT/grubx64_real.efi index 0be55d55..75bd8999 100644 Binary files a/INSTALL/EFI/BOOT/grubx64_real.efi and b/INSTALL/EFI/BOOT/grubx64_real.efi differ diff --git a/INSTALL/grub/debug.cfg b/INSTALL/grub/debug.cfg index 44d0bb8c..46ee3956 100644 --- a/INSTALL/grub/debug.cfg +++ b/INSTALL/grub/debug.cfg @@ -19,27 +19,6 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json { unset pager } - if [ "$grub_platform" = "pc" ]; then - menuentry 'Check legacy theme plugin configuration' --class=debug_theme_legacy { - set pager=1 - vt_check_plugin_json $vt_plugin_path theme_legacy $vtoy_iso_part - - echo -e "\npress ENTER to exit ..." - read vtInputKey - unset pager - } - else - menuentry 'Check uefi theme plugin configuration' --class=debug_theme_uefi { - set pager=1 - vt_check_plugin_json $vt_plugin_path theme_uefi $vtoy_iso_part - - echo -e "\npress ENTER to exit ..." - read vtInputKey - unset pager - } - fi - - menuentry 'Check auto install plugin configuration' --class=debug_autoinstall { set pager=1 vt_check_plugin_json $vt_plugin_path auto_install $vtoy_iso_part diff --git a/INSTALL/grub/grub.cfg b/INSTALL/grub/grub.cfg index a263996a..ed372d04 100644 --- a/INSTALL/grub/grub.cfg +++ b/INSTALL/grub/grub.cfg @@ -1344,7 +1344,7 @@ function img_unsupport_menuentry { ############################################################# ############################################################# -set VENTOY_VERSION="1.0.25" +set VENTOY_VERSION="1.0.26" #ACPI not compatible with Window7/8, so disable by default set VTOY_PARAM_NO_ACPI=1 @@ -1384,7 +1384,7 @@ if [ "$vtoy_dev" = "tftp" ]; then loadfont ascii if [ -f $vtoy_iso_part/ventoy/ventoy.json ]; then - set vt_plugin_path=$vtoy_iso_part + set vt_plugin_path=$vtoy_iso_part else set vt_plugin_path=$prefix vt_load_plugin $vt_plugin_path @@ -1471,6 +1471,15 @@ else terminal_output gfxterm fi + +if [ -n "$VTOY_PLUGIN_SYNTAX_ERROR" ]; then + clear + echo -e "\n Syntax error detected in ventoy.json, please check! \n" + echo -e " ventoy.json 文件中有语法错误,所有配置都不会生效,请检查!\n" + echo -e "\n press ENTER to continue (请按 回车 键继续) ..." + read vtInputKey +fi + #export necessary variable export theme export gfxmode diff --git a/INSTALL/grub/i386-pc/core.img b/INSTALL/grub/i386-pc/core.img index 4d77285d..239f89fc 100644 Binary files a/INSTALL/grub/i386-pc/core.img and b/INSTALL/grub/i386-pc/core.img differ diff --git a/INSTALL/tool/VentoyWorker.sh b/INSTALL/tool/VentoyWorker.sh index 4b4fc300..f1d40663 100644 --- a/INSTALL/tool/VentoyWorker.sh +++ b/INSTALL/tool/VentoyWorker.sh @@ -63,7 +63,11 @@ if ! [ -b "$DISK" ]; then fi if [ -e /sys/class/block/${DISK#/dev/}/start ]; then - vterr "$DISK is a partition, please use the whole disk" + vterr "$DISK is a partition, please use the whole disk." + echo "For example:" + vterr " sudo sh Ventoy2Disk.sh -i /dev/sdX1 <=== This is wrong" + vtinfo " sudo sh Ventoy2Disk.sh -i /dev/sdX <=== This is right" + echo "" exit 1 fi diff --git a/INSTALL/ventoy/ventoy.cpio b/INSTALL/ventoy/ventoy.cpio index 93169fd1..bddd5d7f 100644 Binary files a/INSTALL/ventoy/ventoy.cpio and b/INSTALL/ventoy/ventoy.cpio differ diff --git a/INSTALL/ventoy/vtloopex.cpio b/INSTALL/ventoy/vtloopex.cpio index 7b8546e5..3e99a086 100644 Binary files a/INSTALL/ventoy/vtloopex.cpio and b/INSTALL/ventoy/vtloopex.cpio differ diff --git a/LANGUAGES/languages.ini b/LANGUAGES/languages.ini index a28c2330..97488922 100644 Binary files a/LANGUAGES/languages.ini and b/LANGUAGES/languages.ini differ