This commit is contained in:
longpanda
2020-07-07 23:37:00 +08:00
parent b32cf97f1f
commit 4fda20d844
16 changed files with 3474 additions and 2769 deletions

Binary file not shown.

View File

@@ -23,6 +23,8 @@ sh buildlib.sh
cd $VTOY_PATH/vtoyfat
sh build.sh || exit 1
cd $VTOY_PATH/vtoygpt
sh build.sh || exit 1
cd $VTOY_PATH/ExFAT
sh buidlibfuse.sh || exit 1

View File

@@ -30,6 +30,29 @@ function ventoy_debug_pause {
fi
}
function ventoy_cli_console {
if [ "$grub_platform" = "pc" ]; then
terminal_output vga_text
else
if [ "$vtoy_display_mode" != "CLI" ]; then
terminal_output console
fi
fi
}
function ventoy_gui_console {
if [ "$grub_platform" = "pc" ]; then
if [ "$vtoy_display_mode" = "CLI" ]; then
terminal_output console
else
terminal_output gfxterm
fi
else
if [ "$vtoy_display_mode" != "CLI" ]; then
terminal_output gfxterm
fi
fi
}
function ventoy_power {
configfile $prefix/power.cfg
@@ -186,7 +209,7 @@ function uefi_windows_menu_func {
ventoy_debug_pause
if [ -n "$vtoy_chain_mem_addr" ]; then
terminal_output console
ventoy_cli_console
chainloader ${vtoy_path}/ventoy_x64.efi env_param=${env_param} isoefi=${LoadIsoEfiDriver} ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}
boot
else
@@ -262,7 +285,7 @@ function uefi_linux_menu_func {
vt_linux_chain_data ${1}${chosen_path}
if [ -n "$vtoy_chain_mem_addr" ]; then
terminal_output console
ventoy_cli_console
chainloader ${vtoy_path}/ventoy_x64.efi env_param=${env_param} isoefi=${LoadIsoEfiDriver} FirstTry=${FirstTryBootFile} ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}
boot
else
@@ -327,7 +350,7 @@ function uefi_iso_menu_func {
uefi_linux_menu_func $1 ${chosen_path}
fi
terminal_output gfxterm
ventoy_gui_console
}
function uefi_iso_memdisk {
@@ -336,11 +359,11 @@ function uefi_iso_memdisk {
echo 'Loading ISO file to memory ...'
vt_load_iso_to_mem ${1}${chosen_path} vtoy_iso_buf
terminal_output console
ventoy_cli_console
chainloader ${vtoy_path}/ventoy_x64.efi memdisk env_param=${env_param} isoefi=${LoadIsoEfiDriver} ${vtdebug_flag} mem:${vtoy_iso_buf_addr}:size:${vtoy_iso_buf_size}
boot
terminal_output gfxterm
ventoy_gui_console
}
@@ -527,9 +550,9 @@ function wim_common_menuentry {
if [ "$grub_platform" = "pc" ]; then
linux16 $vtoy_path/ipxe.krn ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}
else
terminal_output console
ventoy_cli_console
chainloader ${vtoy_path}/ventoy_x64.efi env_param=${env_param} isoefi=${LoadIsoEfiDriver} ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}
terminal_output gfxterm
ventoy_gui_console
fi
boot
else
@@ -545,10 +568,10 @@ function wim_unsupport_menuentry {
function efi_common_menuentry {
vt_chosen_img_path chosen_path
terminal_output console
ventoy_cli_console
chainloader ${iso_path}${chosen_path}
boot
terminal_output gfxterm
ventoy_gui_console
}
function efi_unsupport_menuentry {

View File

@@ -327,22 +327,28 @@ else
SHORT_PART2=${PART2#/dev/}
part2_start=$(cat /sys/class/block/$SHORT_PART2/start)
dd status=none conv=fsync if=./boot/boot.img of=$DISK bs=1 count=440
PART1_TYPE=$(dd if=$DISK bs=1 count=1 skip=450 status=none | ./tool/hexdump -n1 -e '1/1 "%02X"')
PART1_ACTIVE=$(dd if=$DISK bs=1 count=1 skip=446 status=none | ./tool/hexdump -n1 -e '1/1 "%02X"')
PART2_ACTIVE=$(dd if=$DISK bs=1 count=1 skip=462 status=none | ./tool/hexdump -n1 -e '1/1 "%02X"')
if [ "$PART1_TYPE" = "EE" ]; then
vtdebug "This is GPT partition style ..."
./tool/xzcat ./boot/core.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=2014 seek=34
echo -en '\x23' | dd of=$DISK conv=fsync bs=1 count=1 seek=17908 status=none
else
vtdebug "This is MBR partition style ..."
dd status=none conv=fsync if=./boot/boot.img of=$DISK bs=1 count=440
vtdebug "PART1_ACTIVE=$PART1_ACTIVE PART2_ACTIVE=$PART2_ACTIVE"
if [ "$PART1_ACTIVE" = "00" ] && [ "$PART2_ACTIVE" = "80" ]; then
vtdebug "change 1st partition active, 2nd partition inactive ..."
echo -en '\x80' | dd of=$DISK conv=fsync bs=1 count=1 seek=446 status=none
echo -en '\x00' | dd of=$DISK conv=fsync bs=1 count=1 seek=462 status=none
PART1_ACTIVE=$(dd if=$DISK bs=1 count=1 skip=446 status=none | ./tool/hexdump -n1 -e '1/1 "%02X"')
PART2_ACTIVE=$(dd if=$DISK bs=1 count=1 skip=462 status=none | ./tool/hexdump -n1 -e '1/1 "%02X"')
vtdebug "PART1_ACTIVE=$PART1_ACTIVE PART2_ACTIVE=$PART2_ACTIVE"
if [ "$PART1_ACTIVE" = "00" ] && [ "$PART2_ACTIVE" = "80" ]; then
vtdebug "change 1st partition active, 2nd partition inactive ..."
echo -en '\x80' | dd of=$DISK conv=fsync bs=1 count=1 seek=446 status=none
echo -en '\x00' | dd of=$DISK conv=fsync bs=1 count=1 seek=462 status=none
fi
./tool/xzcat ./boot/core.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=2047 seek=1
fi
./tool/xzcat ./boot/core.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=2047 seek=1
./tool/xzcat ./ventoy/ventoy.disk.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=$VENTOY_SECTOR_NUM seek=$part2_start
sync

View File

@@ -345,11 +345,19 @@ format_ventoy_disk_gpt() {
unit s \
mkpart Ventoy ntfs $part1_start_sector $part1_end_sector \
mkpart VTOYEFI fat16 $part2_start_sector $part2_end_sector \
set 2 boot on \
set 2 esp on \
set 2 msftdata on \
set 2 hidden on \
quit
sync
if ventoy_is_linux64; then
vtoygpt=./tool/vtoygpt_64
else
vtoygpt=./tool/vtoygpt_32
fi
$vtoygpt -f $DISK
sync
udevadm trigger >/dev/null 2>&1

BIN
INSTALL/tool/vtoygpt_32 Normal file

Binary file not shown.

BIN
INSTALL/tool/vtoygpt_64 Normal file

Binary file not shown.