From ff14c07c4e6f1491dffae22bb213de4830c81c52 Mon Sep 17 00:00:00 2001 From: longpanda Date: Sun, 6 Mar 2022 19:31:18 +0800 Subject: [PATCH] Support Easy Recovery Essentials (#1481) --- DOC/BuildVentoyFromSource.txt | 6 +- .../grub-2.04/grub-core/ventoy/ventoy_cmd.c | 1 + .../grub-2.04/grub-core/ventoy/ventoy_def.h | 1 + .../grub-2.04/grub-core/ventoy/ventoy_unix.c | 99 +++++++++++++++++- INSTALL/grub/grub.cfg | 13 ++- INSTALL/ventoy/ventoy_unix.cpio | Bin 106496 -> 106496 bytes .../geom_ventoy_ko/13.x/64/geom_ventoy.ko.xz | Bin 7584 -> 7664 bytes .../13.x/sys/geom/ventoy/g_ventoy.c | 25 ++++- 8 files changed, 135 insertions(+), 10 deletions(-) diff --git a/DOC/BuildVentoyFromSource.txt b/DOC/BuildVentoyFromSource.txt index 8aae2823..be642b17 100644 --- a/DOC/BuildVentoyFromSource.txt +++ b/DOC/BuildVentoyFromSource.txt @@ -108,10 +108,10 @@ cd /home/Ventoy-master/VtoyTool sh build.sh -4.8 == Build vtoyfat == - cd /home/Ventoy-master/vtoyfat/fat_io_lib +4.8 == Build vtoycli == + cd /home/Ventoy-master/vtoycli/fat_io_lib sh buildlib.sh - cd /home/Ventoy-master/vtoyfat + cd /home/Ventoy-master/vtoycli sh build.sh 4.9 == Build exfat-util == 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 1586a5db..6e40f426 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 @@ -5713,6 +5713,7 @@ static cmd_para ventoy_cmds[] = { "vt_unix_parse_freebsd_ver_elf", ventoy_cmd_unix_freebsd_ver_elf, 0, NULL, "", "", NULL }, { "vt_unix_reset", ventoy_cmd_unix_reset, 0, NULL, "", "", NULL }, { "vt_unix_replace_conf", ventoy_cmd_unix_replace_conf, 0, NULL, "", "", NULL }, + { "vt_unix_replace_grub_conf", ventoy_cmd_unix_replace_grub_conf, 0, NULL, "", "", NULL }, { "vt_unix_replace_ko", ventoy_cmd_unix_replace_ko, 0, NULL, "", "", NULL }, { "vt_unix_ko_fillmap", ventoy_cmd_unix_ko_fillmap, 0, NULL, "", "", NULL }, { "vt_unix_fill_image_desc", ventoy_cmd_unix_fill_image_desc, 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 3e71fe39..763ed179 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 @@ -1094,6 +1094,7 @@ grub_err_t ventoy_cmd_unix_chain_data(grub_extcmd_context_t ctxt, int argc, char int ventoy_get_disk_guid(const char *filename, grub_uint8_t *guid, grub_uint8_t *signature); grub_err_t ventoy_cmd_unix_reset(grub_extcmd_context_t ctxt, int argc, char **args); grub_err_t ventoy_cmd_unix_replace_conf(grub_extcmd_context_t ctxt, int argc, char **args); +grub_err_t ventoy_cmd_unix_replace_grub_conf(grub_extcmd_context_t ctxt, int argc, char **args); grub_err_t ventoy_cmd_unix_replace_ko(grub_extcmd_context_t ctxt, int argc, char **args); grub_err_t ventoy_cmd_unix_ko_fillmap(grub_extcmd_context_t ctxt, int argc, char **args); grub_err_t ventoy_cmd_unix_fill_image_desc(grub_extcmd_context_t ctxt, int argc, char **args); diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_unix.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_unix.c index fe581447..dbb30e17 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_unix.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_unix.c @@ -273,7 +273,7 @@ static void ventoy_unix_fill_virt_data( grub_uint64_t isosize, ventoy_chain_h return; } -static int ventoy_freebsd_append_conf(char *buf, const char *isopath) +static int ventoy_freebsd_append_conf(char *buf, const char *isopath, const char *alias) { int pos = 0; grub_uint32_t i; @@ -294,6 +294,10 @@ static int ventoy_freebsd_append_conf(char *buf, const char *isopath) vtoy_ssprintf(buf, pos, "ventoy_load=\"%s\"\n", "YES"); vtoy_ssprintf(buf, pos, "ventoy_name=\"%s\"\n", g_ko_mod_path); + if (alias) + { + vtoy_ssprintf(buf, pos, "hint.ventoy.0.alias=\"%s\"\n", alias); + } if (g_mod_search_magic) { @@ -647,6 +651,95 @@ out: VENTOY_CMD_RETURN(GRUB_ERR_NONE); } +grub_err_t ventoy_cmd_unix_replace_grub_conf(grub_extcmd_context_t ctxt, int argc, char **args) +{ + int len; + grub_uint32_t i; + char *data; + char *pos; + grub_uint64_t offset; + grub_file_t file; + char extcfg[256]; + const char *confile = NULL; + const char * loader_conf[] = + { + "/boot/grub/grub.cfg", + }; + + (void)ctxt; + + if (argc != 1 && argc != 2) + { + debug("Replace conf invalid argc %d\n", argc); + return 1; + } + + for (i = 0; i < sizeof(loader_conf) / sizeof(loader_conf[0]); i++) + { + if (ventoy_get_file_override(loader_conf[i], &offset) == 0) + { + confile = loader_conf[i]; + g_conf_override_offset = offset; + break; + } + } + + if (confile == NULL) + { + debug("Can't find grub.cfg file from %u locations\n", i); + return 1; + } + + file = ventoy_grub_file_open(GRUB_FILE_TYPE_LINUX_INITRD, "(loop)/%s", confile); + if (!file) + { + debug("Failed to open %s \n", confile); + return 1; + } + + debug("old grub2 conf file size:%d\n", (int)file->size); + + data = grub_malloc(VTOY_MAX_SCRIPT_BUF); + if (!data) + { + grub_file_close(file); + return 1; + } + + grub_file_read(file, data, file->size); + grub_file_close(file); + + g_conf_new_data = data; + g_conf_new_len = (int)file->size; + + pos = grub_strstr(data, "kfreebsd /boot/kernel/kernel"); + if (pos) + { + pos += grub_strlen("kfreebsd /boot/kernel/kernel"); + + if (argc == 2) + { + len = grub_snprintf(extcfg, sizeof(extcfg), + ";kfreebsd_module_elf %s; set kFreeBSD.hint.ventoy.0.alias=\"%s\"", + args[0], args[1]); + } + else + { + len = grub_snprintf(extcfg, sizeof(extcfg), ";kfreebsd_module_elf %s", args[0]); + } + + grub_memmove(pos + len, pos, (int)(file->size - (pos - data))); + grub_memcpy(pos, extcfg, len); + g_conf_new_len += len; + } + else + { + debug("no kfreebsd found\n"); + } + + VENTOY_CMD_RETURN(GRUB_ERR_NONE); +} + grub_err_t ventoy_cmd_unix_replace_conf(grub_extcmd_context_t ctxt, int argc, char **args) { grub_uint32_t i; @@ -662,7 +755,7 @@ grub_err_t ventoy_cmd_unix_replace_conf(grub_extcmd_context_t ctxt, int argc, ch (void)ctxt; - if (argc != 2) + if (argc != 2 && argc != 3) { debug("Replace conf invalid argc %d\n", argc); return 1; @@ -708,7 +801,7 @@ grub_err_t ventoy_cmd_unix_replace_conf(grub_extcmd_context_t ctxt, int argc, ch if (grub_strcmp(args[0], "FreeBSD") == 0) { - g_conf_new_len += ventoy_freebsd_append_conf(data + file->size, args[1]); + g_conf_new_len += ventoy_freebsd_append_conf(data + file->size, args[1], (argc > 2) ? args[2] : NULL); } else if (grub_strcmp(args[0], "DragonFly") == 0) { diff --git a/INSTALL/grub/grub.cfg b/INSTALL/grub/grub.cfg index feb8b2ac..e2998ceb 100644 --- a/INSTALL/grub/grub.cfg +++ b/INSTALL/grub/grub.cfg @@ -519,8 +519,17 @@ function ventoy_freebsd_proc { fi done - vt_unix_replace_ko $vt_unix_mod_path (vtunix)/ventoy_unix/$vtFreeBsdDistro/geom_ventoy_ko/$vt_freebsd_ver/$vt_freebsd_bit/geom_ventoy.ko.xz - vt_unix_replace_conf FreeBSD "${1}${chosen_path}" + if [ -n "$vt_unix_mod_path" ]; then + vt_unix_replace_ko $vt_unix_mod_path (vtunix)/ventoy_unix/$vtFreeBsdDistro/geom_ventoy_ko/$vt_freebsd_ver/$vt_freebsd_bit/geom_ventoy.ko.xz + vt_unix_replace_conf FreeBSD "${1}${chosen_path}" + elif [ -e (loop)/easyre.ufs.uzip ]; then + vt_unix_replace_ko "/boot/grub/i386-pc/linux.mod" (vtunix)/ventoy_unix/$vtFreeBsdDistro/geom_ventoy_ko/$vt_freebsd_ver/$vt_freebsd_bit/geom_ventoy.ko.xz + if [ "$grub_platform" = "pc" ]; then + vt_unix_replace_grub_conf "/boot/grub/i386-pc/linux.mod" "cd9" + else + vt_unix_replace_conf FreeBSD "${1}${chosen_path}" "cd9" + fi + fi } function ventoy_dragonfly_proc { diff --git a/INSTALL/ventoy/ventoy_unix.cpio b/INSTALL/ventoy/ventoy_unix.cpio index 9cf11c3631db4df11a43d0fa1accc336bf36e2e7..22d6af4d73e336b00ccbc83a87de2ea0b0d3d168 100644 GIT binary patch delta 7729 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 delta 7693 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 HFrNWX^|St^ diff --git a/Unix/ventoy_unix/FreeBSD/geom_ventoy_ko/13.x/64/geom_ventoy.ko.xz b/Unix/ventoy_unix/FreeBSD/geom_ventoy_ko/13.x/64/geom_ventoy.ko.xz index 537592ebf1a87be506ba2e5800364c1cf371e7db..7bbca670265d1b60e4dd58c08a9e66ce55217816 100644 GIT binary patch literal 7664 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%0A9VrGbf7~{vpy(u1kb>`r4P!Grcaq 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 CJI|j0 diff --git a/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/13.x/sys/geom/ventoy/g_ventoy.c b/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/13.x/sys/geom/ventoy/g_ventoy.c index 1924a06e..95c2842b 100644 --- a/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/13.x/sys/geom/ventoy/g_ventoy.c +++ b/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/13.x/sys/geom/ventoy/g_ventoy.c @@ -200,12 +200,17 @@ g_ventoy_access(struct g_provider *pp, int dr, int dw, int de) g_topology_assert(); gp = pp->geom; +#if 1 /* On first open, grab an extra "exclusive" bit */ if (pp->acr == 0 && pp->acw == 0 && pp->ace == 0) de++; /* ... and let go of it on last close */ if ((pp->acr + dr) == 0 && (pp->acw + dw) == 0 && (pp->ace + de) == 0) de--; +#else + G_DEBUG("g_ventoy_access fake de (%d)-->(0)\n", de); + de = 0; +#endif LIST_FOREACH_SAFE(cp1, &gp->consumer, consumer, tmp) { error = g_access(cp1, dr, dw, de); @@ -835,6 +840,7 @@ g_ventoy_taste(struct g_class *mp, struct g_provider *pp, int flags __unused) int disknum; char *endpos; const char *value; + const char *alias = NULL; struct g_geom *gp; struct g_ventoy_metadata md; struct g_ventoy_softc *sc; @@ -858,7 +864,17 @@ g_ventoy_taste(struct g_class *mp, struct g_provider *pp, int flags __unused) g_ventoy_tasted = true; - G_DEBUG("######### ventoy disk <%s> #############\n", pp->name); + G_DEBUG("###### ventoy disk <%s> ######\n", pp->name); + + /* hint.ventoy.0.alias=xxx */ + if (resource_string_value("ventoy", 0, "alias", &alias) == 0) + { + G_DEBUG("###### ventoy alias <%s> ######\n", alias); + } + else + { + alias = NULL; + } if (VENTOY_MAP_VALID(g_ventoy_map_data.magic2)) { @@ -929,7 +945,12 @@ g_ventoy_taste(struct g_class *mp, struct g_provider *pp, int flags __unused) g_disk_map_end = 0; } - return (gp); + if (alias && sc && sc->sc_provider) + { + g_provider_add_alias(sc->sc_provider, "%s", alias); + } + + return (gp); } static void