Compare commits

...

14 Commits

Author SHA1 Message Date
longpanda
ed1aa3d5be 1.0.72 release 2022-03-26 17:33:46 +08:00
longpanda
8e66110374 Update README.md 2022-03-26 16:07:51 +08:00
Kerollos Magdy
f5f65aa868 add GitHub actions state to README (#419)
* add GitHub actions state to README

* Update README.md

* remove link in README

Co-authored-by: Dylan M. Taylor <dylan@dylanmtaylor.com>
2022-03-26 10:51:26 +08:00
geeseven
4e5fcf211b add IMG to no iso tip (#480) 2022-03-26 10:48:45 +08:00
Celine Lee
9789069c0d Modify casting in protection against underflow (#1514)
Dear Ventoy community –
 
Our team is working with your code and we noticed this if logical expression:
 
                if (len - 1 - (int)(long)(pos - pwdstr) != 32)
 
We studied the surrounding code. We believe we understand the intention of the type casts in the above if statement. It seems they were meant to ensure an underflow doesn’t occur by the subtraction between to char pointers, which is a great catch (!). However, we believe the way the type casts are structured, the code is not actually protecting against such underflow because pwdstr isn’t cast into a signed long until after the subtraction occurs. To properly protect this code against underflow, we believe it should be changed to something like the following:

if (len - 1 - ((long)pos – (long)pwdstr) != 32)

Or, to enhance readability for junior engineers who may not know that the “long” type cast is implicitly of a signed integer type, we could include the `signed` keyword for added verbosity:
 
if (len - 1 - ((signed long)pos – (signed long)pwdstr) != 32)
 
Thank you!
2022-03-26 10:29:18 +08:00
longpanda
1cf45ac0c5 update 2022-03-26 10:07:22 +08:00
adrian5
40fe21f909 Fix wording, normalize capitalization (#762)
Co-authored-by: longpanda <59477474+ventoy@users.noreply.github.com>
2022-03-26 10:05:18 +08:00
George
e6bdf075ca Changes to english language (#1140)
Changes detail to details and replug to reinsert. Which makes words flow with the sentance better.
2022-03-26 09:47:28 +08:00
Chrystian Rafael Rubio de Melo
7c76e57bf4 fixing grammar mistakes (#1482) 2022-03-26 09:46:35 +08:00
longpanda
7fe038b697 Merge branch 'master' of https://github.com/ventoy/Ventoy 2022-03-24 23:48:01 +08:00
longpanda
c01c69db3b Add missing execute bit when packing (#1530) 2022-03-24 23:47:43 +08:00
Celine Lee
0e996e74c9 Update error message to align with int16 range (#1513)
I think this might be a minor typo-- since the conditional checks for `priority` to be in the signed int16 range, the error message should line up with that expected range.
2022-03-22 19:15:25 +08:00
longpanda
1371159f0b update OS detection 2022-03-22 19:14:51 +08:00
longpanda
44b38dce74 Add support for venomlinux (#1526) 2022-03-22 17:52:56 +08:00
10 changed files with 87 additions and 51 deletions

View File

@@ -21,7 +21,7 @@ body:
attributes: attributes:
label: Ventoy Version label: Ventoy Version
description: What version of ventoy are you running? description: What version of ventoy are you running?
placeholder: 1.0.71 placeholder: 1.0.72
validations: validations:
required: true required: true
- type: dropdown - type: dropdown

View File

@@ -960,7 +960,7 @@ static int ventoy_plugin_parse_pwdstr(char *pwdstr, vtoy_password *pwd)
return 1; return 1;
} }
if (len - 1 - (int)(long)(pos - pwdstr) != 32) if (len - 1 - ((long)pos - (long)pwdstr) != 32)
{ {
if (NULL == pwd) grub_printf("Invalid md5 salt password format %s\n", pwdstr); if (NULL == pwd) grub_printf("Invalid md5 salt password format %s\n", pwdstr);
return 1; return 1;

View File

@@ -20,7 +20,7 @@
. $VTOY_PATH/hook/ventoy-os-lib.sh . $VTOY_PATH/hook/ventoy-os-lib.sh
if $GREP -q '^"$mount_handler"' /init; then if $GREP -q '^"$mount_handler"' /init; then
echo 'use mount_handler ...' >> $VTLOG echo 'use mount_handler1 ...' >> $VTLOG
vthookfile=/hooks/archiso vthookfile=/hooks/archiso
@@ -37,6 +37,9 @@ if $GREP -q '^"$mount_handler"' /init; then
if [ -f $vthookfile ]; then if [ -f $vthookfile ]; then
$SED '/while ! poll_device "${dev}"/a\ if /ventoy/busybox/sh /ventoy/hook/arch/ventoy-timeout.sh ${dev}; then break; fi' -i $vthookfile $SED '/while ! poll_device "${dev}"/a\ if /ventoy/busybox/sh /ventoy/hook/arch/ventoy-timeout.sh ${dev}; then break; fi' -i $vthookfile
fi fi
elif $GREP -q '^$mount_handler' /init; then
echo 'use mount_handler2 ...' >> $VTLOG
$SED "/^\$mount_handler/i\ $BUSYBOX_PATH/sh $VTOY_PATH/hook/arch/ventoy-disk.sh" -i /init
elif $GREP -q '^KEEP_SEARCHING' /init; then elif $GREP -q '^KEEP_SEARCHING' /init; then
echo 'KEEP_SEARCHING found ...' >> $VTLOG echo 'KEEP_SEARCHING found ...' >> $VTLOG

View File

@@ -342,6 +342,24 @@ ventoy_get_os_type() {
echo "openEuler"; return echo "openEuler"; return
fi fi
#special arch based iso file check
if [ -f /init ]; then
if $GREP -q 'mount_handler' /init; then
if [ -d /hooks ]; then
if $BUSYBOX_PATH/ls -1 /hooks/ | $GREP -q '.*iso$'; then
echo "arch"; return
fi
elif [ -d /hook ]; then
if $BUSYBOX_PATH/ls -1 /hook/ | $GREP -q '.*iso$'; then
echo "arch"; return
fi
fi
fi
fi
echo "default" echo "default"
} }

View File

@@ -2113,7 +2113,7 @@ function img_unsupport_menuentry {
############################################################# #############################################################
############################################################# #############################################################
set VENTOY_VERSION="1.0.71" set VENTOY_VERSION="1.0.72"
#ACPI not compatible with Window7/8, so disable by default #ACPI not compatible with Window7/8, so disable by default
set VTOY_PARAM_NO_ACPI=1 set VTOY_PARAM_NO_ACPI=1
@@ -2349,11 +2349,11 @@ if [ $ventoy_img_count -gt 0 ]; then
fi fi
else else
if [ -n "$VTOY_NO_ISO_TIP" ]; then if [ -n "$VTOY_NO_ISO_TIP" ]; then
NO_ISO_MENU="No ISO files found, $VTOY_NO_ISO_TIP" NO_ISO_MENU="No ISO or supported IMG files found, $VTOY_NO_ISO_TIP"
elif [ -n "$VTOY_DEFAULT_SEARCH_ROOT" ]; then elif [ -n "$VTOY_DEFAULT_SEARCH_ROOT" ]; then
NO_ISO_MENU="No ISO files found, please check VTOY_DEFAULT_SEARCH_ROOT" NO_ISO_MENU="No ISO or supported IMG files found, please check VTOY_DEFAULT_SEARCH_ROOT"
else else
NO_ISO_MENU="No ISO files found" NO_ISO_MENU="No ISO or supported IMG files found"
fi fi
menuentry "$NO_ISO_MENU (Press enter to reboot ...)" { menuentry "$NO_ISO_MENU (Press enter to reboot ...)" {
echo -e "\n Rebooting ... " echo -e "\n Rebooting ... "

View File

@@ -3,11 +3,11 @@
. ./tool/ventoy_lib.sh . ./tool/ventoy_lib.sh
print_usage() { print_usage() {
echo 'Usage: Ventoy2Disk.sh CMD [ OPTION ] /dev/sdX' echo 'Usage: Ventoy2Disk.sh CMD [ OPTION ] /dev/sdX'
echo ' CMD:' echo ' CMD:'
echo ' -i install Ventoy to sdX (fails if disk already installed with Ventoy)' echo ' -i install Ventoy to sdX (fails if disk already installed with Ventoy)'
echo ' -I force install Ventoy to sdX (no matter installed or not)' echo ' -I force install Ventoy to sdX (no matter if installed or not)'
echo ' -u update Ventoy in sdX' echo ' -u update Ventoy in sdX'
echo ' -l list Ventoy information in sdX' echo ' -l list Ventoy information in sdX'
echo '' echo ''
@@ -67,7 +67,7 @@ while [ -n "$1" ]; do
DISK=$(readlink -e -n "$DISK") DISK=$(readlink -e -n "$DISK")
fi fi
fi fi
shift shift
done done
@@ -113,19 +113,19 @@ if [ "$MODE" = "list" ]; then
version=$(get_disk_ventoy_version $DISK) version=$(get_disk_ventoy_version $DISK)
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "Ventoy Version in Disk: $version" echo "Ventoy Version in Disk: $version"
vtPart1Type=$(dd if=$DISK bs=1 count=1 skip=450 status=none | hexdump -n1 -e '1/1 "%02X"') vtPart1Type=$(dd if=$DISK bs=1 count=1 skip=450 status=none | hexdump -n1 -e '1/1 "%02X"')
if [ "$vtPart1Type" = "EE" ]; then if [ "$vtPart1Type" = "EE" ]; then
echo "Disk Partition Style : GPT" echo "Disk Partition Style : GPT"
else else
echo "Disk Partition Style : MBR" echo "Disk Partition Style : MBR"
fi fi
if check_disk_secure_boot $DISK; then if check_disk_secure_boot $DISK; then
echo "Secure Boot Support : YES" echo "Secure Boot Support : YES"
else else
echo "Secure Boot Support : NO" echo "Secure Boot Support : NO"
fi fi
else else
echo "Ventoy Version: NA" echo "Ventoy Version: NA"
fi fi
@@ -149,7 +149,7 @@ if swapon --help 2>&1 | grep -q '^ \-s,'; then
fi fi
fi fi
#check access #check access
if dd if="$DISK" of=/dev/null bs=1 count=1 >/dev/null 2>&1; then if dd if="$DISK" of=/dev/null bs=1 count=1 >/dev/null 2>&1; then
vtdebug "root permission check ok ..." vtdebug "root permission check ok ..."
else else
@@ -165,7 +165,7 @@ if [ -d ./tmp_mnt ]; then
umount ./tmp_mnt >/dev/null 2>&1 umount ./tmp_mnt >/dev/null 2>&1
rm -rf ./tmp_mnt rm -rf ./tmp_mnt
if [ -d ./tmp_mnt ]; then if [ -d ./tmp_mnt ]; then
vterr "tmp_mnt directory exits, please delete it first." vterr "tmp_mnt directory exists, please delete it first."
exit 1 exit 1
fi fi
fi fi
@@ -192,7 +192,7 @@ if [ "$MODE" = "install" -a -z "$NONDESTRUCTIVE" ]; then
exit 1 exit 1
fi fi
fi fi
version=$(get_disk_ventoy_version $DISK) version=$(get_disk_ventoy_version $DISK)
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
if [ -z "$FORCE" ]; then if [ -z "$FORCE" ]; then
@@ -203,7 +203,7 @@ if [ "$MODE" = "install" -a -z "$NONDESTRUCTIVE" ]; then
exit 1 exit 1
fi fi
fi fi
disk_sector_num=$(cat /sys/block/${DISK#/dev/}/size) disk_sector_num=$(cat /sys/block/${DISK#/dev/}/size)
disk_size_gb=$(expr $disk_sector_num / 2097152) disk_size_gb=$(expr $disk_sector_num / 2097152)
@@ -215,7 +215,7 @@ if [ "$MODE" = "install" -a -z "$NONDESTRUCTIVE" ]; then
if [ -n "$RESERVE_SPACE" ]; then if [ -n "$RESERVE_SPACE" ]; then
sum_size_mb=$(expr $RESERVE_SIZE_MB + $VENTOY_PART_SIZE_MB) sum_size_mb=$(expr $RESERVE_SIZE_MB + $VENTOY_PART_SIZE_MB)
reserve_sector_num=$(expr $sum_size_mb \* 2048) reserve_sector_num=$(expr $sum_size_mb \* 2048)
if [ $disk_sector_num -le $reserve_sector_num ]; then if [ $disk_sector_num -le $reserve_sector_num ]; then
vterr "Can't reserve $RESERVE_SIZE_MB MB space from $DISK" vterr "Can't reserve $RESERVE_SIZE_MB MB space from $DISK"
exit 1 exit 1
@@ -225,12 +225,12 @@ if [ "$MODE" = "install" -a -z "$NONDESTRUCTIVE" ]; then
#Print disk info #Print disk info
echo "Disk : $DISK" echo "Disk : $DISK"
parted -s $DISK p 2>&1 | grep Model parted -s $DISK p 2>&1 | grep Model
echo "Size : $disk_size_gb GB" echo "Size : $disk_size_gb GB"
if [ -n "$VTGPT" ]; then if [ -n "$VTGPT" ]; then
echo "Style: GPT" echo "Style: GPT"
else else
echo "Style: MBR" echo "Style: MBR"
fi fi
echo '' echo ''
if [ -n "$RESERVE_SPACE" ]; then if [ -n "$RESERVE_SPACE" ]; then
@@ -259,7 +259,7 @@ if [ "$MODE" = "install" -a -z "$NONDESTRUCTIVE" ]; then
fi fi
fi fi
if [ $disk_sector_num -le $VENTOY_SECTOR_NUM ]; then if [ $disk_sector_num -le $VENTOY_SECTOR_NUM ]; then
vterr "No enough space in disk $DISK" vterr "No enough space in disk $DISK"
exit 1 exit 1
fi fi
@@ -290,8 +290,8 @@ if [ "$MODE" = "install" -a -z "$NONDESTRUCTIVE" ]; then
cluster_sectors=64 cluster_sectors=64
fi fi
PART1=$(get_disk_part_name $DISK 1) PART1=$(get_disk_part_name $DISK 1)
PART2=$(get_disk_part_name $DISK 2) PART2=$(get_disk_part_name $DISK 2)
#clean part2 #clean part2
dd status=none conv=fsync if=/dev/zero of=$DISK bs=512 count=32 seek=$part2_start_sector dd status=none conv=fsync if=/dev/zero of=$DISK bs=512 count=32 seek=$part2_start_sector
@@ -315,11 +315,11 @@ if [ "$MODE" = "install" -a -z "$NONDESTRUCTIVE" ]; then
vterr "${PART1} NOT exist" vterr "${PART1} NOT exist"
fi fi
vtinfo "writing data to disk ..." vtinfo "writing data to disk ..."
dd status=none conv=fsync if=./boot/boot.img of=$DISK bs=1 count=446 dd status=none conv=fsync if=./boot/boot.img of=$DISK bs=1 count=446
if [ -n "$VTGPT" ]; then if [ -n "$VTGPT" ]; then
echo -en '\x22' | dd status=none of=$DISK conv=fsync bs=1 count=1 seek=92 echo -en '\x22' | dd status=none of=$DISK conv=fsync bs=1 count=1 seek=92
xzcat ./boot/core.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=2014 seek=34 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 echo -en '\x23' | dd of=$DISK conv=fsync bs=1 count=1 seek=17908 status=none
else else
@@ -328,23 +328,24 @@ if [ "$MODE" = "install" -a -z "$NONDESTRUCTIVE" ]; then
# check and umount # check and umount
check_umount_disk "$DISK" check_umount_disk "$DISK"
xzcat ./ventoy/ventoy.disk.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=$VENTOY_SECTOR_NUM seek=$part2_start_sector xzcat ./ventoy/ventoy.disk.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=$VENTOY_SECTOR_NUM seek=$part2_start_sector
#test UUID #test UUID
testUUIDStr=$(vtoy_gen_uuid | hexdump -C) testUUIDStr=$(vtoy_gen_uuid | hexdump -C)
vtdebug "test uuid: $testUUIDStr" vtdebug "test uuid: $testUUIDStr"
#disk uuid #disk uuid
vtoy_gen_uuid | dd status=none conv=fsync of=${DISK} seek=384 bs=1 count=16 vtoy_gen_uuid | dd status=none conv=fsync of=${DISK} seek=384 bs=1 count=16
#disk signature #disk signature
vtoy_gen_uuid | dd status=none conv=fsync of=${DISK} skip=12 seek=440 bs=1 count=4 vtoy_gen_uuid | dd status=none conv=fsync of=${DISK} skip=12 seek=440 bs=1 count=4
vtinfo "sync data ..." vtinfo "sync data ..."
sync sync
vtinfo "esp partition processing ..." vtinfo "esp partition processing ..."
if [ "$SECUREBOOT" != "YES" ]; then if [ "$SECUREBOOT" != "YES" ]; then
sleep 2 sleep 2
check_umount_disk "$DISK" check_umount_disk "$DISK"
@@ -551,7 +552,7 @@ else
vtinfo "Upgrade operation is safe, all the data in the 1st partition (iso files and other) will be unchanged!" vtinfo "Upgrade operation is safe, all the data in the 1st partition (iso files and other) will be unchanged!"
echo "" echo ""
read -p "Update Ventoy $oldver ===> $curver Continue? (y/n)" Answer read -p "Update Ventoy $oldver ===> $curver Continue? (y/n) " Answer
if [ "$Answer" != "y" ]; then if [ "$Answer" != "y" ]; then
if [ "$Answer" != "Y" ]; then if [ "$Answer" != "Y" ]; then
exit 0 exit 0
@@ -561,13 +562,13 @@ else
PART2=$(get_disk_part_name $DISK 2) PART2=$(get_disk_part_name $DISK 2)
SHORT_PART2=${PART2#/dev/} SHORT_PART2=${PART2#/dev/}
part2_start=$(cat /sys/class/block/$SHORT_PART2/start) part2_start=$(cat /sys/class/block/$SHORT_PART2/start)
PART1_TYPE=$(dd if=$DISK bs=1 count=1 skip=450 status=none | hexdump -n1 -e '1/1 "%02X"') PART1_TYPE=$(dd if=$DISK bs=1 count=1 skip=450 status=none | hexdump -n1 -e '1/1 "%02X"')
#reserve disk uuid #reserve disk uuid
rm -f ./diskuuid.bin rm -f ./diskuuid.bin
dd status=none conv=fsync if=${DISK} skip=384 bs=1 count=16 of=./diskuuid.bin dd status=none conv=fsync if=${DISK} skip=384 bs=1 count=16 of=./diskuuid.bin
dd status=none conv=fsync if=./boot/boot.img of=$DISK bs=1 count=440 dd status=none conv=fsync if=./boot/boot.img of=$DISK bs=1 count=440
dd status=none conv=fsync if=./diskuuid.bin of=$DISK bs=1 count=16 seek=384 dd status=none conv=fsync if=./diskuuid.bin of=$DISK bs=1 count=16 seek=384
rm -f ./diskuuid.bin rm -f ./diskuuid.bin
@@ -577,16 +578,16 @@ else
dd status=none conv=fsync if=${DISK} skip=2040 bs=512 count=8 of=./rsvdata.bin dd status=none conv=fsync if=${DISK} skip=2040 bs=512 count=8 of=./rsvdata.bin
if [ "$PART1_TYPE" = "EE" ]; then if [ "$PART1_TYPE" = "EE" ]; then
vtdebug "This is GPT partition style ..." vtdebug "This is GPT partition style ..."
echo -en '\x22' | dd status=none of=$DISK conv=fsync bs=1 count=1 seek=92 echo -en '\x22' | dd status=none of=$DISK conv=fsync bs=1 count=1 seek=92
xzcat ./boot/core.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=2014 seek=34 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 echo -en '\x23' | dd of=$DISK conv=fsync bs=1 count=1 seek=17908 status=none
else else
vtdebug "This is MBR partition style ..." vtdebug "This is MBR partition style ..."
PART1_ACTIVE=$(dd if=$DISK bs=1 count=1 skip=446 status=none | hexdump -n1 -e '1/1 "%02X"') PART1_ACTIVE=$(dd if=$DISK bs=1 count=1 skip=446 status=none | hexdump -n1 -e '1/1 "%02X"')
PART2_ACTIVE=$(dd if=$DISK bs=1 count=1 skip=462 status=none | hexdump -n1 -e '1/1 "%02X"') PART2_ACTIVE=$(dd if=$DISK bs=1 count=1 skip=462 status=none | hexdump -n1 -e '1/1 "%02X"')
vtdebug "PART1_ACTIVE=$PART1_ACTIVE PART2_ACTIVE=$PART2_ACTIVE" vtdebug "PART1_ACTIVE=$PART1_ACTIVE PART2_ACTIVE=$PART2_ACTIVE"
if [ "$PART1_ACTIVE" = "00" ] && [ "$PART2_ACTIVE" = "80" ]; then if [ "$PART1_ACTIVE" = "00" ] && [ "$PART2_ACTIVE" = "80" ]; then
vtdebug "change 1st partition active, 2nd partition inactive ..." vtdebug "change 1st partition active, 2nd partition inactive ..."
@@ -614,7 +615,7 @@ else
echo "" echo ""
vtinfo "Update Ventoy on $DISK successfully finished." vtinfo "Update Ventoy on $DISK successfully finished."
echo "" echo ""
fi fi

View File

@@ -176,6 +176,13 @@ chmod +x $tmpdir/VentoyWeb.sh
chmod +x $tmpdir/VentoyPlugson.sh chmod +x $tmpdir/VentoyPlugson.sh
chmod +x $tmpdir/VentoyVlnk.sh chmod +x $tmpdir/VentoyVlnk.sh
chmod +x $tmpdir/VentoyGUI* chmod +x $tmpdir/VentoyGUI*
chmod +x $tmpdir/tool/*.sh
for d in i386 x86_64 aarch64 mips64el; do
chmod +x $tmpdir/tool/$d/xzcat
chmod +x $tmpdir/tool/$d/Ventoy2Disk.*
done
cp $OPT $LANG_DIR/languages.json $tmpdir/tool/ cp $OPT $LANG_DIR/languages.json $tmpdir/tool/

View File

@@ -248,9 +248,9 @@
"STR_INSTALL_TIP":"The device will be formatted and all the data will be lost.#@Continue?", "STR_INSTALL_TIP":"The device will be formatted and all the data will be lost.#@Continue?",
"STR_INSTALL_TIP2":"The device will be formatted and all the data will be lost.#@Continue? (Double Check)", "STR_INSTALL_TIP2":"The device will be formatted and all the data will be lost.#@Continue? (Double Check)",
"STR_INSTALL_SUCCESS":"Congratulations!#@Ventoy has been successfully installed to the device.", "STR_INSTALL_SUCCESS":"Congratulations!#@Ventoy has been successfully installed to the device.",
"STR_INSTALL_FAILED":"An error occurred during the installation. You can replug the USB device and try again. Check log.txt for detail. If it always fail, please refer the FAQ in the official website.", "STR_INSTALL_FAILED":"An error occurred during the installation. You can reinsert the USB device and try again. Check log.txt for details. If it always fails, please refer the FAQ on the official website.",
"STR_UPDATE_SUCCESS":"Congratulations!#@Ventoy has been successfully updated to the device.", "STR_UPDATE_SUCCESS":"Congratulations!#@Ventoy has been successfully updated on the device.",
"STR_UPDATE_FAILED":"An error occurred during the update. You can replug the USB device and try again. Check log.txt for detail. If it always fail, please refer the FAQ in the official website.", "STR_UPDATE_FAILED":"An error occurred during the update. You can reinsert the USB device and try again. Check log.txt for details. If it always fails, please refer the FAQ on the official website.",
"STR_WAIT_PROCESS":"A thread is running, please wait...", "STR_WAIT_PROCESS":"A thread is running, please wait...",
"STR_MENU_OPTION":"Option", "STR_MENU_OPTION":"Option",
"STR_MENU_SECURE_BOOT":"Secure Boot Support", "STR_MENU_SECURE_BOOT":"Secure Boot Support",
@@ -261,7 +261,7 @@
"STR_SPACE_VAL_INVALID":"Invalid value for reserved space", "STR_SPACE_VAL_INVALID":"Invalid value for reserved space",
"STR_MENU_CLEAR":"Clear Ventoy", "STR_MENU_CLEAR":"Clear Ventoy",
"STR_CLEAR_SUCCESS":"Ventoy has been successfully removed from the device.", "STR_CLEAR_SUCCESS":"Ventoy has been successfully removed from the device.",
"STR_CLEAR_FAILED":"An error occurred when clearing Ventoy from disk. You can replug the USB device and try again. Check log.txt for details.", "STR_CLEAR_FAILED":"An error occurred when removing Ventoy from disk. You can reinsert the USB device and try again. Check log.txt for details.",
"STR_MENU_PART_STYLE":"Partition Style", "STR_MENU_PART_STYLE":"Partition Style",
"STR_DISK_2TB_MBR_ERROR":"Please select GPT for devices over 2TB", "STR_DISK_2TB_MBR_ERROR":"Please select GPT for devices over 2TB",
"STR_SHOW_ALL_DEV":"Show All Devices", "STR_SHOW_ALL_DEV":"Show All Devices",
@@ -402,7 +402,7 @@
"name":"Portuguese Brazilian (Português do Brasil)", "name":"Portuguese Brazilian (Português do Brasil)",
"FontFamily":"Courier New", "FontFamily":"Courier New",
"FontSize":16, "FontSize":16,
"Author":"EstevaoCostaG3, David BrazSan, Hildo Guillardi Júnior", "Author":"EstevaoCostaG3, David BrazSan, Hildo Guillardi Júnior, Chrystian Rubio",
"STR_ERROR":"Erro", "STR_ERROR":"Erro",
"STR_WARNING":"Atenção", "STR_WARNING":"Atenção",
@@ -429,7 +429,7 @@
"STR_BTN_OK":"OK", "STR_BTN_OK":"OK",
"STR_BTN_CANCEL":"Cancelar", "STR_BTN_CANCEL":"Cancelar",
"STR_PRESERVE_SPACE":"Preservar algum espaço no final do disco", "STR_PRESERVE_SPACE":"Preservar algum espaço no final do disco",
"STR_SPACE_VAL_INVALID":"Valor invalido para o espaço reservado", "STR_SPACE_VAL_INVALID":"Valor inválido para o espaço reservado",
"STR_MENU_CLEAR":"Remover o Ventoy", "STR_MENU_CLEAR":"Remover o Ventoy",
"STR_CLEAR_SUCCESS":"O Ventoy foi removido deste dispositivo com sucesso.", "STR_CLEAR_SUCCESS":"O Ventoy foi removido deste dispositivo com sucesso.",
"STR_CLEAR_FAILED":"Um erro ocorreu ao remover o Ventoy do disco. Você pode reconectar o dispositivo USB e tentar novamente. Verifique o Arquivo log.txt para mais detalhes.", "STR_CLEAR_FAILED":"Um erro ocorreu ao remover o Ventoy do disco. Você pode reconectar o dispositivo USB e tentar novamente. Verifique o Arquivo log.txt para mais detalhes.",
@@ -439,18 +439,18 @@
"STR_PART_ALIGN_4KB":"Alinhar partições com 4KB", "STR_PART_ALIGN_4KB":"Alinhar partições com 4KB",
"STR_WEB_COMMUNICATION_ERR":"Erro de comunicação:", "STR_WEB_COMMUNICATION_ERR":"Erro de comunicação:",
"STR_WEB_REMOTE_ABNORMAL":"Erro de comunicação: remoto anormal", "STR_WEB_REMOTE_ABNORMAL":"Erro de comunicação: remoto anormal",
"STR_WEB_REQUEST_TIMEOUT":"Erro de comunicação: Solicitação cronometrado", "STR_WEB_REQUEST_TIMEOUT":"Erro de comunicação: Solicitação cronometrada",
"STR_WEB_SERVICE_UNAVAILABLE":"Erro de comunicação: Serviço indisponível", "STR_WEB_SERVICE_UNAVAILABLE":"Erro de comunicação: Serviço indisponível",
"STR_WEB_TOKEN_MISMATCH":"Status daemon atualizado, por favor, tente novamente mais tarde.", "STR_WEB_TOKEN_MISMATCH":"Status daemon atualizado, por favor, tente novamente mais tarde.",
"STR_WEB_SERVICE_BUSY":"O serviço está ocupado, por favor, tente novamente mais tarde.", "STR_WEB_SERVICE_BUSY":"O serviço está ocupado, por favor, tente novamente mais tarde.",
"STR_MENU_VTSI_CREATE":"Gerar arquivo VTSI", "STR_MENU_VTSI_CREATE":"Gerar arquivo VTSI",
"STR_VTSI_CREATE_TIP":"Não será gravado no dispositivo, desta vez, apenas derado um VTSI file#@Continuar?", "STR_VTSI_CREATE_TIP":"Não será gravado no dispositivo, desta vez, apenas gerado um arquivo VTSI.#@Continuar?",
"STR_VTSI_CREATE_SUCCESS":"Arquivo VTSI criado com sucesso!#@Você pode usar Rufus(3.15+) para gravá-lo no dispositivo e completar a instalação do Ventoy.", "STR_VTSI_CREATE_SUCCESS":"Arquivo VTSI criado com sucesso!#@Você pode usar Rufus(3.15+) para gravá-lo no dispositivo e completar a instalação do Ventoy.",
"STR_VTSI_CREATE_FAILED":"Criaçao do arquivo VTSI falhada.", "STR_VTSI_CREATE_FAILED":"Criação do arquivo VTSI falhada.",
"STR_MENU_PART_RESIZE":"Instalação não destrutiva", "STR_MENU_PART_RESIZE":"Instalação não destrutiva",
"STR_PART_RESIZE_TIP":"Ventoy tentará uma instalação não destrutiva, se possível.#@Continuar?", "STR_PART_RESIZE_TIP":"Ventoy tentará uma instalação não destrutiva, se possível.#@Continuar?",
"STR_PART_RESIZE_SUCCESS":"Parabéns!#@Instalação não destrutiva do Ventoy concluída com sucesso.", "STR_PART_RESIZE_SUCCESS":"Parabéns!#@Instalação não destrutiva do Ventoy concluída com sucesso.",
"STR_PART_RESIZE_FAILED":"Falha na installação não destrutiva, cheque o arquivo log.txt para entender.", "STR_PART_RESIZE_FAILED":"Falha na instalação não destrutiva, cheque o arquivo log.txt para entender.",
"STR_PART_RESIZE_UNSUPPORTED":"Instalação não destrutiva do Ventoy interrompida devido fato desconhecido. Cheque o arquivo log.txt para detalhes.", "STR_PART_RESIZE_UNSUPPORTED":"Instalação não destrutiva do Ventoy interrompida devido fato desconhecido. Cheque o arquivo log.txt para detalhes.",
"STRXXX":"" "STRXXX":""

View File

@@ -7,6 +7,7 @@
<img src="https://img.shields.io/github/license/ventoy/Ventoy?style=for-the-badge"> <img src="https://img.shields.io/github/license/ventoy/Ventoy?style=for-the-badge">
<img src="https://img.shields.io/github/stars/ventoy/Ventoy?style=for-the-badge"> <img src="https://img.shields.io/github/stars/ventoy/Ventoy?style=for-the-badge">
<img src="https://img.shields.io/github/downloads/ventoy/Ventoy/total.svg?style=for-the-badge"> <img src="https://img.shields.io/github/downloads/ventoy/Ventoy/total.svg?style=for-the-badge">
<img src="https://img.shields.io/github/workflow/status/ventoy/Ventoy/Ventoy%20CI?label=actions&logo=github&style=for-the-badge">
</p> </p>
<h4 align="left"> <h4 align="left">
@@ -37,6 +38,12 @@ FydeOS, CloudReady
**Other** **Other**
VMware ESXi, Citrix XenServer, Xen XCP-ng VMware ESXi, Citrix XenServer, Xen XCP-ng
# Subscription Service
Ventoy is an open source software under GPLv3 license.
But Ventoy project need to pay for the server hosting, domain name, bandwidth, many USB sticks for test, large capacity of HDD (for downloading ISO files) and so on.
For the better and sustainable development of Ventoy, I provide the [【subscription service】](https://www.ventoy.net/en/doc_subscription.html).
# Tested Image Report # Tested Image Report
[【How to report a successfully tested image file】](https://github.com/ventoy/Ventoy/issues/1195) [【How to report a successfully tested image file】](https://github.com/ventoy/Ventoy/issues/1195)

View File

@@ -297,7 +297,7 @@ int read_sort_file(char *filename, int source, char *source_path[])
} else if((errno == ERANGE) || } else if((errno == ERANGE) ||
(priority < -32768 || priority > 32767)) { (priority < -32768 || priority > 32767)) {
ERROR("Sort file \"%s\", entry \"%s\" has priority " ERROR("Sort file \"%s\", entry \"%s\" has priority "
"outside range of -32767:32768.\n", filename, "outside range of -32768:32767.\n", filename,
line_buffer); line_buffer);
goto failed; goto failed;
} }