Optimization for Linux vDisk boot in Legacy BIOS mode

This commit is contained in:
longpanda 2020-10-21 17:45:44 +08:00
parent 9ddee7394d
commit 40fdfa66b9
4 changed files with 9 additions and 2 deletions

View File

@ -1046,7 +1046,7 @@ function vtoyboot_common_func {
if [ -n "$vtoy_chain_mem_addr" ]; then
if [ "$grub_platform" = "pc" ]; then
vt_acpi_param ${vtoy_chain_mem_addr} 512
linux16 $vtoy_path/ipxe.krn ${vtdebug_flag} sector512 mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}
linux16 $vtoy_path/ipxe.krn ${vtdebug_flag} bios80 sector512 mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}
boot
else
ventoy_acpi_param ${vtoy_chain_mem_addr} 512

View File

@ -26,6 +26,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
int g_debug = 0;
int g_hddmode = 0;
int g_bios_disk80 = 0;
char *g_cmdline_copy;
void *g_initrd_addr;
size_t g_initrd_len;
@ -697,6 +698,11 @@ int ventoy_boot_vdisk(void *data)
{
g_hddmode = 1;
}
if (strstr(g_cmdline_copy, "bios80"))
{
g_bios_disk80 = 1;
}
g_chain = (ventoy_chain_head *)g_initrd_addr;
g_chunk = (ventoy_img_chunk *)((char *)g_chain + g_chain->img_chunk_offset);

View File

@ -1425,7 +1425,7 @@ unsigned int ventoy_int13_hook (ventoy_chain_head *chain)
if (g_hddmode)
{
natural_drive = num_drives | 0x80;
natural_drive = g_bios_disk80 ? 0x80 : (num_drives | 0x80);
}
else
{

View File

@ -187,6 +187,7 @@ typedef struct ventoy_sector_flag
extern int g_debug;
extern int g_hddmode;
extern int g_bios_disk80;
extern char *g_cmdline_copy;
extern void *g_initrd_addr;
extern size_t g_initrd_len;