export PATH=$BUSYBOX_PATH/:$VTOY_PATH/tool
-export VTOY_BREAK_LEVEL=$(hexdump -n 1 -s 429 -e '1/1 "%02x"' $VTOY_PATH/ventoy_os_param)
-export VTOY_DEBUG_LEVEL=$(hexdump -n 1 -s 430 -e '1/1 "%02x"' $VTOY_PATH/ventoy_os_param)
+export VTOY_BREAK_LEVEL=$(hexdump -n 1 -s 449 -e '1/1 "%02x"' $VTOY_PATH/ventoy_os_param)
+export VTOY_DEBUG_LEVEL=$(hexdump -n 1 -s 450 -e '1/1 "%02x"' $VTOY_PATH/ventoy_os_param)
#Fixme: busybox shell output redirect seems to have some bug in rhel5
if uname -a | grep -q el5; then
VENTOY_PATH=$PWD/../
+if [ -e check.sh ]; then
+ if ! sh check.sh; then
+ exit 1
+ fi
+fi
+
rm -f ventoy.cpio
chmod -R 777 cpio
loopback -d loop
fi
- unset LoadIsoEfiDriver
-
+ if [ -n "$vtisouefi" ]; then
+ set LoadIsoEfiDriver=on
+ else
+ unset LoadIsoEfiDriver
+ fi
+
vt_chosen_img_path chosen_path
if vt_is_udf ${1}${chosen_path}; then
#############################################################
#############################################################
-set VENTOY_VERSION="1.0.01"
+set VENTOY_VERSION="1.0.02"
#disable timeout
unset timeout
uint32_t i = 0;
uint8_t chksum = 0;
uint8_t *guid;
+ uint8_t *vtoy_reserve;
guid = chain->os_param.vtoy_disk_guid;
for (i = 0; i < sizeof(ventoy_os_param); i++)
chksum += *((uint8_t *)(&(chain->os_param)) + i);
}
+ vtoy_reserve = (uint8_t *)(chain->os_param.vtoy_reserved);
+
printf("##################### ventoy_dump_chain #######################\n");
printf("os_param will be save at %p\n", ventoy_get_runtime_addr());
printf("os_param->vtoy_disk_part_type=%u\n", chain->os_param.vtoy_disk_part_type);
printf("os_param->vtoy_img_path=<%s>\n", chain->os_param.vtoy_img_path);
printf("os_param->vtoy_img_size=<%llu>\n", chain->os_param.vtoy_img_size);
+ printf("os_param->vtoy_reserve[0]=<%u>\n", vtoy_reserve[0]);
+ printf("os_param->vtoy_reserve[1]=<%u>\n", vtoy_reserve[1]);
printf("os_param->vtoy_img_location_addr=<0x%llx>\n", chain->os_param.vtoy_img_location_addr);
printf("os_param->vtoy_img_location_len=<%u>\n", chain->os_param.vtoy_img_location_len);
ventoy_debug_pause();
TEXT("The disk will be formatted and all the data will be lost.\r\nContinue?"),
TEXT("The disk will be formatted and all the data will be lost.\r\nContinue? (Double Check)"),
TEXT("Congratulations!\r\nVentoy has been successfully installed to the device."),
- TEXT("An error occurred during the installation. You can try again and check log.txt for detail."),
+ TEXT("An error occurred during the installation. You can replug the USB and try again. Check log.txt for detail."),
TEXT("Congratulations!\r\nVentoy has been successfully updated to the device."),
- TEXT("An error occurred during the update. You can try again and check log.txt for detail."),
+ TEXT("An error occurred during the update. You can replug the USB and try again. Check log.txt for detail."),
TEXT("A thread is running, please wait..."),
};
TEXT("´ÅÅ̻ᱻ¸ñʽ»¯, ËùÓÐÊý¾Ý¶¼»á¶ªÊ§!\r\nÊÇ·ñ¼ÌÐø£¿"),
TEXT("´ÅÅ̻ᱻ¸ñʽ»¯, ËùÓÐÊý¾Ý¶¼»á¶ªÊ§!\r\nÔÙ´ÎÈ·ÈÏÊÇ·ñ¼ÌÐø£¿"),
TEXT("¹§Ï²Äã! Ventoy ÒѾ³É¹¦°²×°µ½´ËÉ豸ÖÐ."),
- TEXT("°²×° Ventoy ¹ý³ÌÖз¢Éú´íÎó. Äã¿ÉÒÔÖØÊÔÒ»´Î, ÏêϸÐÅÏ¢Çë²éÔÄ log.txt Îļþ."),
+ TEXT("°²×° Ventoy ¹ý³ÌÖз¢Éú´íÎó. Äã¿ÉÒÔÖØÐ°βåÒ»ÏÂUÅÌÈ»ºóÖØÊÔÒ»´Î, ÏêϸÐÅÏ¢Çë²éÔÄ log.txt Îļþ."),
TEXT("¹§Ï²Äã! а汾µÄ Ventoy ÒѾ³É¹¦¸üе½´ËÉ豸ÖÐ."),
- TEXT("¸üРVentoy ¹ý³ÌÖÐÓöµ½´íÎó. Äã¿ÉÒÔÖØÊÔÒ»´Î, ÏêϸÐÅÏ¢Çë²éÔÄ log.txt Îļþ."),
+ TEXT("¸üРVentoy ¹ý³ÌÖÐÓöµ½´íÎó. Äã¿ÉÒÔÖØÐ°βåÒ»ÏÂUÅÌÈ»ºóÖØÊÔÒ»´Î, ÏêϸÐÅÏ¢Çë²éÔÄ log.txt Îļþ."),
TEXT("µ±Ç°ÓÐÈÎÎñÕýÔÚÔËÐÐ, ÇëµÈ´ý..."),
};
PHY_DRIVE_INFO *g_PhyDriveList = NULL;
DWORD g_PhyDriveCount = 0;
-static int g_FilterRemovable = 1;
+static int g_FilterRemovable = 0;
static int g_FilterUSB = 1;
int g_ForceOperation = 1;
for (i = 0; i < __argc; i++)
{
- if (strncmp(__argv[i], "-R", 2) == 0)
- {
- g_FilterRemovable = 0;
- }
- else if (strncmp(__argv[i], "-U", 2) == 0)
+ if (strncmp(__argv[i], "-U", 2) == 0 ||
+ strncmp(__argv[i], "-u", 2) == 0)
{
g_FilterUSB = 0;
}
GetCurrentDirectoryA(sizeof(cfgfile), cfgfile);
strcat_s(cfgfile, sizeof(cfgfile), "\\Ventoy2Disk.ini");
- if (0 == GetPrivateProfileIntA("Filter", "Removable", 1, cfgfile))
- {
- g_FilterRemovable = 0;
- }
-
if (0 == GetPrivateProfileIntA("Filter", "USB", 1, cfgfile))
{
g_FilterUSB = 0;
return NULL;
}
+int SortPhysicalDrive(PHY_DRIVE_INFO *pDriveList, DWORD DriveCount)
+{
+ DWORD i, j;
+ PHY_DRIVE_INFO TmpDriveInfo;
+
+ for (i = 0; i < DriveCount; i++)
+ {
+ for (j = i + 1; j < DriveCount; j++)
+ {
+ if (pDriveList[i].BusType == BusTypeUsb && pDriveList[j].BusType == BusTypeUsb)
+ {
+ if (pDriveList[i].RemovableMedia == FALSE && pDriveList[j].RemovableMedia == TRUE)
+ {
+ memcpy(&TmpDriveInfo, pDriveList + i, sizeof(PHY_DRIVE_INFO));
+ memcpy(pDriveList + i, pDriveList + j, sizeof(PHY_DRIVE_INFO));
+ memcpy(pDriveList + j, &TmpDriveInfo, sizeof(PHY_DRIVE_INFO));
+ }
+ }
+ }
+ }
+
+ return 0;
+}
+
int Ventoy2DiskInit(void)
{
g_PhyDriveList = (PHY_DRIVE_INFO *)malloc(sizeof(PHY_DRIVE_INFO)* VENTOY_MAX_PHY_DRIVE);
memset(g_PhyDriveList, 0, sizeof(PHY_DRIVE_INFO)* VENTOY_MAX_PHY_DRIVE);
GetAllPhysicalDriveInfo(g_PhyDriveList, &g_PhyDriveCount);
+
+ SortPhysicalDrive(g_PhyDriveList, g_PhyDriveCount);
+
FilterPhysicalDrive(g_PhyDriveList, g_PhyDriveCount);
return 0;
PHY_DRIVE_INFO *pPhyDrive = (PHY_DRIVE_INFO *)Param;
rc = InstallVentoy2PhyDrive(pPhyDrive);
+ if (rc)
+ {
+ Log("This time install failed, now wait and retry...");
+ Sleep(10000);
+
+ Log("Now retry to install...");
+
+ rc = InstallVentoy2PhyDrive(pPhyDrive);
+ }
+
if (rc == 0)
{
PROGRESS_BAR_SET_POS(PT_FINISH);
PHY_DRIVE_INFO *pPhyDrive = (PHY_DRIVE_INFO *)Param;
rc = UpdateVentoy2PhyDrive(pPhyDrive);
+ if (rc)
+ {
+ Log("This time update failed, now wait and retry...");
+ Sleep(10000);
+
+ Log("Now retry to update...");
+
+ rc = UpdateVentoy2PhyDrive(pPhyDrive);
+ }
+
if (rc == 0)
{
PROGRESS_BAR_SET_POS(PT_FINISH);