Add support for 小鱼儿yr系统维护PE

This commit is contained in:
longpanda
2021-10-11 21:11:52 +08:00
parent 5a591c1ae7
commit c18399e8b4
192 changed files with 37 additions and 4 deletions

View File

@@ -5087,6 +5087,7 @@ static cmd_para ventoy_cmds[] =
{ "vt_check_json_path_case", ventoy_cmd_chk_json_pathcase, 0, NULL, "", "", NULL },
{ "vt_append_extra_sector", ventoy_cmd_append_ext_sector, 0, NULL, "", "", NULL },
{ "gptpriority", grub_cmd_gptpriority, 0, NULL, "", "", NULL },
{ "vt_wim_peset", ventoy_cmd_wim_peset, 0, NULL, "", "", NULL },
};
int ventoy_register_all_cmd(void)

View File

@@ -586,6 +586,7 @@ 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_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_peset(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_sel_wimboot(grub_extcmd_context_t ctxt, int argc, char **args);

View File

@@ -40,6 +40,7 @@
GRUB_MOD_LICENSE ("GPLv3+");
static int g_peset_flag = 0;
static int g_iso_fs_type = 0;
static int g_wim_total_patch_count = 0;
static int g_wim_valid_patch_count = 0;
@@ -417,6 +418,7 @@ grub_err_t ventoy_cmd_wimdows_reset(grub_extcmd_context_t ctxt, int argc, char *
g_wim_patch_head = NULL;
g_wim_total_patch_count = 0;
g_wim_valid_patch_count = 0;
g_peset_flag = 0;
return 0;
}
@@ -660,7 +662,9 @@ static wim_directory_entry * search_full_wim_dirent
static wim_directory_entry * search_replace_wim_dirent(void *meta_data, wim_directory_entry *dir)
{
wim_directory_entry *tmp_dirent = NULL;
wim_directory_entry *wim_dirent = NULL;
const char *peset_path[] = { "Windows", "System32", "peset.exe", NULL };
const char *pecmd_path[] = { "Windows", "System32", "pecmd.exe", NULL };
const char *winpeshl_path[] = { "Windows", "System32", "winpeshl.exe", NULL };
@@ -668,6 +672,16 @@ static wim_directory_entry * search_replace_wim_dirent(void *meta_data, wim_dire
debug("search pecmd.exe %p\n", wim_dirent);
if (wim_dirent)
{
if (g_peset_flag)
{
tmp_dirent = search_full_wim_dirent(meta_data, dir, peset_path);
debug("search peset.exe %p\n", tmp_dirent);
if (tmp_dirent)
{
return tmp_dirent;
}
}
return wim_dirent;
}
@@ -1829,6 +1843,17 @@ grub_err_t ventoy_cmd_wim_check_bootable(grub_extcmd_context_t ctxt, int argc, c
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
}
grub_err_t ventoy_cmd_wim_peset(grub_extcmd_context_t ctxt, int argc, char **args)
{
(void)ctxt;
(void)argc;
(void)args;
g_peset_flag = 1;
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
}
grub_err_t ventoy_cmd_wim_chain_data(grub_extcmd_context_t ctxt, int argc, char **args)
{
grub_uint32_t i = 0;