From: longpanda Date: Fri, 13 Nov 2020 08:39:15 +0000 (+0800) Subject: 最近收到一些特殊的错误报告,最后证明是非标准的Ventoy环境的原因。尤其是单分区下环境下使用 Ventoy 。 X-Git-Tag: v1.0.28~2 X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/commitdiff_plain/8bbd5a14a3ca4820266bed6afc1314c3f41e76c3?ds=inline 最近收到一些特殊的错误报告,最后证明是非标准的Ventoy环境的原因。尤其是单分区下环境下使用 Ventoy 。 虽然 Ventoy 显示了 Unofficial 的标注信息,但是用户并不会关心,仍然会认为是 Ventoy 的问题。 Ventoy 从一开始就是一个整体的设计,并没有考虑过集成在其他bootloader或分区环境中。 Ventoy 的验证和后续新功能开发也都不会考虑这种非标准的使用方式。 因此,我决定禁止 Ventoy 在非标准环境下的使用,并且不再接受放开检查的请求。 当然,这个只是Ventoy的默认行为。Ventoy仍然是100%开源的,如果你希望把Ventoy应用在自己的环境中,你可以fork一个分支,然后修改源代码实现。 --- 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 edb6769..4a3a98c 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 @@ -408,12 +408,12 @@ STATIC VOID ventoy_warn_invalid_device(VOID) gST->ConOut->OutputString(gST->ConOut, VTOY_WARNING L"\r\n"); gST->ConOut->OutputString(gST->ConOut, VTOY_WARNING L"\r\n\r\n\r\n"); - gST->ConOut->OutputString(gST->ConOut, L"This is NOT a standard Ventoy device and is NOT officially supported.\r\n\r\n"); + gST->ConOut->OutputString(gST->ConOut, L"This is NOT a standard Ventoy device and is NOT supported.\r\n\r\n"); gST->ConOut->OutputString(gST->ConOut, L"You should follow the official instructions in https://www.ventoy.net\r\n"); - gST->ConOut->OutputString(gST->ConOut, L"\r\n\r\nWill continue to boot after 15 seconds ...... "); + gST->ConOut->OutputString(gST->ConOut, L"\r\n\r\nWill exit after 10 seconds ...... "); - sleep(15); + sleep(10); } #else STATIC VOID ventoy_warn_invalid_device(VOID) @@ -718,6 +718,7 @@ STATIC EFI_STATUS EFIAPI ventoy_parse_cmdline(IN EFI_HANDLE ImageHandle) if (pEnv[0] != '0' || pEnv[1] != 0) { ventoy_warn_invalid_device(); + return EFI_INVALID_PARAMETER; } g_file_replace_list = &pGrubParam->file_replace; 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 7113e86..b774f85 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 @@ -185,7 +185,7 @@ typedef struct ventoy_virt_chunk #error Unknown Processor Type #endif -#define VENTOY_DEVICE_WARN 0 +#define VENTOY_DEVICE_WARN 1 #define VTOY_WARNING L"!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!" typedef struct ventoy_sector_flag diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy.c index 7c47357..8be0658 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy.c @@ -1639,15 +1639,14 @@ int ventoy_check_device_result(int ret) grub_env_set("VTOY_CHKDEV_RESULT_STRING", buf); grub_env_export("VTOY_CHKDEV_RESULT_STRING"); - if (ret & 0x1000) + if (ret) { grub_printf(VTOY_WARNING"\n"); grub_printf(VTOY_WARNING"\n"); grub_printf(VTOY_WARNING"\n\n\n"); - grub_printf("Unsatisfied conditions detected for Ventoy.\n\n"); - grub_printf("This is NOT a standard Ventoy device and is NOT officially supported.\n\n"); - grub_printf("Recommend to follow the instructions in https://www.ventoy.net to use Ventoy.\n"); + grub_printf("This is NOT a standard Ventoy device and is NOT supported.\n\n"); + grub_printf("You should follow the instructions in https://www.ventoy.net to use Ventoy.\n"); grub_printf("\n\nWill exit after 10 seconds ...... "); grub_refresh(); @@ -3522,7 +3521,7 @@ static grub_err_t ventoy_cmd_load_part_table(grub_extcmd_context_t ctxt, int arg ret = ventoy_check_device(dev); grub_device_close(dev); - if (ret & 0x1000) + if (ret) { grub_exit(); }