1.0.16 release

This commit is contained in:
longpanda 2020-07-23 18:45:02 +08:00
parent 0f8478fbe1
commit 7d1507906d
47 changed files with 321 additions and 31 deletions

View File

@ -70,7 +70,7 @@ CONST CHAR16 *gEfiBootFileName[] =
L"\\EFI\\BOOT\\GRUBX64.EFI", L"\\EFI\\BOOT\\GRUBX64.EFI",
L"\\EFI\\BOOT\\BOOTx64.EFI", L"\\EFI\\BOOT\\BOOTx64.EFI",
L"\\EFI\\BOOT\\bootx64.efi", L"\\EFI\\BOOT\\bootx64.efi",
L"\\efi\\boot\\bootx64.efi" L"\\efi\\boot\\bootx64.efi",
}; };
VOID EFIAPI VtoyDebug(IN CONST CHAR8 *Format, ...) VOID EFIAPI VtoyDebug(IN CONST CHAR8 *Format, ...)

View File

@ -2017,6 +2017,17 @@ static grub_err_t ventoy_cmd_dump_img_list(grub_extcmd_context_t ctxt, int argc,
return 0; return 0;
} }
static grub_err_t ventoy_cmd_dump_injection(grub_extcmd_context_t ctxt, int argc, char **args)
{
(void)ctxt;
(void)argc;
(void)args;
ventoy_plugin_dump_injection();
return 0;
}
static grub_err_t ventoy_cmd_dump_auto_install(grub_extcmd_context_t ctxt, int argc, char **args) static grub_err_t ventoy_cmd_dump_auto_install(grub_extcmd_context_t ctxt, int argc, char **args)
{ {
(void)ctxt; (void)ctxt;
@ -2361,6 +2372,7 @@ static cmd_para ventoy_cmds[] =
{ "vt_dynamic_menu", ventoy_cmd_dynamic_menu, 0, NULL, "", "", NULL }, { "vt_dynamic_menu", ventoy_cmd_dynamic_menu, 0, NULL, "", "", NULL },
{ "vt_check_mode", ventoy_cmd_check_mode, 0, NULL, "", "", NULL }, { "vt_check_mode", ventoy_cmd_check_mode, 0, NULL, "", "", NULL },
{ "vt_dump_img_list", ventoy_cmd_dump_img_list, 0, NULL, "", "", NULL }, { "vt_dump_img_list", ventoy_cmd_dump_img_list, 0, NULL, "", "", NULL },
{ "vt_dump_injection", ventoy_cmd_dump_injection, 0, NULL, "", "", NULL },
{ "vt_dump_auto_install", ventoy_cmd_dump_auto_install, 0, NULL, "", "", NULL }, { "vt_dump_auto_install", ventoy_cmd_dump_auto_install, 0, NULL, "", "", NULL },
{ "vt_dump_persistence", ventoy_cmd_dump_persistence, 0, NULL, "", "", NULL }, { "vt_dump_persistence", ventoy_cmd_dump_persistence, 0, NULL, "", "", NULL },
{ "vt_select_auto_install", ventoy_cmd_sel_auto_install, 0, NULL, "", "", NULL }, { "vt_select_auto_install", ventoy_cmd_sel_auto_install, 0, NULL, "", "", NULL },

View File

@ -672,6 +672,7 @@ void ventoy_swap_img(img_info *img1, img_info *img2);
char * ventoy_plugin_get_cur_install_template(const char *isopath); char * ventoy_plugin_get_cur_install_template(const char *isopath);
install_template * ventoy_plugin_find_install_template(const char *isopath); install_template * ventoy_plugin_find_install_template(const char *isopath);
persistence_config * ventoy_plugin_find_persistent(const char *isopath); persistence_config * ventoy_plugin_find_persistent(const char *isopath);
void ventoy_plugin_dump_injection(void);
void ventoy_plugin_dump_auto_install(void); void ventoy_plugin_dump_auto_install(void);
int ventoy_fill_windows_rtdata(void *buf, char *isopath); int ventoy_fill_windows_rtdata(void *buf, char *isopath);
int ventoy_plugin_get_persistent_chunklist(const char *isopath, int index, ventoy_img_chunk_list *chunk_list); int ventoy_plugin_get_persistent_chunklist(const char *isopath, int index, ventoy_img_chunk_list *chunk_list);

View File

@ -1087,6 +1087,20 @@ grub_err_t ventoy_cmd_load_plugin(grub_extcmd_context_t ctxt, int argc, char **a
VENTOY_CMD_RETURN(GRUB_ERR_NONE); VENTOY_CMD_RETURN(GRUB_ERR_NONE);
} }
void ventoy_plugin_dump_injection(void)
{
injection_config *node = NULL;
for (node = g_injection_head; node; node = node->next)
{
grub_printf("\nIMAGE:<%s>\n", node->isopath);
grub_printf("ARCHIVE:<%s>\n", node->archive);
}
return;
}
void ventoy_plugin_dump_auto_install(void) void ventoy_plugin_dump_auto_install(void)
{ {
int i; int i;

View File

@ -726,8 +726,15 @@ int ventoy_fill_windows_rtdata(void *buf, char *isopath)
script = (char *)ventoy_plugin_get_injection(pos); script = (char *)ventoy_plugin_get_injection(pos);
if (script) if (script)
{ {
debug("injection archive <%s>\n", script); if (ventoy_check_file_exist("%s%s", ventoy_get_env("vtoy_iso_part"), script))
grub_snprintf(data->injection_archive, sizeof(data->injection_archive) - 1, "%s", script); {
debug("injection archive <%s> OK\n", script);
grub_snprintf(data->injection_archive, sizeof(data->injection_archive) - 1, "%s", script);
}
else
{
debug("injection archive <%s> NOT exist\n", script);
}
} }
else else
{ {

View File

@ -186,21 +186,31 @@ fi
# Step 3 : Extract injection archive # # Step 3 : Extract injection archive #
# # # #
#################################################################### ####################################################################
if [ -e $VTOY_PATH/ventoy_injection ]; then ventoy_unpack_injection() {
echo "decompress injection ..." >>$VTLOG
vtmagic=$(hexdump -n 2 -e '2/1 "%02X"' $VTOY_PATH/ventoy_injection) vtmagic=$(hexdump -n 2 -e '2/1 "%02X"' $VTOY_PATH/ventoy_injection)
echo "vtmagic=$vtmagic ..." >>$VTLOG echo "ventoy_unpack_injection vtmagic=$vtmagic ..."
if [ "1F8B" = "vtmagic" ] || [ "1F9E" = "vtmagic" ]; then if [ "1F8B" = "$vtmagic" ] || [ "1F9E" = "$vtmagic" ]; then
zcat $VTOY_PATH/ventoy_injection | tar -xf -C / echo "tar.gz tar -xzvf"
elif [ "425A" = "vtmagic" ]; then tar -xzvf $VTOY_PATH/ventoy_injection -C /
bzcat $VTOY_PATH/ventoy_injection | tar -xf -C / elif [ "425A" = "$vtmagic" ]; then
elif [ "FD37" = "vtmagic" ]; then echo "tar.bz2 tar -xjvf"
xzcat $VTOY_PATH/ventoy_injection | tar -xf -C / tar -xjvf $VTOY_PATH/ventoy_injection -C /
elif [ "FD37" = "$vtmagic" ]; then
echo "tar.xz tar -xJvf"
tar -xJvf $VTOY_PATH/ventoy_injection -C /
elif [ "5D00" = "$vtmagic" ]; then
echo "tar.lzma tar -xavf"
tar -xavf $VTOY_PATH/ventoy_injection -C /
else else
unzip -o -q $VTOY_PATH/ventoy_injection -d / echo "unzip -o"
unzip -o $VTOY_PATH/ventoy_injection -d /
fi fi
}
if [ -e $VTOY_PATH/ventoy_injection ]; then
echo "### decompress injection ... ###" >>$VTLOG
ventoy_unpack_injection > $VTOY_PATH/injection.log 2>&1
fi fi

Binary file not shown.

View File

@ -54,7 +54,16 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
echo -e "\npress ENTER to exit ..." echo -e "\npress ENTER to exit ..."
read vtInputKey read vtInputKey
unset pager unset pager
} }
menuentry 'Check injection plugin configuration' --class=debug_injection {
set pager=1
vt_check_plugin_json $vt_plugin_path injection $vtoy_iso_part
echo -e "\npress ENTER to exit ..."
read vtInputKey
unset pager
}
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET { menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
echo 'Return ...' echo 'Return ...'

View File

@ -68,15 +68,15 @@ function ventoy_localboot {
} }
function ventoy_ext_menu { function ventoy_ext_menu {
#if [ -e $vt_plugin_path/ventoy/ventoy_grub.cfg ]; then if [ -e $vt_plugin_path/ventoy/ventoy_grub.cfg ]; then
set ventoy_new_context=1 set ventoy_new_context=1
configfile $vt_plugin_path/ventoy/ventoy_grub.cfg configfile $vt_plugin_path/ventoy/ventoy_grub.cfg
unset ventoy_new_context unset ventoy_new_context
#else else
# echo "ventoy_grub.cfg NOT exist." echo "ventoy_grub.cfg NOT exist."
# echo -e "\npress ENTER to exit ..." echo -e "\npress ENTER to exit ..."
# read vtInputKey read vtInputKey
#fi fi
} }
function get_os_type { function get_os_type {

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 976 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 952 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 963 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 963 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 952 B

View File

@ -0,0 +1,80 @@
desktop-image: "background.png"
title-text: " "
title-color: "#ffffff"
message-color: "#f2f2f2"
terminal-box: "terminal_box_*.png"
+ boot_menu {
left = 10%
width = 80%
top = 30%
height = 50%
menu_pixmap_style = "menu_*.png"
item_color = "#ffffff"
item_height = 30
item_spacing = 1
item_padding = 1
selected_item_color= "#f2f2f2"
selected_item_pixmap_style = "select_*.png"
item_icon_space = 0
scrollbar = true
scrollbar_width = 10
scrollbar_thumb = "slider_*.png"
}
+ progress_bar {
id = "__timeout__"
text = "@TIMEOUT_NOTIFICATION_SHORT@"
left = 20%
width = 60%
top = 85%
text_color = "red"
bar_style = "*"
highlight_style = "*"
}
+ hbox{
left = 30%
top = 95%
width = 10%
height = 25
+ label {text = "@VTOY_HOTKEY_TIP@" color = "blue" align = "left"}
}
+ hbox{
left = 30%
top = 95%-25
width = 10%
height = 25
+ label {text = "@VTOY_MEM_DISK@" color = "red" align = "left"}
}
+ hbox{
left = 30%
top = 95%-50
width = 10%
height = 25
+ label {text = "@VTOY_ISO_RAW@" color = "red" align = "left"}
}
+ hbox{
left = 90%
top = 55
width = 10%
height = 25
+ label {text = "@VTOY_ISO_UEFI_DRV@" color = "red" align = "left"}
}

View File

@ -0,0 +1,60 @@
{
"control": [
{ "VTOY_DEFAULT_MENU_MODE": "1" },
{ "VTOY_FILT_DOT_UNDERSCORE_FILE": "1" }
],
"theme": {
"file": "/ventoy/theme/theme.txt",
"display_mode": "GUI",
"ventoy_left": "5%",
"ventoy_top": "95%",
"ventoy_color": "#0000ff"
},
"menu_class": [
{
"key": "ubuntu",
"class": "ubuntu"
},
{
"key": "deepin",
"class": "deepin"
},
{
"dir": "rhel",
"class": "red-hat"
}
],
"menu_alias": [
{
"image": "/ISO/MX-19.1_x64.iso",
"alias": "MX 19.1 ISO file For me"
},
{
"image": "/cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso",
"alias": "我的 Windows 10 系统"
}
],
"auto_install": [
{
"image": "/ISO/cn_windows_10.iso",
"template": "/ventoy/script/windows_unattended.cfg"
},
{
"image": "/ISO/cn_windows_server_2012_r2_vl_x64_dvd_2979220.iso",
"template": [
"/ventoy/script/windows_unattended1.xml",
"/ventoy/script/windows_unattended2.xml",
"/ventoy/script/windows_unattended3.xml",
"/ventoy/script/windows_unattended4.xml",
"/ventoy/script/windows_unattended5.xml",
"/ventoy/script/windows_unattended6.xml"
]
}
]
}

View File

@ -0,0 +1,19 @@
menuentry "My Custom Menu" --class=custom {
echo 'This is custom menu ... '
sleep 1
}
submenu 'My Custom SubMenu -->' --class=customsub {
menuentry "My Custom Menu2" --class=custom2 {
echo 'This is custom menu2 ... '
sleep 1
}
menuentry '<-- Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
echo 'Return ...'
}
}
menuentry '<-- Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
echo 'Return ...'
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -80,6 +80,7 @@ cp -a ./tool $tmpdir/
rm -f $tmpdir/ENROLL_THIS_KEY_IN_MOKMANAGER.cer rm -f $tmpdir/ENROLL_THIS_KEY_IN_MOKMANAGER.cer
cp -a Ventoy2Disk.sh $tmpdir/ cp -a Ventoy2Disk.sh $tmpdir/
cp -a README $tmpdir/ cp -a README $tmpdir/
cp -a plugin $tmpdir/
cp -a CreatePersistentImg.sh $tmpdir/ cp -a CreatePersistentImg.sh $tmpdir/
dos2unix -q $tmpdir/Ventoy2Disk.sh dos2unix -q $tmpdir/Ventoy2Disk.sh
dos2unix -q $tmpdir/CreatePersistentImg.sh dos2unix -q $tmpdir/CreatePersistentImg.sh

View File

@ -704,31 +704,76 @@ static int DeleteVentoyPart2MountPoint(DWORD PhyDrive)
return 1; return 1;
} }
static BOOL check_tar_archive(const char *archive, CHAR *tarName)
{
int len;
int nameLen;
const char *pos = archive;
const char *slash = archive;
while (*pos)
{
if (*pos == '\\' || *pos == '/')
{
slash = pos;
}
pos++;
}
len = (int)strlen(slash);
if (len > 7 && (strncmp(slash + len - 7, ".tar.gz", 7) == 0 || strncmp(slash + len - 7, ".tar.xz", 7) == 0))
{
nameLen = (int)sprintf_s(tarName, MAX_PATH, "X:%s", slash);
tarName[nameLen - 3] = 0;
return TRUE;
}
else if (len > 8 && strncmp(slash + len - 8, ".tar.bz2", 8) == 0)
{
nameLen = (int)sprintf_s(tarName, MAX_PATH, "X:%s", slash);
tarName[nameLen - 4] = 0;
return TRUE;
}
else if (len > 9 && strncmp(slash + len - 9, ".tar.lzma", 9) == 0)
{
nameLen = (int)sprintf_s(tarName, MAX_PATH, "X:%s", slash);
tarName[nameLen - 5] = 0;
return TRUE;
}
return FALSE;
}
static int DecompressInjectionArchive(const char *archive, DWORD PhyDrive) static int DecompressInjectionArchive(const char *archive, DWORD PhyDrive)
{ {
int rc = 1; int rc = 1;
BOOL bRet; BOOL bRet;
DWORD dwBytes; DWORD dwBytes;
HANDLE hDrive; HANDLE hDrive;
CHAR PhyPath[MAX_PATH]; HANDLE hOut;
DWORD flags = CREATE_NO_WINDOW;
CHAR StrBuf[MAX_PATH];
CHAR tarName[MAX_PATH];
STARTUPINFOA Si; STARTUPINFOA Si;
PROCESS_INFORMATION Pi; PROCESS_INFORMATION Pi;
PROCESS_INFORMATION NewPi;
GET_LENGTH_INFORMATION LengthInfo; GET_LENGTH_INFORMATION LengthInfo;
SECURITY_ATTRIBUTES Sa = { sizeof(SECURITY_ATTRIBUTES), NULL, TRUE };
Log("DecompressInjectionArchive %s", archive); Log("DecompressInjectionArchive %s", archive);
sprintf_s(PhyPath, sizeof(PhyPath), "\\\\.\\PhysicalDrive%d", PhyDrive); sprintf_s(StrBuf, sizeof(StrBuf), "\\\\.\\PhysicalDrive%d", PhyDrive);
hDrive = CreateFileA(PhyPath, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0); hDrive = CreateFileA(StrBuf, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
if (hDrive == INVALID_HANDLE_VALUE) if (hDrive == INVALID_HANDLE_VALUE)
{ {
Log("Could not open the disk<%s>, error:%u", PhyPath, GetLastError()); Log("Could not open the disk<%s>, error:%u", StrBuf, GetLastError());
goto End; goto End;
} }
bRet = DeviceIoControl(hDrive, IOCTL_DISK_GET_LENGTH_INFO, NULL, 0, &LengthInfo, sizeof(LengthInfo), &dwBytes, NULL); bRet = DeviceIoControl(hDrive, IOCTL_DISK_GET_LENGTH_INFO, NULL, 0, &LengthInfo, sizeof(LengthInfo), &dwBytes, NULL);
if (!bRet) if (!bRet)
{ {
Log("Could not get phy disk %s size, error:%u", PhyPath, GetLastError()); Log("Could not get phy disk %s size, error:%u", StrBuf, GetLastError());
goto End; goto End;
} }
@ -750,17 +795,49 @@ static int DecompressInjectionArchive(const char *archive, DWORD PhyDrive)
CopyFileFromFatDisk("/ventoy/7z/32/7za.exe", "ventoy\\7za.exe"); CopyFileFromFatDisk("/ventoy/7z/32/7za.exe", "ventoy\\7za.exe");
} }
sprintf_s(PhyPath, sizeof(PhyPath), "ventoy\\7za.exe x -y -aoa -oX:\\ %s", archive); sprintf_s(StrBuf, sizeof(StrBuf), "ventoy\\7za.exe x -y -aoa -oX:\\ %s", archive);
Log("extract inject to X:"); Log("extract inject to X:");
Log("cmdline:<%s>", StrBuf);
GetStartupInfoA(&Si); GetStartupInfoA(&Si);
Si.dwFlags |= STARTF_USESHOWWINDOW; hOut = CreateFileA("ventoy\\7z.log",
Si.wShowWindow = SW_HIDE; FILE_APPEND_DATA,
FILE_SHARE_WRITE | FILE_SHARE_READ,
&Sa,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
CreateProcessA(NULL, PhyPath, NULL, NULL, FALSE, 0, NULL, NULL, &Si, &Pi); Si.dwFlags |= STARTF_USESTDHANDLES;
if (hOut != INVALID_HANDLE_VALUE)
{
Si.hStdError = hOut;
Si.hStdOutput = hOut;
}
CreateProcessA(NULL, StrBuf, NULL, NULL, TRUE, flags, NULL, NULL, &Si, &Pi);
WaitForSingleObject(Pi.hProcess, INFINITE); WaitForSingleObject(Pi.hProcess, INFINITE);
//
// decompress tar archive, for tar.gz/tar.xz/tar.bz2
//
if (check_tar_archive(archive, tarName))
{
Log("Decompress tar archive...<%s>", tarName);
sprintf_s(StrBuf, sizeof(StrBuf), "ventoy\\7za.exe x -y -aoa -oX:\\ %s", tarName);
CreateProcessA(NULL, StrBuf, NULL, NULL, TRUE, flags, NULL, NULL, &Si, &NewPi);
WaitForSingleObject(NewPi.hProcess, INFINITE);
Log("Now delete %s", tarName);
DeleteFileA(tarName);
}
SAFE_CLOSE_HANDLE(hOut);
} }
fl_shutdown(); fl_shutdown();

View File

@ -69,7 +69,7 @@ typedef struct ventoy_windows_data
{ {
char auto_install_script[384]; char auto_install_script[384];
char injection_archive[384]; char injection_archive[384];
UINT8 reserved[128]; UINT8 reserved[256];
}ventoy_windows_data; }ventoy_windows_data;
#pragma pack() #pragma pack()