From ca62128f9bb4c349637be30cb8290919e03684f7 Mon Sep 17 00:00:00 2001 From: longpanda Date: Wed, 12 May 2021 22:49:12 +0800 Subject: [PATCH] Add WIMBOOT mode --- .../grub-2.04/grub-core/gfxmenu/gui_label.c | 4 + .../MOD_SRC/grub-2.04/grub-core/normal/menu.c | 7 ++ .../grub-2.04/grub-core/ventoy/ventoy_cmd.c | 5 ++ .../grub-2.04/grub-core/ventoy/ventoy_def.h | 2 + .../grub-core/ventoy/ventoy_windows.c | 48 +++++++++++ INSTALL/grub/grub.cfg | 26 +++++- INSTALL/grub/themes/ventoy/theme.txt | 8 ++ INSTALL/ventoy/vtoyjump32.exe | Bin 108544 -> 109056 bytes INSTALL/ventoy/vtoyjump64.exe | Bin 128512 -> 129536 bytes INSTALL/ventoy/wimboot | Bin 0 -> 47936 bytes INSTALL/ventoy/winpeshl.ini | 2 + License/license-wimboot.txt | 3 +- vtoyjump/vtoyjump/vtoyjump.c | 80 +++++++++++++++++- vtoyjump/vtoyjump/vtoyjump.vcxproj | 8 +- 14 files changed, 182 insertions(+), 11 deletions(-) create mode 100644 INSTALL/ventoy/wimboot create mode 100644 INSTALL/ventoy/winpeshl.ini diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/gfxmenu/gui_label.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/gfxmenu/gui_label.c index 3fd1390a..5e448d27 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/gfxmenu/gui_label.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/gfxmenu/gui_label.c @@ -29,6 +29,7 @@ extern int g_ventoy_memdisk_mode; extern int g_ventoy_iso_raw; extern int g_ventoy_grub2_mode; +extern int g_ventoy_wimboot_mode; extern int g_ventoy_iso_uefi_drv; static const char *align_options[] = @@ -209,6 +210,9 @@ label_set_property (void *vself, const char *name, const char *value) 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_WIMBOOT_MODE@") == 0) { + value = g_ventoy_wimboot_mode ? grub_env_get("VTOY_WIMBOOT_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") : " "; } diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/normal/menu.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/normal/menu.c index f682fa8a..14e3dac5 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/normal/menu.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/normal/menu.c @@ -38,6 +38,7 @@ 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_wimboot_mode = 0; int g_ventoy_iso_uefi_drv = 0; int g_ventoy_last_entry = -1; int g_ventoy_suppress_esc = 0; @@ -904,6 +905,12 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot) g_ventoy_menu_refresh = 1; goto refresh; + case (GRUB_TERM_CTRL | 'w'): + menu_fini (); + g_ventoy_wimboot_mode = 1 - g_ventoy_wimboot_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; diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c index 9f0a8b8f..3a9b7718 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c @@ -3163,6 +3163,10 @@ static grub_err_t ventoy_cmd_check_mode(grub_extcmd_context_t ctxt, int argc, ch { return g_ventoy_grub2_mode ? 0 : 1; } + else if (args[0][0] == '4') + { + return g_ventoy_wimboot_mode ? 0 : 1; + } return 1; } @@ -4426,6 +4430,7 @@ static cmd_para ventoy_cmds[] = { "vt_windows_reset", ventoy_cmd_wimdows_reset, 0, NULL, "", "", NULL }, { "vt_windows_chain_data", ventoy_cmd_windows_chain_data, 0, NULL, "", "", NULL }, + { "vt_windows_wimboot_data", ventoy_cmd_windows_wimboot_data, 0, NULL, "", "", NULL }, { "vt_windows_collect_wim_patch", ventoy_cmd_collect_wim_patch, 0, NULL, "", "", NULL }, { "vt_windows_locate_wim_patch", ventoy_cmd_locate_wim_patch, 0, NULL, "", "", NULL }, { "vt_windows_count_wim_patch", ventoy_cmd_wim_patch_count, 0, NULL, "", "", NULL }, 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 5e7e11d2..3aff72b2 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 @@ -555,6 +555,7 @@ int ventoy_fill_data(grub_uint32_t buflen, char *buffer); grub_err_t ventoy_cmd_load_plugin(grub_extcmd_context_t ctxt, int argc, char **args); grub_err_t ventoy_cmd_wimdows_reset(grub_extcmd_context_t ctxt, int argc, char **args); grub_err_t ventoy_cmd_windows_chain_data(grub_extcmd_context_t ctxt, int argc, char **args); +grub_err_t ventoy_cmd_windows_wimboot_data(grub_extcmd_context_t ctxt, int argc, char **args); grub_err_t ventoy_cmd_wim_chain_data(grub_extcmd_context_t ctxt, int argc, char **args); grub_err_t ventoy_cmd_wim_check_bootable(grub_extcmd_context_t ctxt, int argc, char **args); grub_err_t ventoy_cmd_dump_wim_patch(grub_extcmd_context_t ctxt, int argc, char **args); @@ -916,6 +917,7 @@ 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_wimboot_mode; extern int g_ventoy_iso_uefi_drv; extern int g_ventoy_case_insensitive; extern grub_uint8_t g_ventoy_chain_type; diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_windows.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_windows.c index f6d4d26a..d21533a5 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_windows.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_windows.c @@ -1330,6 +1330,54 @@ end: return rc; } +grub_err_t ventoy_cmd_windows_wimboot_data(grub_extcmd_context_t ctxt, int argc, char **args) +{ + grub_uint32_t size = 0; + const char *addr = NULL; + ventoy_chain_head *chain = NULL; + ventoy_os_param *param = NULL; + char envbuf[64]; + + (void)ctxt; + (void)argc; + (void)args; + + addr = grub_env_get("vtoy_chain_mem_addr"); + if (!addr) + { + debug("Failed to find vtoy_chain_mem_addr\n"); + return 1; + } + + chain = (ventoy_chain_head *)(void *)grub_strtoul(addr, NULL, 16); + + if (grub_memcmp(&g_ventoy_guid, &chain->os_param.guid, 16) != 0) + { + debug("os_param.guid not match\n"); + return 1; + } + + size = sizeof(ventoy_os_param) + sizeof(ventoy_windows_data); + param = (ventoy_os_param *)grub_zalloc(size); + if (!param) + { + return 1; + } + + grub_memcpy(param, &chain->os_param, sizeof(ventoy_os_param)); + ventoy_fill_windows_rtdata(param + 1, param->vtoy_img_path); + + grub_snprintf(envbuf, sizeof(envbuf), "0x%lx", (unsigned long)param); + grub_env_set("vtoy_wimboot_mem_addr", envbuf); + debug("vtoy_wimboot_mem_addr: %s\n", envbuf); + + grub_snprintf(envbuf, sizeof(envbuf), "%u", size); + grub_env_set("vtoy_wimboot_mem_size", envbuf); + debug("vtoy_wimboot_mem_size: %s\n", envbuf); + + VENTOY_CMD_RETURN(GRUB_ERR_NONE); +} + grub_err_t ventoy_cmd_windows_chain_data(grub_extcmd_context_t ctxt, int argc, char **args) { int unknown_image = 0; diff --git a/INSTALL/grub/grub.cfg b/INSTALL/grub/grub.cfg index a8f70b2b..f57a20c9 100644 --- a/INSTALL/grub/grub.cfg +++ b/INSTALL/grub/grub.cfg @@ -805,6 +805,25 @@ function uefi_iso_memdisk { } +function legacy_windows_wimboot_func { + set wimbootfile=(loop)/sources/boot.wim + set wimbit=64 + + vt_windows_wimboot_data + + linux16 $vtoy_efi_part/ventoy/wimboot quiet + ventoy_debug_pause + + echo Loading files...... (This may take a few minutes, please wait.) + initrd16 newc:vtoyjump.exe:$vtoy_efi_part/ventoy/vtoyjump${wimbit}.exe \ + newc:wimboot.data:mem:${vtoy_wimboot_mem_addr}:size:${vtoy_wimboot_mem_size} \ + newc:winpeshl.ini:$vtoy_efi_part/ventoy/winpeshl.ini \ + newc:bcd:(loop)/boot/bcd \ + newc:boot.sdi:(loop)/boot/boot.sdi \ + newc:boot.wim:$wimbootfile + boot +} + function legacy_windows_menu_func { vt_windows_reset @@ -833,7 +852,11 @@ function legacy_windows_menu_func { vt_windows_chain_data "${1}${chosen_path}" ventoy_debug_pause - + + if vt_check_mode 4; then + legacy_windows_wimboot_func + fi + if [ -n "$vtoy_chain_mem_addr" ]; then ventoy_acpi_param ${vtoy_chain_mem_addr} 2048 linux16 $vtoy_path/ipxe.krn ${vtdebug_flag} ibft mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size} @@ -1721,6 +1744,7 @@ set VTOY_DEFAULT_MENU_MODE=0 set VTOY_MEM_DISK_STR="[Memdisk]" set VTOY_ISO_RAW_STR="Compatible Mode" 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" diff --git a/INSTALL/grub/themes/ventoy/theme.txt b/INSTALL/grub/themes/ventoy/theme.txt index 708acd25..f8815065 100644 --- a/INSTALL/grub/themes/ventoy/theme.txt +++ b/INSTALL/grub/themes/ventoy/theme.txt @@ -78,6 +78,14 @@ terminal-box: "terminal_box_*.png" + label {text = "@VTOY_GRUB2_MODE@" color = "red" align = "left"} } ++ hbox{ + left = 30%+200 + top = 95%-25 + width = 10% + height = 25 + + label {text = "@VTOY_WIMBOOT_MODE@" color = "red" align = "left"} +} + + hbox{ left = 90% top = 55 diff --git a/INSTALL/ventoy/vtoyjump32.exe b/INSTALL/ventoy/vtoyjump32.exe index bcff924051adcd309b3105452a146d86c30b9b31..6019aa44a256dcf5632f54001997dad3f7fe9242 100644 GIT binary patch delta 8443 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 delta 7859 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 Ws+6jt4pYY{aIvO}97W<<6#8HAbr2f> diff --git a/INSTALL/ventoy/vtoyjump64.exe b/INSTALL/ventoy/vtoyjump64.exe index 4edb6de39484296a52bbc3bc6d57592c67d2bb92..c2e80a77a1b99578449749c2dbf972a2ef9e9f2c 100644 GIT binary patch delta 34433 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 Igp%X_2S{y4cmMzZ literal 0 HcmV?d00001 diff --git a/INSTALL/ventoy/winpeshl.ini b/INSTALL/ventoy/winpeshl.ini new file mode 100644 index 00000000..2302fea9 --- /dev/null +++ b/INSTALL/ventoy/winpeshl.ini @@ -0,0 +1,2 @@ +[LaunchApps] +vtoyjump.exe \ No newline at end of file diff --git a/License/license-wimboot.txt b/License/license-wimboot.txt index 9179d035..8ab4754e 100644 --- a/License/license-wimboot.txt +++ b/License/license-wimboot.txt @@ -1,5 +1,4 @@ wimboot follows GPLv2+ license (see gpl-2.0.txt) -Ventoy use the lzx decompress file from wimboot. These code follow the same license as wimboot. - +Ventoy modified the code and follow the same license as wimboot. diff --git a/vtoyjump/vtoyjump/vtoyjump.c b/vtoyjump/vtoyjump/vtoyjump.c index f5e40416..e8f9f5a8 100644 --- a/vtoyjump/vtoyjump/vtoyjump.c +++ b/vtoyjump/vtoyjump/vtoyjump.c @@ -1105,6 +1105,64 @@ const char * GetFileNameInPath(const char *fullpath) return fullpath; } +int VentoyJumpWimboot(INT argc, CHAR **argv, CHAR *LunchFile) +{ + int rc = 1; + char *buf = NULL; + DWORD size = 0; + DWORD Pos; + +#ifdef VTOY_32 + g_64bit_system = FALSE; +#else + g_64bit_system = TRUE; +#endif + + Log("VentoyJumpWimboot 64bit:%u", g_64bit_system); + + sprintf_s(LunchFile, MAX_PATH, "X:\\setup.exe"); + + ReadWholeFile2Buf("wimboot.data", &buf, &size); + Log("wimboot.data size:%d", size); + + memcpy(&g_os_param, buf, sizeof(ventoy_os_param)); + memcpy(&g_windows_data, buf + sizeof(ventoy_os_param), sizeof(ventoy_windows_data)); + memcpy(g_os_param_reserved, g_os_param.vtoy_reserved, sizeof(g_os_param_reserved)); + + if (g_os_param_reserved[0] == 1) + { + Log("break here for debug ....."); + goto End; + } + + // convert / to \\ + for (Pos = 0; Pos < sizeof(g_os_param.vtoy_img_path) && g_os_param.vtoy_img_path[Pos]; Pos++) + { + if (g_os_param.vtoy_img_path[Pos] == '/') + { + g_os_param.vtoy_img_path[Pos] = '\\'; + } + } + + if (g_os_param_reserved[0] == 2) + { + Log("skip hook for debug ....."); + rc = 0; + goto End; + } + + rc = VentoyHook(&g_os_param); + +End: + + if (buf) + { + free(buf); + } + + return rc; +} + int VentoyJump(INT argc, CHAR **argv, CHAR *LunchFile) { int rc = 1; @@ -1241,7 +1299,15 @@ int main(int argc, char **argv) GetStartupInfoA(&Si); memset(LunchFile, 0, sizeof(LunchFile)); - rc = VentoyJump(argc, argv, LunchFile); + + if (strstr(argv[0], "vtoyjump.exe")) + { + rc = VentoyJumpWimboot(argc, argv, LunchFile); + } + else + { + rc = VentoyJump(argc, argv, LunchFile); + } if (g_os_param_reserved[0] == 3) { @@ -1250,11 +1316,17 @@ int main(int argc, char **argv) } else { - Si.dwFlags |= STARTF_USESHOWWINDOW; - Si.wShowWindow = SW_HIDE; + if (NULL == strstr(LunchFile, "setup.exe")) + { + Log("Not setup.exe, hide windows."); + Si.dwFlags |= STARTF_USESHOWWINDOW; + Si.wShowWindow = SW_HIDE; + } + Log("Ventoy jump %s ...", rc == 0 ? "success" : "failed"); } - + + Log("Now launch <%s> ...", LunchFile); CreateProcessA(NULL, LunchFile, NULL, NULL, FALSE, 0, NULL, NULL, &Si, &Pi); while (rc) diff --git a/vtoyjump/vtoyjump/vtoyjump.vcxproj b/vtoyjump/vtoyjump/vtoyjump.vcxproj index a0a67b1f..eeef6d98 100644 --- a/vtoyjump/vtoyjump/vtoyjump.vcxproj +++ b/vtoyjump/vtoyjump/vtoyjump.vcxproj @@ -92,7 +92,7 @@ Level3 Disabled - FATFS_INC_FORMAT_SUPPORT=0;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) + VTOY_32;FATFS_INC_FORMAT_SUPPORT=0;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) true MultiThreadedDebug @@ -108,7 +108,7 @@ Level3 Disabled - FATFS_INC_FORMAT_SUPPORT=0;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) + VTOY_64;FATFS_INC_FORMAT_SUPPORT=0;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) true MultiThreadedDebug @@ -126,7 +126,7 @@ MaxSpeed true true - FATFS_INC_FORMAT_SUPPORT=0;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) + VTOY_32;FATFS_INC_FORMAT_SUPPORT=0;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) true MultiThreaded @@ -146,7 +146,7 @@ MaxSpeed true true - FATFS_INC_FORMAT_SUPPORT=0;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) + VTOY_64;FATFS_INC_FORMAT_SUPPORT=0;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) true MultiThreaded