From 3d1dc81fda49132feb670ea50041ca52ba9296bc Mon Sep 17 00:00:00 2001 From: longpanda Date: Fri, 29 Apr 2022 01:13:04 +0800 Subject: [PATCH 01/16] fix lvm issue --- IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh | 7 +++---- IMG/cpio/ventoy/hook/rhel7/ventoy-timeout.sh | 7 ++++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh b/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh index c19991e..cf29264 100644 --- a/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh +++ b/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh @@ -40,11 +40,10 @@ if is_inotify_ventoy_part $3; then $BUSYBOX_PATH/sh $VTOY_PATH/hook/default/udev_disk_hook.sh $3 $vtReplaceOpt - blkdev_num=$($VTOY_PATH/tool/dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/') - vtDM=$(ventoy_find_dm_id ${blkdev_num}) - - cp -a /dev/$vtDM /dev/ventoy + blkdev_num_mknod=$($VTOY_PATH/tool/dmsetup ls | $GREP ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1 \2/') + $BUSYBOX_PATH/mknod -m 660 /dev/ventoy b $blkdev_num_mknod $BUSYBOX_PATH/modprobe isofs >/dev/null 2>&1 + vtlog "mknod /dev/ventoy $blkdev_num_mknod" vtGenRulFile='/etc/udev/rules.d/99-live-squash.rules' if [ -e $vtGenRulFile ] && $GREP -q dmsquash $vtGenRulFile; then diff --git a/IMG/cpio/ventoy/hook/rhel7/ventoy-timeout.sh b/IMG/cpio/ventoy/hook/rhel7/ventoy-timeout.sh index 77260fe..8aac169 100644 --- a/IMG/cpio/ventoy/hook/rhel7/ventoy-timeout.sh +++ b/IMG/cpio/ventoy/hook/rhel7/ventoy-timeout.sh @@ -23,9 +23,10 @@ vtlog "##### $0 $* ..." VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH -blkdev_num=$(dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/') -vtDM=$(ventoy_find_dm_id ${blkdev_num}) -[ -e /dev/ventoy ] || cp -a /dev/$vtDM /dev/ventoy +if [ ! -e /dev/ventoy ]; then + blkdev_num_mknod=$(dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1 \2/') + mknod -m 660 /dev/ventoy b $blkdev_num_mknod +fi if [ -e /sbin/anaconda-diskroot ]; then vtlog "set anaconda-diskroot /dev/ventoy ..." -- 2.47.3 From 5f3d7f382383b720cdd3d32d686c2c13dca3510c Mon Sep 17 00:00:00 2001 From: longpanda Date: Fri, 29 Apr 2022 19:57:04 +0800 Subject: [PATCH 02/16] Fix the bug when booting linx iso (#1600) --- IMG/cpio/ventoy/hook/debian/udev_disk_hook.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/IMG/cpio/ventoy/hook/debian/udev_disk_hook.sh b/IMG/cpio/ventoy/hook/debian/udev_disk_hook.sh index c46f85b..251f046 100644 --- a/IMG/cpio/ventoy/hook/debian/udev_disk_hook.sh +++ b/IMG/cpio/ventoy/hook/debian/udev_disk_hook.sh @@ -138,6 +138,14 @@ else fi fi +#special process for Linx +if $BUSYBOX_PATH/uname -r | $GREP -q "^2\.6"; then + if $GREP -q "linx" /proc/version; then + blkdev_num=$($VTOY_PATH/tool/dmsetup ls | $GREP ventoy | $SED 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/') + vtDM=$(ventoy_find_dm_id ${blkdev_num}) + echo "/dev/$vtDM" > /ventoy/list-devices-usb-part + fi +fi # OK finish set_ventoy_hook_finish -- 2.47.3 From 9baa95359c7c86e332674fcc5a3952cdc4466c90 Mon Sep 17 00:00:00 2001 From: longpanda Date: Sat, 30 Apr 2022 14:52:00 +0800 Subject: [PATCH 03/16] Fix a bug in menu tip plugin webpage of VentoyPlugson. (#1602) --- Plugson/www/buildtime | 2 +- Plugson/www/index.html | 2 +- Plugson/www/plugson_menu_tip.html | 9 ++++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Plugson/www/buildtime b/Plugson/www/buildtime index bbcb4d7..89141bd 100644 --- a/Plugson/www/buildtime +++ b/Plugson/www/buildtime @@ -1 +1 @@ -20220108 22:41:02 \ No newline at end of file +20220430 13:06:42 \ No newline at end of file diff --git a/Plugson/www/index.html b/Plugson/www/index.html index b65efa5..e6f5fd1 100644 --- a/Plugson/www/index.html +++ b/Plugson/www/index.html @@ -723,7 +723,7 @@ diff --git a/Plugson/www/plugson_menu_tip.html b/Plugson/www/plugson_menu_tip.html index 4b12cd8..f91b7c6 100644 --- a/Plugson/www/plugson_menu_tip.html +++ b/Plugson/www/plugson_menu_tip.html @@ -195,7 +195,7 @@ $('input:text[id=id_tip_text_top]').val(data.top); $('input:text[id=id_tip_text_color]').val(data.color); - FillTipTable(data); + FillTipTable(data.tips); } @@ -208,7 +208,7 @@ } current_tab_index = index; - VtoyFillCurrentPageItem(m_data_tip[index].tips); + VtoyFillCurrentPageItem(m_data_tip[index]); } //Main process @@ -332,8 +332,9 @@ $('input:text[id=id_tip_text_left]').change(function() { var value = $('input:text[id=id_tip_text_left]').val(); - if (ventoy_check_percent(value)) { + if (ventoy_check_percent(value)) { VtoySaveCurrentPage(); + m_data_tip[current_tab_index].left = value; } else { Message.error(g_vtoy_cur_language.STR_INVALID_PERCENT); $('input:text[id=id_tip_text_left]').val(m_data_tip[current_tab_index].left); @@ -343,6 +344,7 @@ var value = $('input:text[id=id_tip_text_top]').val(); if (ventoy_check_percent(value)) { VtoySaveCurrentPage(); + m_data_tip[current_tab_index].top = value; } else { Message.error(g_vtoy_cur_language.STR_INVALID_PERCENT); $('input:text[id=id_tip_text_top]').val(m_data_tip[current_tab_index].top); @@ -353,6 +355,7 @@ if (value.length > 0) { if (ventoy_check_color(value)) { VtoySaveCurrentPage(); + m_data_tip[current_tab_index].color = value; } else { Message.error(g_vtoy_cur_language.STR_INVALID_COLOR); $('input:text[id=id_tip_text_color]').val(m_data_tip[current_tab_index].color); -- 2.47.3 From e1d161af4f7df58723e3a59f306aedfb90af62c7 Mon Sep 17 00:00:00 2001 From: longpanda Date: Mon, 2 May 2022 18:21:30 +0800 Subject: [PATCH 04/16] Fix a issue when booting easyos 3.4.3+ --- IMG/cpio/ventoy/loop/easyos/ventoy-disk.sh | 4 ++-- INSTALL/grub/grub.cfg | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/IMG/cpio/ventoy/loop/easyos/ventoy-disk.sh b/IMG/cpio/ventoy/loop/easyos/ventoy-disk.sh index 2fa0049..13a9706 100644 --- a/IMG/cpio/ventoy/loop/easyos/ventoy-disk.sh +++ b/IMG/cpio/ventoy/loop/easyos/ventoy-disk.sh @@ -27,8 +27,8 @@ vtlog "####### $0 $* ########" VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH -$BUSYBOX_PATH/insmod $VTOY_PATH/modules/dax.ko -$BUSYBOX_PATH/insmod $VTOY_PATH/modules/dm-mod.ko +[ -f $VTOY_PATH/modules/dax.ko ] && $BUSYBOX_PATH/insmod $VTOY_PATH/modules/dax.ko +[ -f $VTOY_PATH/modules/dm-mod.ko ] && $BUSYBOX_PATH/insmod $VTOY_PATH/modules/dm-mod.ko wait_for_usb_disk_ready diff --git a/INSTALL/grub/grub.cfg b/INSTALL/grub/grub.cfg index 91d5713..ac1e3ea 100644 --- a/INSTALL/grub/grub.cfg +++ b/INSTALL/grub/grub.cfg @@ -1640,7 +1640,9 @@ function ventoy_img_easyos { if [ -n "$vt_module_ver" ]; then for mod in "kernel/drivers/md/dm-mod.ko" "kernel/drivers/dax/dax.ko"; do - vt_img_extra_initrd_append (easysfs)/lib/modules/$vt_module_ver/$mod + if [ -e (easysfs)/lib/modules/$vt_module_ver/$mod ]; then + vt_img_extra_initrd_append (easysfs)/lib/modules/$vt_module_ver/$mod + fi done fi -- 2.47.3 From 63f9331c31ec81f0ee548ffa23c0be7f214af59b Mon Sep 17 00:00:00 2001 From: longpanda Date: Mon, 2 May 2022 20:19:54 +0800 Subject: [PATCH 05/16] Fix the bug when booting ATLAS Windows ISO. --- INSTALL/grub/grub.cfg | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/INSTALL/grub/grub.cfg b/INSTALL/grub/grub.cfg index ac1e3ea..c34489f 100644 --- a/INSTALL/grub/grub.cfg +++ b/INSTALL/grub/grub.cfg @@ -1037,7 +1037,11 @@ function legacy_windows_menu_func { 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} + if [ "$ventoy_compatible" = "NO" ]; then + linux16 $vtoy_path/ipxe.krn ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size} + else + linux16 $vtoy_path/ipxe.krn ${vtdebug_flag} ibft mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size} + fi boot else echo "chain empty failed" -- 2.47.3 From d4d87366205a6b560218cb80d81c1283b53ce3bb Mon Sep 17 00:00:00 2001 From: longpanda Date: Mon, 2 May 2022 21:05:58 +0800 Subject: [PATCH 06/16] Add debug info --- .../MOD_SRC/grub-2.04/grub-core/kern/efi/mm.c | 13 +++++++++++ .../grub-2.04/grub-core/ventoy/ventoy_cmd.c | 23 +++++++++++++++++++ .../MOD_SRC/grub-2.04/include/grub/efi/efi.h | 2 +- 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/kern/efi/mm.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/kern/efi/mm.c index 6676d6d..cb65cb3 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/kern/efi/mm.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/kern/efi/mm.c @@ -49,6 +49,9 @@ static grub_efi_uintn_t finish_desc_size; static grub_efi_uint32_t finish_desc_version; int grub_efi_is_finished = 0; +static grub_efi_uint64_t g_total_pages; +static grub_efi_uint64_t g_required_pages; + /* * We need to roll back EFI allocations on exit. Remember allocations that * we'll free on exit. @@ -614,6 +617,9 @@ grub_efi_mm_init (void) else if (required_pages > BYTES_TO_PAGES (MAX_HEAP_SIZE)) required_pages = BYTES_TO_PAGES (MAX_HEAP_SIZE); + g_total_pages = total_pages; + g_required_pages = required_pages; + /* Sort the filtered descriptors, so that GRUB can allocate pages from smaller regions. */ sort_memory_map (filtered_memory_map, desc_size, filtered_memory_map_end); @@ -670,3 +676,10 @@ grub_efi_get_ram_base(grub_addr_t *base_addr) return GRUB_ERR_NONE; } #endif + +void grub_efi_get_reserved_page_num(grub_uint64_t *total, grub_uint64_t *required) +{ + *total = g_total_pages; + *required = g_required_pages; +} + 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 5bde7a3..25bfed6 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 @@ -5568,6 +5568,28 @@ static grub_err_t ventoy_cmd_fn_mutex_lock(grub_extcmd_context_t ctxt, int argc, VENTOY_CMD_RETURN(GRUB_ERR_NONE); } +static grub_err_t ventoy_cmd_dump_rsv_page(grub_extcmd_context_t ctxt, int argc, char **args) +{ + grub_uint64_t total; + grub_uint64_t required; + + (void)ctxt; + (void)argc; + (void)args; + +#ifdef GRUB_MACHINE_EFI + grub_efi_get_reserved_page_num(&total, &required); + grub_printf("Total pages: %llu\n", (unsigned long long)total); + grub_printf("Required pages: %llu\n", (unsigned long long)required); +#else + grub_printf("Non EFI mode!\n"); +#endif + + grub_refresh(); + + VENTOY_CMD_RETURN(GRUB_ERR_NONE); +} + int ventoy_env_init(void) { char buf[64]; @@ -5769,6 +5791,7 @@ static cmd_para ventoy_cmds[] = { "vt_iso_vd_id_clear", ventoy_iso_vd_id_clear, 0, NULL, "", "", NULL }, { "vt_iso_vd_id_begin", ventoy_cmd_iso_vd_id_begin, 0, NULL, "", "", NULL }, { "vt_fn_mutex_lock", ventoy_cmd_fn_mutex_lock, 0, NULL, "", "", NULL }, + { "vt_efi_dump_rsv_page", ventoy_cmd_dump_rsv_page, 0, NULL, "", "", NULL }, }; int ventoy_register_all_cmd(void) diff --git a/GRUB2/MOD_SRC/grub-2.04/include/grub/efi/efi.h b/GRUB2/MOD_SRC/grub-2.04/include/grub/efi/efi.h index 4abd5db..7aea5b2 100644 --- a/GRUB2/MOD_SRC/grub-2.04/include/grub/efi/efi.h +++ b/GRUB2/MOD_SRC/grub-2.04/include/grub/efi/efi.h @@ -88,7 +88,7 @@ EXPORT_FUNC (grub_efi_compare_device_paths) (const grub_efi_device_path_t *dp1, void * EXPORT_FUNC (grub_efi_allocate_iso_buf) (grub_uint64_t size); void * EXPORT_FUNC (grub_efi_allocate_chain_buf) (grub_uint64_t size); - +void EXPORT_FUNC (grub_efi_get_reserved_page_num) (grub_uint64_t *total, grub_uint64_t *required); extern void (*EXPORT_VAR(grub_efi_net_config)) (grub_efi_handle_t hnd, char **device, -- 2.47.3 From 75c6c7257f6a695e98c1f875db36e4807715bc25 Mon Sep 17 00:00:00 2001 From: longpanda Date: Tue, 3 May 2022 08:54:52 +0800 Subject: [PATCH 07/16] Add debug info fix --- GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c | 2 ++ 1 file changed, 2 insertions(+) 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 25bfed6..1d1b972 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 @@ -5582,6 +5582,8 @@ static grub_err_t ventoy_cmd_dump_rsv_page(grub_extcmd_context_t ctxt, int argc, grub_printf("Total pages: %llu\n", (unsigned long long)total); grub_printf("Required pages: %llu\n", (unsigned long long)required); #else + (void)total; + (void)required; grub_printf("Non EFI mode!\n"); #endif -- 2.47.3 From 69da3a59d80ebfe341a37ee63714a201bf1bc59c Mon Sep 17 00:00:00 2001 From: longpanda Date: Tue, 3 May 2022 18:41:16 +0800 Subject: [PATCH 08/16] Reduce the required low memory. --- .../MOD_SRC/grub-2.04/grub-core/kern/efi/mm.c | 25 ++++++++++++++++--- .../grub-2.04/grub-core/ventoy/ventoy_cmd.c | 11 +++++--- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/kern/efi/mm.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/kern/efi/mm.c index cb65cb3..5a70e09 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/kern/efi/mm.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/kern/efi/mm.c @@ -49,8 +49,11 @@ static grub_efi_uintn_t finish_desc_size; static grub_efi_uint32_t finish_desc_version; int grub_efi_is_finished = 0; +/* 160MB 160 * 1024 * 1024 / 4096 */ +#define VTOY_CHAIN_MIN_PAGES (160 * 256) static grub_efi_uint64_t g_total_pages; -static grub_efi_uint64_t g_required_pages; +static grub_efi_uint64_t g_org_required_pages; +static grub_efi_uint64_t g_new_required_pages; /* * We need to roll back EFI allocations on exit. Remember allocations that @@ -617,8 +620,21 @@ grub_efi_mm_init (void) else if (required_pages > BYTES_TO_PAGES (MAX_HEAP_SIZE)) required_pages = BYTES_TO_PAGES (MAX_HEAP_SIZE); + g_org_required_pages = required_pages; + if (((total_pages - required_pages) >> 2) < VTOY_CHAIN_MIN_PAGES) + { + if (total_pages > (VTOY_CHAIN_MIN_PAGES << 2)) + { + g_new_required_pages = total_pages - (VTOY_CHAIN_MIN_PAGES << 2); + if (g_new_required_pages >= 8192) + { + required_pages = g_new_required_pages; + } + } + } + g_total_pages = total_pages; - g_required_pages = required_pages; + g_new_required_pages = required_pages; /* Sort the filtered descriptors, so that GRUB can allocate pages from smaller regions. */ @@ -677,9 +693,10 @@ grub_efi_get_ram_base(grub_addr_t *base_addr) } #endif -void grub_efi_get_reserved_page_num(grub_uint64_t *total, grub_uint64_t *required) +void grub_efi_get_reserved_page_num(grub_uint64_t *total, grub_uint64_t *org_required, grub_uint64_t *new_required) { *total = g_total_pages; - *required = g_required_pages; + *org_required = g_org_required_pages; + *new_required = g_new_required_pages; } 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 1d1b972..fdb9296 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 @@ -5571,19 +5571,22 @@ static grub_err_t ventoy_cmd_fn_mutex_lock(grub_extcmd_context_t ctxt, int argc, static grub_err_t ventoy_cmd_dump_rsv_page(grub_extcmd_context_t ctxt, int argc, char **args) { grub_uint64_t total; - grub_uint64_t required; + grub_uint64_t org_required; + grub_uint64_t new_required; (void)ctxt; (void)argc; (void)args; #ifdef GRUB_MACHINE_EFI - grub_efi_get_reserved_page_num(&total, &required); + grub_efi_get_reserved_page_num(&total, &org_required, &new_required); grub_printf("Total pages: %llu\n", (unsigned long long)total); - grub_printf("Required pages: %llu\n", (unsigned long long)required); + grub_printf("OrgReq pages: %llu\n", (unsigned long long)org_required); + grub_printf("NewReq pages: %llu\n", (unsigned long long)new_required); #else (void)total; - (void)required; + (void)org_required; + (void)new_required; grub_printf("Non EFI mode!\n"); #endif -- 2.47.3 From 3263b64b8a3849030883d19bf225e800e45b1cae Mon Sep 17 00:00:00 2001 From: longpanda Date: Tue, 3 May 2022 19:13:29 +0800 Subject: [PATCH 09/16] Reduce required low memory. --- GRUB2/MOD_SRC/grub-2.04/include/grub/efi/efi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GRUB2/MOD_SRC/grub-2.04/include/grub/efi/efi.h b/GRUB2/MOD_SRC/grub-2.04/include/grub/efi/efi.h index 7aea5b2..aec589c 100644 --- a/GRUB2/MOD_SRC/grub-2.04/include/grub/efi/efi.h +++ b/GRUB2/MOD_SRC/grub-2.04/include/grub/efi/efi.h @@ -88,7 +88,7 @@ EXPORT_FUNC (grub_efi_compare_device_paths) (const grub_efi_device_path_t *dp1, void * EXPORT_FUNC (grub_efi_allocate_iso_buf) (grub_uint64_t size); void * EXPORT_FUNC (grub_efi_allocate_chain_buf) (grub_uint64_t size); -void EXPORT_FUNC (grub_efi_get_reserved_page_num) (grub_uint64_t *total, grub_uint64_t *required); +void EXPORT_FUNC (grub_efi_get_reserved_page_num) (grub_uint64_t *total, grub_uint64_t *org_required, grub_uint64_t *new_required); extern void (*EXPORT_VAR(grub_efi_net_config)) (grub_efi_handle_t hnd, char **device, -- 2.47.3 From 4544e221d3ba93ca6968e4c6855aac0e63f1916e Mon Sep 17 00:00:00 2001 From: Urajmal <81016616+Urajmal@users.noreply.github.com> Date: Wed, 4 May 2022 10:54:43 +0200 Subject: [PATCH 10/16] Updated Slovenian language (#1597) I did an update on Slovenian language, you can check out any problems. --- LANGUAGES/languages.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/LANGUAGES/languages.json b/LANGUAGES/languages.json index dac98ca..2538678 100644 --- a/LANGUAGES/languages.json +++ b/LANGUAGES/languages.json @@ -2318,15 +2318,15 @@ "STR_UPDATE_TIP":"Varna nadgradnja. ISO datoteke ne bodo spremenjene.#@Nadaljujem?", "STR_INSTALL_TIP":"Ta disk bo formatiran in vsi podatki bodo izbrisani.#@Nadaljujem?", "STR_INSTALL_TIP2":"Ta disk bo formatiran in vsi podatki bodo izbrisani.#@Nadaljujem? (Druga potrditev)", - "STR_INSTALL_SUCCESS":"Čestitamo!#@ventoy je bil uspešno nameščen na napravo.", + "STR_INSTALL_SUCCESS":"Čestitamo!#@Ventoy je bil uspešno nameščen na napravo.", "STR_INSTALL_FAILED":"Med namestitvijo je prišlo do napake. Iztaknite in ponovno priklopite USB. Preverite log.txt za podrobnosti.", - "STR_UPDATE_SUCCESS":"Čestitamo!#@ventoy na napravi je bil uspešno posodobljen.", + "STR_UPDATE_SUCCESS":"Čestitamo!#@Ventoy na napravi je bil uspešno posodobljen.", "STR_UPDATE_FAILED":"Prišlo je do napake med nadgradnjo. Iztaknite in ponovno priklopite USB. Preverite log.txt za podrobnosti.", "STR_WAIT_PROCESS":"Proces teče, prosimo počakajte, ...", "STR_MENU_OPTION":"Nastavitve", "STR_MENU_SECURE_BOOT":"Podpora Secure Boot", "STR_MENU_PART_CFG":"Konfiguracija particij", - "STR_BTN_OK":"V redu", + "STR_BTN_OK":"Vredu", "STR_BTN_CANCEL":"Prekliči", "STR_PRESERVE_SPACE":"Ohrani nekaj prostora na koncu particije", "STR_SPACE_VAL_INVALID":"Nepravilna vrednost za rezerviran prostor", @@ -2343,17 +2343,17 @@ "STR_WEB_SERVICE_UNAVAILABLE":"Napaka v komunikaciji: storitev ni na voljo", "STR_WEB_TOKEN_MISMATCH":"Zahteva storitve je potekla, prosim poskusite kasneje.", "STR_WEB_SERVICE_BUSY":"Storitev je zasedena, prosim poskusite kasneje.", - "STR_MENU_VTSI_CREATE":"Generate VTSI File", - "STR_VTSI_CREATE_TIP":"This time will not write to the device, but only generate a VTSI file#@Continue?", - "STR_VTSI_CREATE_SUCCESS":"VTSI file created successfully!#@You can use Rufus(3.15+) to write it to the device so as to complete the installation of Ventoy.", - "STR_VTSI_CREATE_FAILED":"VTSI file created failed.", - "STR_MENU_PART_RESIZE":"Non-destructive Install", - "STR_PART_RESIZE_TIP":"Ventoy will try non-destructive installation if possible. #@Continue?", - "STR_PART_RESIZE_SUCCESS":"Congratulations!#@Ventoy non-destructive installation successfully finished.", - "STR_PART_RESIZE_FAILED":"Non-destructive installation failed, Check log.txt for details.", - "STR_PART_RESIZE_UNSUPPORTED":"Ventoy non-destructive installation stopped because some conditions cannot be met. Check log.txt for details.", - "STR_INSTALL_YES_TIP1":"Warning: Data will be lost!", - "STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.", + "STR_MENU_VTSI_CREATE":"Ustvari VTSI datoteko", + "STR_VTSI_CREATE_TIP":"Spremembe na napravi ne bo, generirala se bo samo VTSI datoteka#@Nadaljujem?", + "STR_VTSI_CREATE_SUCCESS":"VTSI datoteka ustvarjena uspešno!#@Uporabi naj se Rufus(3.15+) za zapis na napravo in uspešno zaključeno inštalacijo Ventoy-a.", + "STR_VTSI_CREATE_FAILED":"Ustvarjanje VTSI datoteke ni uspelo.", + "STR_MENU_PART_RESIZE":"Inštalacija brez brisanja.", + "STR_PART_RESIZE_TIP":"Ventoy bo poskusil inštalacijo brez brisanja podatkov. #@Nadaljujem?", + "STR_PART_RESIZE_SUCCESS":"Čestitke!#@Ventoy je bil uspešno nameščen.", + "STR_PART_RESIZE_FAILED":"Inštalacija ni uspela, preveri log.txt za podrobnosti.", + "STR_PART_RESIZE_UNSUPPORTED":"Ventoy je ustavil inštalacijo ker nekateri pogoji niso zadostni. Preveri log.txt a podrobnosti.", + "STR_INSTALL_YES_TIP1":"Pozor: Podatki bodo izbrisani!", + "STR_INSTALL_YES_TIP2":"Prosim vtipkajte YES v spodnje okno da potrdite čisto inštalacijo in ne zgolj nadgradnje.", "STRXXX":"" }, -- 2.47.3 From 57944520e5c1a152addedef3ca6d7978ecadd972 Mon Sep 17 00:00:00 2001 From: bovirus <1262554+bovirus@users.noreply.github.com> Date: Wed, 4 May 2022 10:54:56 +0200 Subject: [PATCH 11/16] Update italian language (#1598) @ventoy Please check and merge. Thanks. --- LANGUAGES/languages.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LANGUAGES/languages.json b/LANGUAGES/languages.json index 2538678..78efd59 100644 --- a/LANGUAGES/languages.json +++ b/LANGUAGES/languages.json @@ -1291,8 +1291,8 @@ "STR_PART_RESIZE_SUCCESS":"Congratulazioni!#@Installazione non distruttiva di Ventoy completata.", "STR_PART_RESIZE_FAILED":"Installazione non distruttiva fallita.#@Per i dettagli controlla il file log.txt.", "STR_PART_RESIZE_UNSUPPORTED":"L'installazione non distruttiva di Ventoy è stata interrotta perché alcune condizioni non possono essere soddisfatte.#@Per i dettagli controlla il file log.txt.", - "STR_INSTALL_YES_TIP1":"Attenzione: I dati verranno persi!", - "STR_INSTALL_YES_TIP2":"Per favore digita YES nella casella di testo qui sotto per confermare che vuoi davvero eseguire un'installazione pulita anziché un aggiornamento.", + "STR_INSTALL_YES_TIP1":"Attenzione: i dati verranno persi!", + "STR_INSTALL_YES_TIP2":"Digita YES nella casella di testo qui sotto per confermare che vuoi davvero eseguire un'installazione pulita anziché un aggiornamento.", "STRXXX":"" }, -- 2.47.3 From e66723399496f059edcbc7530c6c89aa7321b840 Mon Sep 17 00:00:00 2001 From: =?utf8?q?B=CC=85?= <20594300+cmplstofB@users.noreply.github.com> Date: Wed, 4 May 2022 17:55:05 +0900 Subject: [PATCH 12/16] [l10n/jp] modify jp localization (#1608) - Corrected no-need spaces (e.g. spaces after punctuation). - Newly translated untranslated strings. --- LANGUAGES/languages.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/LANGUAGES/languages.json b/LANGUAGES/languages.json index 78efd59..2fca34c 100644 --- a/LANGUAGES/languages.json +++ b/LANGUAGES/languages.json @@ -1199,9 +1199,9 @@ "STR_INSTALL_TIP":"選択した機器は完全に初期化され、保存されたデータは二度と復元できません。#@続行しますか?", "STR_INSTALL_TIP2":"選択した機器は完全に初期化され、保存されたデータは二度と復元できません。#@続行しますか?(再確認)", "STR_INSTALL_SUCCESS":"おめでとうございます。#@Ventoyの導入は正常に行われました。", - "STR_INSTALL_FAILED":"導入中にエラーが発生しました。機器を再接続してもう一度やり直してください。詳細な記録は log.txt にあります。", + "STR_INSTALL_FAILED":"導入中にエラーが発生しました。機器を再接続してもう一度やり直してください。詳細な記録はlog.txtにあります。", "STR_UPDATE_SUCCESS":"おめでとうございます。#@Ventoyの更新は正常に行われました。", - "STR_UPDATE_FAILED":"更新中にエラーが発生しました。機器を再接続してもう一度やり直してください。詳細な記録は log.txt にあります。", + "STR_UPDATE_FAILED":"更新中にエラーが発生しました。機器を再接続してもう一度やり直してください。詳細な記録はlog.txtにあります。", "STR_WAIT_PROCESS":"スレッドが稼動しています。お待ちください...", "STR_MENU_OPTION":"設定", "STR_MENU_SECURE_BOOT":"セキュアブート", @@ -1209,10 +1209,10 @@ "STR_BTN_OK":"了解", "STR_BTN_CANCEL":"取消", "STR_PRESERVE_SPACE":"機器の最後に領域を確保する", - "STR_SPACE_VAL_INVALID":"確保する領域の値が無効です", + "STR_SPACE_VAL_INVALID":"確保する領域の値が正しくありません", "STR_MENU_CLEAR":"Ventoyを削除", "STR_CLEAR_SUCCESS":"Ventoyが機器から削除されました。", - "STR_CLEAR_FAILED":"Ventoyを機器から削除できませんでした。機器を再接続してもう一度やり直してください。詳細な記録は log.txt にあります。", + "STR_CLEAR_FAILED":"Ventoyを機器から削除できませんでした。機器を再接続してもう一度やり直してください。詳細な記録はlog.txtにあります。", "STR_MENU_PART_STYLE":"区画の構成方式", "STR_DISK_2TB_MBR_ERROR":"2TB以上の機器にはGPTを使用してください。", "STR_SHOW_ALL_DEV":"すべての機器を表示", @@ -1230,10 +1230,10 @@ "STR_MENU_PART_RESIZE":"非破壊的導入", "STR_PART_RESIZE_TIP":"Ventoyを(可能であれば)非破壊的に導入します。#@続行しますか?", "STR_PART_RESIZE_SUCCESS":"おめでとうございます。#@Ventoyの非破壊的導入は正常に行われました。", - "STR_PART_RESIZE_FAILED":"Ventoyを非破壊的に導入できませんでした。詳細な記録は log.txt にあります。", - "STR_PART_RESIZE_UNSUPPORTED":"Ventoyを非破壊的に導入できませんでした。非破壊的導入にあたっての要件が満たされていません。詳細な記録は log.txt にあります。", - "STR_INSTALL_YES_TIP1":"Warning: Data will be lost!", - "STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.", + "STR_PART_RESIZE_FAILED":"Ventoyを非破壊的に導入できませんでした。詳細な記録はlog.txtにあります。", + "STR_PART_RESIZE_UNSUPPORTED":"Ventoyを非破壊的に導入できませんでした。非破壊的導入にあたっての要件が満たされていません。詳細な記録はlog.txtにあります。", + "STR_INSTALL_YES_TIP1":"警告: データが消去されます", + "STR_INSTALL_YES_TIP2":"Ventoyを更新するのではなく新規に導入するということを確認するために,下の入力欄に「YES」と入力してください。", "STRXXX":"" }, -- 2.47.3 From 4d4f958429d4a18518cca6801a416d59a1513255 Mon Sep 17 00:00:00 2001 From: longpanda Date: Thu, 5 May 2022 19:11:55 +0800 Subject: [PATCH 13/16] Fix the hardcoded dev/dm-0 --- .../ventoy/hook/blackPanther/ventoy-hook.sh | 2 +- .../hook/blackPanther/ventoy-inotifyd-hook.sh | 6 ++--- IMG/cpio/ventoy/hook/easystartup/disk_hook.sh | 5 +++- .../ventoy/hook/easystartup/ventoy-hook.sh | 2 +- IMG/cpio/ventoy/hook/lunar/ventoy-hook.sh | 2 +- .../ventoy/hook/lunar/ventoy-inotifyd-hook.sh | 3 ++- .../hook/mageia/ventoy-inotifyd-hook.sh | 2 +- IMG/cpio/ventoy/hook/openEuler/ventoy-hook.sh | 17 +++++++++---- .../hook/openEuler/ventoy-inotifyd-hook.sh | 24 +++++++++++-------- .../ventoy/hook/openEuler/ventoy-make-link.sh | 17 +++++++++---- .../ventoy/hook/openEuler/ventoy-timeout.sh | 19 +++++++++++---- IMG/cpio/ventoy/hook/rhel7/ventoy-hook.sh | 5 +++- .../ventoy/hook/rhel7/ventoy-inotifyd-hook.sh | 9 +++++++ IMG/cpio/ventoy/hook/rhel7/ventoy-timeout.sh | 9 +++++++ 14 files changed, 88 insertions(+), 34 deletions(-) diff --git a/IMG/cpio/ventoy/hook/blackPanther/ventoy-hook.sh b/IMG/cpio/ventoy/hook/blackPanther/ventoy-hook.sh index bdcea43..e3b19f4 100644 --- a/IMG/cpio/ventoy/hook/blackPanther/ventoy-hook.sh +++ b/IMG/cpio/ventoy/hook/blackPanther/ventoy-hook.sh @@ -22,4 +22,4 @@ ventoy_set_inotify_script blackPanther/ventoy-inotifyd-hook.sh $BUSYBOX_PATH/cp -a $VTOY_PATH/hook/blackPanther/ventoy-inotifyd-start.sh /lib/dracut/hooks/pre-udev/00-ventoy-inotifyd-start.sh -$SED "s#printf\(.*\)\$CMDLINE#printf\1 root=/dev/dm-0 \$CMDLINE root=/dev/dm-0#" -i /lib/dracut-lib.sh +$SED "s#printf\(.*\)\$CMDLINE#printf\1 root=/dev/ventoy \$CMDLINE root=/dev/ventoy#" -i /lib/dracut-lib.sh diff --git a/IMG/cpio/ventoy/hook/blackPanther/ventoy-inotifyd-hook.sh b/IMG/cpio/ventoy/hook/blackPanther/ventoy-inotifyd-hook.sh index 3b11f7c..caa80d4 100644 --- a/IMG/cpio/ventoy/hook/blackPanther/ventoy-inotifyd-hook.sh +++ b/IMG/cpio/ventoy/hook/blackPanther/ventoy-inotifyd-hook.sh @@ -33,10 +33,8 @@ if is_inotify_ventoy_part $3; then $BUSYBOX_PATH/sh $VTOY_PATH/hook/default/udev_disk_hook.sh $3 noreplace blkdev_num_dev=$($VTOY_PATH/tool/dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1 \2/') - if ! [ -e /dev/dm-0 ]; then - mknod -m 660 /dev/dm-0 b $blkdev_num_dev - fi - blackPanther-root /dev/dm-0 + mknod -m 660 /dev/ventoy b $blkdev_num_dev + blackPanther-root /dev/ventoy set_ventoy_hook_finish else diff --git a/IMG/cpio/ventoy/hook/easystartup/disk_hook.sh b/IMG/cpio/ventoy/hook/easystartup/disk_hook.sh index d9b3d48..b688688 100644 --- a/IMG/cpio/ventoy/hook/easystartup/disk_hook.sh +++ b/IMG/cpio/ventoy/hook/easystartup/disk_hook.sh @@ -78,6 +78,9 @@ fi ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2" "noreplace" -ln -s /dev/dm-0 /dev/root +blkdev_num=$($VTOY_PATH/tool/dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/') +vtDM=$(ventoy_find_dm_id ${blkdev_num}) +cp -a /dev/$vtDM /dev/ventoy +ln -s /dev/$vtDM /dev/root PATH=$VTPATH_OLD diff --git a/IMG/cpio/ventoy/hook/easystartup/ventoy-hook.sh b/IMG/cpio/ventoy/hook/easystartup/ventoy-hook.sh index 39658c4..d18d9d5 100644 --- a/IMG/cpio/ventoy/hook/easystartup/ventoy-hook.sh +++ b/IMG/cpio/ventoy/hook/easystartup/ventoy-hook.sh @@ -19,5 +19,5 @@ . $VTOY_PATH/hook/ventoy-os-lib.sh -$SED "s#^CDROM=.*#CDROM=/dev/dm-0#" -i /init +$SED "s#^CDROM=.*#CDROM=/dev/ventoy#" -i /init $BUSYBOX_PATH/cp -a $VTOY_PATH/hook/easystartup/ventoy-initqueue.sh /initqueue/ventoy.sh diff --git a/IMG/cpio/ventoy/hook/lunar/ventoy-hook.sh b/IMG/cpio/ventoy/hook/lunar/ventoy-hook.sh index 08e32d4..31744f6 100644 --- a/IMG/cpio/ventoy/hook/lunar/ventoy-hook.sh +++ b/IMG/cpio/ventoy/hook/lunar/ventoy-hook.sh @@ -19,7 +19,7 @@ . $VTOY_PATH/hook/ventoy-os-lib.sh -$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE root=/dev/dm-0#" -i /lib/dracut-lib.sh +$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE root=/dev/ventoy#" -i /lib/dracut-lib.sh $BUSYBOX_PATH/rm -f /usr/lib/systemd/system-generators/systemd-fstab-generator /lib/systemd/system-generators/systemd-fstab-generator diff --git a/IMG/cpio/ventoy/hook/lunar/ventoy-inotifyd-hook.sh b/IMG/cpio/ventoy/hook/lunar/ventoy-inotifyd-hook.sh index da31013..2ddc120 100644 --- a/IMG/cpio/ventoy/hook/lunar/ventoy-inotifyd-hook.sh +++ b/IMG/cpio/ventoy/hook/lunar/ventoy-inotifyd-hook.sh @@ -35,7 +35,8 @@ if is_inotify_ventoy_part $3; then blkdev_num=$($VTOY_PATH/tool/dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/') vtDM=$(ventoy_find_dm_id ${blkdev_num}) - mount -t iso9660 /dev/$vtDM /sysroot + cp -a /dev/$vtDM /dev/ventoy + mount -t iso9660 /dev/ventoy /sysroot set_ventoy_hook_finish else diff --git a/IMG/cpio/ventoy/hook/mageia/ventoy-inotifyd-hook.sh b/IMG/cpio/ventoy/hook/mageia/ventoy-inotifyd-hook.sh index 226cbca..61e50ef 100644 --- a/IMG/cpio/ventoy/hook/mageia/ventoy-inotifyd-hook.sh +++ b/IMG/cpio/ventoy/hook/mageia/ventoy-inotifyd-hook.sh @@ -59,7 +59,7 @@ if is_inotify_ventoy_part $3; then $BUSYBOX_PATH/cp -a $BUSYBOX_PATH/blkid /sbin/blkid $BUSYBOX_PATH/mkdir -p /dev/mapper ln -s /dev/$vtDM /dev/mapper/ventoy - /sbin/mgalive-root /dev/dm-0 + /sbin/mgalive-root /dev/$vtDM fi set_ventoy_hook_finish diff --git a/IMG/cpio/ventoy/hook/openEuler/ventoy-hook.sh b/IMG/cpio/ventoy/hook/openEuler/ventoy-hook.sh index 63bd491..230eb63 100644 --- a/IMG/cpio/ventoy/hook/openEuler/ventoy-hook.sh +++ b/IMG/cpio/ventoy/hook/openEuler/ventoy-hook.sh @@ -25,13 +25,19 @@ else for vtParam in $($CAT /proc/cmdline); do if echo $vtParam | $GREP -q 'inst.ks=hd:LABEL='; then vtRawKs=$(echo $vtParam | $AWK -F: '{print $NF}') - VTKS="inst.ks=hd:/dev/dm-0:$vtRawKs" + VTKS="inst.ks=hd:/dev/ventoy:$vtRawKs" break fi if echo $vtParam | $GREP -q '^ks=.*:/'; then vtRawKs=$(echo $vtParam | $AWK -F: '{print $NF}') - VTKS="ks=hd:/dev/dm-0:$vtRawKs" + VTKS="ks=hd:/dev/ventoy:$vtRawKs" + break + fi + + if echo $vtParam | $GREP -q '^inst.ks=.*:/'; then + vtRawKs=$(echo $vtParam | $AWK -F: '{print $NF}') + VTKS="inst.ks=hd:/dev/ventoy:$vtRawKs" break fi done @@ -54,9 +60,12 @@ if [ -f $VTOY_PATH/ventoy_persistent_map ]; then $BUSYBOX_PATH/rm -rf $VTOY_PATH/selinuxfs fi - echo "VTKS=$VTKS VTOVERLAY=$VTOVERLAY" >> $VTLOG +if [ -n "$vtRawKs" ]; then + echo "$vtRawKs" > $VTOY_PATH/ventoy_ks_rootpath +fi + if ls $VTOY_PATH | $GREP -q 'ventoy_dud[0-9]'; then for vtDud in $(ls $VTOY_PATH/ventoy_dud*); do vtInstDD="$vtInstDD inst.dd=file:$vtDud" @@ -64,7 +73,7 @@ if ls $VTOY_PATH | $GREP -q 'ventoy_dud[0-9]'; then fi echo "vtInstDD=$vtInstDD" >> $VTLOG -$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE inst.stage2=hd:/dev/dm-0 $VTKS $vtInstDD#" -i /lib/dracut-lib.sh +$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE inst.stage2=hd:/dev/ventoy $VTKS $VTOVERLAY $vtInstDD#" -i /lib/dracut-lib.sh ventoy_set_inotify_script openEuler/ventoy-inotifyd-hook.sh diff --git a/IMG/cpio/ventoy/hook/openEuler/ventoy-inotifyd-hook.sh b/IMG/cpio/ventoy/hook/openEuler/ventoy-inotifyd-hook.sh index 1da3a19..e0a9a0b 100644 --- a/IMG/cpio/ventoy/hook/openEuler/ventoy-inotifyd-hook.sh +++ b/IMG/cpio/ventoy/hook/openEuler/ventoy-inotifyd-hook.sh @@ -35,19 +35,23 @@ if is_inotify_ventoy_part $3; then $BUSYBOX_PATH/sh $VTOY_PATH/hook/default/udev_disk_hook.sh $3 - blkdev_num=$($VTOY_PATH/tool/dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/') - vtDM=$(ventoy_find_dm_id ${blkdev_num}) - - if [ "$vtDM" = "dm-0" ]; then - vtlog "This is dm-0, OK ..." - else - vtlog "####### This is $vtDM ####### this is abnormal ..." - ventoy_swap_device /dev/dm-0 /dev/$vtDM + blkdev_num_mknod=$($VTOY_PATH/tool/dmsetup ls | $GREP ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1 \2/') + $BUSYBOX_PATH/mknod -m 660 /dev/ventoy b $blkdev_num_mknod + $BUSYBOX_PATH/modprobe isofs >/dev/null 2>&1 + vtlog "mknod /dev/ventoy $blkdev_num_mknod" + + if [ -f $VTOY_PATH/ventoy_ks_rootpath ]; then + vt_ks_rootpath=$(cat $VTOY_PATH/ventoy_ks_rootpath) + vtlog "ks rootpath <$vt_ks_rootpath>" + if [ -e /sbin/fetch-kickstart-disk ]; then + vtlog "fetch-kickstart-disk ..." + /sbin/fetch-kickstart-disk /dev/ventoy "$vt_ks_rootpath" + fi fi if [ -e /sbin/anaconda-diskroot ]; then - vtlog "set anaconda-diskroot ..." - /sbin/anaconda-diskroot /dev/dm-0 + vtlog "set anaconda-diskroot ..." + /sbin/anaconda-diskroot /dev/ventoy fi set_ventoy_hook_finish diff --git a/IMG/cpio/ventoy/hook/openEuler/ventoy-make-link.sh b/IMG/cpio/ventoy/hook/openEuler/ventoy-make-link.sh index 22a3dd4..a692336 100644 --- a/IMG/cpio/ventoy/hook/openEuler/ventoy-make-link.sh +++ b/IMG/cpio/ventoy/hook/openEuler/ventoy-make-link.sh @@ -19,17 +19,24 @@ . /ventoy/hook/ventoy-hook-lib.sh +if [ ! -e /dev/dm-0 ]; then + exit 0 +fi + +blkdev_num=$($VTOY_PATH/tool/dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/') +vtDM=$(ventoy_find_dm_id ${blkdev_num}) + if ! [ -e /dev/mapper/ventoy ]; then - vtlog "link to /dev/mapper/ventoy" - ln -s /dev/dm-0 /dev/mapper/ventoy + vtlog "link /dev/$vtDM to /dev/mapper/ventoy" + ln -s /dev/$vtDM /dev/mapper/ventoy fi -VTLABEL=$($BUSYBOX_PATH/blkid /dev/dm-0 | $SED 's/.*LABEL="\([^"]*\)".*/\1/') +VTLABEL=$($BUSYBOX_PATH/blkid /dev/$vtDM | $SED 's/.*LABEL="\([^"]*\)".*/\1/') vtlog "VTLABEL=$VTLABEL" if [ -n "$VTLABEL" ]; then if ! [ -e "/dev/disk/by-label/$VTLABEL" ]; then - vtlog "link to /dev/disk/by-label/$VTLABEL" - ln -s /dev/dm-0 "/dev/disk/by-label/$VTLABEL" + vtlog "link /dev/$vtDM to /dev/disk/by-label/$VTLABEL" + ln -s /dev/$vtDM "/dev/disk/by-label/$VTLABEL" fi fi diff --git a/IMG/cpio/ventoy/hook/openEuler/ventoy-timeout.sh b/IMG/cpio/ventoy/hook/openEuler/ventoy-timeout.sh index 87ece3b..e0ca553 100644 --- a/IMG/cpio/ventoy/hook/openEuler/ventoy-timeout.sh +++ b/IMG/cpio/ventoy/hook/openEuler/ventoy-timeout.sh @@ -23,12 +23,23 @@ vtlog "##### $0 $* ..." VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH -blkdev_num=$(dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/') -vtDM=$(ventoy_find_dm_id ${blkdev_num}) +if [ ! -e /dev/ventoy ]; then + blkdev_num_mknod=$(dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1 \2/') + mknod -m 660 /dev/ventoy b $blkdev_num_mknod +fi + +if [ -f $VTOY_PATH/ventoy_ks_rootpath ]; then + vt_ks_rootpath=$(cat $VTOY_PATH/ventoy_ks_rootpath) + vtlog "ks rootpath <$vt_ks_rootpath>" + if [ -e /sbin/fetch-kickstart-disk ]; then + vtlog "fetch-kickstart-disk ..." + /sbin/fetch-kickstart-disk /dev/ventoy "$vt_ks_rootpath" + fi +fi if [ -e /sbin/anaconda-diskroot ]; then - vtlog "set anaconda-diskroot ..." - /sbin/anaconda-diskroot /dev/dm-0 + vtlog "set anaconda-diskroot /dev/ventoy ..." + /sbin/anaconda-diskroot /dev/ventoy fi PATH=$VTPATH_OLD diff --git a/IMG/cpio/ventoy/hook/rhel7/ventoy-hook.sh b/IMG/cpio/ventoy/hook/rhel7/ventoy-hook.sh index 2fb4a55..271c38a 100644 --- a/IMG/cpio/ventoy/hook/rhel7/ventoy-hook.sh +++ b/IMG/cpio/ventoy/hook/rhel7/ventoy-hook.sh @@ -64,9 +64,12 @@ if [ -f $VTOY_PATH/ventoy_persistent_map ]; then $BUSYBOX_PATH/rm -rf $VTOY_PATH/selinuxfs fi - echo "VTKS=$VTKS VTOVERLAY=$VTOVERLAY" >> $VTLOG +if [ -n "$vtRawKs" ]; then + echo "$vtRawKs" > $VTOY_PATH/ventoy_ks_rootpath +fi + if ls $VTOY_PATH | $GREP -q 'ventoy_dud[0-9]'; then for vtDud in $(ls $VTOY_PATH/ventoy_dud*); do vtInstDD="$vtInstDD inst.dd=file:$vtDud" diff --git a/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh b/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh index cf29264..b4afbf7 100644 --- a/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh +++ b/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh @@ -54,6 +54,15 @@ if is_inotify_ventoy_part $3; then vtlog "$vtGenRulFile not exist..." fi + if [ -f $VTOY_PATH/ventoy_ks_rootpath ]; then + vt_ks_rootpath=$(cat $VTOY_PATH/ventoy_ks_rootpath) + vtlog "ks rootpath <$vt_ks_rootpath>" + if [ -e /sbin/fetch-kickstart-disk ]; then + vtlog "fetch-kickstart-disk ..." + /sbin/fetch-kickstart-disk /dev/ventoy "$vt_ks_rootpath" + fi + fi + if [ -e /sbin/anaconda-diskroot ]; then vtlog "set anaconda-diskroot ..." /sbin/anaconda-diskroot /dev/ventoy diff --git a/IMG/cpio/ventoy/hook/rhel7/ventoy-timeout.sh b/IMG/cpio/ventoy/hook/rhel7/ventoy-timeout.sh index 8aac169..e0ca553 100644 --- a/IMG/cpio/ventoy/hook/rhel7/ventoy-timeout.sh +++ b/IMG/cpio/ventoy/hook/rhel7/ventoy-timeout.sh @@ -28,6 +28,15 @@ if [ ! -e /dev/ventoy ]; then mknod -m 660 /dev/ventoy b $blkdev_num_mknod fi +if [ -f $VTOY_PATH/ventoy_ks_rootpath ]; then + vt_ks_rootpath=$(cat $VTOY_PATH/ventoy_ks_rootpath) + vtlog "ks rootpath <$vt_ks_rootpath>" + if [ -e /sbin/fetch-kickstart-disk ]; then + vtlog "fetch-kickstart-disk ..." + /sbin/fetch-kickstart-disk /dev/ventoy "$vt_ks_rootpath" + fi +fi + if [ -e /sbin/anaconda-diskroot ]; then vtlog "set anaconda-diskroot /dev/ventoy ..." /sbin/anaconda-diskroot /dev/ventoy -- 2.47.3 From 75f3e4c5ee70f78178442933fbbd6742c71fe087 Mon Sep 17 00:00:00 2001 From: longpanda Date: Fri, 6 May 2022 14:44:10 +0800 Subject: [PATCH 14/16] Add EDK debug info. --- .../Application/Ventoy/VentoyProtocol.c | 3 ++- INSTALL/ventoy/ventoy_aa64.efi | Bin 75744 -> 75744 bytes INSTALL/ventoy/ventoy_ia32.efi | Bin 62048 -> 62048 bytes INSTALL/ventoy/ventoy_x64.efi | Bin 65952 -> 65952 bytes 4 files changed, 2 insertions(+), 1 deletion(-) diff --git a/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/VentoyProtocol.c b/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/VentoyProtocol.c index 56cb394..544bfac 100644 --- a/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/VentoyProtocol.c +++ b/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/VentoyProtocol.c @@ -155,7 +155,8 @@ STATIC EFI_STATUS EFIAPI ventoy_read_iso_sector ventoy_override_chunk *pOverride = g_override_chunk; EFI_BLOCK_IO_PROTOCOL *pRawBlockIo = gBlockData.pRawBlockIo; - debug("read iso sector %lu count %u Buffer:%p Align:%u", Sector, Count, Buffer, pRawBlockIo->Media->IoAlign); + debug("read iso sector %lu count %u Buffer:%p Align:%u blk:%u", + Sector, Count, Buffer, pRawBlockIo->Media->IoAlign, pRawBlockIo->Media->BlockSize); ReadStart = Sector * 2048; ReadEnd = (Sector + Count) * 2048; diff --git a/INSTALL/ventoy/ventoy_aa64.efi b/INSTALL/ventoy/ventoy_aa64.efi index f550456e0db4dbf959a524821fbf987b03a7184a..e240dbb81f637dc1a82b1c2c96a009dcd8c01a1f 100644 GIT binary patch delta 3815 zcmb7{e^6A{702IY7i9y9Jni_{gl1i;!e$aJCK*7jf-?wqP$5kNaU2DbiO?DW$EmC& zF0^UHXeYq6F19qVN%rjvvl_Dkr~I(j*Tp76$4cyq_A{#`|y6BLDK#a z{@}y+oO91R_t%-rP``etU*B*cnDo(s;3N{lj3F(AJkAClv=LRME&800Khv~D5{(yw zNC+k2CYB?12O2^iAj0fVAB&T!^@tgNBvc(l!t<7rc3QB;M0T?BH3tbvVTPw{WX_oK zr$>oCuq?sCiettD$YNHoHa*a=b?9zNA%qTWlt?kVzOkMd>R?>Y90`$n(#LuduPs3mXX`b!%*JiD1!{rOKfgIUQ*(N{ zj$EeJ9Wi8#HSRc~GhR0E84f~B%tm#pNaMZ|1`c^y~NKaI=j5;b2xtUe~@PU#F!{F4X8GV$ew z#PEX=E@PN^-@I;VSnxh*M9{cxOrDE7UKCI z!gBC!+H=BAs#w4Ql%~cVz5v0%yqQqPumU4zu_v5n%}x#Nwn;(`1|}49siCc zwK{oDjHCMCw~Co-@`!lv1Ncx4b2!unTSLw7xJV7_dFP_e0YlIdJ5bD z7Bg$zo&Z}fq?TqFT1)4HUObI7UV0bmqO=I-&gQpON>}^`X1n zCE~mI#)qJr-g57;v}42ta0na&XTXPONxg|YN*(nQ8KQ0VF5`m#@LIKH97Zi}W^H(r zeD8Btd*^?ro51$A!>?`sICK-H^93|^lO8$!JXuCPr%md+gD}as!O!#0UKY<)b(bp> zysLeFsh37Gi5#a}n2Ai#T-G9H;ykRtWh8R$&?mtvPzL|T#5RfK)?m}M%j|}32D?G+kgS5%4)9mdKCl+M z9T607_0*}ml$_{IpYcnFX!-lA)n0h+{q5>ri63kyBQ)!SYOxpPXnQqG#df=8Gmhpq zFdr-gE5I>2&>myRM#DHn#WRvI9KMK9p*-uPT0zZbZ=KgKou>(^H)4+0b3*mDZuVBI z-XGI~GZJ}`9X-=e62kG&n?!#OfsV%!J&w*c1ph10kHdd}p89AiZIzdA>w0h#xDDJ1 zz6dJVxdYIppw`~h%WzgwpV{8C3yGy6h#xb}Ilm{qj?${ArDLP0?dnc+yC!Pwh$Kza z(J^KD5G&FLUIOQ5UPaG+Y*+tnB~}S?rZoubZWP znobOF;Hs9<#;$rpCSK()v)t}#Nxv+6?=M;4&?I3qo(&J$1fg)8uWT`R68sDJF?bog z3C@5axA^!l@H5z>px1yK!R=t?EYKM*>#L@BXK jvXY_XD1}O?QmM2m-O8XcqD(9Cb*Xh3b(!|ANMigi4h3Q@ delta 3821 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 delta 5013 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 W&Y-CV&GuEQKeXac`d+@$!}7mr8t=gX delta 7150 zcmZ`;33wFMvhEIP(h!EpHjpUUU=o55!yron4knU72PYWWkxgY$Q4wJRg2)WaL};3k z$j$@o7`UQ7a{IkDK~O@rvutvNyG0X6Zfs)jMy!&nId*~#Z1#q{h$GqTTC-GHLT zBNuUY60=FAax;$9ut`!~#<#DTV!r}Z&4~~My>}=4Da4;(wKrZVKkf-hhgfOzuC@<1 zLc|XdXkEiX%~M1dd$+kuo(eih1?)oe6LP_N6B)}6M70xpvWrpeyL8!reNQzr>9Jtz zV>@EK6N>2LZ-^CvmN$7XY1wbF?y^h1$X(hMeny@uiVf^U3#WLFi7n&BL(I{#gFKP* zFS7iW?QEylL3@WNQ~PfAWXnGC>!84&Iqcn*rSd86PkR;_y-V)7!Q}L3`=V15Qz}d( z6||~1;D|oIgCJ<`v+PE62e}WIJkL6|8YU-lWFZT-%9JIJjA9?O8qwlyj$B{Q;%pi6 zYK|QW-)D;u6F;al_3s6!>K+OG&UDhhh>dF9Ue>r{#0np?(#1|Kq+LJD3X?}BTVl_SzaukMg}l)I`6|x&M;k$KRW~e+6@-#on4}z-VJ_Fpc8hpuRElMuQ}h3 zl;dAA9bO&&pwkS|Z-}hyOd^Z8Qqwys>i3HJvwmVAH1p*lkF~5P#<1}0krlD_)47m# z?}dHAE9sqB`zammhfUfNi#C{zobpA>?|NdhrpS6+IOnOu&BXhdG4+x-IDF~Z*l6)B z_UD|CxP>iwVXPPv{_zDSigUyBUQ86l?C|P&d&HEqVr_t2qSh3vUn%NAT+LNuQMdUq zYN0btf0)hnXNk|Tt^Q1L3OnR~JLBAQa7R(=?7{KW8A7%lV+6sYdYx${>et2UcZ#}K z@59#4Z!bR2_RQ}t#NQ0@sgGu*!5(?vOttK7Cwpy5)cvrR@G$NAp6uy4M-8J` zJ&h782>j5@9;|{K>S;gQ6U-1-u=ByY#C6PGerHm@>13d;;Q|CoDDu}m>QHB{{sg#5 zQA(gT(r`qx3FUp04iE$Td~?&hk0xDt3TtgB1T@PZQaEZF6-E?e1*y_Fa;G7l1sI<;nS^Ou9SUkA1s|@_|YDL{wHi(L-7;=B$ zzL0idv0>nW>ZxdUWV)XD7WYrvfRrhL>-Wt}@w*p3VftN7CPKC!h9ZhTvkQyUed8en zpYm$GeW{&=Y=a<)7)2_1U1G~J{B9TR^rnNe7rPYdEXC?E9Ll4f)0cl~7>$x*)Hd$+ zXtsFh^5lI!y}(0v%Mpp4#YT-%b0*TG+M1}i#IOABGmn!KDvE5Fpd_fJvKgt>P;M!8 zvo%_#Zw-lglVEoNSje46^*FP1;|s&^Xjm0A)kIJT9B-i>(Rexgalct|rbJn1zk7&j z?7vz=7e0P_@FmO(&^gM~c~IXDbqyz}8EQf2GI|*4Y`BE1?-Ds-HT4vVc&&ZW0NSWw zV0(DU9lrUvN_jhFknDj&*zE~TbausD(A_-6&s73wF2kdq)t}gC80uBT3Sp3yX40%l zP!m!jbz{Eisl9xhX}tuNPa6)IEQX|G69LpBTK4z_a`jRzD1s0Hs`S}JpD8qeII6UV zWJ6K{$98gThD-{i4>%UZdGB(pfMc(7ERtgzIOe);>a5^c?awB*l4CnL_VPr*M+P@? zbP;DR9YxV-aFM4 zc2-(ZDb<|8MVkRBI?_(?QtZLE_z-hoFcDFcbP2xv9PVn;Qf7ZS-KXN}(R=Ki2O@eH z?ghouG3pOGQ>hHWZcv4&gKH1Ep>KZfPkTni*~?v6YmOlN%v;8DoC=C3^t74dUNGqi zZEwBq&y{C1Qr8EMlmV@u-RY_LGTS;(uCd?O-+VhP+aOMTh zJj=1TtEQUc9NWTqM>)2JV~07mfMW+ZHjNvsUzZ9( z!Oj?<6yz&buGVl1g|=mwy)4mpP5qM|yGef<~!ejIXGMxD8vEe&ht6ey z-oyg(-4^?xS)&EC@q2wzJq9O^E*nOns&~4o z)+5^8AA!1N+i9c&mdRpR)}%Dh{?`4}pj&k>s56W{?j?8uX7{E8O zz%G3J=F68Vl0w@QNb2V|kwo@5tW|d@{wiAbL#&deMBk6M9Rq%$mfV%qu{`me6)XFT zZ?FL?JBjbG=T>Hk3s}X<&Jn^mR=;wF*qilv#WkTXgflIm8&@sSFd^gM;-}&8@m{>4(Ac|QYNTI*T zpRvQQJT9iPUaN+Racs$|4)%YeI8Z9r=%EfdUS)e$^?G_5X!^_-%?Fuga=ipK`jMzt zc;QsYQaQ0JM#wAcle&C{e|z!#i>c-!7=PKCsng*LUaWtrs{xAn#_rC$W zsYR}8*AYdn(Z@mto(?k2R?}I3V`o=qivyYcRVDpOF%C4l1|pi&n;uTQcDd9J6)1ok z@3H4!EpR-IV|qgO{sub~k}DAYdI(FeaKw$IsWqSIhPpTQ=q$x^-;MNCRt zj;Y{#J(mtgx0c+*O`a8h*nNV09_%vM}3;U3Y~?I6WBLv@)9~B^PW(bThBC) zrB!5#S!_T>iWp>*D^j{$9`OG;T7}W%7DtOms)^2g zo}k(6A8VCXZ=zRHTf^xxn7Hnqh~E9#oXR_6@V(1XjaUuTTA{m1ZuaQ9ju8z-?90kT z$H#a@1#f!_buK(v*&l{d*^YIY9hR;!L%0ha#tLCRL=nP?G$1xWXU`Rtee92cPex1B zGay}J11s+qo7n8iv{rKw4Vdf-lh@eR%8uez_C;lqV>)inEf!}L!QyfDdu4Lc&{s{1 z{gGf)ZQfoCrRvv8s7DXxTHkJHw7HMIpxjGaW`9Ce--K!vyu)E458aCLOmRhg9HY9D zU-|h|VdgN92mz?o^1Je))1>Bu*v9qo9UD;BN?>n{QThm4$`h{Y(Plp>7*{a97L9BL zG@`R;?D+aLaWcEHKG}DlX_ZQFbs?CzO>b9`Hy!`>W(w*2s~X|W;vC?&dQ%L6+r8;! zUN00dFBPqn0(Zwv-xf=g9x;DeO!p}@jV9Vl)Lj6$9C4y_d9b45-50L#Wy2t?OQ ztB8!Ttxj5umB;WTQ?aFKQ1TFz-W) z9cNhE4e37j2;xb<{s5l6a4$Mf2Ts{^j-(~GxmSujk1r4%{qC31?@9g!$)j}s=kIL^ zTrfvBx3%Wj3#Wh~ep%Rs3u@bjl%s8aW!Apq{UVxBRq01UHR)HAYMV>I94Rzu{{!@< zE9O<31(jgbdfVVD@CYv3ct4T$>fh~zo$}-MMNK55*>X*`qoE%v>{t`!G>>+h?dDr+ z&lcL_(`+^_dx~V=GiAwn(-M`&AxnHFH!-^xJnaUzaG6|3tbU-`_T$d})e{awAvg7r zwYN9+x{mwZADJ8~^Q-9K6qqi#kVQZpiP_}%Ep`4aByO*)eeCSU1R8xdrucTz*L3vT zyD+`M$$5A$6>YGL0c9I;K-31u09#{W>OdKnB5gEg9NUYa;d?f`=!aFERD{1`o#Y0f z!s$(rmT38H6b+XyWOJN^epMm;QD7r%QVg9S)T1A9=rWR^I!#8GRvjlW0h0dnfOXPE z`~^5g0Q!#;q$Tu6V+^O?wyZ(_Q+f$BMgM1IH4O zhY4-W*N@X51|8)(4K!GPtpGo#wni=LN9orJ^%r{S&sgfe1_=r+_5J=gBiT58Tw>-_-vd504vksw$XxkeiqX6By*G z+QLf1`}nOx@ln-{8(%wwe#_BU(hgXAo&O9{Le>;L@iuF1ZdyB*U_Qj$+E?T>w{{M6 z94MBoRozXt`jaiQz#E>ygxl}gvZ>y*d((P$4-ek@M{LW%@%ymg1aqv#Dw<< j!Uc=)lLc>Bu;mUOnM4aZE!ZQxTtD4RtPMYRDaY}@e-kyb -- 2.47.3 From 121d9273673121660add677de3231559c2ffd31d Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=AD=9F=E6=AD=A6=2E=E5=B0=BC=E5=BE=B7=E9=9C=8D=E6=A0=BC?= =?utf8?q?=2E=E9=BE=8D?= <7708801314520.tony@gmail.com> Date: Sat, 7 May 2022 17:35:17 +0800 Subject: [PATCH 15/16] Update Traditional Chinese Strings (#1615) --- LANGUAGES/languages.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/LANGUAGES/languages.json b/LANGUAGES/languages.json index 2fca34c..3998a52 100644 --- a/LANGUAGES/languages.json +++ b/LANGUAGES/languages.json @@ -1414,7 +1414,7 @@ "STRXXX":"" }, - { + { "name":"Traditional Chinese(正體中文)", "FontFamily":"新細明體", "FontSize":14, @@ -1468,8 +1468,8 @@ "STR_PART_RESIZE_SUCCESS":"恭喜!#@Ventoy 已完成無損安裝。", "STR_PART_RESIZE_FAILED":"Ventoy 無損安裝失敗。詳細訊息請檢視 log.txt 檔案。", "STR_PART_RESIZE_UNSUPPORTED":"Ventoy 無損安裝已中止因為未滿足部分條件。詳細訊息請檢視 log.txt 檔案。", - "STR_INSTALL_YES_TIP1":"Warning: Data will be lost!", - "STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.", + "STR_INSTALL_YES_TIP1":"警告:資料將會遺失!", + "STR_INSTALL_YES_TIP2":"請在下方的文字輸入框輸入 YES 來證實您想要進行全新安裝取代升級。", "STRXXX":"" }, -- 2.47.3 From fe137522ad3d3aebe600c08c29a4c73d69c71a23 Mon Sep 17 00:00:00 2001 From: longpanda Date: Sun, 8 May 2022 11:41:12 +0800 Subject: [PATCH 16/16] Fix a bug when boot in F2 browser mode if the computer has more than one disks with same size. --- .../MdeModulePkg/Application/Ventoy/Ventoy.c | 5 +++-- .../MdeModulePkg/Application/Ventoy/Ventoy.h | 4 +++- INSTALL/ventoy/ventoy_aa64.efi | Bin 75744 -> 79872 bytes INSTALL/ventoy/ventoy_ia32.efi | Bin 62048 -> 62080 bytes INSTALL/ventoy/ventoy_x64.efi | Bin 65952 -> 66016 bytes 5 files changed, 6 insertions(+), 3 deletions(-) diff --git a/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.c b/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.c index 67e6881..8341f31 100644 --- a/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.c +++ b/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.c @@ -577,7 +577,8 @@ STATIC EFI_STATUS EFIAPI ventoy_find_iso_disk(IN EFI_HANDLE ImageHandle) continue; } - if (CompareMem(g_chain->os_param.vtoy_disk_guid, pBuffer + 0x180, 16) == 0) + if (CompareMem(g_chain->os_param.vtoy_disk_guid, pBuffer + 0x180, 16) == 0 && + CompareMem(g_chain->os_param.vtoy_disk_signature, pBuffer + 0x1b8, 4) == 0) { pMBR = (MBR_HEAD *)pBuffer; if (g_os_param_reserved[6] == 0 && pMBR->PartTbl[0].FsFlag != 0xEE) @@ -599,7 +600,7 @@ STATIC EFI_STATUS EFIAPI ventoy_find_iso_disk(IN EFI_HANDLE ImageHandle) Handles[i], EFI_OPEN_PROTOCOL_GET_PROTOCOL); - debug("Find Ventoy Disk Handle:%p DP:%s", Handles[i], + debug("Find Ventoy Disk Sig Handle:%p DP:%s", Handles[i], ConvertDevicePathToText(gBlockData.pDiskDevPath, FALSE, FALSE)); break; } diff --git a/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.h b/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.h index 30ed3c5..0e2b3fa 100644 --- a/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.h +++ b/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.h @@ -98,7 +98,9 @@ typedef struct ventoy_os_param UINT64 vtoy_reserved[4]; // Internal use by ventoy - UINT8 reserved[31]; + UINT8 vtoy_disk_signature[4]; + + UINT8 reserved[27]; }ventoy_os_param; #pragma pack() diff --git a/INSTALL/ventoy/ventoy_aa64.efi b/INSTALL/ventoy/ventoy_aa64.efi index e240dbb81f637dc1a82b1c2c96a009dcd8c01a1f..20823370252736b182bce6f115d7e3c956f5aa9a 100644 GIT binary patch delta 31033 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 UFeHaD9GwmFPbP{g|LNcV1HZ5QF#rGn diff --git a/INSTALL/ventoy/ventoy_ia32.efi b/INSTALL/ventoy/ventoy_ia32.efi index dad50d66ad7bc72ea94c2ca0f56f7e6514332642..dd1b9ec3e28d4a27b786df7c00d7d9e1e6b3c602 100644 GIT binary patch delta 19066 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 delta 19310 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 -- 2.47.3