mirror of
https://github.com/ventoy/Ventoy.git
synced 2025-09-18 18:01:14 +00:00
Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
82e99a3b37 | ||
|
b685431d66 | ||
|
8be8fd50b3 | ||
|
999b15c4ef | ||
|
28998edd94 | ||
|
2ad69decad | ||
|
c2cc0bd3dc | ||
|
b128a0b6d3 | ||
|
676831dbbe | ||
|
e5fa5e6d84 | ||
|
76a6b8061c | ||
|
036b58ff0c | ||
|
8e529c8559 |
2
.github/ISSUE_TEMPLATE/issue_template.yml
vendored
2
.github/ISSUE_TEMPLATE/issue_template.yml
vendored
@@ -21,7 +21,7 @@ body:
|
||||
attributes:
|
||||
label: Ventoy Version
|
||||
description: What version of ventoy are you running?
|
||||
placeholder: 1.0.63
|
||||
placeholder: 1.0.65
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
|
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
@@ -27,6 +27,10 @@ jobs:
|
||||
with:
|
||||
name: ventoy-livecd
|
||||
path: INSTALL/ventoy-*livecd*
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: SHA256SUM
|
||||
path: INSTALL/sha256.txt
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: xxx-build-log
|
||||
|
@@ -68,9 +68,17 @@ static volatile ko_param g_ko_param =
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
||||
|
||||
#if defined(CONFIG_X86_64)
|
||||
#define PATCH_OP_POS 3
|
||||
#define CODE_MATCH(code, i) \
|
||||
(code[i] == 0x40 && code[i + 1] == 0x80 && code[i + 2] == 0xce && code[i + 3] == 0x80)
|
||||
#elif defined(CONFIG_X86_32)
|
||||
#define PATCH_OP_POS 2
|
||||
#define CODE_MATCH(code, i) \
|
||||
(code[i] == 0x80 && code[i + 1] == 0xca && code[i + 2] == 0x80 && code[i + 3] == 0xe8)
|
||||
#else
|
||||
#error "unsupported arch"
|
||||
#endif
|
||||
|
||||
#define vdebug(fmt, args...) if(kprintf) kprintf(KERN_ERR fmt, ##args)
|
||||
|
||||
@@ -88,7 +96,7 @@ static int notrace dmpatch_replace_code(unsigned long addr, unsigned long size,
|
||||
{
|
||||
if (CODE_MATCH(opCode, i) && cnt < MAX_PATCH)
|
||||
{
|
||||
patch[cnt] = opCode + i + 3;
|
||||
patch[cnt] = opCode + i + PATCH_OP_POS;
|
||||
cnt++;
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
1. install ubuntu 21.10
|
||||
2. apt-get install build-essential flex ncurse linux-headers-generic linux-source ...... and so on
|
||||
2. apt-get install build-essential flex libncurses-dev linux-headers-generic linux-source libssl-dev ...... and so on
|
||||
3. cp /lib/modules/5.13.0-23-generic/build/Module.symvers ./
|
||||
4. /boot/config-5.13.0-23-generic as .config make oldconfig
|
||||
5. make menuconfig
|
||||
@@ -9,6 +9,7 @@
|
||||
6. modify ./scripts/mod/modpost.c
|
||||
1. skip add_srcversion (just return)
|
||||
2. force add_retpoline (#ifdef --> #ifndef)
|
||||
3. force add_intree_flag
|
||||
|
||||
7. make modules_prepare LOCALVERSION=-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
|
||||
|
@@ -54,8 +54,15 @@ fi
|
||||
if [ -f $VTOY_PATH/autoinstall ]; then
|
||||
echo "Do auto install ..." >> $VTLOG
|
||||
|
||||
if $GREP -q "^mount /proc$" /init; then
|
||||
$SED "/^mount \/proc/a export file=$VTOY_PATH/autoinstall; export auto='true'; export priority='critical'" -i /init
|
||||
if $GREP -q '^autoinstall:' $VTOY_PATH/autoinstall; then
|
||||
echo "cloud-init auto install ..." >> $VTLOG
|
||||
if $GREP -q "maybe_break init" /init; then
|
||||
$SED "/maybe_break init/i $BUSYBOX_PATH/sh $VTOY_PATH/hook/debian/ventoy-cloud-init.sh \$rootmnt" -i /init
|
||||
fi
|
||||
else
|
||||
if $GREP -q "^mount /proc$" /init; then
|
||||
$SED "/^mount \/proc/a export file=$VTOY_PATH/autoinstall; export auto='true'; export priority='critical'" -i /init
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
63
IMG/cpio/ventoy/hook/debian/ventoy-cloud-init.sh
Normal file
63
IMG/cpio/ventoy/hook/debian/ventoy-cloud-init.sh
Normal file
@@ -0,0 +1,63 @@
|
||||
#!/ventoy/busybox/sh
|
||||
#************************************************************************************
|
||||
# Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#************************************************************************************
|
||||
|
||||
. /ventoy/hook/ventoy-hook-lib.sh
|
||||
|
||||
vtlog "####### $0 $* ########"
|
||||
|
||||
VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
|
||||
|
||||
newroot=$1
|
||||
|
||||
dd if=/dev/zero of=$newroot/tmp/cidata.img bs=1M count=8 status=none
|
||||
freeloop=$(losetup -f)
|
||||
|
||||
losetup $freeloop $newroot/tmp/cidata.img
|
||||
|
||||
mkfs.vfat -n CIDATA $freeloop
|
||||
|
||||
mkdir /tmpcidata
|
||||
mount $newroot/tmp/cidata.img /tmpcidata
|
||||
|
||||
vtSplit=$(grep VENTOY_META_DATA_SPLIT $VTOY_PATH/autoinstall | wc -l)
|
||||
if [ $vtSplit -eq 1 ]; then
|
||||
vtlog "split autoinstall script to user-data and meta-data"
|
||||
vtLine=$(grep -n VENTOY_META_DATA_SPLIT $VTOY_PATH/autoinstall | awk -F: '{print $1}')
|
||||
vtLine1=$(expr $vtLine - 1)
|
||||
vtLine2=$(expr $vtLine + 1)
|
||||
vtlog "Line number: $vtLine $vtLine1 $vtLine2"
|
||||
sed -n "1,${vtLine1}p" $VTOY_PATH/autoinstall >/tmpcidata/user-data
|
||||
sed -n "${vtLine2},\$p" $VTOY_PATH/autoinstall >/tmpcidata/meta-data
|
||||
else
|
||||
vtlog "only user-data avaliable"
|
||||
cp -a $VTOY_PATH/autoinstall /tmpcidata/user-data
|
||||
touch /tmpcidata/meta-data
|
||||
fi
|
||||
|
||||
|
||||
umount /tmpcidata
|
||||
rm -rf /tmpcidata
|
||||
|
||||
vtCMD=$(cat /proc/cmdline)
|
||||
echo "autoinstall $vtCMD" > $newroot/tmp/kcmdline
|
||||
mount --bind $newroot/tmp/kcmdline /proc/cmdline
|
||||
|
||||
|
||||
PATH=$VTPATH_OLD
|
||||
|
@@ -256,6 +256,8 @@ ventoy_dm_patch() {
|
||||
|
||||
if echo $vtMType | $EGREP -i -q "x86.64|amd64"; then
|
||||
vtKoName=dm_patch_64.ko
|
||||
elif echo $vtMType | $EGREP -i -q "i[3-6]86"; then
|
||||
vtKoName=dm_patch_32.ko
|
||||
else
|
||||
vtlog "unsupported machine type $vtMType"
|
||||
return
|
||||
|
BIN
IMG/cpio_x86/ventoy/tool/dm_patch_32.ko
Normal file
BIN
IMG/cpio_x86/ventoy/tool/dm_patch_32.ko
Normal file
Binary file not shown.
Binary file not shown.
@@ -56,10 +56,15 @@ fi
|
||||
|
||||
# check size
|
||||
if echo $size | grep -q "^[0-9][0-9]*$"; then
|
||||
if [ $size -le 1 ]; then
|
||||
echo "Invalid size $size"
|
||||
exit 1
|
||||
vtMinSize=1
|
||||
if echo $fstype | grep -q '^xfs$'; then
|
||||
vtMinSize=16
|
||||
fi
|
||||
|
||||
if [ $size -lt $vtMinSize ]; then
|
||||
echo "size too small ($size)"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "Invalid size $size"
|
||||
exit 1
|
||||
|
@@ -2022,7 +2022,7 @@ function img_unsupport_menuentry {
|
||||
#############################################################
|
||||
#############################################################
|
||||
|
||||
set VENTOY_VERSION="1.0.64"
|
||||
set VENTOY_VERSION="1.0.65"
|
||||
|
||||
#ACPI not compatible with Window7/8, so disable by default
|
||||
set VTOY_PARAM_NO_ACPI=1
|
||||
|
@@ -217,4 +217,6 @@ else
|
||||
fi
|
||||
|
||||
rm -f log.txt
|
||||
rm -f sha256.txt
|
||||
sha256sum ventoy-${curver}-* > sha256.txt
|
||||
|
||||
|
@@ -2156,11 +2156,11 @@
|
||||
"STR_VTSI_CREATE_TIP":"Den här gången skrivs det inget till enheten, utan det skapas endast en VTSI-fil#@Fortsätta?",
|
||||
"STR_VTSI_CREATE_SUCCESS":"VTSI-filen skapad!#@Använd Rufus (3.15+) till att skriva till enheten för att slutföra installationen av Ventoy.",
|
||||
"STR_VTSI_CREATE_FAILED":"Misslyckades med att skapa VTSI-filen.",
|
||||
"STR_MENU_PART_RESIZE":"Non-destructive Install",
|
||||
"STR_PART_RESIZE_TIP":"Ventoy will try non-destructive installation if possible. #@Continue?",
|
||||
"STR_PART_RESIZE_SUCCESS":"Congratulations!#@Ventoy non-destructive installation successfully finished.",
|
||||
"STR_PART_RESIZE_FAILED":"Non-destructive installation failed, Check log.txt for details.",
|
||||
"STR_PART_RESIZE_UNSUPPORTED":"Ventoy non-destructive installation stopped because some conditions cannot be met. Check log.txt for details.",
|
||||
"STR_MENU_PART_RESIZE":"Icke-förstörande installation",
|
||||
"STR_PART_RESIZE_TIP":"Om det är möjligt kommer Ventoy att försöka göra en icke-förstörande installation. #@Fortsätta?",
|
||||
"STR_PART_RESIZE_SUCCESS":"Gratulerar!#@Ventoy lyckades slutföra en icke-förstörande installation.",
|
||||
"STR_PART_RESIZE_FAILED":"Ventoy misslyckades slutföra en icke-förstörande installation. Mer information finns i log.txt.",
|
||||
"STR_PART_RESIZE_UNSUPPORTED":"Icke-förstörande installation stoppades eftersom vissa villkor inte kunde uppfyllas. Mer information finns i log.txt.",
|
||||
|
||||
"STRXXX":""
|
||||
},
|
||||
@@ -2384,11 +2384,11 @@
|
||||
"STR_VTSI_CREATE_TIP":"Tällä kerralla laitteeseen ei kirjoiteta, vaan luodaan ainoastaan VTSI -tiedosto#@Jatketaanko?",
|
||||
"STR_VTSI_CREATE_SUCCESS":"VTSI -tiedosto luotiin onnistuneesti!#@Voit käyttää Rufus-ohjelmaa(3.15+) kirjoittaaksesi sen laitteeseen viimeistelläksesi Ventoy-asennuksen.",
|
||||
"STR_VTSI_CREATE_FAILED":"VTSI -tiedoston luominen epäonnistui.",
|
||||
"STR_MENU_PART_RESIZE":"Non-destructive Install",
|
||||
"STR_PART_RESIZE_TIP":"Ventoy will try non-destructive installation if possible. #@Continue?",
|
||||
"STR_PART_RESIZE_SUCCESS":"Congratulations!#@Ventoy non-destructive installation successfully finished.",
|
||||
"STR_PART_RESIZE_FAILED":"Non-destructive installation failed, Check log.txt for details.",
|
||||
"STR_PART_RESIZE_UNSUPPORTED":"Ventoy non-destructive installation stopped because some conditions cannot be met. Check log.txt for details.",
|
||||
"STR_MENU_PART_RESIZE":"Ei-tuhoisa asennus",
|
||||
"STR_PART_RESIZE_TIP":"Ventoy kokeilee ei-tuhoisaa asennusta mikäli tämä on mahdollista. #@Jatketaanko?",
|
||||
"STR_PART_RESIZE_SUCCESS":"Onnittelut!#@Ventoyn ei-tuhoisa asennus saapui päätökseen onnistuneesti.",
|
||||
"STR_PART_RESIZE_FAILED":"Ei-tuhoisa asennusmuoto epäonnistui, tarkista log.txt nähdäksesi yksityiskohtaiset tiedot.",
|
||||
"STR_PART_RESIZE_UNSUPPORTED":"Ventoyn ei-tuhoisa asennus pysähtyi koska jotkut ehdot eivät täyttyneet. Tarkista log.txt nähdäksesi yksityiskohdat.",
|
||||
|
||||
"STRXXX":""
|
||||
},
|
||||
@@ -2447,6 +2447,63 @@
|
||||
"STR_PART_RESIZE_FAILED":"Erro na instalación non destructiva, revisa o arquivo log.txt para ver os detalles.",
|
||||
"STR_PART_RESIZE_UNSUPPORTED":"Instalación non destructiva do Ventoy interrompida porque non se poden cumprir algunhas condicións. Revisa o arquivo log.txt para mais detalles.",
|
||||
|
||||
"STRXXX":""
|
||||
},
|
||||
{
|
||||
"name":"Catalan (Català)",
|
||||
"FontFamily":"Courier New",
|
||||
"FontSize":16,
|
||||
"Author":"guillemglez",
|
||||
|
||||
"STR_ERROR":"Error",
|
||||
"STR_WARNING":"Avís",
|
||||
"STR_INFO":"Info",
|
||||
"STR_INCORRECT_DIR":"Cal executar-ho en el directori correcte!",
|
||||
"STR_INCORRECT_TREE_DIR":"No m'executis aquí, si us plau, baixa el paquet d'instal·lació publicat i executa-ho allí.",
|
||||
"STR_DEVICE":"Dispositiu",
|
||||
"STR_LOCAL_VER":"Ventoy localment",
|
||||
"STR_DISK_VER":"Ventoy al dispositiu",
|
||||
"STR_STATUS":"Estat - Llest",
|
||||
"STR_INSTALL":"Instal·la",
|
||||
"STR_UPDATE":"Actualitza",
|
||||
"STR_UPDATE_TIP":"L'actualització és segura i els fitxers ISO no es veuran afectats.#@Continuar?",
|
||||
"STR_INSTALL_TIP":"El dispositiu serà formatat i totes les dades es perdran.#@Continuar?",
|
||||
"STR_INSTALL_TIP2":"El dispositiu serà formatat i totes les dades es perdran.#@Continuar? (Confirmeu)",
|
||||
"STR_INSTALL_SUCCESS":"Enhorabona!#@Ventoy s'ha instal·lat al vostre dispositiu de forma satisfactòria.",
|
||||
"STR_INSTALL_FAILED":"Hi ha hagut un error durant el procés d'instal·lació. Podeu desconnectar i tornar-lo a connectar i provar-ho de nou. Comproveu el fitxer log.txt per a més detalls. Si això passa sovint visiteu el FAQs a la nostra pàgina oficial.",
|
||||
"STR_UPDATE_SUCCESS":"Enhorabona!#@Ventoy s'ha actualitzat al vostre dispositiu de forma satisfactòria.",
|
||||
"STR_UPDATE_FAILED":"Hi ha hagut un error durant el procés d'actualització. Podeu desconnectar i tornar-lo a connectar i provar-ho de nou. Comproveu el fitxer log.txt per a més detalls. Si això passa sovint visiteu el FAQs a la nostra pàgina oficial.",
|
||||
"STR_WAIT_PROCESS":"Hi ha una operació en curs, espereu si us plau...",
|
||||
"STR_MENU_OPTION":"Opcions",
|
||||
"STR_MENU_SECURE_BOOT":"Arrencada segura",
|
||||
"STR_MENU_PART_CFG":"Ajustaments de partició",
|
||||
"STR_BTN_OK":"D'acord",
|
||||
"STR_BTN_CANCEL":"Cancel·la",
|
||||
"STR_PRESERVE_SPACE":"Preserva espai al final del disc",
|
||||
"STR_SPACE_VAL_INVALID":"Valor d'espai reservat invàlid",
|
||||
"STR_MENU_CLEAR":"Esborra el Ventoy",
|
||||
"STR_CLEAR_SUCCESS":"Ventoy s'ha esborrat satisfactòriament del dispositiu.",
|
||||
"STR_CLEAR_FAILED":"Hi ha hagut un error mentre s'esborrava Ventoy del dispositiu. Podeu desconnectar i tornar-lo a connectar i provar-ho de nou. Comproveu el fitxer log.txt per a més detalls.",
|
||||
"STR_MENU_PART_STYLE":"Estil de partició",
|
||||
"STR_DISK_2TB_MBR_ERROR":"Sel·leccioneu GPT per dispositius de més de 2 TB",
|
||||
"STR_SHOW_ALL_DEV":"Mostra tots els dispositius",
|
||||
"STR_PART_ALIGN_4KB":"Alinea les particions a 4 KB",
|
||||
"STR_WEB_COMMUNICATION_ERR":"Error de comunicació:",
|
||||
"STR_WEB_REMOTE_ABNORMAL":"Error de comunicació: anomalia al servidor",
|
||||
"STR_WEB_REQUEST_TIMEOUT":"Error de comunicació: s'ha esgotat el temps d'espera",
|
||||
"STR_WEB_SERVICE_UNAVAILABLE":"Error de comunicació: servei no disponible",
|
||||
"STR_WEB_TOKEN_MISMATCH":"S'ha actualitzat l'estat del dimoni, torneu a provar-ho més tard.",
|
||||
"STR_WEB_SERVICE_BUSY":"El servei està sobrecarregat, torneu a provar-ho més tard.",
|
||||
"STR_MENU_VTSI_CREATE":"Genera un fitxer VTSI",
|
||||
"STR_VTSI_CREATE_TIP":"Aquest cop no s'escriuran els canvis al dispositiu, sinó que es generarà un fitxer VTSI#@Continuar?",
|
||||
"STR_VTSI_CREATE_SUCCESS":"El fitxer VTSI s'ha creat satisfactòriament!#@Pots fer servir Rufus(3.15+) per escriure'l al dispositiu i completar així la instal·lació de Ventoy.",
|
||||
"STR_VTSI_CREATE_FAILED":"No s'ha pogut crear el fitxer VTSI",
|
||||
"STR_MENU_PART_RESIZE":"Instal·lació no destructiva",
|
||||
"STR_PART_RESIZE_TIP":"El Ventoy intentarà una instal·lació no destructiva si és possible. #@Continuar?",
|
||||
"STR_PART_RESIZE_SUCCESS":"Enhorabona!#@La instal·lació no destructiva s'ha completat de forma satisfactòria.",
|
||||
"STR_PART_RESIZE_FAILED":"Hi ha hagut un error durant el procés d'instal·lació no destructiva, comproveu el fitxer log.txt per a més detalls.",
|
||||
"STR_PART_RESIZE_UNSUPPORTED":"La instal·lació no destructiva de Ventoy no ha estat possible perquè els requeriments no es compleixen. Comproveu el fitxer log.txt per a més detalls.",
|
||||
|
||||
"STRXXX":""
|
||||
}
|
||||
]
|
||||
|
@@ -299,6 +299,7 @@ static int VentoyFillProtectMBR(uint64_t DiskSizeBytes, MBR_HEAD *pMBR)
|
||||
vdebug("Disk signature: 0x%08x\n", DiskSignature);
|
||||
|
||||
memcpy(pMBR->BootCode + 0x1B8, &DiskSignature, 4);
|
||||
memcpy(pMBR->BootCode + 0x180, &Guid, 16);
|
||||
|
||||
DiskSectorCount = DiskSizeBytes / 512 - 1;
|
||||
if (DiskSectorCount > 0xFFFFFFFF)
|
||||
@@ -490,6 +491,7 @@ int ventoy_fill_mbr(uint64_t size, uint64_t reserve, int align4k, MBR_HEAD *pMBR
|
||||
vdebug("Disk signature: 0x%08x\n", DiskSignature);
|
||||
|
||||
memcpy(pMBR->BootCode + 0x1B8, &DiskSignature, 4);
|
||||
memcpy(pMBR->BootCode + 0x180, &Guid, 16);
|
||||
|
||||
if (size / 512 > 0xFFFFFFFF)
|
||||
{
|
||||
|
@@ -107,8 +107,8 @@
|
||||
var id = $(this).attr('id');
|
||||
var value = $(this).val();
|
||||
var intval;
|
||||
|
||||
if (id.length <= 16) {
|
||||
|
||||
if (typeof(id) == 'undefined' || id.length <= 16) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
var id = $(this).attr('id');
|
||||
var checked = $(this).is(':checked');
|
||||
|
||||
if (id.length <= 14) {
|
||||
if (typeof(id) == 'undefined' || id.length <= 14) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -156,9 +156,11 @@
|
||||
if (id.startsWith('id_timeout_en_')) {
|
||||
textid = 'input[id=id_text_timeout_' + index + ']';
|
||||
value = data.timeout;
|
||||
data.timeouten = checked;
|
||||
} else {
|
||||
textid = 'input[id=id_text_autosel_' + index + ']';
|
||||
value = data.autosel;
|
||||
data.autoselen = checked;
|
||||
}
|
||||
|
||||
if (checked) {
|
||||
@@ -277,7 +279,9 @@
|
||||
|
||||
$('input[type=text]').each(function (){
|
||||
var id = $(this).attr('id');
|
||||
|
||||
if (typeof(id) == 'undefined') {
|
||||
return;
|
||||
}
|
||||
if (id.startsWith('id_text_timeout_') || id.startsWith('id_text_autosel_')) {
|
||||
$(this).change(OnInputTextChange);
|
||||
}
|
||||
@@ -285,6 +289,9 @@
|
||||
|
||||
$('input[type=checkbox]').each(function (){
|
||||
var id = $(this).attr('id');
|
||||
if (typeof(id) == 'undefined') {
|
||||
return;
|
||||
}
|
||||
if (id.startsWith('id_timeout_en_') || id.startsWith('id_autosel_en_')) {
|
||||
$(this).click(OnCheckBoxChange);
|
||||
}
|
||||
|
@@ -61,15 +61,17 @@
|
||||
<td class="td_ctrl_col">选项说明</td>
|
||||
<td>
|
||||
指定搜索ISO文件的根目录。默认Ventoy会搜索U盘上的所有目录和子目录,当你U盘上有海量的文件时,这个过程会很慢。<br/>
|
||||
这种情况下你可以把ISO文件单独放在某个目录下,然后通过这个变量来指定搜索路径,此时Ventoy就只会搜索该目录及其子目录。
|
||||
这种情况下你可以把ISO文件单独放在某个子目录下,然后通过这个变量来指定搜索路径,此时Ventoy就只会搜索该目录及其子目录。<br/>
|
||||
注意这里不能设置为U盘根目录,必须为一个子目录。
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="tr_title_desc_en">
|
||||
<td class="td_ctrl_col">Option Description</td>
|
||||
<td>
|
||||
The root path where to search the image files. By default, Ventoy will search all the directories and subdirectories in the USB. This will be very slow when you have huge number of files in the USB.
|
||||
In this case, you can put all the image files in one directory and use this to specify the search path.
|
||||
After that Ventoy will only search this directory and its subdirectories for image files.
|
||||
In this case, you can put all the image files in one subdirectory and use this to specify the search path.
|
||||
After that Ventoy will only search this directory and its subdirectories for image files.<br/>
|
||||
Note: the path must not be the mountpoint of the first partition, but a subdirectory.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -1182,7 +1184,7 @@
|
||||
|
||||
$('input[type=radio]').each(function(){
|
||||
var id = $(this).attr('id');
|
||||
if (id.startsWith('id_ctrl')) {
|
||||
if (typeof(id) != 'undefined' && id.startsWith('id_ctrl')) {
|
||||
$(this).change(VtoySaveCurrentPage);
|
||||
}
|
||||
});
|
||||
|
@@ -176,7 +176,7 @@
|
||||
|
||||
$('input[type=radio]').each(function(){
|
||||
var id = $(this).attr('id');
|
||||
if (id.startsWith('id_image_list_type')) {
|
||||
if (typeof(id) != 'undefined' && id.startsWith('id_image_list_type')) {
|
||||
$(this).change(VtoySaveCurrentPage);
|
||||
}
|
||||
});
|
||||
|
@@ -108,7 +108,7 @@
|
||||
var value = $(this).val();
|
||||
var intval;
|
||||
|
||||
if (id.length <= 16) {
|
||||
if (typeof(id) == 'undefined' || id.length <= 16) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
var id = $(this).attr('id');
|
||||
var checked = $(this).is(':checked');
|
||||
|
||||
if (id.length <= 14) {
|
||||
if (typeof(id) == 'undefined' || id.length <= 14) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -156,14 +156,17 @@
|
||||
if (id.startsWith('id_timeout_en_')) {
|
||||
textid = 'input[id=id_text_timeout_' + index + ']';
|
||||
value = data.timeout;
|
||||
data.timeouten = checked;
|
||||
} else {
|
||||
textid = 'input[id=id_text_autosel_' + index + ']';
|
||||
value = data.autosel;
|
||||
data.autoselen = checked;
|
||||
}
|
||||
|
||||
if (checked) {
|
||||
$(textid).attr("disabled", false);
|
||||
$(textid).val(value);
|
||||
|
||||
} else {
|
||||
$(textid).attr("disabled", true);
|
||||
$(textid).val('');
|
||||
@@ -277,6 +280,9 @@
|
||||
|
||||
$('input[type=text]').each(function (){
|
||||
var id = $(this).attr('id');
|
||||
if (typeof(id) == 'undefined') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (id.startsWith('id_text_timeout_') || id.startsWith('id_text_autosel_')) {
|
||||
$(this).change(OnInputTextChange);
|
||||
|
@@ -299,7 +299,7 @@
|
||||
|
||||
$('input[type=radio]').each(function(){
|
||||
var id = $(this).attr('id');
|
||||
if (id.startsWith('id_theme_file')) {
|
||||
if (typeof(id) != 'undefined' && id.startsWith('id_theme_file')) {
|
||||
$(this).change(function() {
|
||||
m_data_theme[current_tab_index].default_file =parseInt(id.substr(id.length - 1));
|
||||
VtoySaveCurrentPage();
|
||||
|
@@ -1064,13 +1064,13 @@ var g_type_select_validator = $("#TypeSelectForm").validate({
|
||||
function VtoySelectType(cb, para) {
|
||||
|
||||
$('#TypeSelectForm #TypeSelForm_lang_1').text(g_vtoy_cur_language.STR_SELECT);
|
||||
|
||||
|
||||
if (g_current_language === 'en') {
|
||||
$('#SetDirForm #SetDirForm_lang_2').text(" OK");
|
||||
$('#SetDirForm #SetDirForm_lang_3').text("Cancel");
|
||||
$('#TypeSelectForm #TypeSelForm_lang_2').text(" OK");
|
||||
$('#TypeSelectForm #TypeSelForm_lang_3').text("Cancel");
|
||||
} else {
|
||||
$('#SetDirForm #SetDirForm_lang_2').text("确定");
|
||||
$('#SetDirForm #SetDirForm_lang_3').text("取消");
|
||||
$('#TypeSelectForm #TypeSelForm_lang_2').text("确定");
|
||||
$('#TypeSelectForm #TypeSelForm_lang_3').text("取消");
|
||||
}
|
||||
|
||||
var $tbl = $("#id_type_select_table tbody");
|
||||
@@ -1133,11 +1133,11 @@ function VtoySetKey(cb, para) {
|
||||
$('#SetKeyForm #SetKeyForm_lang_3').text(para.title2);
|
||||
|
||||
if (g_current_language === 'en') {
|
||||
$('#SetDirForm #SetDirForm_lang_4').text(" OK");
|
||||
$('#SetDirForm #SetDirForm_lang_5').text("Cancel");
|
||||
$('#SetKeyForm #SetKeyForm_lang_4').text(" OK");
|
||||
$('#SetKeyForm #SetKeyForm_lang_5').text("Cancel");
|
||||
} else {
|
||||
$('#SetDirForm #SetDirForm_lang_4').text("确定");
|
||||
$('#SetDirForm #SetDirForm_lang_5').text("取消");
|
||||
$('#SetKeyForm #SetKeyForm_lang_4').text("确定");
|
||||
$('#SetKeyForm #SetKeyForm_lang_5').text("取消");
|
||||
}
|
||||
|
||||
g_set_key_callback = cb;
|
||||
@@ -1395,15 +1395,15 @@ function VtoySetDirFile(cb, para) {
|
||||
$('#SetDirFileModal #SetDirFileForm_label2').text(para.label2);
|
||||
|
||||
if (g_current_language === 'en') {
|
||||
$('#SetDirFileModal #SetDirFileModal_ok').text(" OK");
|
||||
$('#SetDirFileModal #SetDirFileModal_cancel').text("Cancel");
|
||||
$('#SetDirFileModal #SetDirFileForm_ok').text(" OK");
|
||||
$('#SetDirFileModal #SetDirFileForm_cancel').text("Cancel");
|
||||
|
||||
$('#SetDirFileModal #id_note_dirfile_cn').hide();
|
||||
$('#SetDirFileModal #id_note_dirfile_en').show();
|
||||
|
||||
} else {
|
||||
$('#SetDirFileModal #SetDirFileModal_ok').text("确定");
|
||||
$('#SetDirFileModal #SetDirFileModal_cancel').text("取消");
|
||||
$('#SetDirFileModal #SetDirFileForm_ok').text("确定");
|
||||
$('#SetDirFileModal #SetDirFileForm_cancel').text("取消");
|
||||
|
||||
$('#SetDirFileModal #id_note_dirfile_en').hide();
|
||||
$('#SetDirFileModal #id_note_dirfile_cn').show();
|
||||
|
@@ -16,7 +16,7 @@ You can copy many image files at a time and ventoy will give you a boot menu to
|
||||
x86 Legacy BIOS, IA32 UEFI, x86_64 UEFI, ARM64 UEFI and MIPS64EL UEFI are supported in the same way.<br/>
|
||||
Both MBR and GPT partition style are supported in the same way.<br/>
|
||||
Most type of OS supported(Windows/WinPE/Linux/Unix/ChromeOS/Vmware/Xen...) <br/>
|
||||
780+ ISO files are tested (<a href="https://www.ventoy.net/en/isolist.html">List</a>). 90%+ distros in <a href="https://distrowatch.com/">distrowatch.com</a> supported (<a href="https://www.ventoy.net/en/distrowatch.html">Details</a>). <br/>
|
||||
800+ ISO files are tested (<a href="https://www.ventoy.net/en/isolist.html">List</a>). 90%+ distros in <a href="https://distrowatch.com/">distrowatch.com</a> supported (<a href="https://www.ventoy.net/en/distrowatch.html">Details</a>). <br/>
|
||||
<br/>Official Website: <a href=https://www.ventoy.net>https://www.ventoy.net</a>
|
||||
</h4>
|
||||
|
||||
@@ -58,7 +58,7 @@ A GUI Ventoy plugin configurator. [VentoyPlugson](https://www.ventoy.net/en/plug
|
||||
* FAT32/exFAT/NTFS/UDF/XFS/Ext2(3)(4) supported for main partition
|
||||
* ISO files larger than 4GB supported
|
||||
* Native boot menu style for Legacy & UEFI
|
||||
* Most type of OS supported, 780+ iso files tested
|
||||
* Most type of OS supported, 800+ iso files tested
|
||||
* Linux vDisk boot supported
|
||||
* Not only boot but also complete installation process
|
||||
* Menu dynamically switchable between List/TreeView mode
|
||||
|
Reference in New Issue
Block a user