Commit 93996cf7 authored by longpanda's avatar longpanda
Browse files

1. Optimization for WIMBOOT mode.

2. Add WIMBOOT for UEFI mode.
parent ca62128f
...@@ -964,3 +964,20 @@ void * grub_efi_allocate_iso_buf(grub_uint64_t size) ...@@ -964,3 +964,20 @@ void * grub_efi_allocate_iso_buf(grub_uint64_t size)
return (void *)(unsigned long)address; return (void *)(unsigned long)address;
} }
void * grub_efi_allocate_chain_buf(grub_uint64_t size)
{
grub_efi_boot_services_t *b;
grub_efi_status_t status;
grub_efi_physical_address_t address = 0;
grub_efi_uintn_t pages = GRUB_EFI_BYTES_TO_PAGES(size);
b = grub_efi_system_table->boot_services;
status = efi_call_4 (b->allocate_pages, GRUB_EFI_ALLOCATE_ANY_PAGES, GRUB_EFI_LOADER_DATA, pages, &address);
if (status != GRUB_EFI_SUCCESS)
{
return NULL;
}
return (void *)(unsigned long)address;
}
...@@ -127,6 +127,8 @@ static grub_uint64_t g_enumerate_start_time_ms; ...@@ -127,6 +127,8 @@ static grub_uint64_t g_enumerate_start_time_ms;
static grub_uint64_t g_enumerate_finish_time_ms; static grub_uint64_t g_enumerate_finish_time_ms;
static int g_vtoy_file_flt[VTOY_FILE_FLT_BUTT] = {0}; static int g_vtoy_file_flt[VTOY_FILE_FLT_BUTT] = {0};
static const char *g_vtoy_winpeshl_ini = "[LaunchApps]\r\nvtoyjump.exe";
static const char *g_menu_class[] = static const char *g_menu_class[] =
{ {
"vtoyiso", "vtoywim", "vtoyefi", "vtoyimg", "vtoyvhd", "vtoyvtoy" "vtoyiso", "vtoywim", "vtoyefi", "vtoyimg", "vtoyvhd", "vtoyvtoy"
...@@ -1020,7 +1022,7 @@ static grub_err_t ventoy_cmd_concat_efi_iso(grub_extcmd_context_t ctxt, int argc ...@@ -1020,7 +1022,7 @@ static grub_err_t ventoy_cmd_concat_efi_iso(grub_extcmd_context_t ctxt, int argc
data = (char *)grub_efi_allocate_iso_buf(totlen); data = (char *)grub_efi_allocate_iso_buf(totlen);
#else #else
data = (char *)grub_malloc(totlen); data = (char *)grub_malloc(totlen);
#endif #endif
ventoy_fill_os_param(file, (ventoy_os_param *)data); ventoy_fill_os_param(file, (ventoy_os_param *)data);
...@@ -1048,36 +1050,52 @@ static grub_err_t ventoy_cmd_load_file_to_mem(grub_extcmd_context_t ctxt, int ar ...@@ -1048,36 +1050,52 @@ static grub_err_t ventoy_cmd_load_file_to_mem(grub_extcmd_context_t ctxt, int ar
char value[32]; char value[32];
char *buf = NULL; char *buf = NULL;
grub_file_t file; grub_file_t file;
enum grub_file_type type;
(void)ctxt; (void)ctxt;
(void)argc; (void)argc;
(void)args; (void)args;
if (argc != 2) if (argc != 3)
{ {
return rc; return rc;
} }
file = ventoy_grub_file_open(VENTOY_FILE_TYPE, "%s", args[0]); if (grub_strcmp(args[0], "nodecompress") == 0)
{
type = VENTOY_FILE_TYPE;
}
else
{
type = GRUB_FILE_TYPE_LINUX_INITRD;
}
file = ventoy_grub_file_open(type, "%s", args[1]);
if (file == NULL) if (file == NULL)
{ {
debug("failed to open file <%s>\n", args[0]); debug("failed to open file <%s>\n", args[1]);
return 1; return 1;
} }
#ifdef GRUB_MACHINE_EFI #ifdef GRUB_MACHINE_EFI
buf = (char *)grub_efi_allocate_iso_buf(file->size); buf = (char *)grub_efi_allocate_chain_buf(file->size);
#else #else
buf = (char *)grub_malloc(file->size); buf = (char *)grub_malloc(file->size);
#endif #endif
if (!buf)
{
grub_file_close(file);
return 1;
}
grub_file_read(file, buf, file->size); grub_file_read(file, buf, file->size);
grub_snprintf(name, sizeof(name), "%s_addr", args[1]); grub_snprintf(name, sizeof(name), "%s_addr", args[2]);
grub_snprintf(value, sizeof(value), "0x%llx", (unsigned long long)(unsigned long)buf); grub_snprintf(value, sizeof(value), "0x%llx", (unsigned long long)(unsigned long)buf);
grub_env_set(name, value); grub_env_set(name, value);
grub_snprintf(name, sizeof(name), "%s_size", args[1]); grub_snprintf(name, sizeof(name), "%s_size", args[2]);
grub_snprintf(value, sizeof(value), "%llu", (unsigned long long)file->size); grub_snprintf(value, sizeof(value), "%llu", (unsigned long long)file->size);
grub_env_set(name, value); grub_env_set(name, value);
...@@ -4349,6 +4367,23 @@ int ventoy_env_init(void) ...@@ -4349,6 +4367,23 @@ int ventoy_env_init(void)
grub_env_export("ventoy_env_param"); grub_env_export("ventoy_env_param");
} }
grub_snprintf(buf, sizeof(buf), "0x%lx", (ulong)g_vtoy_winpeshl_ini);
grub_env_set("vtoy_winpeshl_ini_addr", buf);
grub_snprintf(buf, sizeof(buf), "%d", (int)grub_strlen(g_vtoy_winpeshl_ini));
grub_env_set("vtoy_winpeshl_ini_size", buf);
grub_env_export("vtoy_winpeshl_ini_addr");
grub_env_export("vtoy_winpeshl_ini_size");
grub_snprintf(buf, sizeof(buf), "0x%lx", (ulong)ventoy_chain_file_size);
grub_env_set("vtoy_chain_file_size", buf);
grub_env_export("vtoy_chain_file_size");
grub_snprintf(buf, sizeof(buf), "0x%lx", (ulong)ventoy_chain_file_read);
grub_env_set("vtoy_chain_file_read", buf);
grub_env_export("vtoy_chain_file_read");
return 0; return 0;
} }
...@@ -4470,6 +4505,8 @@ static cmd_para ventoy_cmds[] = ...@@ -4470,6 +4505,8 @@ static cmd_para ventoy_cmds[] =
{ "vt_check_secureboot_var", ventoy_cmd_check_secureboot_var, 0, NULL, "", "", NULL }, { "vt_check_secureboot_var", ventoy_cmd_check_secureboot_var, 0, NULL, "", "", NULL },
{ "vt_clear_key", ventoy_cmd_clear_key, 0, NULL, "", "", NULL }, { "vt_clear_key", ventoy_cmd_clear_key, 0, NULL, "", "", NULL },
{ "vt_img_check_range", ventoy_cmd_img_check_range, 0, NULL, "", "", NULL }, { "vt_img_check_range", ventoy_cmd_img_check_range, 0, NULL, "", "", NULL },
{ "vt_is_pe64", ventoy_cmd_is_pe64, 0, NULL, "", "", NULL },
{ "vt_sel_wimboot", ventoy_cmd_sel_wimboot, 0, NULL, "", "", NULL },
}; };
...@@ -4484,6 +4521,7 @@ int ventoy_register_all_cmd(void) ...@@ -4484,6 +4521,7 @@ int ventoy_register_all_cmd(void)
cur->cmd = grub_register_extcmd(cur->name, cur->func, cur->flags, cur->cmd = grub_register_extcmd(cur->name, cur->func, cur->flags,
cur->summary, cur->description, cur->parser); cur->summary, cur->description, cur->parser);
} }
return 0; return 0;
} }
......
...@@ -554,11 +554,13 @@ int ventoy_is_dir_exist(const char *fmt, ...); ...@@ -554,11 +554,13 @@ int ventoy_is_dir_exist(const char *fmt, ...);
int ventoy_fill_data(grub_uint32_t buflen, char *buffer); 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_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_wimdows_reset(grub_extcmd_context_t ctxt, int argc, char **args);
grub_err_t ventoy_cmd_is_pe64(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_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_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_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_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); grub_err_t ventoy_cmd_dump_wim_patch(grub_extcmd_context_t ctxt, int argc, char **args);
grub_err_t ventoy_cmd_sel_wimboot(grub_extcmd_context_t ctxt, int argc, char **args);
VTOY_JSON *vtoy_json_find_item VTOY_JSON *vtoy_json_find_item
( (
...@@ -1011,6 +1013,8 @@ int ventoy_load_part_table(const char *diskname); ...@@ -1011,6 +1013,8 @@ int ventoy_load_part_table(const char *diskname);
int ventoy_env_init(void); int ventoy_env_init(void);
int ventoy_register_all_cmd(void); int ventoy_register_all_cmd(void);
int ventoy_unregister_all_cmd(void); int ventoy_unregister_all_cmd(void);
int ventoy_chain_file_size(const char *path);
int ventoy_chain_file_read(const char *path, int offset, int len, void *buf);
#define VTOY_CMD_CHECK(a) if (33554432 != g_ventoy_disk_part_size[a]) ventoy_syscall0(exit) #define VTOY_CMD_CHECK(a) if (33554432 != g_ventoy_disk_part_size[a]) ventoy_syscall0(exit)
......
...@@ -314,6 +314,90 @@ static int ventoy_is_pe64(grub_uint8_t *buffer) ...@@ -314,6 +314,90 @@ static int ventoy_is_pe64(grub_uint8_t *buffer)
return 0; return 0;
} }
grub_err_t ventoy_cmd_is_pe64(grub_extcmd_context_t ctxt, int argc, char **args)
{
int ret = 1;
grub_file_t file;
grub_uint8_t buf[512];
(void)ctxt;
(void)argc;
file = grub_file_open(args[0], VENTOY_FILE_TYPE);
if (!file)
{
return 1;
}
grub_memset(buf, 0, 512);
grub_file_read(file, buf, 512);
if (ventoy_is_pe64(buf))
{
debug("%s is PE64\n", args[0]);
ret = 0;
}
else
{
debug("%s is PE32\n", args[0]);
}
grub_file_close(file);
return ret;
}
grub_err_t ventoy_cmd_sel_wimboot(grub_extcmd_context_t ctxt, int argc, char **args)
{
int size;
char *buf = NULL;
char configfile[128];
(void)ctxt;
(void)argc;
(void)args;
debug("select wimboot argc:%d\n", argc);
buf = (char *)grub_malloc(8192);
if (!buf)
{
return 0;
}
size = (int)grub_snprintf(buf, 8192,
"menuentry \"Windows Setup (32-bit)\" {\n"
" set vtoy_wimboot_sel=32\n"
"}\n"
"menuentry \"Windows Setup (64-bit)\" {\n"
" set vtoy_wimboot_sel=64\n"
"}\n"
);
buf[size] = 0;
g_ventoy_menu_esc = 1;
g_ventoy_suppress_esc = 1;
grub_snprintf(configfile, sizeof(configfile), "configfile mem:0x%llx:size:%d", (ulonglong)(ulong)buf, size);
grub_script_execute_sourcecode(configfile);
g_ventoy_menu_esc = 0;
g_ventoy_suppress_esc = 0;
grub_free(buf);
if (g_ventoy_last_entry == 0)
{
debug("last entry=%d %s=32\n", g_ventoy_last_entry, args[0]);
grub_env_set(args[0], "32");
}
else
{
debug("last entry=%d %s=64\n", g_ventoy_last_entry, args[0]);
grub_env_set(args[0], "64");
}
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
}
grub_err_t ventoy_cmd_wimdows_reset(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)
{ {
wim_patch *next = NULL; wim_patch *next = NULL;
...@@ -1810,3 +1894,29 @@ grub_err_t ventoy_cmd_wim_chain_data(grub_extcmd_context_t ctxt, int argc, char ...@@ -1810,3 +1894,29 @@ grub_err_t ventoy_cmd_wim_chain_data(grub_extcmd_context_t ctxt, int argc, char
VENTOY_CMD_RETURN(GRUB_ERR_NONE); VENTOY_CMD_RETURN(GRUB_ERR_NONE);
} }
int ventoy_chain_file_size(const char *path)
{
int size;
grub_file_t file;
file = grub_file_open(path, VENTOY_FILE_TYPE);
size = (int)(file->size);
grub_file_close(file);
return size;
}
int ventoy_chain_file_read(const char *path, int offset, int len, void *buf)
{
int size;
grub_file_t file;
file = grub_file_open(path, VENTOY_FILE_TYPE);
grub_file_seek(file, offset);
size = grub_file_read(file, buf, len);
grub_file_close(file);
return size;
}
...@@ -87,6 +87,7 @@ EXPORT_FUNC (grub_efi_compare_device_paths) (const grub_efi_device_path_t *dp1, ...@@ -87,6 +87,7 @@ EXPORT_FUNC (grub_efi_compare_device_paths) (const grub_efi_device_path_t *dp1,
const grub_efi_device_path_t *dp2); const grub_efi_device_path_t *dp2);
void * EXPORT_FUNC (grub_efi_allocate_iso_buf) (grub_uint64_t size); void * EXPORT_FUNC (grub_efi_allocate_iso_buf) (grub_uint64_t size);
void * EXPORT_FUNC (grub_efi_allocate_chain_buf) (grub_uint64_t size);
extern void (*EXPORT_VAR(grub_efi_net_config)) (grub_efi_handle_t hnd, extern void (*EXPORT_VAR(grub_efi_net_config)) (grub_efi_handle_t hnd,
......
...@@ -23,7 +23,7 @@ sfs: fshelp ...@@ -23,7 +23,7 @@ sfs: fshelp
reiserfs: fshelp reiserfs: fshelp
part_sunpc: part_sunpc:
zstd: zstd:
gfxmenu: video_colors trig bitmap_scale gfxterm font normal bitmap video gfxmenu: trig video_colors bitmap_scale gfxterm font normal bitmap video
jfs: jfs:
help: extcmd normal help: extcmd normal
configfile: normal configfile: normal
......
...@@ -535,6 +535,10 @@ function uefi_windows_menu_func { ...@@ -535,6 +535,10 @@ function uefi_windows_menu_func {
vt_windows_chain_data "${1}${chosen_path}" vt_windows_chain_data "${1}${chosen_path}"
ventoy_debug_pause ventoy_debug_pause
if vt_check_mode 4; then
vtoy_windows_wimboot_func
fi
if [ -n "$vtoy_chain_mem_addr" ]; then if [ -n "$vtoy_chain_mem_addr" ]; then
ventoy_acpi_param ${vtoy_chain_mem_addr} 2048 ventoy_acpi_param ${vtoy_chain_mem_addr} 2048
ventoy_cli_console ventoy_cli_console
...@@ -805,23 +809,81 @@ function uefi_iso_memdisk { ...@@ -805,23 +809,81 @@ function uefi_iso_memdisk {
} }
function legacy_windows_wimboot_func { function vtoy_windows_wimboot_func {
set wimbootfile=(loop)/sources/boot.wim if [ -f (loop)/x86/sources/boot.wim -a -f (loop)/x64/sources/boot.wim ]; then
set wimbit=64 vt_sel_wimboot vtoy_wimboot_bit
if [ "$vtoy_wimboot_bit" = "32" ]; then
set vtoy_wimboot_prefix=(loop)/x86
else
set vtoy_wimboot_prefix=(loop)/x64
fi
else
set vtoy_wimboot_prefix=(loop)
if vt_is_pe64 $vtoy_wimboot_prefix/setup.exe; then
set vtoy_wimboot_bit=64
else
set vtoy_wimboot_bit=32
fi
fi
if [ -n "${vtdebug_flag}" ]; then
echo vtoy_wimboot_prefix=$vtoy_wimboot_prefix vtoy_wimboot_bit=$vtoy_wimboot_bit
fi
vt_windows_wimboot_data for wmfile in sources/boot.wim boot/bcd boot/boot.sdi; do
if [ ! -f $vtoy_wimboot_prefix/$wmfile ]; then
return
fi
done
linux16 $vtoy_efi_part/ventoy/wimboot quiet if [ -f $vtoy_wimboot_prefix/sources/install.wim -o -f $vtoy_wimboot_prefix/sources/install.esd ]; then
ventoy_debug_pause vt_windows_wimboot_data
else
return
fi
echo Loading files...... (This may take a few minutes, please wait.) if [ "$grub_platform" = "pc" ]; then
initrd16 newc:vtoyjump.exe:$vtoy_efi_part/ventoy/vtoyjump${wimbit}.exe \ set vt_wimkernel=wimboot.x86_64.xz
newc:wimboot.data:mem:${vtoy_wimboot_mem_addr}:size:${vtoy_wimboot_mem_size} \
newc:winpeshl.ini:$vtoy_efi_part/ventoy/winpeshl.ini \ linux16 "$vtoy_path/$vt_wimkernel" quiet
newc:bcd:(loop)/boot/bcd \ ventoy_debug_pause
newc:boot.sdi:(loop)/boot/boot.sdi \
newc:boot.wim:$wimbootfile echo Loading files...... (This may take a few minutes, please wait)
boot initrd16 newc:vtoyjump.exe:$vtoy_path/vtoyjump${vtoy_wimboot_bit}.exe \
newc:wimboot.data:mem:${vtoy_wimboot_mem_addr}:size:${vtoy_wimboot_mem_size} \
newc:winpeshl.ini:mem:${vtoy_winpeshl_ini_addr}:size:${vtoy_winpeshl_ini_size} \
newc:bcd:$vtoy_wimboot_prefix/boot/bcd \
newc:boot.sdi:$vtoy_wimboot_prefix/boot/boot.sdi \
newc:boot.wim:$vtoy_wimboot_prefix/sources/boot.wim
boot
else
if [ "$grub_cpu" = "i386" ]; then
set vt_wimkernel=wimboot.i386.efi.xz
else
set vt_wimkernel=wimboot.x86_64.xz
fi
echo Loading files...... (This may take a few minutes, please wait)
vt_load_file_to_mem "nodecompress" $vtoy_wimboot_prefix/sources/boot.wim vtoy_wimfile_mem
if [ $? -eq 0 ]; then
set vtoy_wimfile_path=mem:${vtoy_wimfile_mem_addr}:size:${vtoy_wimfile_mem_size}
else
set vtoy_wimfile_path=$vtoy_wimboot_prefix/sources/boot.wim
fi
ventoy_cli_console
chainloader "$vtoy_path/$vt_wimkernel" quiet \
"vf=wimboot.data:mem:${vtoy_wimboot_mem_addr}:size:${vtoy_wimboot_mem_size}" \
"vf=winpeshl.ini:mem:${vtoy_winpeshl_ini_addr}:size:${vtoy_winpeshl_ini_size}" \
"vf=vtoyjump.exe:$vtoy_path/vtoyjump${vtoy_wimboot_bit}.exe" \
"vf=bcd:$vtoy_wimboot_prefix/boot/bcd" \
"vf=boot.sdi:$vtoy_wimboot_prefix/boot/boot.sdi" \
"vf=boot.wim:$vtoy_wimfile_path" \
pfsize=$vtoy_chain_file_size \
pfread=$vtoy_chain_file_read
boot
ventoy_gui_console
fi
} }
function legacy_windows_menu_func { function legacy_windows_menu_func {
...@@ -854,7 +916,7 @@ function legacy_windows_menu_func { ...@@ -854,7 +916,7 @@ function legacy_windows_menu_func {
ventoy_debug_pause ventoy_debug_pause
if vt_check_mode 4; then if vt_check_mode 4; then
legacy_windows_wimboot_func vtoy_windows_wimboot_func
fi fi
if [ -n "$vtoy_chain_mem_addr" ]; then if [ -n "$vtoy_chain_mem_addr" ]; then
......
...@@ -26,7 +26,7 @@ sfs: fshelp ...@@ -26,7 +26,7 @@ sfs: fshelp
reiserfs: fshelp reiserfs: fshelp
part_sunpc: part_sunpc:
zstd: zstd:
gfxmenu: video_colors trig bitmap_scale gfxterm font normal bitmap video gfxmenu: trig video_colors bitmap_scale gfxterm font normal bitmap video
backtrace: backtrace:
jfs: jfs:
help: extcmd normal help: extcmd normal
......
...@@ -26,7 +26,7 @@ sfs: fshelp ...@@ -26,7 +26,7 @@ sfs: fshelp
reiserfs: fshelp reiserfs: fshelp
part_sunpc: part_sunpc:
zstd: zstd:
gfxmenu: video_colors trig bitmap_scale gfxterm font normal bitmap video gfxmenu: trig video_colors bitmap_scale gfxterm font normal bitmap video
backtrace: backtrace:
jfs: jfs:
help: extcmd normal help: extcmd normal
......
...@@ -26,7 +26,7 @@ sfs: fshelp ...@@ -26,7 +26,7 @@ sfs: fshelp
reiserfs: fshelp reiserfs: fshelp
part_sunpc: part_sunpc:
zstd: zstd:
gfxmenu: video_colors trig bitmap_scale gfxterm font normal bitmap video gfxmenu: trig video_colors bitmap_scale gfxterm font normal bitmap video
backtrace: backtrace:
jfs: jfs:
help: extcmd normal help: extcmd normal
......
[LaunchApps]
vtoyjump.exe
\ No newline at end of file
...@@ -1118,7 +1118,7 @@ int VentoyJumpWimboot(INT argc, CHAR **argv, CHAR *LunchFile) ...@@ -1118,7 +1118,7 @@ int VentoyJumpWimboot(INT argc, CHAR **argv, CHAR *LunchFile)
g_64bit_system = TRUE; g_64bit_system = TRUE;
#endif #endif
Log("VentoyJumpWimboot 64bit:%u", g_64bit_system); Log("VentoyJumpWimboot %dbit", g_64bit_system ? 64 : 32);
sprintf_s(LunchFile, MAX_PATH, "X:\\setup.exe"); sprintf_s(LunchFile, MAX_PATH, "X:\\setup.exe");
...@@ -1187,6 +1187,7 @@ int VentoyJump(INT argc, CHAR **argv, CHAR *LunchFile) ...@@ -1187,6 +1187,7 @@ int VentoyJump(INT argc, CHAR **argv, CHAR *LunchFile)
} }
g_64bit_system = IsPe64(Buffer); g_64bit_system = IsPe64(Buffer);
Log("VentoyJump %dbit", g_64bit_system ? 64 : 32);
if (!IsPathExist(TRUE, "ventoy")) if (!IsPathExist(TRUE, "ventoy"))
{ {
......
#!/bin/sh
VTOY_PATH=$PWD/../
cd wimboot-2.7.3/src
make clean
make -j 16
rm -f *.xz
xz wimboot.x86_64
xz wimboot.i386.efi
rm -f $VTOY_PATH/INSTALL/ventoy/wimboot.x86_64.xz
rm -f $VTOY_PATH/INSTALL/ventoy/wimboot.i386.efi.xz
cp -a wimboot.x86_64.xz $VTOY_PATH/INSTALL/ventoy/
cp -a wimboot.i386.efi.xz $VTOY_PATH/INSTALL/ventoy/
make clean
cd ../../
wimboot
*.s
*.o
*.a
*.elf
*.map
*.unsigned
*.efi
*.cab
efireloc
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment