Compare commits

..

92 Commits

Author SHA1 Message Date
longpanda cb209f9b9e 1.0.99 3 weeks ago
Andrei Stepanov b7b2f6a5c1
Update Russian translation (#2857) 3 weeks ago
Zohir Tamda 3967fb5fb5
Fix French language (#2850)
Co-authored-by: tamdaz <tamda.zohir.pro@gmail.com>
3 weeks ago
bovirus a2ad95792d
Fixed Italian language (#2840) 3 weeks ago
Re*Index. (ot_inc) 791308d2ce
Japanese Fix typo. (#2839)
* Japanese translation Fixed.

* Fix typo

Fix Typo.
3 weeks ago
longpanda 0ffb1b15ef Fix the issue that VTOY_LINUX_REMOUNT option does not take effect in latest openSUSE. (#2551) 1 month ago
longpanda d6e1730ca0 Fix the install issue for /dev/mdX device. (#2846) 1 month ago
longpanda 4d55f505f9 Fix the UEFI boot issue for some computer. 1 month ago
longpanda 30a61ac5c4 1.0.98 release 1 month ago
Re*Index. (ot_inc) 9b79831516
Japanese translation Fixed. (#2808) 1 month ago
jermanuts af2d6bc247
Update ar_AR.json (#2755)
* Update ar_AR.json

* Update ar_AR.json
1 month ago
bovirus d8ae740427
Update Italian help/menu (#2752) 1 month ago
Samuel Johnson b685157ae3
Minor Update on README.md for Consistency (#2687) 1 month ago
Fabian-Gruenbichler 3f6ddb6fb6
support zvol devices (#2678)
their partitions are exposed as "/dev/zdXXpY", handle accordingly.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
1 month ago
Zhymabek Roman b8838b305d
Adding root user check to ExtendPersistentImg (as in CreatePersistentImg) (#2633)
* Adding root user check & Enhance help info

* Update root user check
1 month ago
Batuhan 00de8b932d
Update tr_TR.txt (#2618)
corrected grammar mistakes, fixed typos
1 month ago
WebSnke 1e49dbe957
Update German translation (#2612) 1 month ago
Ida Bagus 580416facc
Update languages.json (#2600)
minor update for indonesian language
1 month ago
gcf 75cf728fa9
The gpt pointer is not initialized, and when offset < 0, it may result in freeing unallocated memory. (#2499)
Signed-off-by: yuxiaojun <yuxiaojun1011@outlook.com>
Co-authored-by: yuxiaojun <yuxiaojun1011@outlook.com>
1 month ago
Ikko Eltociear Ashimine 8723aeb4cc
fix typo in diskio.h (#2497)
fucntion -> function
1 month ago
SunderB dc9a99bb20
Correct some spelling and grammar in BuildVentoyFromSource.txt (#2491) 1 month ago
Hoang Nguyen a40456d9d2
Added Vietnamese language support for GRUB and updated Vietnamese translation of the installer (#2362)
* Updated Vietnamese language

Added new translation for `STR_4KN_UNSUPPORTED` and retouched in some places

* Added Vietnamese language support for GRUB menu

* Removed vi_VN from helplist and menulist
1 month ago
Balázs Úr bdab55e8aa
Updated Hungarian translation (#2836) 1 month ago
longpanda 1b2483ec14 Skip trash directory by default. (#2831) 1 month ago
longpanda c16e76130b Fix VTOY_LINUX_REMOUNT option for latest CentOS 9 Stream. (#2827) 1 month ago
longpanda d672af4819 Support ext4 fs with checksum seed feature. 1 month ago
longpanda 712f10e86a Fix VTOY_LINUX_REMOUNT feature in RHEL 9.4+ (#2827) 2 months ago
longpanda 2be340d2e8 update 2 months ago
longpanda b77ef718b4 bugfix 2 months ago
longpanda 72f5710b88 Fix arch iso boot issue (#2825 #2824) 2 months ago
longpanda ee7da60d88 Fix the boot issue for latest KAOS. 3 months ago
longpanda 44fb9f4564 Fix the VTOY_LINUX_REMOUNT option on latest linux kernel 3 months ago
longpanda 3f65f0ef03 1.0.97 release 5 months ago
longpanda 4faa5e4344 update tool 5 months ago
longpanda c7693d4ecd Fix VTOY_LINUX_REMOUNT option does not work with latest linux kernel version. (#2661 #2674) 5 months ago
longpanda 4527e1db79 Add support for FreeBSD 14.0 5 months ago
longpanda 757cacf274 Fix Proxmox 8.1 boot issue. (#2657) 7 months ago
longpanda 39703cabb7 Fix the VentoyPlugson issue that default_file value is wrong for more than 10 theme files. (#2608) 9 months ago
longpanda 854d17a4e9 1.0.96 release 9 months ago
Maicol Battistini a326b13fc3
Added italian translation (#2580) 9 months ago
longpanda 3ff1867a2a Fix the warning prompt for Ventoy2Disk.sh (#2593) 9 months ago
longpanda 7f63a1c327 Fix the issue that VTOY_LINUX_REMOUNT=1 does not work on some distros (e.g. Pop OS/openSUSE/Ubuntu 23.04) (#2475 #2551) 9 months ago
longpanda d617985093 Add escaping for path in VentoyPlugson.sh (#2585) 9 months ago
longpanda 605da1ba94 Fix that bootpwd not working for VentoyPlugson. (#2584) 9 months ago
longpanda c8dc36a5c3 1.0.95 release 10 months ago
I'm an OSK user, are you? 689f7df902
Update Swedish language (#2443) 10 months ago
Sönke Joppien a9d53e7448
Update German translation (#2500) 10 months ago
Hugo Carvalho 46061bcd41
Update languages.json (#2504)
Update Portuguese (Portugal) translation
10 months ago
Felipe 01b0de7811
Updated brazilian portuguese translation - aside that included 2 missing translations. (#2533)
* Updated brazilian portuguese translation

Translated one string that wasnt translated and fixed the other ones.

* Added a brazilian portuguese file

It was missing one, suggested by https://www.ventoy.net/en/doc_menu_language.html

* Added a brazilian portuguese file

One was missing, again this is also a suggestion of https://www.ventoy.net/en/doc_menu_language.html
10 months ago
longpanda 2fee243a56 Support drag resize dialog window width. 10 months ago
longpanda d0e10f8e48 Support veket_24 11 months ago
longpanda 7ff243f9bb Fix the media missing issue when boot UOS server ISO file. 11 months ago
longpanda f8811a4656 1.0.94 release 11 months ago
VenusGirl❤ 0ce90ad9b9
Update ko_KR.json (#2483) 11 months ago
Vasilis 5bfddae81d
Update languages.json (#2482)
Greek language update
11 months ago
YALdysse 2991f097fb
fixed ukrainian translation (#2469)
* Update uk_UA.txt

* fix ukrainian translation
11 months ago
Stanislav 986835338d
i18n: Small fix Russian language (#2473)
* i18n: Small fix Russian language

* Update languages.json
11 months ago
bovirus f2562fecb9
Update italian strings (#2465) 11 months ago
Jianfeng Liu 529541f218
fix Synchronous Exception on some arm cpus (#2488) 11 months ago
longpanda 430f81ac49 cc 1 year ago
longpanda 038c0533d9 1.0.92 release 1 year ago
lollilol 102b179cd9
change password input field to type=password (#2427) 1 year ago
Kosta Stojiljkovic 6785f5d049
Added Serbian translation for STR_4KN_UNSUPPORTED strings for cyrilic and latin scripts. (#2406) 1 year ago
William Poetra Yoga 0c812ed5e9
fix: grep warning (#2398) 1 year ago
Blaž Osredkar 9f2b9b0867
Added Slovenian language (#2378) 1 year ago
wiz64 c79b072680
Update languages.json (viva l' ventoy) (#2372) 1 year ago
Nikolas Garofil 6b4509a550
Environment typos (#2368) 1 year ago
longpanda feea11e2bb Support unattended auto install for Deepin/UOS 1 year ago
A1ive 35c952d891
Correct EFI chainloader image device path (#2397) 1 year ago
Dolphin Oracle 82053680bf
Update ventoy-hook.sh for MX Linux (#2390)
due to a systemd issue, we had to rename initrd-release to initrd_release.
1 year ago
longpanda 6d5de12f52 Merge branch 'master' of https://github.com/ventoy/Ventoy 1 year ago
longpanda 84b2ee7ee3 Fix the boot issue for Fedora/CentOS when file name contains special character (e.g. '(' ) #2360 1 year ago
K.B.Dharun Krishna da1b306e81
ci.yml: bump actions to v3 to fix node warning (#2341) 1 year ago
longpanda 0961ce5624 1.0.91 release 1 year ago
longpanda 07574f0379 Improve grub2 mode process for legacy BIOS mode. 1 year ago
Steve 142aa47944
fixed german translation (#2318)
* Updated german translation

#2277 has an small issue (misstyping; "nocht" should read "noch")
Changed the translation. It is minimally shorter.

* fixed german translation
1 year ago
longpanda 11739fa9d0 Fix a bug that Fedora boot error if Ventoy partition is NTFS. (#2333) 1 year ago
longpanda 9fc85051a7 Fix the issue for booting Bliss OS 15.x 1 year ago
longpanda b9e82bcf16 Support FreeBSD 14-CURRENT 1 year ago
longpanda cff3a01289 Support NTFS with large cluster size (greater than 64KB). 1 year ago
longpanda 0f90149c4e 1.0.90 release 1 year ago
longpanda 8ef9732931 Update vtoytool 1 year ago
longpanda b32eda4262 Fix the VTOY_LINUX_REMOUNT option for new linux kernel in intel 11th(and later) gen CPU. 1 year ago
longpanda e743f7c15f Add support for chimera linux. (#2309) 1 year ago
longpanda 652475f1ef Optimization for Fedora boot process 1 year ago
longpanda abfc2a6343 Add checksum jif 1 year ago
longpanda e73ac04cb6 update README.md 1 year ago
StoyanDimitrov 8727e63880
Update languages.json (#2299) 1 year ago
VenusGirl❤ 2d281d7dee
Update ko_KR.json (#2286)
Korean Update
1 year ago
Steve 385c806adf
Updated german translation (#2279)
#2277 has an small issue (misstyping; "nocht" should read "noch")
Changed the translation. It is minimally shorter.
1 year ago
longpanda e869bc2386 Fix the issue that Fedora Rawhide install media not detected. (#2283) 1 year ago
longpanda b47aa1abc7 Support LibreELEC 11.0+ (#2281) 1 year ago

@ -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.87 placeholder: 1.0.96
validations: validations:
required: true required: true
- type: dropdown - type: dropdown

@ -12,26 +12,26 @@ jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- name: Run docker-compose up - name: Run docker-compose up
run: docker-compose up run: docker-compose up
- uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v3
with: with:
name: ventoy-windows name: ventoy-windows
path: INSTALL/ventoy-*windows* path: INSTALL/ventoy-*windows*
- uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v3
with: with:
name: ventoy-linux name: ventoy-linux
path: INSTALL/ventoy-*linux* path: INSTALL/ventoy-*linux*
- uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v3
with: with:
name: ventoy-livecd name: ventoy-livecd
path: INSTALL/ventoy-*livecd* path: INSTALL/ventoy-*livecd*
- uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v3
with: with:
name: SHA256SUM name: SHA256SUM
path: INSTALL/sha256.txt path: INSTALL/sha256.txt
- uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v3
with: with:
name: xxx-build-log name: xxx-build-log
path: DOC/build.log path: DOC/build.log

@ -0,0 +1,7 @@
obj-m += dm_patch_ibt.o
EXTRA_CFLAGS := -Wall -DVTOY_IBT -fcf-protection=branch -mindirect-branch-register
dm_patch_ibt-objs := dmpatch.o

@ -52,7 +52,14 @@ typedef struct ko_param
unsigned long sym_put_addr; unsigned long sym_put_addr;
unsigned long sym_put_size; unsigned long sym_put_size;
unsigned long kv_major; unsigned long kv_major;
unsigned long padding[2]; unsigned long ibt;
unsigned long kv_minor;
unsigned long blkdev_get_addr;
unsigned long blkdev_put_addr;
unsigned long bdev_open_addr;
unsigned long kv_subminor;
unsigned long bdev_file_open_addr;
unsigned long padding[1];
}ko_param; }ko_param;
#pragma pack() #pragma pack()
@ -77,26 +84,103 @@ static volatile ko_param g_ko_param =
#define PATCH_OP_POS2 1 #define PATCH_OP_POS2 1
#define CODE_MATCH2(code, i) \ #define CODE_MATCH2(code, i) \
(code[i] == 0x0C && code[i + 1] == 0x80 && code[i + 2] == 0x89 && code[i + 3] == 0xC6) (code[i] == 0x0C && code[i + 1] == 0x80 && code[i + 2] == 0x89 && code[i + 3] == 0xC6)
#define PATCH_OP_POS3 4
#define CODE_MATCH3(code, i) \
(code[i] == 0x44 && code[i + 1] == 0x89 && code[i + 2] == 0xe8 && code[i + 3] == 0x0c && code[i + 4] == 0x80)
#elif defined(CONFIG_X86_32) #elif defined(CONFIG_X86_32)
#define PATCH_OP_POS1 2 #define PATCH_OP_POS1 2
#define CODE_MATCH1(code, i) \ #define CODE_MATCH1(code, i) \
(code[i] == 0x80 && code[i + 1] == 0xca && code[i + 2] == 0x80 && code[i + 3] == 0xe8) (code[i] == 0x80 && code[i + 1] == 0xca && code[i + 2] == 0x80 && code[i + 3] == 0xe8)
#define PATCH_OP_POS2 2 #define PATCH_OP_POS2 PATCH_OP_POS1
#define CODE_MATCH2(code, i) \ #define CODE_MATCH2 CODE_MATCH1
(code[i] == 0x80 && code[i + 1] == 0xca && code[i + 2] == 0x80 && code[i + 3] == 0xe8) #define PATCH_OP_POS3 PATCH_OP_POS1
#define CODE_MATCH3 CODE_MATCH1
#else #else
#error "unsupported arch" #error "unsupported arch"
#endif #endif
#ifdef VTOY_IBT
#ifdef CONFIG_X86_64
/* Using 64-bit values saves one instruction clearing the high half of low */
#define DECLARE_ARGS(val, low, high) unsigned long low, high
#define EAX_EDX_VAL(val, low, high) ((low) | (high) << 32)
#define EAX_EDX_RET(val, low, high) "=a" (low), "=d" (high)
#else
#define DECLARE_ARGS(val, low, high) unsigned long long val
#define EAX_EDX_VAL(val, low, high) (val)
#define EAX_EDX_RET(val, low, high) "=A" (val)
#endif
#define EX_TYPE_WRMSR 8
#define EX_TYPE_RDMSR 9
#define MSR_IA32_S_CET 0x000006a2 /* kernel mode cet */
#define CET_ENDBR_EN (1ULL << 2)
/* Exception table entry */
#ifdef __ASSEMBLY__
#define _ASM_EXTABLE_TYPE(from, to, type) \
.pushsection "__ex_table","a" ; \
.balign 4 ; \
.long (from) - . ; \
.long (to) - . ; \
.long type ; \
.popsection
#else /* ! __ASSEMBLY__ */
#define _ASM_EXTABLE_TYPE(from, to, type) \
" .pushsection \"__ex_table\",\"a\"\n" \
" .balign 4\n" \
" .long (" #from ") - .\n" \
" .long (" #to ") - .\n" \
" .long " __stringify(type) " \n" \
" .popsection\n"
#endif /* __ASSEMBLY__ */
#endif /* VTOY_IBT */
#define vdebug(fmt, args...) if(kprintf) kprintf(KERN_ERR fmt, ##args) #define vdebug(fmt, args...) if(kprintf) kprintf(KERN_ERR fmt, ##args)
static unsigned int g_claim_ptr = 0;
static unsigned char *g_get_patch[MAX_PATCH] = { NULL }; static unsigned char *g_get_patch[MAX_PATCH] = { NULL };
static unsigned char *g_put_patch[MAX_PATCH] = { NULL }; static unsigned char *g_put_patch[MAX_PATCH] = { NULL };
static void notrace dmpatch_restore_code(unsigned char *opCode) static int notrace dmpatch_kv_above(unsigned long Major, unsigned long Minor, unsigned long SubMinor)
{
if (g_ko_param.kv_major != Major)
{
return (g_ko_param.kv_major > Major) ? 1 : 0;
}
if (g_ko_param.kv_minor != Minor)
{
return (g_ko_param.kv_minor > Minor) ? 1 : 0;
}
if (g_ko_param.kv_subminor != SubMinor)
{
return (g_ko_param.kv_subminor > SubMinor) ? 1 : 0;
}
return 1;
}
static void notrace dmpatch_restore_code(int bytes, unsigned char *opCode, unsigned int code)
{ {
unsigned long align; unsigned long align;
@ -104,7 +188,14 @@ static void notrace dmpatch_restore_code(unsigned char *opCode)
{ {
align = (unsigned long)opCode / g_ko_param.pgsize * g_ko_param.pgsize; align = (unsigned long)opCode / g_ko_param.pgsize * g_ko_param.pgsize;
set_mem_rw(align, 1); set_mem_rw(align, 1);
*opCode = 0x80; if (bytes == 1)
{
*opCode = (unsigned char)code;
}
else
{
*(unsigned int *)opCode = code;
}
set_mem_ro(align, 1); set_mem_ro(align, 1);
} }
} }
@ -126,7 +217,7 @@ static int notrace dmpatch_replace_code
vdebug("patch for %s style[%d] 0x%lx %d\n", desc, style, addr, (int)size); vdebug("patch for %s style[%d] 0x%lx %d\n", desc, style, addr, (int)size);
for (i = 0; i < (int)size - 4; i++) for (i = 0; i < (int)size - 8; i++)
{ {
if (style == 1) if (style == 1)
{ {
@ -136,7 +227,7 @@ static int notrace dmpatch_replace_code
cnt++; cnt++;
} }
} }
else else if (style == 2)
{ {
if (CODE_MATCH2(opCode, i) && cnt < MAX_PATCH) if (CODE_MATCH2(opCode, i) && cnt < MAX_PATCH)
{ {
@ -144,8 +235,20 @@ static int notrace dmpatch_replace_code
cnt++; cnt++;
} }
} }
else if (style == 3)
{
if (CODE_MATCH3(opCode, i) && cnt < MAX_PATCH)
{
patch[cnt] = opCode + i + PATCH_OP_POS3;
cnt++;
}
}
} }
if (cnt != expect || cnt >= MAX_PATCH) if (cnt != expect || cnt >= MAX_PATCH)
{ {
vdebug("patch error: cnt=%d expect=%d\n", cnt, expect); vdebug("patch error: cnt=%d expect=%d\n", cnt, expect);
@ -166,14 +269,285 @@ static int notrace dmpatch_replace_code
return 0; return 0;
} }
static int notrace dmpatch_init(void) static unsigned long notrace dmpatch_find_call_offset(unsigned long addr, unsigned long size, unsigned long func)
{
unsigned long i = 0;
unsigned long dest;
unsigned char *opCode = NULL;
unsigned char aucOffset[8] = { 0, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF };
opCode = (unsigned char *)addr;
for (i = 0; i + 4 < size; i++)
{
if (opCode[i] == 0xE8)
{
aucOffset[0] = opCode[i + 1];
aucOffset[1] = opCode[i + 2];
aucOffset[2] = opCode[i + 3];
aucOffset[3] = opCode[i + 4];
dest = addr + i + 5 + *(unsigned long *)aucOffset;
if (dest == func)
{
return i;
}
}
}
return 0;
}
static unsigned int notrace dmpatch_patch_claim_ptr(void)
{
unsigned long i = 0;
unsigned long t = 0;
unsigned long offset1 = 0;
unsigned long offset2 = 0;
unsigned long align = 0;
unsigned char *opCode = NULL;
opCode = (unsigned char *)g_ko_param.sym_get_addr;
for (i = 0; i < 4; i++)
{
vdebug("%02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X\n",
opCode[i + 0], opCode[i + 1], opCode[i + 2], opCode[i + 3],
opCode[i + 4], opCode[i + 5], opCode[i + 6], opCode[i + 7],
opCode[i + 8], opCode[i + 9], opCode[i + 10], opCode[i + 11],
opCode[i + 12], opCode[i + 13], opCode[i + 14], opCode[i + 15]);
}
if (dmpatch_kv_above(6, 7, 0)) /* >= 6.7 kernel */
{
vdebug("Get addr: 0x%lx %lu open 0x%lx\n", g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.bdev_open_addr);
offset1 = dmpatch_find_call_offset(g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.bdev_open_addr);
if (offset1 == 0)
{
vdebug("call bdev_open_addr Not found\n");
vdebug("Get addr: 0x%lx %lu file_open 0x%lx\n", g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.bdev_file_open_addr);
offset1 = dmpatch_find_call_offset(g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.bdev_file_open_addr);
if (offset1 == 0)
{
vdebug("call bdev_file_open_addr Not found\n");
return 1;
}
}
}
else
{
vdebug("Get addr: 0x%lx %lu 0x%lx\n", g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.blkdev_get_addr);
vdebug("Put addr: 0x%lx %lu 0x%lx\n", g_ko_param.sym_put_addr, g_ko_param.sym_put_size, g_ko_param.blkdev_put_addr);
offset1 = dmpatch_find_call_offset(g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.blkdev_get_addr);
offset2 = dmpatch_find_call_offset(g_ko_param.sym_put_addr, g_ko_param.sym_put_size, g_ko_param.blkdev_put_addr);
if (offset1 == 0 || offset2 == 0)
{
vdebug("call blkdev_get or blkdev_put Not found, %lu %lu\n", offset1, offset2);
return 1;
}
}
vdebug("call addr1:0x%lx call addr2:0x%lx\n",
g_ko_param.sym_get_addr + offset1,
g_ko_param.sym_put_addr + offset2);
opCode = (unsigned char *)g_ko_param.sym_get_addr;
for (i = offset1 - 1, t = 0; (i > 0) && (t < 24); i--, t++)
{
/* rdx */
if (opCode[i] == 0x48 && opCode[i + 1] == 0xc7 && opCode[i + 2] == 0xc2)
{
g_claim_ptr = *(unsigned int *)(opCode + i + 3);
g_get_patch[0] = opCode + i + 3;
vdebug("claim_ptr(%08X) found at get addr 0x%lx\n", g_claim_ptr, g_ko_param.sym_get_addr + i + 3);
break;
}
}
if (g_claim_ptr == 0)
{
vdebug("Claim_ptr not found in get\n");
return 1;
}
align = (unsigned long)g_get_patch[0] / g_ko_param.pgsize * g_ko_param.pgsize;
set_mem_rw(align, 1);
*(unsigned int *)(g_get_patch[0]) = 0;
set_mem_ro(align, 1);
if (offset2 > 0)
{
opCode = (unsigned char *)g_ko_param.sym_put_addr;
for (i = offset2 - 1, t = 0; (i > 0) && (t < 24); i--, t++)
{
/* rsi */
if (opCode[i] == 0x48 && opCode[i + 1] == 0xc7 && opCode[i + 2] == 0xc6)
{
if (*(unsigned int *)(opCode + i + 3) == g_claim_ptr)
{
vdebug("claim_ptr found at put addr 0x%lx\n", g_ko_param.sym_put_addr + i + 3);
g_put_patch[0] = opCode + i + 3;
break;
}
}
}
if (g_put_patch[0] == 0)
{
vdebug("Claim_ptr not found in put\n");
return 1;
}
align = (unsigned long)g_put_patch[0] / g_ko_param.pgsize * g_ko_param.pgsize;
set_mem_rw(align, 1);
*(unsigned int *)(g_put_patch[0]) = 0;
set_mem_ro(align, 1);
}
return 0;
}
#ifdef VTOY_IBT
static __always_inline unsigned long long dmpatch_rdmsr(unsigned int msr)
{
DECLARE_ARGS(val, low, high);
asm volatile("1: rdmsr\n"
"2:\n"
_ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_RDMSR)
: EAX_EDX_RET(val, low, high) : "c" (msr));
return EAX_EDX_VAL(val, low, high);
}
static __always_inline void dmpatch_wrmsr(unsigned int msr, u32 low, u32 high)
{
asm volatile("1: wrmsr\n"
"2:\n"
_ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_WRMSR)
: : "c" (msr), "a"(low), "d" (high) : "memory");
}
static u64 notrace dmpatch_ibt_save(void)
{
u64 msr = 0;
u64 val = 0;
msr = dmpatch_rdmsr(MSR_IA32_S_CET);
val = msr & ~CET_ENDBR_EN;
dmpatch_wrmsr(MSR_IA32_S_CET, (u32)(val & 0xffffffffULL), (u32)(val >> 32));
return msr;
}
static void notrace dmpatch_ibt_restore(u64 save)
{
u64 msr;
msr = dmpatch_rdmsr(MSR_IA32_S_CET);
msr &= ~CET_ENDBR_EN;
msr |= (save & CET_ENDBR_EN);
dmpatch_wrmsr(MSR_IA32_S_CET, (u32)(msr & 0xffffffffULL), (u32)(msr >> 32));
}
#else
static u64 notrace dmpatch_ibt_save(void) { return 0; }
static void notrace dmpatch_ibt_restore(u64 save) { (void)save; }
#endif
static int notrace dmpatch_process(unsigned long a, unsigned long b, unsigned long c)
{ {
int r = 0; int r = 0;
int rc = 0; int rc = 0;
unsigned long kv_major = 0;
unsigned long kv_minor = 0;
unsigned long kv_subminor = 0;
vdebug("dmpatch_process as KV %d.%d.%d ...\n", (int)a, (int)b, (int)c);
kv_major = g_ko_param.kv_major;
kv_minor = g_ko_param.kv_minor;
kv_subminor = g_ko_param.kv_subminor;
g_ko_param.kv_major = a;
g_ko_param.kv_minor = b;
g_ko_param.kv_subminor = c;
if (dmpatch_kv_above(6, 5, 0)) /* >= kernel 6.5 */
{
vdebug("new interface patch dm_get_table_device...\n");
r = dmpatch_patch_claim_ptr();
}
else
{
r = dmpatch_replace_code(1, g_ko_param.sym_get_addr, g_ko_param.sym_get_size, 2, "dm_get_table_device", g_get_patch);
if (r && g_ko_param.kv_major >= 5)
{
vdebug("new2 patch dm_get_table_device...\n");
r = dmpatch_replace_code(2, g_ko_param.sym_get_addr, g_ko_param.sym_get_size, 1, "dm_get_table_device", g_get_patch);
}
if (r && g_ko_param.kv_major >= 5)
{
vdebug("new3 patch dm_get_table_device...\n");
r = dmpatch_replace_code(3, g_ko_param.sym_get_addr, g_ko_param.sym_get_size, 1, "dm_get_table_device", g_get_patch);
}
}
if (r)
{
rc = -EFAULT;
goto out;
}
vdebug("patch dm_get_table_device success\n");
if (dmpatch_kv_above(6, 5, 0))
{
r = 0;
}
else
{
r = dmpatch_replace_code(1, g_ko_param.sym_put_addr, g_ko_param.sym_put_size, 1, "dm_put_table_device", g_put_patch);
if (r)
{
rc = -EFAULT;
goto out;
}
vdebug("patch dm_put_table_device success\n");
}
vdebug("#####################################\n");
vdebug("######## dm patch success ###########\n");
vdebug("#####################################\n");
out:
g_ko_param.kv_major = kv_major;
g_ko_param.kv_minor = kv_minor;
g_ko_param.kv_subminor = kv_subminor;
return rc;
}
static int notrace dmpatch_init(void)
{
int rc = 0;
u64 msr = 0;
if (g_ko_param.ibt == 0x8888)
{
msr = dmpatch_ibt_save();
}
kprintf = (printk_pf)(g_ko_param.printk_addr); kprintf = (printk_pf)(g_ko_param.printk_addr);
vdebug("dmpatch_init start pagesize=%lu ...\n", g_ko_param.pgsize); vdebug("dmpatch_init start pagesize=%lu kernel=%lu.%lu.%lu ...\n",
g_ko_param.pgsize, g_ko_param.kv_major, g_ko_param.kv_minor, g_ko_param.kv_subminor);
if (g_ko_param.struct_size != sizeof(ko_param)) if (g_ko_param.struct_size != sizeof(ko_param))
{ {
@ -192,48 +566,60 @@ static int notrace dmpatch_init(void)
reg_kprobe = (kprobe_reg_pf)g_ko_param.reg_kprobe_addr; reg_kprobe = (kprobe_reg_pf)g_ko_param.reg_kprobe_addr;
unreg_kprobe = (kprobe_unreg_pf)g_ko_param.unreg_kprobe_addr; unreg_kprobe = (kprobe_unreg_pf)g_ko_param.unreg_kprobe_addr;
r = dmpatch_replace_code(1, g_ko_param.sym_get_addr, g_ko_param.sym_get_size, 2, "dm_get_table_device", g_get_patch); rc = dmpatch_process(g_ko_param.kv_major, g_ko_param.kv_minor, g_ko_param.kv_subminor);
if (r && g_ko_param.kv_major >= 5) if (rc)
{ {
vdebug("new patch dm_get_table_device...\n"); if (g_ko_param.kv_major >= 5)
r = dmpatch_replace_code(2, g_ko_param.sym_get_addr, g_ko_param.sym_get_size, 1, "dm_get_table_device", g_get_patch); {
} rc = dmpatch_process(6, 5, 0);
if (rc)
if (r) {
{ rc = dmpatch_process(6, 7, 0);
rc = -EINVAL; }
goto out; }
} }
vdebug("patch dm_get_table_device success\n");
r = dmpatch_replace_code(1, g_ko_param.sym_put_addr, g_ko_param.sym_put_size, 1, "dm_put_table_device", g_put_patch); if (g_ko_param.ibt == 0x8888)
if (r)
{ {
rc = -EINVAL; dmpatch_ibt_restore(msr);
goto out;
} }
vdebug("patch dm_put_table_device success\n");
vdebug("#####################################\n");
vdebug("######## dm patch success ###########\n");
vdebug("#####################################\n");
out:
return rc; return rc;
} }
static void notrace dmpatch_exit(void) static void notrace dmpatch_exit(void)
{ {
int i = 0; int i = 0;
u64 msr;
if (g_ko_param.ibt == 0x8888)
{
msr = dmpatch_ibt_save();
}
for (i = 0; i < MAX_PATCH; i++) if (g_claim_ptr)
{ {
dmpatch_restore_code(g_get_patch[i]); dmpatch_restore_code(4, g_get_patch[0], g_claim_ptr);
dmpatch_restore_code(g_put_patch[i]); if (g_put_patch[0])
{
dmpatch_restore_code(4, g_put_patch[0], g_claim_ptr);
}
}
else
{
for (i = 0; i < MAX_PATCH; i++)
{
dmpatch_restore_code(1, g_get_patch[i], 0x80);
dmpatch_restore_code(1, g_put_patch[i], 0x80);
}
} }
vdebug("dmpatch_exit success\n"); vdebug("dmpatch_exit success\n");
if (g_ko_param.ibt == 0x8888)
{
dmpatch_ibt_restore(msr);
}
} }
module_init(dmpatch_init); module_init(dmpatch_init);

@ -1,10 +1,12 @@
1. install ubuntu 21.10 1. install ubuntu 22.04 5.15.0-25
2. apt-get install build-essential flex libncurses-dev linux-headers-generic linux-source libssl-dev ...... and so on 2. apt-get install build-essential flex libncurses-dev linux-headers-generic linux-source libssl-dev bison yacc vim libelf-dev ...... and so on
3. cp /lib/modules/5.13.0-23-generic/build/Module.symvers ./ 3. cp /lib/modules/5.15.0-25-generic/build/Module.symvers ./
4. /boot/config-5.13.0-23-generic as .config make oldconfig 4. /boot/config-5.15.0-25-generic as .config make oldconfig
5. make menuconfig 5. make menuconfig
1. close CONFIG_STACKPROTECTOR 1. close CONFIG_STACKPROTECTOR
2. close CONFIG_RETPOLINE 2. close CONFIG_RETPOLINE
3. close CONFIG_UBSAN_BOUNDS
4. close CONFIG_UBSAN_ENUM
6. modify ./scripts/mod/modpost.c 6. modify ./scripts/mod/modpost.c
1. skip add_srcversion (just return) 1. skip add_srcversion (just return)

@ -0,0 +1,65 @@
#!/bin/bash
FTPIP=192.168.44.1
FTPUSR='a:a'
rm -f dmpatch.c Makefile Makefile_IBT
for f in dmpatch.c Makefile Makefile_IBT; do
curl -s -u $FTPUSR ftp://$FTPIP/$f -o $f
if [ -f $f ]; then
echo "download $f OK ..."
else
echo "download $f FAILED ..."
exit 1
fi
done
rm -f *.ko
echo "build dm_patch.ko ..."
rm -rf ./aa
mkdir ./aa
cp -a *.c aa/
cp -a Makefile aa/
cd /home/panda/linux-source-5.15.0
make modules M=/home/panda/build/aa/
strip --strip-debug /home/panda/build/aa/dm_patch.ko
cd -
cp -a aa/dm_patch.ko ./
echo "build dm_patch_ibt.ko ..."
rm -rf ./aa
mkdir ./aa
cp -a *.c aa/
cp -a Makefile_IBT aa/Makefile
cd /home/panda/linux-source-5.15.0
make modules M=/home/panda/build/aa/
strip --strip-debug /home/panda/build/aa/dm_patch_ibt.ko
cd -
cp -a aa/dm_patch_ibt.ko ./
rm -rf ./aa
curl -s -T dm_patch.ko -u $FTPUSR ftp://$FTPIP/dm_patch_64.ko || exit 1
curl -s -T dm_patch_ibt.ko -u $FTPUSR ftp://$FTPIP/dm_patch_ibt_64.ko || exit 1
if [ -f ./dm_patch.ko -a -f ./dm_patch_ibt.ko ]; then
echo -e "\n\n=============== SUCCESS =============\n\n"
else
echo -e "\n\n=============== FAILED ==============\n\n"
fi

@ -5,7 +5,7 @@ use an old version of dmsetup
http://vault.centos.org/5.3/os/SRPMS/device-mapper-1.02.28-2.el5.src.rpm http://vault.centos.org/5.3/os/SRPMS/device-mapper-1.02.28-2.el5.src.rpm
https://www.fefe.de/dietlibc/dietlibc-0.34.tar.xz https://www.fefe.de/dietlibc/dietlibc-0.34.tar.xz
======== Build Envrioment ======== ======== Build Environment ========
build for 32bit, static linked with dietlibc build for 32bit, static linked with dietlibc
1. install centos 6.10 i386 with CentOS-6.10-i386-bin-DVD1.iso 1. install centos 6.10 i386 with CentOS-6.10-i386-bin-DVD1.iso
2. yum install gcc kernel-devel package 2. yum install gcc kernel-devel package

@ -1,9 +1,9 @@
========================================== ==========================================
1. Compile Enviroment 1. Compile Environment
========================================== ==========================================
My build envrioment is CentOS 7.8 x86_64. So here I first explain how to create the build environment from scratch. My build environment is CentOS 7.8 x86_64. So here I first explain how to create the build environment from scratch.
Because Ventoy is based on many open source projects, so the environment is important. I suggest you test it on a virtual machine firstly. Ventoy is based on many open source projects, so the build environment is important. I suggest you first test it on a virtual machine.
1.1 Install CentOS 7.8 1.1 Install CentOS 7.8
I use CentOS-7-x86_64-Everything-2003.iso and select Minimal install I use CentOS-7-x86_64-Everything-2003.iso and select Minimal install
@ -21,10 +21,10 @@
========================================== ==========================================
2. Download Source Code 2. Download Source Code
========================================== ==========================================
2.1 Download Ventoy source code from github and decompress it. 2.1 Download Ventoy source code from GitHub and decompress it.
Next I assume that you have unzipped the code into the /home directory (check /home/Ventoy-master/README.md file for the directory layout). Next I assume that you have unzipped the code into the /home directory (check /home/Ventoy-master/README.md file for the directory layout).
2.2 Download third-part source code and tool 2.2 Download third-party source code and tool
https://www.fefe.de/dietlibc/dietlibc-0.34.tar.xz ===> /home/Ventoy-master/DOC/dietlibc-0.34.tar.xz https://www.fefe.de/dietlibc/dietlibc-0.34.tar.xz ===> /home/Ventoy-master/DOC/dietlibc-0.34.tar.xz
https://musl.libc.org/releases/musl-1.2.1.tar.gz ===> /home/Ventoy-master/DOC/musl-1.2.1.tar.gz https://musl.libc.org/releases/musl-1.2.1.tar.gz ===> /home/Ventoy-master/DOC/musl-1.2.1.tar.gz
@ -34,7 +34,7 @@
https://codeload.github.com/libfuse/libfuse/zip/fuse-2.9.9 ===> /home/Ventoy-master/ExFAT/libfuse-fuse-2.9.9.zip https://codeload.github.com/libfuse/libfuse/zip/fuse-2.9.9 ===> /home/Ventoy-master/ExFAT/libfuse-fuse-2.9.9.zip
https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/aarch64-linux-gnu/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz ===> /opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/aarch64-linux-gnu/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz ===> /opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz
https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--uclibc--stable-2020.08-1.tar.bz2 ===> /opt/aarch64--uclibc--stable-2020.08-1.tar.bz2 https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--uclibc--stable-2020.08-1.tar.bz2 ===> /opt/aarch64--uclibc--stable-2020.08-1.tar.bz2
http://ftp.loongnix.cn/toolchain/gcc/release/mips/gcc7/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz ===> /opt/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz https://github.com/ventoy/vtoytoolchain/releases/download/1.0/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz ===> /opt/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz
https://github.com/ventoy/musl-cross-make/releases/download/latest/output.tar.bz2 ===> /opt/output.tar.bz2 https://github.com/ventoy/musl-cross-make/releases/download/latest/output.tar.bz2 ===> /opt/output.tar.bz2
@ -42,7 +42,7 @@
http://www.tinycorelinux.net/11.x/x86_64/release/distribution_files/corepure64.gz ===> /home/Ventoy-master/LiveCD/ISO/EFI/boot/corepure64.gz http://www.tinycorelinux.net/11.x/x86_64/release/distribution_files/corepure64.gz ===> /home/Ventoy-master/LiveCD/ISO/EFI/boot/corepure64.gz
http://www.tinycorelinux.net/11.x/x86_64/release/distribution_files/modules64.gz ===> /home/Ventoy-master/LiveCD/ISO/EFI/boot/modules64.gz http://www.tinycorelinux.net/11.x/x86_64/release/distribution_files/modules64.gz ===> /home/Ventoy-master/LiveCD/ISO/EFI/boot/modules64.gz
2.3 Prepare third-part tools 2.3 Prepare third-party tools
cd /home/Ventoy-master/DOC/ cd /home/Ventoy-master/DOC/
tar xf musl-1.2.1.tar.gz tar xf musl-1.2.1.tar.gz
cd musl-1.2.1 cd musl-1.2.1
@ -54,7 +54,7 @@
mv /opt/output /opt/mips64el-linux-musl-gcc730 mv /opt/output /opt/mips64el-linux-musl-gcc730
2.4 Set PATH envrioment 2.4 Set PATH environment
export PATH=$PATH:/opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin:/opt/aarch64--uclibc--stable-2020.08-1/bin:/opt/mips64el-linux-musl-gcc730/bin export PATH=$PATH:/opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin:/opt/aarch64--uclibc--stable-2020.08-1/bin:/opt/mips64el-linux-musl-gcc730/bin
better to add this line to /root/.bashrc and relogin as root better to add this line to /root/.bashrc and relogin as root
@ -62,21 +62,21 @@
========================================== ==========================================
3. All in one script 3. All in one script
========================================== ==========================================
I have made a all_in_one.sh, you can run this script to build and pack ventoy. I have made an all-in-one script `all_in_one.sh`. You can run this script to build and pack ventoy.
If you want to compile a certain part separately, you can continue to refer to the later chapters of this text. If you want to compile a certain part separately, you can continue to refer to the later chapters of this text.
cd /home/Ventoy-master/INSTALL cd /home/Ventoy-master/INSTALL
sh all_in_one.sh sh all_in_one.sh
It should be noted that: It should be noted that:
1. Only grub2/EDK2/IPXE will be recompiled in all_in_one.sh. Other part contains the binaries and are few modified, so will no be recompiled everytime. 1. Only grub2/EDK2/IPXE will be recompiled in all_in_one.sh. Other parts contain binaries and are rarely modified, so will not be recompiled everytime.
You can rebuild these parts separately if you want. You can rebuild these parts separately if you want.
2. some part of Ventoy has 32bit&64bit version (like 4.9 4.10 4.11 follows) 2. Some parts of Ventoy have a 32-bit and 64-bit version (like 4.9, 4.10, 4.11 follows)
all_in_one.sh only build 64bit version of them, if you want to rebuild the 32bit verison. You should create a 32bit CentOS environment and build them. all_in_one.sh only builds the 64bit version of them. If you want to rebuild the 32bit verison, you should create a 32-bit CentOS environment and build them.
Fortunately these parts are few modified, you only need to build once or you can directly use the binary I have built. Fortunately these parts are rarely modified, so you only need to build once or you can directly use the binaries I have built.
Besides, after a fully compile and pack, you can only build the part you modified (for example grub2) and run ventoy_pack.sh to generate the package. Besides, after a full compile and packaging, you can only build the part you modified (for example grub2) and run ventoy_pack.sh to generate the package.
========================================== ==========================================
4. Build every part of Ventoy 4. Build every part of Ventoy
@ -122,14 +122,14 @@
After that, copy EXFAT/shared/mkexfatfs ===> /home/Ventoy-master/INSTALL/tool/mkexfatfs_64 After that, copy EXFAT/shared/mkexfatfs ===> /home/Ventoy-master/INSTALL/tool/mkexfatfs_64
After that, copy EXFAT/shared/mount.exfat-fuse ===> /home/Ventoy-master/INSTALL/tool/mount.exfat-fuse_64 After that, copy EXFAT/shared/mount.exfat-fuse ===> /home/Ventoy-master/INSTALL/tool/mount.exfat-fuse_64
Use the same build step to build exfat-util 32bit in a 32bit CentOS system and get mkexfatfs_32 and mount.exfat-fuse_32 Use the same build step to build exfat-util 32-bit in a 32-bit CentOS system and get mkexfatfs_32 and mount.exfat-fuse_32
4.10 == Build vtoy_fuse_iso_64/vtoy_fuse_iso_32 == 4.10 == Build vtoy_fuse_iso_64/vtoy_fuse_iso_32 ==
cd /home/Ventoy-master/FUSEISO cd /home/Ventoy-master/FUSEISO
sh build_libfuse.sh sh build_libfuse.sh
sh build.sh sh build.sh
Use the same build step to build in a 32bit CentOS system and get vtoy_fuse_iso_32 Use the same build step to build in a 32-bit CentOS system and get vtoy_fuse_iso_32
4.11 == Build unsquashfs_64/unsquashfs_32 == 4.11 == Build unsquashfs_64/unsquashfs_32 ==
cd /home/Ventoy-master/SQUASHFS/SRC cd /home/Ventoy-master/SQUASHFS/SRC
@ -141,7 +141,7 @@
cd /home/Ventoy-master/SQUASHFS/squashfs-tools-4.4/squashfs-tools cd /home/Ventoy-master/SQUASHFS/squashfs-tools-4.4/squashfs-tools
sh build.sh sh build.sh
Use the same build step to build in a 32bit CentOS system and get unsquashfs_32 Use the same build step to build in a 32-bit CentOS system and get unsquashfs_32
4.12 == Build vblade_64/vblade_32 == 4.12 == Build vblade_64/vblade_32 ==
cd /home/Ventoy-master/VBLADE/vblade-master cd /home/Ventoy-master/VBLADE/vblade-master

@ -1533,7 +1533,7 @@ module = {
name = squash4; name = squash4;
common = fs/squash4.c; common = fs/squash4.c;
cflags = '$(CFLAGS_POSIX) -Wno-undef'; cflags = '$(CFLAGS_POSIX) -Wno-undef';
cppflags = '-I$(srcdir)/lib/posix_wrap -I$(srcdir)/lib/xzembed -I$(srcdir)/lib/minilzo -DMINILZO_HAVE_CONFIG_H'; cppflags = '-I$(srcdir)/lib/posix_wrap -I$(srcdir)/lib/xzembed -I$(srcdir)/lib/minilzo -I$(srcdir)/lib/zstd -DMINILZO_HAVE_CONFIG_H';
}; };
module = { module = {

@ -103,6 +103,7 @@ GRUB_MOD_LICENSE ("GPLv3+");
#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 #define EXT4_FEATURE_INCOMPAT_64BIT 0x0080
#define EXT4_FEATURE_INCOMPAT_MMP 0x0100 #define EXT4_FEATURE_INCOMPAT_MMP 0x0100
#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200 #define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200
#define EXT4_FEATURE_INCOMPAT_CSUM_SEED 0x2000
#define EXT4_FEATURE_INCOMPAT_ENCRYPT 0x10000 #define EXT4_FEATURE_INCOMPAT_ENCRYPT 0x10000
/* The set of back-incompatible features this driver DOES support. Add (OR) /* The set of back-incompatible features this driver DOES support. Add (OR)
@ -123,9 +124,16 @@ GRUB_MOD_LICENSE ("GPLv3+");
* mmp: Not really back-incompatible - was added as such to * mmp: Not really back-incompatible - was added as such to
* avoid multiple read-write mounts. Safe to ignore for this * avoid multiple read-write mounts. Safe to ignore for this
* RO driver. * RO driver.
* checksum seed: Not really back-incompatible - was added to allow tools
* such as tune2fs to change the UUID on a mounted metadata
* checksummed filesystem. Safe to ignore for now since the
* driver doesn't support checksum verification. But it must
* be removed from this list if that support is added later.
*
*/ */
#define EXT2_DRIVER_IGNORED_INCOMPAT ( EXT3_FEATURE_INCOMPAT_RECOVER \ #define EXT2_DRIVER_IGNORED_INCOMPAT ( EXT3_FEATURE_INCOMPAT_RECOVER \
| EXT4_FEATURE_INCOMPAT_MMP) | EXT4_FEATURE_INCOMPAT_MMP \
| EXT4_FEATURE_INCOMPAT_CSUM_SEED)
#define EXT3_JOURNAL_MAGIC_NUMBER 0xc03b3998U #define EXT3_JOURNAL_MAGIC_NUMBER 0xc03b3998U
@ -723,10 +731,11 @@ grub_ext2_read_symlink (grub_fshelp_node_t node)
if (! symlink) if (! symlink)
return 0; return 0;
/* If the filesize of the symlink is bigger than /*
60 the symlink is stored in a separate block, * If the filesize of the symlink is equal to or bigger than 60 the symlink
otherwise it is stored in the inode. */ * is stored in a separate block, otherwise it is stored in the inode.
if (grub_le_to_cpu32 (diro->inode.size) <= sizeof (diro->inode.symlink)) */
if (grub_le_to_cpu32 (diro->inode.size) < sizeof (diro->inode.symlink))
grub_memcpy (symlink, grub_memcpy (symlink,
diro->inode.symlink, diro->inode.symlink,
grub_le_to_cpu32 (diro->inode.size)); grub_le_to_cpu32 (diro->inode.size));

@ -889,6 +889,7 @@ grub_ntfs_mount (grub_disk_t disk)
struct grub_ntfs_bpb bpb; struct grub_ntfs_bpb bpb;
struct grub_ntfs_data *data = 0; struct grub_ntfs_data *data = 0;
grub_uint32_t spc; grub_uint32_t spc;
grub_uint32_t sectors_per_cluster;
if (!disk) if (!disk)
goto fail; goto fail;
@ -903,14 +904,18 @@ grub_ntfs_mount (grub_disk_t disk)
if (grub_disk_read (disk, 0, 0, sizeof (bpb), &bpb)) if (grub_disk_read (disk, 0, 0, sizeof (bpb), &bpb))
goto fail; goto fail;
sectors_per_cluster = bpb.sectors_per_cluster;
if (sectors_per_cluster > 0x80)
sectors_per_cluster = 1U << (256U - bpb.sectors_per_cluster);
if (grub_memcmp ((char *) &bpb.oem_name, "NTFS", 4) != 0 if (grub_memcmp ((char *) &bpb.oem_name, "NTFS", 4) != 0
|| bpb.sectors_per_cluster == 0 || sectors_per_cluster == 0
|| (bpb.sectors_per_cluster & (bpb.sectors_per_cluster - 1)) != 0 || (sectors_per_cluster & (sectors_per_cluster - 1)) != 0
|| bpb.bytes_per_sector == 0 || bpb.bytes_per_sector == 0
|| (bpb.bytes_per_sector & (bpb.bytes_per_sector - 1)) != 0) || (bpb.bytes_per_sector & (bpb.bytes_per_sector - 1)) != 0)
goto fail; goto fail;
spc = (((grub_uint32_t) bpb.sectors_per_cluster spc = (((grub_uint32_t) sectors_per_cluster
* (grub_uint32_t) grub_le_to_cpu16 (bpb.bytes_per_sector)) * (grub_uint32_t) grub_le_to_cpu16 (bpb.bytes_per_sector))
>> GRUB_NTFS_BLK_SHR); >> GRUB_NTFS_BLK_SHR);
if (spc == 0) if (spc == 0)

@ -27,6 +27,7 @@
#include <grub/fshelp.h> #include <grub/fshelp.h>
#include <grub/deflate.h> #include <grub/deflate.h>
#include <minilzo.h> #include <minilzo.h>
#include <zstd.h>
#include "xz.h" #include "xz.h"
#include "xz_stream.h" #include "xz_stream.h"
@ -184,6 +185,7 @@ enum
COMPRESSION_LZO = 3, COMPRESSION_LZO = 3,
COMPRESSION_XZ = 4, COMPRESSION_XZ = 4,
COMPRESSION_LZ4 = 5, COMPRESSION_LZ4 = 5,
COMPRESSION_ZSTD = 6,
}; };
@ -398,6 +400,25 @@ static grub_ssize_t lz4_decompress_wrap(char *inbuf, grub_size_t insize, grub_of
return len; return len;
} }
static grub_ssize_t zstd_decompress_wrap(char *inbuf, grub_size_t insize, grub_off_t off,
char *outbuf, grub_size_t len, struct grub_squash_data *data)
{
char *udata = NULL;
int usize = data->blksz;
if (usize < 8192)
usize = 8192;
udata = grub_malloc (usize);
if (!udata)
return -1;
ZSTD_decompress(udata, usize, inbuf, insize);
grub_memcpy(outbuf, udata + off, len);
grub_free(udata);
return len;
}
static struct grub_squash_data * static struct grub_squash_data *
squash_mount (grub_disk_t disk) squash_mount (grub_disk_t disk)
{ {
@ -447,6 +468,9 @@ squash_mount (grub_disk_t disk)
case grub_cpu_to_le16_compile_time (COMPRESSION_LZ4): case grub_cpu_to_le16_compile_time (COMPRESSION_LZ4):
data->decompress = lz4_decompress_wrap; data->decompress = lz4_decompress_wrap;
break; break;
case grub_cpu_to_le16_compile_time (COMPRESSION_ZSTD):
data->decompress = zstd_decompress_wrap;
break;
case grub_cpu_to_le16_compile_time (COMPRESSION_XZ): case grub_cpu_to_le16_compile_time (COMPRESSION_XZ):
data->decompress = xz_decompress; data->decompress = xz_decompress;
data->xzbuf = grub_malloc (XZBUFSIZ); data->xzbuf = grub_malloc (XZBUFSIZ);
@ -519,7 +543,7 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,
break; break;
case grub_cpu_to_le16_compile_time (SQUASH_TYPE_LONG_DIR): case grub_cpu_to_le16_compile_time (SQUASH_TYPE_LONG_DIR):
off = grub_le_to_cpu16 (dir->ino.long_dir.offset); off = grub_le_to_cpu16 (dir->ino.long_dir.offset);
endoff = grub_le_to_cpu16 (dir->ino.long_dir.size) + off - 3; endoff = grub_le_to_cpu32 (dir->ino.long_dir.size) + off - 3;
chunk = grub_le_to_cpu32 (dir->ino.long_dir.chunk); chunk = grub_le_to_cpu32 (dir->ino.long_dir.chunk);
break; break;
default: default:

@ -342,10 +342,12 @@ grub_file_read (grub_file_t file, void *buf, grub_size_t len)
if (len == 0) if (len == 0)
return 0; return 0;
if (grub_strncmp(file->name, GRUB_MEMFILE_MEM, grub_strlen(GRUB_MEMFILE_MEM)) == 0) { if (file->name) {
if (grub_strncmp(file->name, GRUB_MEMFILE_MEM, grub_strlen(GRUB_MEMFILE_MEM)) == 0) {
grub_memcpy(buf, (grub_uint8_t *)(file->data) + file->offset, len); grub_memcpy(buf, (grub_uint8_t *)(file->data) + file->offset, len);
file->offset += len; file->offset += len;
return len; return len;
}
} }
read_hook = file->read_hook; read_hook = file->read_hook;

@ -229,10 +229,7 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
if (! file) if (! file)
goto fail; goto fail;
/* Get the root device's device path. */ dev = file->device;
dev = grub_device_open (0);
if (! dev)
goto fail;
if (dev->disk) if (dev->disk)
dev_handle = grub_efidisk_get_device_handle (dev->disk); dev_handle = grub_efidisk_get_device_handle (dev->disk);
@ -257,16 +254,13 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
if (dev_handle) if (dev_handle)
dp = grub_efi_get_device_path (dev_handle); dp = grub_efi_get_device_path (dev_handle);
if (! dp) if (dp != NULL)
{ {
grub_error (GRUB_ERR_BAD_DEVICE, "not a valid root device"); file_path = make_file_path (dp, filename);
goto fail; if (! file_path)
goto fail;
} }
file_path = make_file_path (dp, filename);
if (! file_path)
goto fail;
//grub_printf ("file path: "); //grub_printf ("file path: ");
//grub_efi_print_device_path (file_path); //grub_efi_print_device_path (file_path);
@ -390,16 +384,12 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
} }
grub_file_close (file); grub_file_close (file);
grub_device_close (dev);
grub_loader_set (grub_chainloader_boot, grub_chainloader_unload, 0); grub_loader_set (grub_chainloader_boot, grub_chainloader_unload, 0);
return 0; return 0;
fail: fail:
if (dev)
grub_device_close (dev);
if (file) if (file)
grub_file_close (file); grub_file_close (file);

@ -88,6 +88,8 @@ static int ventoy_linux_argc = 0;
static char **ventoy_linux_args = NULL; static char **ventoy_linux_args = NULL;
static int ventoy_extra_initrd_num = 0; static int ventoy_extra_initrd_num = 0;
static char *ventoy_extra_initrd_list[256]; static char *ventoy_extra_initrd_list[256];
static grub_command_func_t ventoy_linux16_func = NULL;
static grub_command_func_t ventoy_initrd16_func = NULL;
static grub_err_t static grub_err_t
grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)), int argc, char *argv[]); grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)), int argc, char *argv[]);
@ -667,54 +669,6 @@ static int ventoy_bootopt_hook(int argc, char *argv[])
return 0; return 0;
} }
static grub_err_t
grub_cmd_set_boot_opt (grub_command_t cmd __attribute__ ((unused)),
int argc, char *argv[])
{
int i;
const char *vtdebug;
for (i = 0; i < argc; i++)
{
ventoy_linux_args[ventoy_linux_argc + (LINUX_MAX_ARGC / 2) ] = grub_strdup(argv[i]);
ventoy_linux_argc++;
}
vtdebug = grub_env_get("vtdebug_flag");
if (vtdebug && vtdebug[0])
{
ventoy_debug = 1;
}
if (ventoy_debug) grub_printf("ventoy set boot opt %d\n", ventoy_linux_argc);
return 0;
}
static grub_err_t
grub_cmd_unset_boot_opt (grub_command_t cmd __attribute__ ((unused)),
int argc, char *argv[])
{
int i;
(void)argc;
(void)argv;
for (i = 0; i < LINUX_MAX_ARGC; i++)
{
if (ventoy_linux_args[i])
{
grub_free(ventoy_linux_args[i]);
}
}
ventoy_debug = 0;
ventoy_linux_argc = 0;
ventoy_initrd_called = 0;
grub_memset(ventoy_linux_args, 0, sizeof(char *) * LINUX_MAX_ARGC);
return 0;
}
static grub_err_t static grub_err_t
grub_cmd_extra_initrd_append (grub_command_t cmd __attribute__ ((unused)), grub_cmd_extra_initrd_append (grub_command_t cmd __attribute__ ((unused)),
int argc, char *argv[]) int argc, char *argv[])
@ -1576,6 +1530,92 @@ ventoy_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
return grub_cmd_initrd(cmd, ventoy_extra_initrd_num, ventoy_extra_initrd_list); return grub_cmd_initrd(cmd, ventoy_extra_initrd_num, ventoy_extra_initrd_list);
} }
static grub_err_t
grub_cmd_set_boot_opt (grub_command_t cmd __attribute__ ((unused)),
int argc, char *argv[])
{
int i;
const char *vtdebug;
grub_command_t regcmd;
for (i = 0; i < argc; i++)
{
ventoy_linux_args[ventoy_linux_argc + (LINUX_MAX_ARGC / 2) ] = grub_strdup(argv[i]);
ventoy_linux_argc++;
}
vtdebug = grub_env_get("vtdebug_flag");
if (vtdebug && vtdebug[0])
{
ventoy_debug = 1;
}
if (ventoy_debug) grub_printf("ventoy set boot opt %d\n", ventoy_linux_argc);
ventoy_linux16_func = ventoy_initrd16_func = NULL;
regcmd = grub_command_find("linux16");
if (regcmd)
{
ventoy_linux16_func = regcmd->func;
regcmd->func = grub_cmd_linux;
}
regcmd = grub_command_find("initrd16");
if (regcmd)
{
ventoy_initrd16_func = regcmd->func;
regcmd->func = ventoy_cmd_initrd;
}
return 0;
}
static grub_err_t
grub_cmd_unset_boot_opt (grub_command_t cmd __attribute__ ((unused)),
int argc, char *argv[])
{
int i;
grub_command_t regcmd;
(void)argc;
(void)argv;
for (i = 0; i < LINUX_MAX_ARGC; i++)
{
if (ventoy_linux_args[i])
{
grub_free(ventoy_linux_args[i]);
}
}
ventoy_debug = 0;
ventoy_linux_argc = 0;
ventoy_initrd_called = 0;
grub_memset(ventoy_linux_args, 0, sizeof(char *) * LINUX_MAX_ARGC);
if (ventoy_linux16_func)
{
regcmd = grub_command_find("linux16");
if (regcmd)
{
regcmd->func = ventoy_linux16_func;
}
ventoy_linux16_func = NULL;
}
if (ventoy_initrd16_func)
{
regcmd = grub_command_find("initrd16");
if (regcmd)
{
regcmd->func = ventoy_initrd16_func;
}
ventoy_initrd16_func = NULL;
}
return 0;
}
static grub_command_t cmd_linux, cmd_initrd, cmd_linuxefi, cmd_initrdefi; static grub_command_t cmd_linux, cmd_initrd, cmd_linuxefi, cmd_initrdefi;
static grub_command_t cmd_set_bootopt, cmd_unset_bootopt, cmd_extra_initrd_append, cmd_extra_initrd_reset; static grub_command_t cmd_set_bootopt, cmd_unset_bootopt, cmd_extra_initrd_append, cmd_extra_initrd_reset;

@ -244,6 +244,15 @@ static int ventoy_browser_valid_dirname(const char *name, int len)
return 0; return 0;
} }
if (g_filt_trash_dir)
{
if (0 == grub_strncmp(name, ".trash-", 7) ||
0 == grub_strcmp(name, ".Trashes"))
{
return 0;
}
}
if (name[0] == '$') if (name[0] == '$')
{ {
if (0 == grub_strncmp(name, "$RECYCLE.BIN", 12) || if (0 == grub_strncmp(name, "$RECYCLE.BIN", 12) ||

@ -65,6 +65,7 @@ int g_initrd_img_count = 0;
int g_valid_initrd_count = 0; int g_valid_initrd_count = 0;
int g_default_menu_mode = 0; int g_default_menu_mode = 0;
int g_filt_dot_underscore_file = 0; int g_filt_dot_underscore_file = 0;
int g_filt_trash_dir = 1;
int g_sort_case_sensitive = 0; int g_sort_case_sensitive = 0;
int g_tree_view_menu_style = 0; int g_tree_view_menu_style = 0;
static grub_file_t g_old_file; static grub_file_t g_old_file;
@ -1900,9 +1901,14 @@ static int ventoy_collect_img_files(const char *filename, const struct grub_dirh
return 0; return 0;
} }
if (filename[0] == '$' && 0 == grub_strncmp(filename, "$RECYCLE.BIN", 12)) if (g_filt_trash_dir)
{ {
return 0; if (0 == grub_strncmp(filename, ".trash-", 7) ||
0 == grub_strcmp(filename, ".Trashes") ||
0 == grub_strncmp(filename, "$RECYCLE.BIN", 12))
{
return 0;
}
} }
if (g_plugin_image_list == VENTOY_IMG_WHITE_LIST) if (g_plugin_image_list == VENTOY_IMG_WHITE_LIST)
@ -2831,6 +2837,12 @@ static grub_err_t ventoy_cmd_list_img(grub_extcmd_context_t ctxt, int argc, char
{ {
g_filt_dot_underscore_file = 1; g_filt_dot_underscore_file = 1;
} }
strdata = ventoy_get_env("VTOY_FILT_TRASH_DIR");
if (strdata && strdata[0] == '0' && strdata[1] == 0)
{
g_filt_trash_dir = 0;
}
strdata = ventoy_get_env("VTOY_SORT_CASE_SENSITIVE"); strdata = ventoy_get_env("VTOY_SORT_CASE_SENSITIVE");
if (strdata && strdata[0] == '1' && strdata[1] == 0) if (strdata && strdata[0] == '1' && strdata[1] == 0)

@ -1298,6 +1298,7 @@ extern int g_tree_view_menu_style;
extern int g_sort_case_sensitive; extern int g_sort_case_sensitive;
extern int g_wimboot_enable; extern int g_wimboot_enable;
extern int g_filt_dot_underscore_file; extern int g_filt_dot_underscore_file;
extern int g_filt_trash_dir;
extern int g_vtoy_file_flt[VTOY_FILE_FLT_BUTT]; extern int g_vtoy_file_flt[VTOY_FILE_FLT_BUTT];
extern const char *g_menu_class[img_type_max]; extern const char *g_menu_class[img_type_max];
extern char g_iso_path[256]; extern char g_iso_path[256];

@ -1099,6 +1099,7 @@ static grub_err_t ventoy_linux_locate_initrd(int filt, int *filtcnt)
if (filtbysize if (filtbysize
&& (NULL == grub_strstr(node->name, "minirt.gz")) && (NULL == grub_strstr(node->name, "minirt.gz"))
&& (NULL == grub_strstr(node->name, "initrd.xz")) && (NULL == grub_strstr(node->name, "initrd.xz"))
&& (NULL == grub_strstr(node->name, "initrd.gz"))
) )
{ {
if (filt > 0 && file->size <= g_ventoy_cpio_size + 2048) if (filt > 0 && file->size <= g_ventoy_cpio_size + 2048)

@ -504,7 +504,7 @@ grub_err_t ventoy_cmd_get_vtoy_type(grub_extcmd_context_t ctxt, int argc, char *
vhd_footer_t vhdfoot; vhd_footer_t vhdfoot;
VDIPREHEADER vdihdr; VDIPREHEADER vdihdr;
char type[16] = {0}; char type[16] = {0};
ventoy_gpt_info *gpt; ventoy_gpt_info *gpt = NULL;
(void)ctxt; (void)ctxt;

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 KiB

@ -20,7 +20,7 @@
. $VTOY_PATH/hook/ventoy-os-lib.sh . $VTOY_PATH/hook/ventoy-os-lib.sh
$BUSYBOX_PATH/mkdir /dev $BUSYBOX_PATH/mkdir /dev
$BUSYBOX_PATH/mknod -m 660 /dev/console b 5 1 $BUSYBOX_PATH/mknod -m 660 /dev/console c 5 1
$SED "/for device in/i $BUSYBOX_PATH/sh $VTOY_PATH/hook/aryalinux/disk_hook.sh" -i /init $SED "/for device in/i $BUSYBOX_PATH/sh $VTOY_PATH/hook/aryalinux/disk_hook.sh" -i /init
#$SED "/for device in/i exec $BUSYBOX_PATH/sh" -i /init #$SED "/for device in/i exec $BUSYBOX_PATH/sh" -i /init

@ -0,0 +1,32 @@
#!/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
for i in 0 1 2 3 4 5 6 7 8 9; do
vtdiskname=$(get_ventoy_disk_name)
if [ "$vtdiskname" = "unknown" ]; then
vtlog "wait for disk ..."
$SLEEP 3
else
break
fi
done
ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2"

@ -0,0 +1,22 @@
#!/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/>.
#
#************************************************************************************
. $VTOY_PATH/hook/ventoy-os-lib.sh
$SED "/maybe_break *premount/a\ $BUSYBOX_PATH/sh $VTOY_PATH/hook/chimera/disk_hook.sh" -i /init

@ -40,13 +40,13 @@ ventoy_os_install_dmsetup_by_unsquashfs() {
dmModPath="/usr/lib/modules/$vtKerVer/kernel/drivers/md/dm-mod.$vtKoPo" dmModPath="/usr/lib/modules/$vtKerVer/kernel/drivers/md/dm-mod.$vtKoPo"
echo $dmModPath > $VTOY_PATH/fsextract echo $dmModPath > $VTOY_PATH/fsextract
vtoy_unsquashfs -d $VTOY_PATH/sqfs -n -q -e $VTOY_PATH/fsextract $VTOY_PATH/fsdisk vtoy_unsquashfs -d $VTOY_PATH/sqfs -n -q -e $VTOY_PATH/fsextract $VTOY_PATH/fsdisk 2>>$VTLOG
if ! [ -e $VTOY_PATH/sqfs${dmModPath} ]; then if ! [ -e $VTOY_PATH/sqfs${dmModPath} ]; then
rm -rf $VTOY_PATH/sqfs rm -rf $VTOY_PATH/sqfs
dmModPath="/lib/modules/$vtKerVer/kernel/drivers/md/dm-mod.$vtKoPo" dmModPath="/lib/modules/$vtKerVer/kernel/drivers/md/dm-mod.$vtKoPo"
echo $dmModPath > $VTOY_PATH/fsextract echo $dmModPath > $VTOY_PATH/fsextract
vtoy_unsquashfs -d $VTOY_PATH/sqfs -n -q -e $VTOY_PATH/fsextract $VTOY_PATH/fsdisk vtoy_unsquashfs -d $VTOY_PATH/sqfs -n -q -e $VTOY_PATH/fsextract $VTOY_PATH/fsdisk 2>>$VTLOG
fi fi
if [ -e $VTOY_PATH/sqfs${dmModPath} ]; then if [ -e $VTOY_PATH/sqfs${dmModPath} ]; then

@ -37,12 +37,20 @@ ventoy_os_install_dmsetup_by_fuse() {
mount -t iso9660 $VTOY_PATH/mnt/fuse/ventoy.iso $VTOY_PATH/mnt/iso mount -t iso9660 $VTOY_PATH/mnt/fuse/ventoy.iso $VTOY_PATH/mnt/iso
sfsfile=$(ls $VTOY_PATH/mnt/iso/*.sfs) if ls $VTOY_PATH/mnt/iso/zdrv_*.sfs 2>/dev/null; then
sfsfile=$(ls $VTOY_PATH/mnt/iso/zdrv_*.sfs)
else
sfsfile=$(ls $VTOY_PATH/mnt/iso/*.sfs)
fi
mount -t squashfs $sfsfile $VTOY_PATH/mnt/squashfs mount -t squashfs $sfsfile $VTOY_PATH/mnt/squashfs
kVer=$(uname -r) kVer=$(uname -r)
KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$kVer/kernel/drivers/md/dm-mod.ko*) KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$kVer/kernel/drivers/md/dm-mod.ko*)
if [ -z "$KoName" ]; then
KoName=$(ls $VTOY_PATH/mnt/squashfs/usr/lib/modules/$kVer/kernel/drivers/md/dm-mod.ko*)
fi
vtlog "insmod $KoName" vtlog "insmod $KoName"
insmod $KoName insmod $KoName

@ -28,6 +28,7 @@ vtlog "####### $0 $* ########"
VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
ventoy_os_install_dmsetup_by_fuse() { ventoy_os_install_dmsetup_by_fuse() {
local drvdir=""
vtlog "ventoy_os_install_dmsetup_by_fuse $*" vtlog "ventoy_os_install_dmsetup_by_fuse $*"
mkdir -p $VTOY_PATH/mnt/fuse $VTOY_PATH/mnt/iso $VTOY_PATH/mnt/squashfs mkdir -p $VTOY_PATH/mnt/fuse $VTOY_PATH/mnt/iso $VTOY_PATH/mnt/squashfs
@ -37,11 +38,13 @@ ventoy_os_install_dmsetup_by_fuse() {
mount -t iso9660 $VTOY_PATH/mnt/fuse/ventoy.iso $VTOY_PATH/mnt/iso mount -t iso9660 $VTOY_PATH/mnt/fuse/ventoy.iso $VTOY_PATH/mnt/iso
for sfsfile in $(ls $VTOY_PATH/mnt/iso/*drv_veket*.sfs); do for sfsfile in $(ls $VTOY_PATH/mnt/iso/*drv_veket*.sfs); do
mount -t squashfs $sfsfile $VTOY_PATH/mnt/squashfs mount -t squashfs $sfsfile $VTOY_PATH/mnt/squashfs
if [ -d $VTOY_PATH/mnt/squashfs/lib/modules ]; then if [ -d $VTOY_PATH/mnt/squashfs/lib/modules ]; then
KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$2/kernel/drivers/md/dm-mod.ko*) KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$2/kernel/drivers/md/dm-mod.ko*)
if [ -n "$KoName" -a -f $KoName ]; then if [ -n "$KoName" -a -f $KoName ]; then
drvdir=$VTOY_PATH/mnt/squashfs/lib/modules/$2
break break
fi fi
fi fi
@ -49,11 +52,29 @@ ventoy_os_install_dmsetup_by_fuse() {
umount $VTOY_PATH/mnt/squashfs umount $VTOY_PATH/mnt/squashfs
done done
KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$2/kernel/drivers/dax/dax.ko*)
if [ -z "$drvdir" ]; then
vtlog "retry for usr/lib dir"
for sfsfile in $(ls $VTOY_PATH/mnt/iso/*drv_veket*.sfs); do
mount -t squashfs $sfsfile $VTOY_PATH/mnt/squashfs
if [ -d $VTOY_PATH/mnt/squashfs/usr/lib/modules ]; then
KoName=$(ls $VTOY_PATH/mnt/squashfs/usr/lib/modules/$2/kernel/drivers/md/dm-mod.ko*)
if [ -n "$KoName" -a -f $KoName ]; then
drvdir=$VTOY_PATH/mnt/squashfs/usr/lib/modules/$2
break
fi
fi
umount $VTOY_PATH/mnt/squashfs
done
fi
KoName=$(ls $drvdir/kernel/drivers/dax/dax.ko*)
vtlog "insmod $KoName" vtlog "insmod $KoName"
insmod $KoName insmod $KoName
KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$2/kernel/drivers/md/dm-mod.ko*) KoName=$(ls $drvdir/kernel/drivers/md/dm-mod.ko*)
vtlog "insmod $KoName" vtlog "insmod $KoName"
insmod $KoName insmod $KoName

@ -26,6 +26,10 @@ ventoy_get_debian_distro() {
if $EGREP -q "ID=.*antix|ID=.*mx" /etc/initrd-release; then if $EGREP -q "ID=.*antix|ID=.*mx" /etc/initrd-release; then
echo 'antix'; return echo 'antix'; return
fi fi
elif [ -e /etc/initrd_release ]; then
if $EGREP -q "ID=.*antix|ID=.*mx" /etc/initrd_release; then
echo 'antix'; return
fi
fi fi
if [ -e /DISTRO_SPECS ]; then if [ -e /DISTRO_SPECS ]; then
@ -45,6 +49,8 @@ ventoy_get_debian_distro() {
echo 'mll'; return echo 'mll'; return
elif $GREP -m1 -q 'stratodesk.com' /init; then elif $GREP -m1 -q 'stratodesk.com' /init; then
echo 'stratodesk'; return echo 'stratodesk'; return
elif $GREP -q "\bPVE\b" /init; then
echo 'pve'; return
fi fi
fi fi

@ -0,0 +1,40 @@
#!/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
wait_for_usb_disk_ready
vtdiskname=$(get_ventoy_disk_name)
if [ "$vtdiskname" = "unknown" ]; then
vtlog "ventoy disk not found"
PATH=$VTPATH_OLD
exit 0
fi
vtlog "${vtdiskname#/dev/}2 found..."
$BUSYBOX_PATH/sh $VTOY_PATH/hook/debian/udev_disk_hook.sh "${vtdiskname#/dev/}2"
if [ -f /ventoy/autoinstall ]; then
sh /ventoy/hook/default/auto_install_varexp.sh /ventoy/autoinstall
fi

@ -0,0 +1,151 @@
#!/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
ventoy_os_install_dmsetup() {
vtlog "ventoy_os_install_dmsetup $1 ..."
vt_usb_disk=$1
# dump iso file location
$VTOY_PATH/tool/vtoydm -i -f $VTOY_PATH/ventoy_image_map -d ${vt_usb_disk} > $VTOY_PATH/iso_file_list
# install dmsetup
LINE=$($GREP ' dmsetup.*\.udeb' $VTOY_PATH/iso_file_list)
if [ $? -eq 0 ]; then
install_udeb_from_line "$LINE" ${vt_usb_disk}
fi
# install libdevmapper
LINE=$($GREP ' libdevmapper.*\.udeb' $VTOY_PATH/iso_file_list)
if [ $? -eq 0 ]; then
install_udeb_from_line "$LINE" ${vt_usb_disk}
fi
# install md-modules
LINE=$($GREP -i ' md-modules.*\.udeb' $VTOY_PATH/iso_file_list)
if [ $? -eq 0 ]; then
LINTCNT=$($GREP -i -c ' md-modules.*\.udeb' $VTOY_PATH/iso_file_list)
if [ $LINTCNT -gt 1 ]; then
vtlog "more than one pkgs, need to filter..."
VER=$($BUSYBOX_PATH/uname -r)
LINE=$($GREP -i ' md-modules.*\.udeb' $VTOY_PATH/iso_file_list | $GREP -i $VER)
LINTCNT=$($GREP -i ' md-modules.*\.udeb' $VTOY_PATH/iso_file_list | $GREP -i -c $VER)
if [ $LINTCNT -gt 1 ]; then
vtlog "Still more than one pkgs, use the first one..."
LINE=$($GREP -i ' md-modules.*\.udeb' $VTOY_PATH/iso_file_list | $GREP -i -m1 $VER)
fi
fi
install_udeb_from_line "$LINE" ${vt_usb_disk}
fi
# insmod md-mod if needed
if $GREP -q 'device-mapper' /proc/devices; then
vtlog "device mapper module is loaded"
else
vtlog "device mapper module is NOT loaded, now load it..."
VER=$($BUSYBOX_PATH/uname -r)
KO=$($FIND /lib/modules/$VER/kernel/drivers/md -name "dm-mod*")
vtlog "KO=$KO"
insmod $KO
fi
vtlog "dmsetup install finish, now check it..."
if dmsetup info >> $VTLOG 2>&1; then
vtlog "dmsetup work ok"
else
vtlog "dmsetup not work, now try to load eglibc ..."
# install eglibc (some ubuntu 32 bit version need it)
LINE=$($GREP 'libc6-.*\.udeb' $VTOY_PATH/iso_file_list)
if [ $? -eq 0 ]; then
install_udeb_from_line "$LINE" ${vt_usb_disk}
fi
if dmsetup info >> $VTLOG 2>&1; then
vtlog "dmsetup work ok after retry"
else
vtlog "dmsetup still not work after retry"
fi
fi
}
if is_ventoy_hook_finished || not_ventoy_disk "${1:0:-1}"; then
exit 0
fi
vtlog "==== $0 $* ===="
dmsetup_path=$(ventoy_find_bin_path dmsetup)
if [ -z "$dmsetup_path" ]; then
ventoy_os_install_dmsetup "/dev/${1:0:-1}"
fi
if ! $GREP -q 'device-mapper' /proc/devices; then
ventoy_os_install_dmsetup "/dev/${1:0:-1}"
fi
ventoy_udev_disk_common_hook $*
#
# Some distro default only accept usb partitions as install medium.
# So if ventoy is installed on a non-USB device, we just mount /cdrom here except
# for these has boot=live or boot=casper parameter in cmdline
#
VT_BUS_USB=""
if [ -n "$ID_BUS" ]; then
if echo $ID_BUS | $GREP -q -i usb; then
VT_BUS_USB="YES"
fi
else
if $BUSYBOX_PATH/ls -l /sys/class/block/${1:0:-1} | $GREP -q -i usb; then
VT_BUS_USB="YES"
fi
fi
if [ -n "$VT_BUS_USB" ]; then
vtlog "$1 is USB device"
echo /dev/$1 > /ventoy/list-devices-usb-part
else
vtlog "$1 is NOT USB device (bus $ID_BUS)"
if $EGREP -q 'boot=|casper' /proc/cmdline; then
vtlog "boot=, or casper, don't mount"
else
vtlog "No boot param, need to mount"
echo /dev/$1 > /ventoy/list-devices-usb-part
fi
fi
#special process for Linx
if $BUSYBOX_PATH/uname -r | $GREP -q "^2\.6"; then
if $GREP -q "linx" /proc/version; then
blkdev_num=$($VTOY_PATH/tool/dmsetup ls | $GREP ventoy | $SED 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/')
vtDM=$(ventoy_find_dm_id ${blkdev_num})
echo "/dev/$vtDM" > /ventoy/list-devices-usb-part
fi
fi
# OK finish
set_ventoy_hook_finish

@ -0,0 +1,42 @@
#!/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/>.
#
#************************************************************************************
if [ -e /init ] && $GREP -q '^mountroot$' /init; then
echo "Here before mountroot ..." >> $VTLOG
$SED "/^mountroot$/i\\$BUSYBOX_PATH/sh $VTOY_PATH/hook/deepin/disk_mount_hook.sh" -i /init
$SED "/^mountroot$/i\\export LIVEMEDIA=/dev/mapper/ventoy" -i /init
$SED "/^mountroot$/i\\export LIVE_MEDIA=/dev/mapper/ventoy" -i /init
if $GREP -q 'live-media=' /proc/cmdline; then
if [ -f /scripts/casper ] && $GREP -q '^ *LIVEMEDIA=' /scripts/casper; then
$SED "s#^ *LIVEMEDIA=.*#LIVEMEDIA=/dev/mapper/ventoy#" -i /scripts/casper
fi
fi
else
echo "Here use udev hook ..." >> $VTLOG
ventoy_systemd_udevd_work_around
ventoy_add_udev_rule "$VTOY_PATH/hook/deepin/udev_disk_hook.sh %k"
fi
if [ -f $VTOY_PATH/autoinstall ]; then
echo "Do auto install ..." >> $VTLOG
$SED '/maybe_break[[:space:]]*init/i\/ventoy/busybox/sh /ventoy/hook/deepin/ventoy_autoinstall.sh >>/ventoy/autoinstall.log 2>&1' -i /init
fi

@ -0,0 +1,122 @@
#!/ventoy/busybox/sh
. /ventoy/hook/ventoy_hook_lib.sh
change_var_value() {
local vfile=$1
local vkey=$2
local vVal=$3
local quote=$4
local vline
if [ $quote -eq 0 ]; then
vline="$vkey = $vVal"
else
vline="$vkey = \"$vVal\""
fi
if grep -q -m1 "^$vkey[[:space:]]*=" $vfile; then
sed "s#^$vkey[[:space:]]*=.*#$vline#g" -i $vfile
else
echo "$vline" >> $vfile
fi
}
setting_script_process() {
local sfile=$1
local vItem
local vB64Item
vItem=$(grep '^language[[:space:]]*=' /ventoy/autoinstall | awk '{print $3}')
if [ -n "$vItem" ]; then
change_var_value $sfile 'select_language_default_locale' "$vItem" 0
fi
vItem=$(grep '^timezone[[:space:]]*=' /ventoy/autoinstall | awk '{print $3}')
if [ -n "$vItem" ]; then
change_var_value $sfile 'timezone_default' "$vItem" 0
fi
vItem=$(grep '^hostname[[:space:]]*=' /ventoy/autoinstall | awk '{print $3}')
if [ -n "$vItem" ]; then
change_var_value $sfile 'system_info_default_hostname' "$vItem" 1
change_var_value $sfile 'DI_HOSTNAME' "$vItem" 1
fi
vItem=$(grep '^root_password[[:space:]]*=' /ventoy/autoinstall | awk '{print $3}')
if [ -n "$vItem" ]; then
vB64Item=$(echo -n "$vItem" | base64)
change_var_value $sfile 'system_info_default_root_password' "$vB64Item" 1
change_var_value $sfile 'DI_ROOTPASSWORD' "$vB64Item" 1
fi
vItem=$(grep '^default_username[[:space:]]*=' /ventoy/autoinstall | awk '{print $3}')
if [ -n "$vItem" ]; then
change_var_value $sfile 'system_info_default_username' "$vItem" 1
change_var_value $sfile 'DI_USERNAME' "$vItem" 1
fi
vItem=$(grep '^default_password[[:space:]]*=' /ventoy/autoinstall | awk '{print $3}')
if [ -n "$vItem" ]; then
change_var_value $sfile 'system_info_default_password' "$vItem" 1
change_var_value $sfile 'DI_PASSWORD' "$vItem" 1
fi
vItem=$(grep '^install_disk[[:space:]]*=' /ventoy/autoinstall | awk '{print $3}')
if [ -n "$vItem" ]; then
echo "DI_FULLDISK_MULTIDISK_DEVICE = $vItem" >> $sfile
echo "DI_ROOTDISK = $vItem" >> $sfile
echo "DI_BOOTLOADER = $vItem" >> $sfile
fi
change_var_value $sfile 'skip_virtual_machine_page' 'true' 0
change_var_value $sfile 'skip_select_language_page' 'true' 0
change_var_value $sfile 'skip_select_language_page_on_first_boot' 'true' 0
change_var_value $sfile 'skip_system_keyboard_page' 'true' 0
change_var_value $sfile 'skip_system_info_page' 'true' 0
change_var_value $sfile 'skip_qr_code_system_info_page' 'true' 0
change_var_value $sfile 'skip_timezone_page' 'true' 0
change_var_value $sfile 'skip_partition_page' 'true' 0
change_var_value $sfile 'system_info_password_validate_required' '0' 0
change_var_value $sfile 'system_info_password_strong_check' 'false' 0
change_var_value $sfile 'partition_do_auto_part' 'true' 0
change_var_value $sfile 'system_info_disable_license' 'true' 0
change_var_value $sfile 'system_info_disable_experience' 'true' 0
change_var_value $sfile 'system_info_disable_privacy_license' 'true' 0
#filesystem.squashfs search ini
#first_page_state=0表示不跳过首页展示首页让用户自己选择
#first_page_state=1表示跳过首页并且自动点击一键安装
#first_page_state=2表示跳过首页并且自动点击自定义安装
#first_page_state=3表示跳过首页并且直接以全盘安装方式自动安装
change_var_value $sfile 'first_page_state' '3' 0
}
update_settings() {
local script=$1
local newscript
echo "update_settings for $script ..."
newscript=$(basename $script)
cp -a $script /ventoy/vini_${newscript}
setting_script_process /ventoy/vini_${newscript}
rm -f $script
cp -a /ventoy/vini_${newscript} $script
}
sh /ventoy/hook/common/auto_install_varexp.sh /ventoy/autoinstall
update_settings /root/usr/share/deepin-installer/resources/default_settings.ini
ls -1 /root/usr/share/deepin-installer/resources/override/ | while read line; do
update_settings /root/usr/share/deepin-installer/resources/override/$line
done
ls -1 /root/usr/share/deepin-installer/resources/oem/ | while read line; do
update_settings /root/usr/share/deepin-installer/resources/oem/$line
done

@ -24,6 +24,7 @@
if [ -f $VTOY_PATH/autoinstall ]; then if [ -f $VTOY_PATH/autoinstall ]; then
VTKS="inst.ks=file:$VTOY_PATH/autoinstall" VTKS="inst.ks=file:$VTOY_PATH/autoinstall"
cp -a $VTOY_PATH/hook/rhel7/ventoy-autoexp.sh /lib/dracut/hooks/pre-mount/99-ventoy-autoexp.sh
else else
for vtParam in $($CAT /proc/cmdline); do for vtParam in $($CAT /proc/cmdline); do
if echo $vtParam | $GREP -q 'ks=file:/'; then if echo $vtParam | $GREP -q 'ks=file:/'; then
@ -90,23 +91,7 @@ if ls $VTOY_PATH | $GREP -q 'ventoy_dud[0-9]'; then
fi fi
echo "vtInstDD=$vtInstDD" >> $VTLOG echo "vtInstDD=$vtInstDD" >> $VTLOG
if $GREP -q 'root=live' /proc/cmdline; then
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE root=live:/dev/ventoy $VTKS $VTOVERLAY $vtInstDD#" -i /lib/dracut-lib.sh
else
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE inst.stage2=hd:/dev/ventoy $VTKS $VTOVERLAY $vtInstDD#" -i /lib/dracut-lib.sh
fi
ventoy_set_inotify_script rhel7/ventoy-inotifyd-hook.sh
#Fedora
if $BUSYBOX_PATH/which dmsquash-live-root > /dev/null; then
vtPriority=99
else
vtPriority=01
fi
$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/rhel7/ventoy-inotifyd-start.sh /lib/dracut/hooks/pre-udev/${vtPriority}-ventoy-inotifyd-start.sh
$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/rhel7/ventoy-timeout.sh /lib/dracut/hooks/initqueue/timeout/${vtPriority}-ventoy-timeout.sh
vtNeedRepo= vtNeedRepo=
if [ -f /etc/system-release ]; then if [ -f /etc/system-release ]; then
@ -125,12 +110,61 @@ if $GREP -i -q Fedora /proc/version; then
fi fi
fi fi
if $GREP -i -q Fedora /etc/os-release; then
if $GREP -q 'Server Edition' /etc/os-release; then
vtNeedRepo="yes"
fi
fi
echo "vtNeedRepo=$vtNeedRepo" >> $VTLOG echo "vtNeedRepo=$vtNeedRepo" >> $VTLOG
if [ "$vtNeedRepo" = "yes" ]; then if [ "$vtNeedRepo" = "yes" ]; then
$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/rhel7/ventoy-repo.sh /lib/dracut/hooks/pre-pivot/99-ventoy-repo.sh $BUSYBOX_PATH/cp -a $VTOY_PATH/hook/rhel7/ventoy-repo.sh /lib/dracut/hooks/pre-pivot/99-ventoy-repo.sh
fi fi
#iso-scan (currently only for Fedora)
if $GREP -q Fedora /etc/os-release; then
if /ventoy/tool/vtoydump -a /ventoy/ventoy_os_param; then
if ventoy_iso_scan_check; then
echo "iso_scan process ..." >> $VTLOG
vtIsoPath=$(/ventoy/tool/vtoydump -p /ventoy/ventoy_os_param)
VTISO_SCAN="iso-scan/filename=$vtIsoPath"
echo -n $vtIsoPath > /ventoy/vtoy_iso_scan
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE $VTISO_SCAN $VTKS $VTOVERLAY $vtInstDD#" -i /lib/dracut-lib.sh
if [ "$VTOY_LINUX_REMOUNT" = "01" -a "$vtNeedRepo" != "yes" ]; then
ventoy_rw_iso_scan
fi
exit 0
fi
fi
fi
echo "common process ..." >> $VTLOG
if $GREP -q 'root=live' /proc/cmdline; then
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE root=live:/dev/ventoy $VTKS $VTOVERLAY $VTISO_SCAN $vtInstDD#" -i /lib/dracut-lib.sh
else
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE inst.stage2=hd:/dev/ventoy $VTKS $VTOVERLAY $VTISO_SCAN $vtInstDD#" -i /lib/dracut-lib.sh
fi
ventoy_set_inotify_script rhel7/ventoy-inotifyd-hook.sh
#Fedora
if $BUSYBOX_PATH/which dmsquash-live-root > /dev/null; then
vtPriority=99
else
vtPriority=01
fi
$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/rhel7/ventoy-inotifyd-start.sh /lib/dracut/hooks/pre-udev/${vtPriority}-ventoy-inotifyd-start.sh
$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/rhel7/ventoy-timeout.sh /lib/dracut/hooks/initqueue/timeout/${vtPriority}-ventoy-timeout.sh
if [ -e /sbin/dmsquash-live-root ]; then if [ -e /sbin/dmsquash-live-root ]; then
echo "patch /sbin/dmsquash-live-root ..." >> $VTLOG echo "patch /sbin/dmsquash-live-root ..." >> $VTLOG
$SED "1 a $BUSYBOX_PATH/sh $VTOY_PATH/hook/rhel7/ventoy-make-link.sh" -i /sbin/dmsquash-live-root $SED "1 a $BUSYBOX_PATH/sh $VTOY_PATH/hook/rhel7/ventoy-make-link.sh" -i /sbin/dmsquash-live-root
@ -147,10 +181,6 @@ if $GREP -i -q 'fedora.*coreos' /etc/os-release; then
cp -a $VTOY_PATH/hook/rhel7/ventoy-make-link.sh /lib/dracut/hooks/pre-mount/99-ventoy-premount-mklink.sh cp -a $VTOY_PATH/hook/rhel7/ventoy-make-link.sh /lib/dracut/hooks/pre-mount/99-ventoy-premount-mklink.sh
fi fi
if [ -f $VTOY_PATH/autoinstall ]; then
cp -a $VTOY_PATH/hook/rhel7/ventoy-autoexp.sh /lib/dracut/hooks/pre-mount/99-ventoy-autoexp.sh
fi
#special distro magic #special distro magic
$BUSYBOX_PATH/mkdir -p $VTOY_PATH/distmagic $BUSYBOX_PATH/mkdir -p $VTOY_PATH/distmagic

@ -23,7 +23,18 @@ vtlog "##### $0 $* ..."
VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
repodev=$(ls $VTOY_PATH/dev_backup*) if [ -f /ventoy/vtoy_iso_scan ]; then
echo "inst.repo=hd:/dev/${repodev#*dev_backup_}" >> /sysroot/etc/cmdline repopath=$(cat /ventoy/vtoy_iso_scan)
repodev=$(vtoydump -f /ventoy/ventoy_os_param | awk -F'#' '{print $1}')
if echo $repodev | egrep -q "nvme|mmc|nbd"; then
vtpart1=${repodev}p1
else
vtpart1=${repodev}1
fi
echo "inst.repo=hd:${vtpart1}:${repopath}" >> /sysroot/etc/cmdline
else
repodev=$(ls $VTOY_PATH/dev_backup*)
echo "inst.repo=hd:/dev/${repodev#*dev_backup_}" >> /sysroot/etc/cmdline
fi
PATH=$VTPATH_OLD PATH=$VTPATH_OLD

@ -54,6 +54,21 @@ if [ -z "$dmsetup_path" ]; then
ventoy_os_install_dmsetup "/dev/${1:0:-1}" ventoy_os_install_dmsetup "/dev/${1:0:-1}"
fi fi
if [ -f /proc/devices ]; then
vtlog "/proc/devices exist OK"
else
for i in 1 2 3 4 5 6 7 8 9; do
if [ -f /proc/devices ]; then
vtlog "/proc/devices exist OK now"
break
else
vtlog "/proc/devices NOT exist, wait $i"
$BUSYBOX_PATH/sleep 1
fi
done
fi
ventoy_udev_disk_common_hook $* ventoy_udev_disk_common_hook $*
# OK finish # OK finish

@ -60,7 +60,7 @@ fi
if [ -e /etc/initrd.functions ] && $GREP -q 'HPIP' /etc/initrd.functions; then if [ -e /etc/initrd.functions ] && $GREP -q 'HPIP' /etc/initrd.functions; then
echo "HPIP" >> $VTLOG echo "HPIP" >> $VTLOG
$BUSYBOX_PATH/mkdir /dev $BUSYBOX_PATH/mkdir /dev
$BUSYBOX_PATH/mknod -m 660 /dev/console b 5 1 $BUSYBOX_PATH/mknod -m 660 /dev/console c 5 1
$SED "/CD_DEVICES=/a $BUSYBOX_PATH/sh $VTOY_PATH/hook/suse/disk_hook.sh" -i /etc/initrd.functions $SED "/CD_DEVICES=/a $BUSYBOX_PATH/sh $VTOY_PATH/hook/suse/disk_hook.sh" -i /etc/initrd.functions
$SED "/CD_DEVICES=/a CD_DEVICES=\"/dev/ventoy \$CD_DEVICES\"" -i /etc/initrd.functions $SED "/CD_DEVICES=/a CD_DEVICES=\"/dev/ventoy \$CD_DEVICES\"" -i /etc/initrd.functions
elif [ -f /scripts/udev_setup ]; then elif [ -f /scripts/udev_setup ]; then

@ -209,11 +209,20 @@ ventoy_check_dm_module() {
vtlog "modprobe failed, now try to insmod ko..." vtlog "modprobe failed, now try to insmod ko..."
$FIND /lib/modules/ -name "dm-mod.ko*" | while read vtline; do $FIND /lib/modules/ -name "dm-mod.ko*" | while read vtline; do
vtlog "insmode $vtline " vtlog "insmod $vtline "
$BUSYBOX_PATH/insmod $vtline >>$VTLOG 2>&1 $BUSYBOX_PATH/insmod $vtline >>$VTLOG 2>&1
if [ $? -eq 0 ]; then
vtlog "insmod success"
else
vtlog "insmod failed, try decompress"
if echo $vtline | $GREP -q "\.zst"; then
$VTOY_PATH/tool/zstdcat $vtline > $VTOY_PATH/extract_dm_mod.ko
$BUSYBOX_PATH/insmod $VTOY_PATH/extract_dm_mod.ko >>$VTLOG 2>&1
fi
fi
done done
fi fi
if $GREP -q 'device-mapper' /proc/devices; then if $GREP -q 'device-mapper' /proc/devices; then
vtlog "device-mapper found in /proc/devices after retry" vtlog "device-mapper found in /proc/devices after retry"
$BUSYBOX_PATH/true; return $BUSYBOX_PATH/true; return
@ -223,6 +232,42 @@ ventoy_check_dm_module() {
fi fi
} }
ventoy_need_proc_ibt() {
vtKv=$($BUSYBOX_PATH/uname -r)
vtMajor=$(echo $vtKv | $AWK -F. '{print $1}')
vtMinor=$(echo $vtKv | $AWK -F. '{print $2}')
#ibt was supported since linux kernel 5.18
if [ $vtMajor -lt 5 ]; then
$BUSYBOX_PATH/false; return
elif [ $vtMajor -eq 5 ]; then
if [ $vtMajor -lt 18 ]; then
$BUSYBOX_PATH/false; return
fi
fi
if $GREP -q ' ibt=off' /proc/cmdline; then
$BUSYBOX_PATH/false; return
fi
#hardware CPU doesn't support IBT
if $VTOY_PATH/tool/vtoykmod -I; then
:
else
$BUSYBOX_PATH/false; return
fi
#dot.CONFIG not enabled
if $GREP -q ' ibt_restore$' /proc/kallsyms; then
:
else
$BUSYBOX_PATH/false; return
fi
$BUSYBOX_PATH/true
}
ventoy_need_dm_patch() { ventoy_need_dm_patch() {
if [ "$VTOY_LINUX_REMOUNT" != "01" ]; then if [ "$VTOY_LINUX_REMOUNT" != "01" ]; then
if $GREP -q 'VTOY_LINUX_REMOUNT=1' /proc/cmdline; then if $GREP -q 'VTOY_LINUX_REMOUNT=1' /proc/cmdline; then
@ -256,6 +301,7 @@ ventoy_need_dm_patch() {
} }
ventoy_dm_patch() { ventoy_dm_patch() {
vtDmPatchDebug=0
vtMType=$($BUSYBOX_PATH/uname -m) vtMType=$($BUSYBOX_PATH/uname -m)
vtlog "######### ventoy_dm_patch ############" vtlog "######### ventoy_dm_patch ############"
@ -269,6 +315,16 @@ ventoy_dm_patch() {
return return
fi fi
if ventoy_need_proc_ibt; then
vtlog "need to proc IBT"
vtKoName=dm_patch_ibt_64.ko
vtIBT='0x8888'
else
vtlog "NO need to proc IBT"
vtIBT='0'
fi
if [ -f $VTOY_PATH/tool/$vtKoName ]; then if [ -f $VTOY_PATH/tool/$vtKoName ]; then
vtlog "/ventoy/tool/$vtKoName exist OK" vtlog "/ventoy/tool/$vtKoName exist OK"
else else
@ -279,8 +335,9 @@ ventoy_dm_patch() {
$CAT /proc/kallsyms | $BUSYBOX_PATH/sort > $VTOY_PATH/kallsyms $CAT /proc/kallsyms | $BUSYBOX_PATH/sort > $VTOY_PATH/kallsyms
if $GREP -m1 -q 'open_table_device.isra' $VTOY_PATH/kallsyms; then if $GREP -m1 -q 'open_table_device.isra' $VTOY_PATH/kallsyms; then
vtLine=$($VTOY_PATH/tool/vtoyksym open_table_device.isra $VTOY_PATH/kallsyms) vtISRA=$($GREP -m1 'open_table_device.isra' $VTOY_PATH/kallsyms | $AWK '{print $3}')
vtlog "get open_table_device.isra address $vtLine" vtLine=$($VTOY_PATH/tool/vtoyksym $vtISRA $VTOY_PATH/kallsyms)
vtlog "get $vtISRA address $vtLine"
else else
vtLine=$($VTOY_PATH/tool/vtoyksym dm_get_table_device $VTOY_PATH/kallsyms) vtLine=$($VTOY_PATH/tool/vtoyksym dm_get_table_device $VTOY_PATH/kallsyms)
vtlog "get dm_get_table_device address $vtLine" vtlog "get dm_get_table_device address $vtLine"
@ -288,6 +345,23 @@ ventoy_dm_patch() {
get_addr=$(echo $vtLine | $AWK '{print $1}') get_addr=$(echo $vtLine | $AWK '{print $1}')
get_size=$(echo $vtLine | $AWK '{print $2}') get_size=$(echo $vtLine | $AWK '{print $2}')
vtLine=$($VTOY_PATH/tool/vtoyksym blkdev_get_by_dev $VTOY_PATH/kallsyms)
vtlog "get blkdev_get_by_dev address $vtLine"
blkdev_get_addr=$(echo $vtLine | $AWK '{print $1}')
vtLine=$($VTOY_PATH/tool/vtoyksym blkdev_put $VTOY_PATH/kallsyms)
vtlog "get blkdev_put address $vtLine"
blkdev_put_addr=$(echo $vtLine | $AWK '{print $1}')
vtLine=$($VTOY_PATH/tool/vtoyksym bdev_open_by_dev $VTOY_PATH/kallsyms)
vtlog "get bdev_open_by_dev address $vtLine"
bdev_open_addr=$(echo $vtLine | $AWK '{print $1}')
vtLine=$($VTOY_PATH/tool/vtoyksym bdev_file_open_by_dev $VTOY_PATH/kallsyms)
vtlog "get bdev_file_open_by_dev address $vtLine"
bdev_file_open_addr=$(echo $vtLine | $AWK '{print $1}')
if $GREP -m1 -q 'close_table_device.isra' $VTOY_PATH/kallsyms; then if $GREP -m1 -q 'close_table_device.isra' $VTOY_PATH/kallsyms; then
vtLine=$($VTOY_PATH/tool/vtoyksym close_table_device.isra $VTOY_PATH/kallsyms) vtLine=$($VTOY_PATH/tool/vtoyksym close_table_device.isra $VTOY_PATH/kallsyms)
vtlog "get close_table_device.isra address $vtLine" vtlog "get close_table_device.isra address $vtLine"
@ -304,6 +378,15 @@ ventoy_dm_patch() {
kprobe_unreg_addr=$($GREP ' unregister_kprobe$' /proc/kallsyms | $AWK '{print $1}') kprobe_unreg_addr=$($GREP ' unregister_kprobe$' /proc/kallsyms | $AWK '{print $1}')
if [ "$VTOY_DEBUG_LEVEL" = "01" ]; then if [ "$VTOY_DEBUG_LEVEL" = "01" ]; then
vtDmPatchDebug=1
fi
if $GREP -q 'dmpatch_debug' /proc/cmdline; then
vtDmPatchDebug=1
fi
if [ $vtDmPatchDebug -eq 1 ]; then
printk_addr=$($GREP ' printk$' /proc/kallsyms | $AWK '{print $1}') printk_addr=$($GREP ' printk$' /proc/kallsyms | $AWK '{print $1}')
if [ -z "$printk_addr" ]; then if [ -z "$printk_addr" ]; then
printk_addr=$($GREP ' _printk$' /proc/kallsyms | $AWK '{print $1}') printk_addr=$($GREP ' _printk$' /proc/kallsyms | $AWK '{print $1}')
@ -318,8 +401,9 @@ ventoy_dm_patch() {
vtlog get_addr=$get_addr get_size=$get_size vtlog get_addr=$get_addr get_size=$get_size
vtlog put_addr=$put_addr put_size=$put_size vtlog put_addr=$put_addr put_size=$put_size
vtlog blkdev_get_addr=$blkdev_get_addr blkdev_put_addr=$blkdev_put_addr
vtlog kprobe_reg_addr=$kprobe_reg_addr kprobe_unreg_addr=$kprobe_unreg_addr vtlog kprobe_reg_addr=$kprobe_reg_addr kprobe_unreg_addr=$kprobe_unreg_addr
vtlog ro_addr=$ro_addr rw_addr=$rw_addr printk_addr=$printk_addr vtlog ro_addr=$ro_addr rw_addr=$rw_addr printk_addr=$printk_addr bdev_open_addr=$bdev_open_addr bdev_file_open_addr=$bdev_file_open_addr
if [ "$get_addr" = "0" -o "$put_addr" = "0" ]; then if [ "$get_addr" = "0" -o "$put_addr" = "0" ]; then
vtlog "Invalid symbol address" vtlog "Invalid symbol address"
@ -332,20 +416,26 @@ ventoy_dm_patch() {
vtKv=$($BUSYBOX_PATH/uname -r) vtKv=$($BUSYBOX_PATH/uname -r)
vtKVMajor=$(echo $vtKv | $AWK -F. '{print $1}')
vtKVMinor=$(echo $vtKv | $AWK -F. '{print $2}')
vtKVSubMinor=$(echo $vtKv | $AWK -F. '{print $3}')
if [ ! -d /lib/modules/$vtKv ]; then if [ ! -d /lib/modules/$vtKv ]; then
vtlog "No modules directory found" vtlog "No modules directory found"
return return
elif [ -d /lib/modules/$vtKv/kernel/fs ]; then elif [ -d /lib/modules/$vtKv/kernel/fs ]; then
vtModPath=$($FIND /lib/modules/$vtKv/kernel/fs/ -name "*.ko*" | $HEAD -n1) vtModPath=$($FIND /lib/modules/$vtKv/kernel/fs/ -name "*.ko*" | $HEAD -n1)
else elif [ -d /lib/modules/$vtKv/kernel ]; then
vtModPath=$($FIND /lib/modules/$vtKv/kernel/ -name "xfs.ko*" | $HEAD -n1) vtModPath=$($FIND /lib/modules/$vtKv/kernel/ -name "xfs.ko*" | $HEAD -n1)
elif [ -d /lib/modules/$vtKv/initrd ]; then
vtModPath=$($FIND /lib/modules/$vtKv/initrd/ -name "xfs.ko*" | $HEAD -n1)
fi fi
if [ -z "$vtModPath" ]; then if [ -z "$vtModPath" ]; then
vtModPath=$($FIND /lib/modules/$vtKv/kernel/ -name "*.ko*" | $HEAD -n1) vtModPath=$($FIND /lib/modules/$vtKv/ -name "*.ko*" | $HEAD -n1)
fi fi
vtModName=$($BUSYBOX_PATH/basename $vtModPath) vtModName=$($BUSYBOX_PATH/basename $vtModPath)
vtlog "template module is $vtModPath $vtModName" vtlog "template module is $vtModPath $vtModName"
@ -359,24 +449,37 @@ ventoy_dm_patch() {
$BUSYBOX_PATH/xzcat $vtModPath > $VTOY_PATH/$vtModName $BUSYBOX_PATH/xzcat $vtModPath > $VTOY_PATH/$vtModName
elif echo $vtModPath | $GREP -q "[.]ko[.]gz$"; then elif echo $vtModPath | $GREP -q "[.]ko[.]gz$"; then
$BUSYBOX_PATH/zcat $vtModPath > $VTOY_PATH/$vtModName $BUSYBOX_PATH/zcat $vtModPath > $VTOY_PATH/$vtModName
elif echo $vtModPath | $GREP -q "[.]ko[.]zst$"; then
$VTOY_PATH/tool/zstdcat $vtModPath > $VTOY_PATH/$vtModName
else else
vtlog "unsupport module type" vtlog "unsupport module type"
return return
fi fi
#step1: modify vermagic/mod crc/relocation #step1: modify vermagic/mod crc/relocation
vtlog "$VTOY_PATH/tool/vtoykmod -u $VTOY_PATH/tool/$vtKoName $VTOY_PATH/$vtModName $vtDebug" vtlog "$VTOY_PATH/tool/vtoykmod -u $vtKVMajor $vtKVMinor $VTOY_PATH/tool/$vtKoName $VTOY_PATH/$vtModName $vtDebug"
$VTOY_PATH/tool/vtoykmod -u $VTOY_PATH/tool/$vtKoName $VTOY_PATH/$vtModName $vtDebug $VTOY_PATH/tool/vtoykmod -u $vtKVMajor $vtKVMinor $VTOY_PATH/tool/$vtKoName $VTOY_PATH/$vtModName $vtDebug >>$VTLOG 2>&1
#step2: fill parameters #step2: fill parameters
vtPgsize=$($VTOY_PATH/tool/vtoyksym -p) vtPgsize=$($VTOY_PATH/tool/vtoyksym -p)
vtlog "$VTOY_PATH/tool/vtoykmod -f $VTOY_PATH/tool/$vtKoName $vtPgsize 0x$printk_addr 0x$ro_addr 0x$rw_addr $get_addr $get_size $put_addr $put_size 0x$kprobe_reg_addr 0x$kprobe_unreg_addr $vtKv $vtDebug"
$VTOY_PATH/tool/vtoykmod -f $VTOY_PATH/tool/$vtKoName $vtPgsize 0x$printk_addr 0x$ro_addr 0x$rw_addr $get_addr $get_size $put_addr $put_size 0x$kprobe_reg_addr 0x$kprobe_unreg_addr $vtKv $vtDebug vtPrams="$VTOY_PATH/tool/$vtKoName $vtPgsize 0x$printk_addr 0x$ro_addr 0x$rw_addr $get_addr $get_size $put_addr $put_size 0x$kprobe_reg_addr 0x$kprobe_unreg_addr $vtKVMajor $vtIBT $vtKVMinor $blkdev_get_addr $blkdev_put_addr $vtKVSubMinor $bdev_open_addr $bdev_file_open_addr $vtDebug"
vtlog "$VTOY_PATH/tool/vtoykmod -f $vtPrams"
$VTOY_PATH/tool/vtoykmod -f $vtPrams >>$VTLOG 2>&1
$BUSYBOX_PATH/insmod $VTOY_PATH/tool/$vtKoName vtlog "insmod $VTOY_PATH/tool/$vtKoName"
$BUSYBOX_PATH/insmod $VTOY_PATH/tool/$vtKoName >>$VTLOG 2>&1
if $GREP -q 'dm_patch' /proc/modules; then if $GREP -q 'dm_patch' /proc/modules; then
vtlog "dm_patch module OK"
echo "done" > $VTOY_PATH/dm_patch_done echo "done" > $VTOY_PATH/dm_patch_done
else
vtlog "dm_patch module FAILED"
fi fi
} }

@ -121,3 +121,53 @@ ventoy_check_mount() {
$BUSYBOX_PATH/mount $1 $2 $BUSYBOX_PATH/mount $1 $2
fi fi
} }
ventoy_has_exfat_ko() {
vtExfat=''
vtKerVer=$($BUSYBOX_PATH/uname -r)
if [ -d /lib/modules/$vtKerVer/kernel/fs/exfat ]; then
vtExfat=$(ls /lib/modules/$vtKerVer/kernel/fs/exfat/)
fi
[ -n "$vtExfat" ]
}
ventoy_is_exfat_part() {
$VTOY_PATH/tool/vtoydump -s /ventoy/ventoy_os_param | $GREP -q exfat
}
ventoy_iso_scan_path() {
if [ -f /sbin/iso-scan ]; then
echo -n '/sbin/iso-scan'
elif [ -f /bin/iso-scan ]; then
echo -n '/bin/iso-scan'
else
echo -n ''
fi
}
ventoy_has_iso_scan() {
vtScanPath=$(ventoy_iso_scan_path)
[ -n "$vtScanPath" ]
}
ventoy_rw_iso_scan() {
vtScanPath=$(ventoy_iso_scan_path)
if [ -n "$vtScanPath" ]; then
if $GREP -q 'mount.* ro .*isoscan' $vtScanPath; then
$SED -i 's/\(mount.*-o.*\) ro /\1 rw /' $vtScanPath
fi
fi
}
ventoy_iso_scan_check() {
vtCheckOk=0
if ventoy_is_exfat_part; then
if ventoy_has_exfat_ko; then
if ventoy_has_iso_scan; then
vtCheckOk=1
fi
fi
fi
[ $vtCheckOk -eq 1 ]
}

@ -112,6 +112,28 @@ ventoy_unpack_initrd() {
done done
} }
vtfile_head_zero() {
local vsize
local voffset
local vfile
local vzero
local vdump
voffset=0
vfile=$1
vsize=$(stat -c '%s' ${vfile})
vzero=$(hexdump -n 512 -e '512/1 "%02X"' $vfile)
while [ $voffset -lt $vsize ]; do
vdump=$(hexdump -s $voffset -n 512 -e '512/1 "%02X"' $vfile)
if [ "$vdump" != "$vzero" ]; then
echo $voffset
return
fi
voffset=$($BUSYBOX_PATH/expr $voffset + 512)
done
echo 0
}
# This export is for busybox cpio command # This export is for busybox cpio command
export EXTRACT_UNSAFE_SYMLINKS=1 export EXTRACT_UNSAFE_SYMLINKS=1
@ -131,13 +153,22 @@ for vtfile in $(ls /initrd*); do
#only for cpio,cpio,...,initrd sequence, initrd,cpio or initrd,initrd sequence is not supported #only for cpio,cpio,...,initrd sequence, initrd,cpio or initrd,initrd sequence is not supported
while [ -e ${vtfile}_tmp ] && [ $(stat -c '%s' ${vtfile}_tmp) -gt 512 ]; do while [ -e ${vtfile}_tmp ] && [ $(stat -c '%s' ${vtfile}_tmp) -gt 512 ]; do
mv ${vtfile}_tmp $vtfile mv ${vtfile}_tmp $vtfile
vtdump=$(hexdump -n 512 -e '512/1 "%02X"' $vtfile) vtdump=$(hexdump -n 512 -e '512/1 "%02X"' $vtfile)
vtmagic=$(echo $vtdump | sed 's/^\(00\)*//') vtmagic=$(echo $vtdump | sed 's/^\(00\)*//')
let vtoffset="(${#vtdump}-${#vtmagic})/2" let vtoffset="(${#vtdump}-${#vtmagic})/2"
if [ -z "$vtmagic" ]; then if [ -z "$vtmagic" ]; then
echo "terminate with all zero data file" >> $VTLOG vtHeadZero=$(vtfile_head_zero $vtfile)
break if [ $vtHeadZero -gt 0 ]; then
vtdump=$(hexdump -s $vtHeadZero -n 512 -e '512/1 "%02X"' $vtfile)
vtmagic=$(echo $vtdump | sed 's/^\(00\)*//')
let vtoffset="(${#vtdump}-${#vtmagic})/2+$vtHeadZero"
echo "skip head $vtHeadZero zeros with magic ${vtmagic:0:4}" >> $VTLOG
else
echo "terminate with all zero data file" >> $VTLOG
break
fi
fi fi
ventoy_unpack_initramfs $vtfile $vtoffset ${vtmagic:0:4} ${vtfile}_tmp ventoy_unpack_initramfs $vtfile $vtoffset ${vtmagic:0:4} ${vtfile}_tmp

@ -34,9 +34,12 @@ else
vtBit=32 vtBit=32
fi fi
xz -d $VTOY_PATH/vtloopex/dm-mod/$vtKerVer/$vtBit/dm-mod.ko.xz if [ -f $VTOY_PATH/vtloopex/dm-mod/$vtKerVer/$vtBit/dm-mod.ko.xz ]; then
insmod $VTOY_PATH/vtloopex/dm-mod/$vtKerVer/$vtBit/dm-mod.ko xz -d $VTOY_PATH/vtloopex/dm-mod/$vtKerVer/$vtBit/dm-mod.ko.xz
insmod $VTOY_PATH/vtloopex/dm-mod/$vtKerVer/$vtBit/dm-mod.ko
elif [ -f $VTOY_PATH/modules/dm-mod.ko ]; then
insmod $VTOY_PATH/modules/dm-mod.ko
fi
wait_for_usb_disk_ready wait_for_usb_disk_ready

@ -64,9 +64,9 @@ ventoy_get_os_type() {
elif $GREP -q '[Uu]buntu' /proc/version; then elif $GREP -q '[Uu]buntu' /proc/version; then
echo 'debian'; return echo 'debian'; return
# Deepin : do the same process with debian # Deepin :
elif $GREP -q '[Dd]eepin' /proc/version; then elif $GREP -q '[Dd]eepin' /proc/version; then
echo 'debian'; return echo 'deepin'; return
# rhel5/CentOS5 and all other distributions based on them # rhel5/CentOS5 and all other distributions based on them
elif $GREP -q 'el5' /proc/version; then elif $GREP -q 'el5' /proc/version; then
@ -169,9 +169,9 @@ ventoy_get_os_type() {
elif $GREP -q 'fuyu' /etc/os-release; then elif $GREP -q 'fuyu' /etc/os-release; then
echo 'openEuler'; return echo 'openEuler'; return
elif $GREP -q 'deepin' /etc/os-release; then elif $GREP -q 'deepin' /etc/os-release; then
echo 'debian'; return echo 'deepin'; return
elif $GREP -q 'chinauos' /etc/os-release; then elif $GREP -q 'chinauos' /etc/os-release; then
echo 'debian'; return echo 'deepin'; return
fi fi
fi fi
@ -229,6 +229,10 @@ ventoy_get_os_type() {
echo 'android'; return echo 'android'; return
fi fi
if $GREP -q 'android.google' /proc/version; then
echo 'android'; return
fi
if $GREP -q 'adelielinux' /proc/version; then if $GREP -q 'adelielinux' /proc/version; then
echo 'adelie'; return echo 'adelie'; return
fi fi
@ -369,6 +373,17 @@ ventoy_get_os_type() {
fi fi
fi fi
if $GREP -q 'chimera' /proc/version; then
echo 'chimera'; return
fi
if $GREP -q '4.19.' /proc/version; then
if [ -d /lib/dracut/hooks ]; then
echo 'openEuler'; return
fi
fi
echo "default" echo "default"
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -4,8 +4,9 @@ print_usage() {
echo 'Usage: ExtendPersistentImg.sh file size' echo 'Usage: ExtendPersistentImg.sh file size'
echo ' file persistent dat file' echo ' file persistent dat file'
echo ' size extend size in MB' echo ' size extend size in MB'
echo 'Example:' echo 'Examples:'
echo ' sh ExtendPersistentImg.sh ubuntu.dat 2048' echo ' sh ExtendPersistentImg.sh ubuntu.dat 2048 - This command would extend ubuntu.dat by 2048MB (2GB)'
echo ' sh ExtendPersistentImg.sh ubuntu.dat -2048 - This command reduces ubuntu.dat by 2048MB (-2GB)'
echo '' echo ''
} }
@ -19,6 +20,11 @@ if [ -z "$2" ]; then
exit 1 exit 1
fi fi
uid=$(id -u)
if [ $uid -ne 0 ]; then
print_err "Please use sudo or run the script as root."
exit 1
fi
if [ "$1" = "__vbash__" ]; then if [ "$1" = "__vbash__" ]; then
shift shift

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -196,7 +196,7 @@ fi
#change current directory to Ventoy disk #change current directory to Ventoy disk
cd "$mtpnt" cd "$mtpnt"
$OLDDIR/tool/$TOOLDIR/Plugson "$HOST" "$PORT" "$OLDDIR" "$DISK" $version "$fstype" $partstyle $secureboot & "$OLDDIR/tool/$TOOLDIR/Plugson" "$HOST" "$PORT" "$OLDDIR" "$DISK" $version "$fstype" $partstyle $secureboot &
wID=$! wID=$!
sleep 1 sleep 1

@ -3,7 +3,7 @@
VTOY_PATH=$PWD/.. VTOY_PATH=$PWD/..
date +"%Y/%m/%d %H:%M:%S" date +"%Y/%m/%d %H:%M:%S"
echo downloading envrionment ... echo downloading environment ...
wget -q -P $VTOY_PATH/DOC/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/dietlibc-0.34.tar.xz wget -q -P $VTOY_PATH/DOC/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/dietlibc-0.34.tar.xz
wget -q -P $VTOY_PATH/DOC/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/musl-1.2.1.tar.gz wget -q -P $VTOY_PATH/DOC/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/musl-1.2.1.tar.gz
@ -14,6 +14,6 @@ wget -q -P /opt/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/a
wget -q -P /opt/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz wget -q -P /opt/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz
date +"%Y/%m/%d %H:%M:%S" date +"%Y/%m/%d %H:%M:%S"
echo downloading envrionment finish... echo downloading environment finish...
sh all_in_one.sh CI sh all_in_one.sh CI

Binary file not shown.

Binary file not shown.

@ -401,6 +401,8 @@ function distro_specify_initrd_file_phase2 {
vt_linux_specify_initrd_file /boot/full.cz vt_linux_specify_initrd_file /boot/full.cz
elif [ -f (loop)/images/pxeboot/initrd.img ]; then elif [ -f (loop)/images/pxeboot/initrd.img ]; then
vt_linux_specify_initrd_file /images/pxeboot/initrd.img vt_linux_specify_initrd_file /images/pxeboot/initrd.img
elif [ -f (loop)/live/initrd ]; then
vt_linux_specify_initrd_file /live/initrd
fi fi
} }
@ -411,10 +413,9 @@ function ventoy_get_ghostbsd_ver {
} }
function ventoy_get_furybsd_ver { function ventoy_get_furybsd_ver {
if regexp "13\.[0-9]" "$2"; then set vt_freebsd_ver=12.x
set vt_freebsd_ver=13.x if regexp --set 1:vtFuryVer "(14|13)\.[0-9]" "$2"; then
else set vt_freebsd_ver=${vtFuryVer}.x
set vt_freebsd_ver=12.x
fi fi
} }
@ -423,12 +424,8 @@ function ventoy_get_freenas_ver {
if [ -e (loop)/FreeNAS-MANIFEST ]; then if [ -e (loop)/FreeNAS-MANIFEST ]; then
vt_parse_freenas_ver (loop)/FreeNAS-MANIFEST vt_freenas_ver vt_parse_freenas_ver (loop)/FreeNAS-MANIFEST vt_freenas_ver
if regexp "^13\.[0-9]" "$vt_freenas_ver"; then if regexp --set 1:vtNasVer "^(14|13|12|11)\.[0-9]" "$vt_freenas_ver"; then
set vt_freebsd_ver=13.x set vt_freebsd_ver=${vtNasVer}.x
elif regexp "^12\.[0-9]" "$vt_freenas_ver"; then
set vt_freebsd_ver=12.x
elif regexp "^11\.[0-9]" "$vt_freenas_ver"; then
set vt_freebsd_ver=11.x
fi fi
fi fi
} }
@ -438,12 +435,8 @@ function ventoy_get_truenas_ver {
if [ -e (loop)/TrueNAS-MANIFEST ]; then if [ -e (loop)/TrueNAS-MANIFEST ]; then
vt_parse_freenas_ver (loop)/TrueNAS-MANIFEST vt_truenas_ver vt_parse_freenas_ver (loop)/TrueNAS-MANIFEST vt_truenas_ver
if regexp "^13\.[0-9]" "$vt_truenas_ver"; then if regexp --set 1:vtTNasVer "^(14|13|12|11)\.[0-9]" "$vt_truenas_ver"; then
set vt_freebsd_ver=13.x set vt_freebsd_ver=${vtTNasVer}.x
elif regexp "^12\.[0-9]" "$vt_truenas_ver"; then
set vt_freebsd_ver=12.x
elif regexp "^11\.[0-9]" "$vt_truenas_ver"; then
set vt_freebsd_ver=11.x
fi fi
fi fi
} }
@ -475,49 +468,25 @@ function ventoy_freebsd_proc {
ventoy_get_truenas_ver "$1" "${chosen_path}" ventoy_get_truenas_ver "$1" "${chosen_path}"
elif vt_strstr "$vt_volume_id" "FURYBSD"; then elif vt_strstr "$vt_volume_id" "FURYBSD"; then
ventoy_get_furybsd_ver "$1" "${chosen_path}" ventoy_get_furybsd_ver "$1" "${chosen_path}"
elif regexp "^13_[0-9]" "$vt_volume_id"; then elif regexp --set 1:vtBsdVerNum "^(14|13|12|11|10|9)_[0-9]" "$vt_volume_id"; then
set vt_freebsd_ver=13.x set vt_freebsd_ver=${vtBsdVerNum}.x
elif regexp "^12_[0-9]" "$vt_volume_id"; then
set vt_freebsd_ver=12.x
elif regexp "^11_[0-9]" "$vt_volume_id"; then
set vt_freebsd_ver=11.x
elif regexp "^10_[0-9]" "$vt_volume_id"; then
set vt_freebsd_ver=10.x
elif regexp "^9_[0-9]" "$vt_volume_id"; then
set vt_freebsd_ver=9.x
elif [ -d (loop)/usr/midnightbsd-dist ]; then elif [ -d (loop)/usr/midnightbsd-dist ]; then
ventoy_get_midnightbsd_ver "$1" "${chosen_path}" ventoy_get_midnightbsd_ver "$1" "${chosen_path}"
set vtFreeBsdDistro=MidnightBSD set vtFreeBsdDistro=MidnightBSD
elif [ -e (loop)/bin/freebsd-version ]; then elif [ -e (loop)/bin/freebsd-version ]; then
vt_unix_parse_freebsd_ver (loop)/bin/freebsd-version vt_userland_ver vt_unix_parse_freebsd_ver (loop)/bin/freebsd-version vt_userland_ver
if regexp "\"13\.[0-9]-" "$vt_userland_ver"; then if regexp --set 1:vtBsdVerNum "\"(14|13|12|11|10|9)\.[0-9]-" "$vt_userland_ver"; then
set vt_freebsd_ver=13.x set vt_freebsd_ver=${vtBsdVerNum}.x
elif regexp "\"12\.[0-9]-" "$vt_userland_ver"; then fi
set vt_freebsd_ver=12.x
elif regexp "\"11\.[0-9]-" "$vt_userland_ver"; then
set vt_freebsd_ver=11.x
elif regexp "\"10\.[0-9]-" "$vt_userland_ver"; then
set vt_freebsd_ver=10.x
elif regexp "\"9\.[0-9]-" "$vt_userland_ver"; then
set vt_freebsd_ver=9.x
fi
elif [ -e (loop)/README.TXT ]; then elif [ -e (loop)/README.TXT ]; then
vt_1st_line (loop)/README.TXT vt_freebsd_line1 vt_1st_line (loop)/README.TXT vt_freebsd_line1
if regexp "FreeBSD 13\.[0-9]-" "$vt_freebsd_line1"; then if regexp --set 1:vtBsdVerNum "FreeBSD (14|13|12|11|10|9)\.[0-9]-" "$vt_freebsd_line1"; then
set vt_freebsd_ver=13.x set vt_freebsd_ver=${vtBsdVerNum}.x
elif regexp "FreeBSD 12\.[0-9]-" "$vt_freebsd_line1"; then
set vt_freebsd_ver=12.x
elif regexp "FreeBSD 11\.[0-9]-" "$vt_freebsd_line1"; then
set vt_freebsd_ver=11.x
elif regexp "FreeBSD 10\.[0-9]-" "$vt_freebsd_line1"; then
set vt_freebsd_ver=10.x
elif regexp "FreeBSD 9\.[0-9]-" "$vt_freebsd_line1"; then
set vt_freebsd_ver=9.x
fi fi
elif vt_strstr "${chosen_path}" "MidnightBSD"; then elif vt_strstr "${chosen_path}" "MidnightBSD"; then
set vt_freebsd_ver=9.x set vt_freebsd_ver=9.x
fi fi
if [ -e (loop)/usr/freebsd-dist/cloninst.sh ]; then if [ -e (loop)/usr/freebsd-dist/cloninst.sh ]; then
set vtFreeBsdDistro=ClonOS set vtFreeBsdDistro=ClonOS
@ -541,7 +510,7 @@ function ventoy_freebsd_proc {
fi fi
if [ "$vt_freebsd_ver" = "xx" ]; then if [ "$vt_freebsd_ver" = "xx" ]; then
set vt_freebsd_ver=13.x set vt_freebsd_ver=14.x
fi fi
fi fi
@ -1442,6 +1411,8 @@ function ventoy_iso_busybox_ver {
set ventoy_busybox_ver=64 set ventoy_busybox_ver=64
elif vt_str_begin "$vt_volume_id" "LDiagBootable"; then elif vt_str_begin "$vt_volume_id" "LDiagBootable"; then
set ventoy_busybox_ver=64 set ventoy_busybox_ver=64
elif vt_str_begin "$vt_volume_id" "KAOS_"; then
set ventoy_busybox_ver=64
fi fi
fi fi
@ -1926,6 +1897,20 @@ function ventoy_img_openelec {
loopback vtloopex $vtoy_efi_part/ventoy/vtloopex.cpio loopback vtloopex $vtoy_efi_part/ventoy/vtloopex.cpio
vt_img_extra_initrd_append (vtloopex)/$elec_ver/vtloopex.tar.xz vt_img_extra_initrd_append (vtloopex)/$elec_ver/vtloopex.tar.xz
if [ "$elec_ver" = "LibreELEC" ]; then
if [ -f (vtimghd,1)/system ]; then
loopback elecsfs (vtimghd,1)/system
vt_get_lib_module_ver (elecsfs) /usr/lib/kernel-overlays/base/lib/modules/ vt_module_ver
if [ -n "$vt_module_ver" ]; then
for mod in "kernel/drivers/md/dm-mod.ko"; do
if [ -e (elecsfs)/usr/lib/kernel-overlays/base/lib/modules/$vt_module_ver/$mod ]; then
vt_img_extra_initrd_append (elecsfs)/usr/lib/kernel-overlays/base/lib/modules/$vt_module_ver/$mod
fi
done
fi
fi
fi
ventoy_debug_pause ventoy_debug_pause
#boot image file #boot image file
@ -1938,6 +1923,7 @@ function ventoy_img_openelec {
vt_img_unhook_root vt_img_unhook_root
vt_unset_boot_opt vt_unset_boot_opt
loopback -d vtloopex loopback -d vtloopex
loopback -d elecsfs
} }
@ -2301,6 +2287,8 @@ function img_common_menuentry {
if [ -z "$vtImgHd1Label" ]; then if [ -z "$vtImgHd1Label" ]; then
if [ -d (vtimghd,2)/efi ]; then if [ -d (vtimghd,2)/efi ]; then
vt_get_fs_label (vtimghd,3) vtImgHd3Label vt_get_fs_label (vtimghd,3) vtImgHd3Label
elif [ -d (vtimghd,12)/efi ]; then
vt_get_fs_label (vtimghd,3) vtImgHd3Label
fi fi
fi fi
@ -2411,7 +2399,7 @@ function mimg_common_menuentry {
############################################################# #############################################################
############################################################# #############################################################
set VENTOY_VERSION="1.0.89" set VENTOY_VERSION="1.0.99"
#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

@ -1,19 +1,19 @@
L - Nyelv kiválasztása L - Nyelv kiválasztása
F1 - Jelenítse meg ezt a súgóinformációt F1 - Súgóinformációk megjelenítése
F2 - A helyi lemezen lévő fájlok böngészése és indítása F2 - Helyi lemezen lévő fájlok tallózása és indítása
F3 - Menü mód váltása Fanézet <-> Listanézet között F3 - Menü mód váltása fanézet <-> listanézet között
F4 - Windows/Linux indítása helyi lemezről F4 - Windows/Linux indítása a helyi lemezről
F5 - Segédprogramok F5 - Segédprogramok
F6 - Egyéni Grub2 menü betöltése F6 - Egyéni Grub2 menü betöltése
F7 - Váltás Grafikus mód <-> Szövege mód között F7 - Váltás grafikus mód <-> szöveges mód között
m/Ctrl+m - Image fájlok ell.összege (md5/sha1/sha256/sha512) m/Ctrl+m - Lemezképfájlok ellenőrzőösszege (md5/sha1/sha256/sha512)
d/Ctrl+d - Memdisk mód (Csak kis WinPE/LiveCD ISO/IMG esetén) d/Ctrl+d - Memórialemez mód (csak kis WinPE/LiveCD ISO/IMG esetén)
w/Ctrl+w - WIMBOOT mód (Csak Windows/WinPE ISO esetében) w/Ctrl+w - WIMBOOT mód (csak Windows/WinPE ISO esetén)
r/Ctrl+r - Grub2 mód (Csak néhány Linux disztró esetében) r/Ctrl+r - Grub2 mód (csak néhány Linux disztribúció esetén)
i/Ctrl+i - Kompatibilis mód (Csak hibakeresésre) i/Ctrl+i - Kompatibilis mód (csak hibakereséshez)
u/Ctrl+u - ISO efi driver betöltés (Csak hibakeresésre, hivatalosan nem használható.) u/Ctrl+u - ISO EFI illesztőprogram betöltés (csak hibakereséshez, hivatalosan nem használható)
Nyomjon ESC-et a visszatéréshez ...... Nyomja meg az ESC billentyűt a visszalépéshez ......

@ -0,0 +1,19 @@
L - Selezione lingua interfaccia
F1 - Visualizza informazioni Aiuto (questa guida)
F2 - Sfoglia e avvia file nel disco locale
F3 - Cambia modalità menu tra VistaStruttura <-> VistaElenco
F4 - Avvia Windows/Linux dal disco locale
F5 - Utilità
F6 - Carica il menu Grub2 personalizzato
F7 - Cambia modalità GUI <-> modalità TESTO
m/Ctrl+m - Checksum file immagine (md5/sha1/sha256/sha512)
d/Ctrl+d - Modalità Memdisk (solo per i file ISO/IMG WinPE/LiveCD piccoli)
w/Ctrl+w - Modalità WIMBOOT (solo per i file ISO Windows/WinPE)
r/Ctrl+r - Modalità Grub2 (solo per alcune distro Linux)
i/Ctrl+i - Modalità Compatibile (solo per debugging)
u/Ctrl+u - Carica driver EFI ISO (solo per debugging, non usato ufficialmente)
Premi 'ESC' per continuare...

@ -0,0 +1,19 @@
L - Seleção de Idiomas
F1 - Exibir informações de ajuda
F2 - Explorar e inicializar os arquivos no disco local
F3 - Trocar o modo do menu entre Visualização em Árvore <-> Visualização em Lista
F4 - Inicializar o Windows/Linux no disco local
F5 - Utilitários
F6 - Carregar o Menu Personalizado do Grub2
F7 - Trocar entre o Modo GUI <-> Modo TEXTO
m/Ctrl+m - Checksum dos arquivos de imagem (md5/sha1/sha256/sha512)
d/Ctrl+d - Modo Memdisk (Só pros pequenos WinPE/LiveCD ISO/IMG)
w/Ctrl+w - Modo WIMBOOT (Só pra arquivos ISO do Windows/WinPE)
r/Ctrl+r - Modo Grub2 (Só pra algumas distros do Linux)
i/Ctrl+i - Modo Compatível (Só pra debugging)
u/Ctrl+u - Carregar o driver EFI da ISO (Só pra debugging, não pode ser usado oficialmente)
Pressione ESC pra retornar...

@ -1,19 +1,19 @@
L - Dil Seçimi L - Dil Seçimi
F1 - Yardım bilgilerini göster F1 - Yardım bilgilerini göster
F2 - Yerel diskteki önyükleme dosyalarına GÖZAT ve Önyükleme yap F2 - Yerel diskteki önyükleme dosyalarına göz at ve önyükleme yap
F3 - Menü modunu Ağaç Görünümü <-> Liste Görünümü arasında değiştir F3 - Menü modunu Ağaç Görünümü <-> Liste Görünümü arasında değiştir
F4 - Windows & Linux'u yerel diskten önyükle F4 - Windows & Linux'u yerel diskten önyükle
F5 - Ventoy Araçlar menüsü F5 - Ventoy araçlar menüsü
F6 - Özelleştirilmiş Grub2 menüsünü yükle F6 - Özelleştirilmiş Grub2 menüsünü yükle
F7 - Grafik(GUI) <--> Metin(Text) modları arasında geçiş yap F7 - Grafik(GUI) <--> Metin(Text) modları arasında geçiş yap
m/Ctrl+m - Görüntü dosyalarını sağlama toplamı (md5/sha1/sha256/sha512) m/Ctrl+m - Görüntü dosyalarının sağlama toplamını al (md5/sha1/sha256/sha512)
d/Ctrl+d - Memdisk Modu başlat(Yalnızca küçük WinPE/LiveCD ISO/IMG ler için) d/Ctrl+d - Memdisk Modunu başlat(Yalnızca küçük WinPE/LiveCD ISO/IMG'ler için)
w/Ctrl+w - WIMBOOT Modu başlat(Yalnızca normal Windows/WinPE ISO ları için) w/Ctrl+w - WIMBOOT Modunu başlat(Yalnızca normal Windows/WinPE ISO'ları için)
r/Ctrl+r - Grub2 Modu başlat (Yalnızca bazı Linux dağıtımları için) r/Ctrl+r - Grub2 Modunu başlat (Yalnızca bazı Linux dağıtımları için)
i/Ctrl+i - Uyumluluk Modu (Yalnızca hata ayıklama için ) i/Ctrl+i - Uyumluluk Modu (Yalnızca hata ayıklama için)
u/Ctrl+u - ISO efi sürücüsünü yükle (Saedece hata ayıklama için, resmi olarak kullanılamaz) u/Ctrl+u - ISO EFI sürücüsünü yükle (Sadece hata ayıklama için, resmi olarak kullanılamaz)
Geriye dönmek için ESC tuşuna basınız...... Geri dönmek için ESC tuşuna basınız ......

@ -7,12 +7,12 @@ F5 - Інструменти
F6 - Завантажити Custom Grub2 меню F6 - Завантажити Custom Grub2 меню
F7 - Переключитись між графічним інтерфейсом <-> текстовим інтерфейсом F7 - Переключитись між графічним інтерфейсом <-> текстовим інтерфейсом
m/Ctrl+m - Контрольна сума образу диску (md5/sha1/sha256/sha512) m/Ctrl + m - Контрольна сума образу диску (md5/sha1/sha256/sha512)
d/Ctrl+d - Режим Memdisk (Тільки для невеликих образів WinPE/LiveCD ISO/IMG) d/Ctrl + d - Режим Memdisk (Тільки для невеликих образів WinPE/LiveCD ISO/IMG)
w/Ctrl+w - Режим WIMBOOT (Тільки для ISO-файлів Windows/WinPE) w/Ctrl + w - Режим WIMBOOT (Тільки для ISO-файлів Windows/WinPE)
r/Ctrl+r - Режим Grub2 (Тільки для деяких дистрибутивів Linux) r/Ctrl + r - Режим Grub2 (Тільки для деяких дистрибутивів Linux)
i/Ctrl+i - Сумісний режим (Тільки для зневадження) i/Ctrl + i - Сумісний режим (Тільки для зневадження)
u/Ctrl+u - Завантажити драйвер ISO EFI (Тільки для зневадження, не офіційно) u/Ctrl + u - Завантажити драйвер ISO EFI (Тільки для зневадження, не офіційно)

@ -0,0 +1,19 @@
L - Lựa chọn ngôn ngữ
F1 - Hiển thị thông tin trợ giúp
F2 - Duyệt tìm và khởi động tệp từ ổ đĩa trên máy
F3 - Chuyển đổi chế độ bảng chọn giữa dạng cây <-> dạng danh sách.
F4 - Khởi động Windows hoặc GNU/Linux trên đĩa cục bộ
F5 - Các tiện ích
F6 - Tải menu GRUB2 tuỳ chọn
F7 - Chuyển giữa giao diện đồ hoạ <-> giao diện văn bản
m/Ctrl+m - Checksum các tệp ảnh đĩa (md5/sha1/sha256/sha512)
d/Ctrl+d - Chế độ Memdisk (Chỉ dùng cho các tệp ISO/IMG WinPE/LiveCD có kích thước nhỏ)
w/Ctrl+w - Chế độ WIMBOOT (Chỉ dùng cho các tệp ISO Windows/WinPE)
r/Ctrl+r - Chế độ Grub2 (Chỉ dùng cho một vài bản phân phối của GNU/Linux)
i/Ctrl+i - Chế độ tương thích (Chỉ dùng cho việc sửa lỗi)
u/Ctrl+u - Tải ISO của một driver EFI (Chỉ dùng cho việc sửa lỗi, không thể dùng chính thức)
Nhấn ESC để quay lại ......

@ -201,7 +201,7 @@ cbmemc: cbtable normal terminfo
hfsplus: fshelp hfsplus: fshelp
gcry_cast5: crypto gcry_cast5: crypto
extcmd: extcmd:
squash4: fshelp lzopio zfs xzio gzio squash4: fshelp zstd lzopio zfs xzio gzio
part_plan: part_plan:
minix_be: minix_be:
gcry_whirlpool: crypto gcry_whirlpool: crypto

Binary file not shown.

@ -83,7 +83,7 @@ gfxterm_background: video_colors bitmap_scale gfxterm extcmd video bitmap
search_fs_uuid: search_fs_uuid:
gcry_dsa: pgp mpi gcry_dsa: pgp mpi
keystatus: extcmd keystatus: extcmd
linux: ventoy verifiers normal vbe video boot relocator mmap linux: ventoy verifiers vbe normal video boot relocator mmap
geli: cryptodisk crypto gcry_sha512 pbkdf2 gcry_sha256 geli: cryptodisk crypto gcry_sha512 pbkdf2 gcry_sha256
cmdline_cat_test: font functional_test normal procfs video_fb cmdline_cat_test: font functional_test normal procfs video_fb
rdmsr: extcmd rdmsr: extcmd
@ -124,7 +124,7 @@ crypto:
part_bsd: part_msdos part_bsd: part_msdos
cs5536: pci cs5536: pci
biosdisk: biosdisk:
ventoy: ext2 fshelp elf btrfs crypto font gcry_md5 exfat udf div extcmd datetime normal video gcry_sha1 iso9660 acpi ventoy: ext2 fshelp elf btrfs crypto font gcry_md5 exfat udf div extcmd datetime normal video gcry_sha1 iso9660 reboot acpi
lsapm: lsapm:
gcry_sha512: crypto gcry_sha512: crypto
password: crypto normal password: crypto normal
@ -208,7 +208,7 @@ cmosdump:
hfsplus: fshelp hfsplus: fshelp
gcry_cast5: crypto gcry_cast5: crypto
extcmd: extcmd:
squash4: fshelp lzopio zfs xzio gzio squash4: fshelp zstd lzopio zfs xzio gzio
part_plan: part_plan:
minix_be: minix_be:
gcry_whirlpool: crypto gcry_whirlpool: crypto

@ -1,12 +1,14 @@
{ {
"VTLANG_LANGUAGE_NAME": "Arabic (العربية)", "VTLANG_LANGUAGE_NAME": "Arabic (العربية)",
"VTLANG_STR_HOTKEY_LIST": "L: لغه F1: مساعدة F2: تصفح F3: عرض قائمه F4: اقلا محلي F5: أدوات F6: عوده", "VTLANG_STR_HOTKEY_LIST": "L: لغة F1: مساعدة F2: تصفح F3: عرض لائحي F4: إقلاع محلي F5: أدوات F6: عوده",
"VTLANG_STR_HOTKEY_TREE": "L: لغه F1: مساعدة F2: تصفح F3: عرض تصنيف F4: اقلاع محلي F5: أدوات F6: عوده", "VTLANG_STR_HOTKEY_TREE": "L: لغة F1: مساعدة F2: تصفح F3: عرض شجري F4: إقلاع محلي F5: أدوات F6: عوده",
"VTLANG_RETURN_PREVIOUS": "عودة إلى القائمة السابقة [Esc]", "VTLANG_RETURN_PREVIOUS": "عودة إلى القائمة السابقة [Esc]",
"VTLANG_RETURN_PRV_NOESC": "عودة إلى القائمة السابقة", "VTLANG_RETURN_PRV_NOESC": "عودة إلى القائمة السابقة",
"VTLANG_MENU_LANG": "اختيار اللغة في القائمة", "VTLANG_MENU_LANG": "اختيار اللغة في القائمة",
"VTLANG_LB_SBOOT_WINDOWS": "البحث والإقلاع على ويندوز",
"VTLANG_LB_SBOOT_WINDOWS": "البحث والإقلاع على Windows",
"VTLANG_LB_SBOOT_G4D": "البحث والإقلاع على Grub4dos", "VTLANG_LB_SBOOT_G4D": "البحث والإقلاع على Grub4dos",
"VTLANG_LB_SBOOT_HDD1": "الإقلاع على القرص المحلي الأول", "VTLANG_LB_SBOOT_HDD1": "الإقلاع على القرص المحلي الأول",
"VTLANG_LB_SBOOT_HDD2": "الإقلاع على القرص المحلي الثاني", "VTLANG_LB_SBOOT_HDD2": "الإقلاع على القرص المحلي الثاني",
@ -15,32 +17,39 @@
"VTLANG_LB_SBOOT_IA32EFI": "البحث والإقلاع على BOOTIA32.EFI", "VTLANG_LB_SBOOT_IA32EFI": "البحث والإقلاع على BOOTIA32.EFI",
"VTLANG_LB_SBOOT_AA64EFI": "البحث والإقلاع على BOOTAA64.EFI", "VTLANG_LB_SBOOT_AA64EFI": "البحث والإقلاع على BOOTAA64.EFI",
"VTLANG_LB_SBOOT_XORBOOT": "البحث والإقلاع على xorboot", "VTLANG_LB_SBOOT_XORBOOT": "البحث والإقلاع على xorboot",
"VTLANG_FILE_CHKSUM": "مجموعة التحقق من الملفات",
"VTLANG_CHKSUM_MD5_CALC": "حساب md5sum", "VTLANG_FILE_CHKSUM": "تدقيق المجموع للملف",
"VTLANG_CHKSUM_SHA1_CALC": "حساب sha1sum", "VTLANG_CHKSUM_MD5_CALC": "احسب md5sum",
"VTLANG_CHKSUM_SHA256_CALC": "حساب sha256sum", "VTLANG_CHKSUM_SHA1_CALC": "احسب sha1sum",
"VTLANG_CHKSUM_SHA512_CALC": "حساب sha512sum", "VTLANG_CHKSUM_SHA256_CALC": "احسب sha256sum",
"VTLANG_CHKSUM_MD5_CALC_CHK": "حساب وتحقق md5sum", "VTLANG_CHKSUM_SHA512_CALC": "احسب sha512sum",
"VTLANG_CHKSUM_SHA1_CALC_CHK": "حساب وتحقق sha1sum", "VTLANG_CHKSUM_MD5_CALC_CHK": "احسب وتحقق md5sum",
"VTLANG_CHKSUM_SHA256_CALC_CHK": "حساب وتحقق sha256sum", "VTLANG_CHKSUM_SHA1_CALC_CHK": "احسب وتحقق sha1sum",
"VTLANG_CHKSUM_SHA512_CALC_CHK": "حساب وتحقق sha512sum", "VTLANG_CHKSUM_SHA256_CALC_CHK": "احسب وتحقق sha256sum",
"VTLANG_CHKSUM_SHA512_CALC_CHK": "احسب وتحقق sha512sum",
"VTLANG_POWER": "الطاقة", "VTLANG_POWER": "الطاقة",
"VTLANG_POWER_REBOOT": "إعادة التشغيل", "VTLANG_POWER_REBOOT": "إعادة التشغيل",
"VTLANG_POWER_HALT": "إيقاف", "VTLANG_POWER_HALT": "إيقاف",
"VTLANG_POWER_BOOT_EFIFW": "إعادة التشغيل إلى إعداد EFI", "VTLANG_POWER_BOOT_EFIFW": "إعادة التشغيل إلى إعداد EFI",
"VTLANG_KEYBRD_LAYOUT": "تخطيطات لوحة المفاتيح", "VTLANG_KEYBRD_LAYOUT": "تخطيطات لوحة المفاتيح",
"VTLANG_HWINFO": "معلومات الأجهزة الأساسية", "VTLANG_HWINFO": "معلومات حول العتاد",
"VTLANG_RESOLUTION_CFG": "تكوين الدقة", "VTLANG_RESOLUTION_CFG": "تكوين الدقة",
"VTLANG_SCREEN_MODE": "وضع عرض الشاشة", "VTLANG_SCREEN_MODE": "وضع عرض الشاشة",
"VTLANG_SCREEN_TEXT_MODE": "القيام بتحديد وضع النص", "VTLANG_SCREEN_TEXT_MODE": "فرض تحديد وضع النص",
"VTLANG_SCREEN_GUI_MODE": "القيام بتحديد وضع الرسومات", "VTLANG_SCREEN_GUI_MODE": "فرض تحديد وضع الرسومات",
"VTLANG_THEME_SELECT": "اختيار الموضوع",
"VTLANG_UEFI_UTIL": "Ventoy UEFI Utilities", "VTLANG_THEME_SELECT": "اختر السمة",
"VTLANG_UEFI_UTIL": "أدوات Ventoy UEFI المساعدة",
"VTLANG_UTIL_SHOW_EFI_DRV": "عرض برامج تشغيل EFI", "VTLANG_UTIL_SHOW_EFI_DRV": "عرض برامج تشغيل EFI",
"VTLANG_UTIL_FIX_BLINIT_FAIL": "إصلاح فشل تهيئة Windows BlinitializeLibrary", "VTLANG_UTIL_FIX_BLINIT_FAIL": "إصلاح فشل تهيئة Windows BlinitializeLibrary",
"VTLANG_JSON_CHK_JSON": "التحقق من تكوين json للبرنامج الإضافي (ventoy.json)", "VTLANG_JSON_CHK_JSON": "التحقق من تكوين json للبرنامج الإضافي (ventoy.json)",
"VTLANG_JSON_CHK_CONTROL": "التحقق من تكوين برنامج الإضافي العام للتحكم", "VTLANG_JSON_CHK_CONTROL": "التحقق من تكوين برنامج الإضافي العام للتحكم",
"VTLANG_JSON_CHK_THEME": "التحقق من تكوين برنامج الإضافي الخاص بالموضوع", "VTLANG_JSON_CHK_THEME": "التحقق من تكوين برنامج الإضافي الخاص بالسمة",
"VTLANG_JSON_CHK_AUTOINS": "التحقق من تكوين برنامج الإضافي للتثبيت التلقائي", "VTLANG_JSON_CHK_AUTOINS": "التحقق من تكوين برنامج الإضافي للتثبيت التلقائي",
"VTLANG_JSON_CHK_PERSIST": "التحقق من تكوين برنامج الإضافي المستمر", "VTLANG_JSON_CHK_PERSIST": "التحقق من تكوين برنامج الإضافي المستمر",
"VTLANG_JSON_CHK_MENU_ALIAS": "التحقق من تكوين برنامج الإضافي الخاص بالقائمة المستعارة", "VTLANG_JSON_CHK_MENU_ALIAS": "التحقق من تكوين برنامج الإضافي الخاص بالقائمة المستعارة",
@ -53,27 +62,32 @@
"VTLANG_JSON_CHK_CONF_REPLACE": "التحقق من تكوين برنامج الإضافي الخاص باستبدال ملف التكوين للإقلاع", "VTLANG_JSON_CHK_CONF_REPLACE": "التحقق من تكوين برنامج الإضافي الخاص باستبدال ملف التكوين للإقلاع",
"VTLANG_JSON_CHK_DUD": "التحقق من تكوين برنامج الإضافي الخاص بـ dud", "VTLANG_JSON_CHK_DUD": "التحقق من تكوين برنامج الإضافي الخاص بـ dud",
"VTLANG_JSON_CHK_PASSWORD": "التحقق من تكوين برنامج الإضافي الخاص بكلمة المرور", "VTLANG_JSON_CHK_PASSWORD": "التحقق من تكوين برنامج الإضافي الخاص بكلمة المرور",
"VTLANG_NORMAL_MODE": "الإقلاع في الوضع العادي", "VTLANG_NORMAL_MODE": "الإقلاع في الوضع العادي",
"VTLANG_WIMBOOT_MODE": "الإقلاع في وضع wimboot", "VTLANG_WIMBOOT_MODE": "الإقلاع في وضع wimboot",
"VTLANG_GRUB2_MODE": "الإقلاع في وضع grub2", "VTLANG_GRUB2_MODE": "الإقلاع في وضع grub2",
"VTLANG_MEMDISK_MODE": "الإقلاع في وضع memdisk", "VTLANG_MEMDISK_MODE": "الإقلاع في وضع memdisk",
"VTLANG_RET_TO_LISTVIEW": "العودة إلى ListView", "VTLANG_RET_TO_LISTVIEW": "العودة إلى ListView",
"VTLANG_RET_TO_TREEVIEW": "العودة إلى TreeView", "VTLANG_RET_TO_TREEVIEW": "العودة إلى TreeView",
"VTLANG_NO_AUTOINS_SCRIPT": "الإقلاع بدون قالب التثبيت التلقائي", "VTLANG_NO_AUTOINS_SCRIPT": "الإقلاع بدون قالب التثبيت التلقائي",
"VTLANG_AUTOINS_USE": "الإقلاع مع", "VTLANG_AUTOINS_USE": "الإقلاع مع",
"VTLANG_NO_PERSIST": "الإقلاع بدون الاستمرارية", "VTLANG_NO_PERSIST": "الإقلاع بدون الاستمرارية",
"VTLANG_PERSIST_USE": "الإقلاع مع", "VTLANG_PERSIST_USE": "الإقلاع مع",
"VTLANG_BROWER_RETURN": "العودة", "VTLANG_BROWER_RETURN": "العودة",
"VTLANG_ENTER_EXIT": "اضغط على مفتاح Enter للخروج", "VTLANG_ENTER_EXIT": "اضغط على مفتاح Enter للخروج",
"VTLANG_ENTER_REBOOT": "اضغط على مفتاح Enter لإعادة التشغيل", "VTLANG_ENTER_REBOOT": "اضغط على مفتاح Enter لإعادة التشغيل",
"VTLANG_ENTER_CONTINUE": "اضغط على مفتاح Enter للمتابعة", "VTLANG_ENTER_CONTINUE": "اضغط على مفتاح Enter للمتابعة",
"VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", "VTLANG_CTRL_TEMP_SET": "إعدادات التحكم المؤقتة",
"VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", "VTLANG_WIN11_BYPASS_CHECK": "تجاوز فحص CPU/TPM/SecureBoot عند تثبيت Windows 11",
"VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_WIN11_BYPASS_NRO": "تجاوز متطلبات الحساب عبر الإنترنت عند تثبيت Windows 11",
"VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_LINUX_REMOUNT": "ضم قسم Ventoy بعد إقلاع Linux",
"VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", "VTLANG_SECONDARY_BOOT_MENU": "اظهر قائمة الإقلاع الثانوية",
"MENU_STR_XXX": "" "MENU_STR_XXX": ""
} }

@ -47,7 +47,7 @@
"VTLANG_UTIL_SHOW_EFI_DRV": "Afficher les pilotes EFI", "VTLANG_UTIL_SHOW_EFI_DRV": "Afficher les pilotes EFI",
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Contourner léchec de Windows BlinitializeLibrary", "VTLANG_UTIL_FIX_BLINIT_FAIL": "Contourner léchec de Windows BlinitializeLibrary",
"VTLANG_JSON_CHK_JSON": "Afficher le fichiers de configuration (ventoy.json)", "VTLANG_JSON_CHK_JSON": "Afficher le fichier de configuration (ventoy.json)",
"VTLANG_JSON_CHK_CONTROL": "Afficher la configuration du plugin de contrôle global", "VTLANG_JSON_CHK_CONTROL": "Afficher la configuration du plugin de contrôle global",
"VTLANG_JSON_CHK_THEME": "Afficher la configuration du plugin de thème", "VTLANG_JSON_CHK_THEME": "Afficher la configuration du plugin de thème",
"VTLANG_JSON_CHK_AUTOINS": "Afficher la configuration du plugin dinstallation automatique", "VTLANG_JSON_CHK_AUTOINS": "Afficher la configuration du plugin dinstallation automatique",

@ -1,93 +1,93 @@
{ {
"VTLANG_LANGUAGE_NAME": "Hungarian (Magyar)", "VTLANG_LANGUAGE_NAME": "Magyar (Hungarian)",
"VTLANG_STR_HOTKEY_LIST": "L:Nyelv F1:Súgó F2:Tallóz F3:Listanézet F4:Helyi indítás F5:Eszközök F6:Bővített menü", "VTLANG_STR_HOTKEY_LIST": "L:Nyelv F1:Súgó F2:Tallózás F3:Listanézet F4:Helyi indítás F5:Eszközök F6:Bővített menü",
"VTLANG_STR_HOTKEY_TREE": "L:Nyelv F1:Súgó F2:Tallóz F3:Fanézet F4:Helyi indítás F5:Eszközök F6:Bővített menü", "VTLANG_STR_HOTKEY_TREE": "L:Nyelv F1:Súgó F2:Tallózás F3:Fanézet F4:Helyi indítás F5:Eszközök F6:Bővített menü",
"VTLANG_RETURN_PREVIOUS": "Vissza az előző menübe [Esc]", "VTLANG_RETURN_PREVIOUS": "Vissza az előző menübe [Esc]",
"VTLANG_RETURN_PRV_NOESC": "Vissza az előző menübe", "VTLANG_RETURN_PRV_NOESC": "Vissza az előző menübe",
"VTLANG_MENU_LANG": "Menü nyelv kiválasztás", "VTLANG_MENU_LANG": "Menü nyelvének kiválasztása",
"VTLANG_LB_SBOOT_WINDOWS": "Keresés és indítás - Windows", "VTLANG_LB_SBOOT_WINDOWS": "Windows keresése és indítása",
"VTLANG_LB_SBOOT_G4D": "Keresés és indítás - Grub4dos", "VTLANG_LB_SBOOT_G4D": "Grub4dos keresése és indítása",
"VTLANG_LB_SBOOT_HDD1": "Indítás az 1. helyi lemezről", "VTLANG_LB_SBOOT_HDD1": "Indítás az 1. helyi lemezről",
"VTLANG_LB_SBOOT_HDD2": "Indítás az 2. helyi lemezről", "VTLANG_LB_SBOOT_HDD2": "Indítás a 2. helyi lemezről",
"VTLANG_LB_SBOOT_HDD3": "Indítás az 3. helyi lemezről", "VTLANG_LB_SBOOT_HDD3": "Indítás a 3. helyi lemezről",
"VTLANG_LB_SBOOT_X64EFI": "Keresés és indítás - BOOTX64.EFI", "VTLANG_LB_SBOOT_X64EFI": "BOOTX64.EFI keresése és indítása",
"VTLANG_LB_SBOOT_IA32EFI": "Keresés és indítás - BOOTIA32.EFI", "VTLANG_LB_SBOOT_IA32EFI": "BOOTIA32.EFI keresése és indítása",
"VTLANG_LB_SBOOT_AA64EFI": "Keresés és indítás - BOOTAA64.EFI", "VTLANG_LB_SBOOT_AA64EFI": "BOOTAA64.EFI keresése és indítása",
"VTLANG_LB_SBOOT_XORBOOT": "Keresés és indítás - xorboot", "VTLANG_LB_SBOOT_XORBOOT": "xorboot keresése és indítása",
"VTLANG_FILE_CHKSUM": "Fájl ell.összeg", "VTLANG_FILE_CHKSUM": "Fájl ellenőrzőösszege",
"VTLANG_CHKSUM_MD5_CALC": "Számítás - md5sum", "VTLANG_CHKSUM_MD5_CALC": "md5sum kiszámítása",
"VTLANG_CHKSUM_SHA1_CALC": "Számítás - sha1sum", "VTLANG_CHKSUM_SHA1_CALC": "sha1sum kiszámítása",
"VTLANG_CHKSUM_SHA256_CALC": "Számítás - sha256sum", "VTLANG_CHKSUM_SHA256_CALC": "sha256sum kiszámítása",
"VTLANG_CHKSUM_SHA512_CALC": "Számítás - sha512sum", "VTLANG_CHKSUM_SHA512_CALC": "sha512sum kiszámítása",
"VTLANG_CHKSUM_MD5_CALC_CHK": "Számítás és ellenőrzés - md5sum", "VTLANG_CHKSUM_MD5_CALC_CHK": "md5sum kiszámítása és ellenőrzése",
"VTLANG_CHKSUM_SHA1_CALC_CHK": "Számítás és ellenőrzés - sha1sum", "VTLANG_CHKSUM_SHA1_CALC_CHK": "sha1sum kiszámítása és ellenőrzése",
"VTLANG_CHKSUM_SHA256_CALC_CHK": "Számítás és ellenőrzés - sha256sum", "VTLANG_CHKSUM_SHA256_CALC_CHK": "sha256sum kiszámítása és ellenőrzése",
"VTLANG_CHKSUM_SHA512_CALC_CHK": "Számítás és ellenőrzés - sha512sum", "VTLANG_CHKSUM_SHA512_CALC_CHK": "sha512sum kiszámítása és ellenőrzése",
"VTLANG_POWER": "Energia", "VTLANG_POWER": "Főkapcsoló",
"VTLANG_POWER_REBOOT": "Újraindítás", "VTLANG_POWER_REBOOT": "Újraindítás",
"VTLANG_POWER_HALT": "Leállítás", "VTLANG_POWER_HALT": "Leállítás",
"VTLANG_POWER_BOOT_EFIFW": "Újraindítás - EFI setup", "VTLANG_POWER_BOOT_EFIFW": "Újraindítás EFI beállításba",
"VTLANG_KEYBRD_LAYOUT": "Billentyű kiosztások", "VTLANG_KEYBRD_LAYOUT": "Billentyűzetkiosztások",
"VTLANG_HWINFO": "Hardver információ", "VTLANG_HWINFO": "Hardverinformációk",
"VTLANG_RESOLUTION_CFG": "Felbontás konfigurációja", "VTLANG_RESOLUTION_CFG": "Felbontás beállítása",
"VTLANG_SCREEN_MODE": "Képernyő megjelenítési mód", "VTLANG_SCREEN_MODE": "Képernyő megjelenítési módja",
"VTLANG_SCREEN_TEXT_MODE": "Kénysz. szöveges mód", "VTLANG_SCREEN_TEXT_MODE": "Szöveges mód kényszerítése",
"VTLANG_SCREEN_GUI_MODE": "Kénysz. grafikus mód", "VTLANG_SCREEN_GUI_MODE": "Grafikus mód kényszerítése",
"VTLANG_THEME_SELECT": "Téma kiválasztása", "VTLANG_THEME_SELECT": "Téma kiválasztása",
"VTLANG_UEFI_UTIL": "Ventoy UEFI Utilities", "VTLANG_UEFI_UTIL": "Ventoy UEFI-segédprogramok",
"VTLANG_UTIL_SHOW_EFI_DRV": "EFI driverek megjelenítése", "VTLANG_UTIL_SHOW_EFI_DRV": "EFI-illesztőprogramok megjelenítése",
"VTLANG_UTIL_FIX_BLINIT_FAIL": "A Windows BlinitializeLibrary hibájának javítása", "VTLANG_UTIL_FIX_BLINIT_FAIL": "A Windows BlinitializeLibrary hibájának javítása",
"VTLANG_JSON_CHK_JSON": "Ellenőrizze a plugin json konfigurációt (ventoy.json)", "VTLANG_JSON_CHK_JSON": "A bővítmény JSON-beállításának (ventoy.json) ellenőrzése",
"VTLANG_JSON_CHK_CONTROL": "Ellenőrizze a globális vezérlő plugin konfigurációt", "VTLANG_JSON_CHK_CONTROL": "A globális vezérlőbővítmény beállításának ellenőrzése",
"VTLANG_JSON_CHK_THEME": "Ellenőrizze a téma plugin konfigurációt", "VTLANG_JSON_CHK_THEME": "A téma bővítmény beállításnak ellenőrzése",
"VTLANG_JSON_CHK_AUTOINS": "Ellenőrizze az auto. telepítő plugin konfigurációt", "VTLANG_JSON_CHK_AUTOINS": "Az automatikus telepítés bővítmény beállításának ellenőrzése",
"VTLANG_JSON_CHK_PERSIST": "A persistence plugin konfigurációjának ellenőrzése", "VTLANG_JSON_CHK_PERSIST": "Az állandóság bővítmény beállításának ellenőrzése",
"VTLANG_JSON_CHK_MENU_ALIAS": "Ellenőrizze a menü alias plugin konfigurációt", "VTLANG_JSON_CHK_MENU_ALIAS": "A menüálnév bővítmény beállításának ellenőrzése",
"VTLANG_JSON_CHK_MENU_TIP": "Ellenőrizze a menü tipp plugin konfigurációt", "VTLANG_JSON_CHK_MENU_TIP": "A menütipp bővítmény beállításának ellenőrzése",
"VTLANG_JSON_CHK_MENU_CLASS": "Ellenőrizze a menü osztály plugin konfigurációt", "VTLANG_JSON_CHK_MENU_CLASS": "A menüosztály bővítmény beállításának ellenőrzése",
"VTLANG_JSON_CHK_INJECTION": "Injekciós plugin konfiguráció ellenőrzése", "VTLANG_JSON_CHK_INJECTION": "A befecskendezés bővítmény beállításnak ellenőrzése",
"VTLANG_JSON_CHK_AUTO_MEMDISK": "Auto. memdisk plugin konfiguráció ellenőrzése", "VTLANG_JSON_CHK_AUTO_MEMDISK": "Az automatikus memórialemez bővítmény beállításának ellenőrzése",
"VTLANG_JSON_CHK_IMG_LIST": "Ellenőrizze a képlista plugin beállításait", "VTLANG_JSON_CHK_IMG_LIST": "A lemezképlista bővítmény beállításnak ellenőrzése",
"VTLANG_JSON_CHK_IMG_BLIST": "Ellenőrizze a kép feketelista plugin konfigurációt", "VTLANG_JSON_CHK_IMG_BLIST": "A lemezkép-tiltólista bővítmény beállításnak ellenőrzése",
"VTLANG_JSON_CHK_CONF_REPLACE": "Check boot conf cserélje ki a plugin konfigurációt", "VTLANG_JSON_CHK_CONF_REPLACE": "Az indítási beállítás csere bővítmény beállításnak ellenőrzése",
"VTLANG_JSON_CHK_DUD": "Ellenőrizze a dud plugin konfigurációt", "VTLANG_JSON_CHK_DUD": "A dud bővítmény beállításnak ellenőrzése",
"VTLANG_JSON_CHK_PASSWORD": "Ellenőrizze a jelszó plugin konfigurációját", "VTLANG_JSON_CHK_PASSWORD": "A jelszó bővítmény beállításnak ellenőrzése",
"VTLANG_NORMAL_MODE": "Indítás normál módban", "VTLANG_NORMAL_MODE": "Indítás normál módban",
"VTLANG_WIMBOOT_MODE": "Indítás wimboot módban", "VTLANG_WIMBOOT_MODE": "Indítás wimboot módban",
"VTLANG_GRUB2_MODE": "Indítás grub2 módban", "VTLANG_GRUB2_MODE": "Indítás grub2 módban",
"VTLANG_MEMDISK_MODE": "Indítás memdisk módban", "VTLANG_MEMDISK_MODE": "Indítás memórialemez módban",
"VTLANG_RET_TO_LISTVIEW": "Vissza a Listanézethez", "VTLANG_RET_TO_LISTVIEW": "Vissza a listanézethez",
"VTLANG_RET_TO_TREEVIEW": "Vissza a Fanézethez", "VTLANG_RET_TO_TREEVIEW": "Vissza a fanézethez",
"VTLANG_NO_AUTOINS_SCRIPT": "Indítás auto. telepítési sablon nélkül", "VTLANG_NO_AUTOINS_SCRIPT": "Indítás automatikus telepítési sablon nélkül",
"VTLANG_AUTOINS_USE": "Indítás ezzel", "VTLANG_AUTOINS_USE": "Indítás ezzel:",
"VTLANG_NO_PERSIST": "Indítás perzisztencia nélkül", "VTLANG_NO_PERSIST": "Indítás állandóság nélkül",
"VTLANG_PERSIST_USE": "Indítás ezzel", "VTLANG_PERSIST_USE": "Indítás ezzel:",
"VTLANG_BROWER_RETURN": "Vissza", "VTLANG_BROWER_RETURN": "Vissza",
"VTLANG_ENTER_EXIT": "nyomja meg az Enter billentyűt a kilépéshez", "VTLANG_ENTER_EXIT": "nyomja meg az Enter billentyűt a kilépéshez",
"VTLANG_ENTER_REBOOT": "nyomja meg az Enter billentyűt az újraindításhoz", "VTLANG_ENTER_REBOOT": "nyomja meg az Enter billentyűt az újraindításhoz",
"VTLANG_ENTER_CONTINUE": "a folytatáshoz nyomja meg az Enter billentyűt", "VTLANG_ENTER_CONTINUE": "nyomja meg az Enter billentyűt a folytatáshoz",
"VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", "VTLANG_CTRL_TEMP_SET": "Ideiglenes vezérlési beállítások",
"VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", "VTLANG_WIN11_BYPASS_CHECK": "CPU/TPM/SecureBoot ellenőrzés megkerülése Windows 11 telepítésekor",
"VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_WIN11_BYPASS_NRO": "Internetes fiók követelményének megkerülése Windows 11 telepítésekor",
"VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_LINUX_REMOUNT": "Ventoy partíció csatolása a Linux indítása után",
"VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", "VTLANG_SECONDARY_BOOT_MENU": "Másodlagos indítási menü megjelenítése",
"MENU_STR_XXX": "" "MENU_STR_XXX": ""
} }

@ -0,0 +1,93 @@
{
"VTLANG_LANGUAGE_NAME": "Italiano (Italian)",
"VTLANG_STR_HOTKEY_LIST": "L:Lingua F1:Aiuto F2:Sfoglia F3:VistaElenco F4:BootLocale F5:Strumenti F6:MenuEx",
"VTLANG_STR_HOTKEY_TREE": "L:Lingua F1:Aiuto F2:Sfoglia F3:VistaStruttura F4:BootLocale F5:Strumenti F6:MenuEx",
"VTLANG_RETURN_PREVIOUS": "Torna al menu precedente [Esc]",
"VTLANG_RETURN_PRV_NOESC": "Torna al menu precedente",
"VTLANG_MENU_LANG": "Selezione lingua interfaccia",
"VTLANG_LB_SBOOT_WINDOWS": "Cerca e avvia Windows",
"VTLANG_LB_SBOOT_G4D": "Cerca e avvia Grub4dos",
"VTLANG_LB_SBOOT_HDD1": "Avvia il 1° disco locale",
"VTLANG_LB_SBOOT_HDD2": "Avvia il 2° disco locale",
"VTLANG_LB_SBOOT_HDD3": "Avvia il 3° disco locale",
"VTLANG_LB_SBOOT_X64EFI": "Cerca e avvia BOOTX64.EFI",
"VTLANG_LB_SBOOT_IA32EFI": "Cerca e avvia BOOTIA32.EFI",
"VTLANG_LB_SBOOT_AA64EFI": "Cerca e avvia BOOTAA64.EFI",
"VTLANG_LB_SBOOT_XORBOOT": "Cerca e avvia xorboot",
"VTLANG_FILE_CHKSUM": "File checksum",
"VTLANG_CHKSUM_MD5_CALC": "Calcola md5sum",
"VTLANG_CHKSUM_SHA1_CALC": "Calcola sha1sum",
"VTLANG_CHKSUM_SHA256_CALC": "Calcola sha256sum",
"VTLANG_CHKSUM_SHA512_CALC": "Calcola sha512sum",
"VTLANG_CHKSUM_MD5_CALC_CHK": "Calcola e controlla md5sum",
"VTLANG_CHKSUM_SHA1_CALC_CHK": "Calcola e controlla sha1sum",
"VTLANG_CHKSUM_SHA256_CALC_CHK": "Calcola e controlla sha256sum",
"VTLANG_CHKSUM_SHA512_CALC_CHK": "Calcola e controlla sha512sum",
"VTLANG_POWER": "Spegni il computer",
"VTLANG_POWER_REBOOT": "Riavvia il computer",
"VTLANG_POWER_HALT": "Arresta il computer",
"VTLANG_POWER_BOOT_EFIFW": "Riavvia il computer nell'impostazione EFI",
"VTLANG_KEYBRD_LAYOUT": "Layout tastiera",
"VTLANG_HWINFO": "Informazioni hardware computer",
"VTLANG_RESOLUTION_CFG": "Imposta risoluzione schermo",
"VTLANG_SCREEN_MODE": "Modalità schermo (testo/grafica)",
"VTLANG_SCREEN_TEXT_MODE": "Forza modalità testo schermo",
"VTLANG_SCREEN_GUI_MODE": "Forza modalità grafica schermo",
"VTLANG_THEME_SELECT": "Seleziona tema interfaccia",
"VTLANG_UEFI_UTIL": "Utilità UEFI Ventoy",
"VTLANG_UTIL_SHOW_EFI_DRV": "Visualizza driver EFI",
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Correzione fallimento BlinitializeLibrary di Windows",
"VTLANG_JSON_CHK_JSON": "Modifica file .json plugin (ventoy.json)",
"VTLANG_JSON_CHK_CONTROL": "Modifica controllo globale della configurazione dei plugin",
"VTLANG_JSON_CHK_THEME": "Modifica tema configurazione dei plugin",
"VTLANG_JSON_CHK_AUTOINS": "Modifica installazione automatica della configurazione dei plugin",
"VTLANG_JSON_CHK_PERSIST": "Modifica persistenza della configurazione dei plugin",
"VTLANG_JSON_CHK_MENU_ALIAS": "Modifica l'alias del menu della configurazione dei plugin",
"VTLANG_JSON_CHK_MENU_TIP": "Modifica suggerimento del menu della configurazione dei plugin",
"VTLANG_JSON_CHK_MENU_CLASS": "Modifica classe menu configurazione plugin",
"VTLANG_JSON_CHK_INJECTION": "Modifica injection della configurazione plugin",
"VTLANG_JSON_CHK_AUTO_MEMDISK": "Modifica memdisk automatico della configurazione dei plugin",
"VTLANG_JSON_CHK_IMG_LIST": "Modifica elenco immagini configurazione plugin",
"VTLANG_JSON_CHK_IMG_BLIST": "Modifica elenco immagini vietate configurazione plugin",
"VTLANG_JSON_CHK_CONF_REPLACE": "Modifica sostituzione configurazione di avvio configurazione dei plugin",
"VTLANG_JSON_CHK_DUD": "Modifica dud configurazione plugin",
"VTLANG_JSON_CHK_PASSWORD": "Modifica password configurazione plugin",
"VTLANG_NORMAL_MODE": "Avvia in modalità normale",
"VTLANG_WIMBOOT_MODE": "Avvia in modalità wimboot",
"VTLANG_GRUB2_MODE": "Avvia in modalità grub2",
"VTLANG_MEMDISK_MODE": "Avvia in modalità memdisk",
"VTLANG_RET_TO_LISTVIEW": "Torna alla VistaElenco",
"VTLANG_RET_TO_TREEVIEW": "Torna alla VistaStruttura",
"VTLANG_NO_AUTOINS_SCRIPT": "Avvia senza il modello installazione automatica",
"VTLANG_AUTOINS_USE": "Avvia con",
"VTLANG_NO_PERSIST": "Avvia senza persistenza",
"VTLANG_PERSIST_USE": "Avvia con",
"VTLANG_BROWER_RETURN": "Indietro",
"VTLANG_ENTER_EXIT": "Premi il tasto 'Invio' per uscire",
"VTLANG_ENTER_REBOOT": "Premi il tasto 'Invio' per riavviare",
"VTLANG_ENTER_CONTINUE": "Premi il tasto 'Invio' per continuare",
"VTLANG_CTRL_TEMP_SET": "Impostazioni controllo temporaneo",
"VTLANG_WIN11_BYPASS_CHECK": "Durante l'installazione di Windows 11 bypassa il controllo CPU/TPM/SecureBoot ",
"VTLANG_WIN11_BYPASS_NRO": "Durante l'installazione di Windows 11 bypassa il requisito di un account online ",
"VTLANG_LINUX_REMOUNT": "Dopo l'avvio di Linux monta la partizione Ventoy ",
"VTLANG_SECONDARY_BOOT_MENU": "Visualizza menu di avvio secondario",
"MENU_STR_XXX": ""
}

@ -1,8 +1,8 @@
{ {
"VTLANG_LANGUAGE_NAME": "Korean (한국어)", "VTLANG_LANGUAGE_NAME": "Korean (한국어)",
"VTLANG_STR_HOTKEY_LIST": " L:언어 F1:도움말 F2:찾아보기 F3:목록보기 F4:로컬부팅 F5:도구 F6:확장메뉴", "VTLANG_STR_HOTKEY_LIST": " L:언어 F1:도움말 F2:찾아보기 F3:목록 보기 F4:로컬 부팅 F5:도구 F6:확장 메뉴",
"VTLANG_STR_HOTKEY_TREE": " L:언어 F1:도움말 F2:찾아보기 F3:트리보기 F4:로컬부팅 F5:도구 F6:확장메뉴", "VTLANG_STR_HOTKEY_TREE": " L:언어 F1:도움말 F2:찾아보기 F3:트리 보기 F4:로컬 부팅 F5:도구 F6:확장 메뉴",
"VTLANG_RETURN_PREVIOUS": "이전 메뉴로 돌아가기 [Esc]", "VTLANG_RETURN_PREVIOUS": "이전 메뉴로 돌아가기 [Esc]",
"VTLANG_RETURN_PRV_NOESC": "이전 메뉴로 돌아가기", "VTLANG_RETURN_PRV_NOESC": "이전 메뉴로 돌아가기",
@ -19,19 +19,19 @@
"VTLANG_LB_SBOOT_XORBOOT": "xorboot 검색 및 부팅", "VTLANG_LB_SBOOT_XORBOOT": "xorboot 검색 및 부팅",
"VTLANG_FILE_CHKSUM": "파일 체크섬", "VTLANG_FILE_CHKSUM": "파일 체크섬",
"VTLANG_CHKSUM_MD5_CALC": "md5sum 계산", "VTLANG_CHKSUM_MD5_CALC": "md5 검사값 계산",
"VTLANG_CHKSUM_SHA1_CALC": "sha1sum 계산", "VTLANG_CHKSUM_SHA1_CALC": "sha1 검사값 계산",
"VTLANG_CHKSUM_SHA256_CALC": "sha256sum 계산", "VTLANG_CHKSUM_SHA256_CALC": "sha256 검사값 계산",
"VTLANG_CHKSUM_SHA512_CALC": "sha512sum 계산", "VTLANG_CHKSUM_SHA512_CALC": "sha512 검사값 계산",
"VTLANG_CHKSUM_MD5_CALC_CHK": "md5sum 계산 및 확인", "VTLANG_CHKSUM_MD5_CALC_CHK": "md5 검사값 계산 및 확인",
"VTLANG_CHKSUM_SHA1_CALC_CHK": "sha1sum 계산 및 확인", "VTLANG_CHKSUM_SHA1_CALC_CHK": "sha1 검사값 계산 및 확인",
"VTLANG_CHKSUM_SHA256_CALC_CHK": "sha256sum 계산 및 확인", "VTLANG_CHKSUM_SHA256_CALC_CHK": "sha256 검사값 계산 및 확인",
"VTLANG_CHKSUM_SHA512_CALC_CHK": "sha512sum 계산 및 확인", "VTLANG_CHKSUM_SHA512_CALC_CHK": "sha512 검사값 계산 및 확인",
"VTLANG_POWER": "전원", "VTLANG_POWER": "전원",
"VTLANG_POWER_REBOOT": "다시 시작", "VTLANG_POWER_REBOOT": "다시 시작",
"VTLANG_POWER_HALT": "전원 끄기", "VTLANG_POWER_HALT": "전원 끄기",
"VTLANG_POWER_BOOT_EFIFW": "EFI 설정으로 다시 시작", "VTLANG_POWER_BOOT_EFIFW": "UEFI 설정으로 다시 시작",
"VTLANG_KEYBRD_LAYOUT": "키보드 레이아웃", "VTLANG_KEYBRD_LAYOUT": "키보드 레이아웃",
"VTLANG_HWINFO": "하드웨어 정보", "VTLANG_HWINFO": "하드웨어 정보",
@ -44,11 +44,10 @@
"VTLANG_THEME_SELECT": "테마 선택", "VTLANG_THEME_SELECT": "테마 선택",
"VTLANG_UEFI_UTIL": "Ventoy UEFI 유틸리티", "VTLANG_UEFI_UTIL": "Ventoy UEFI 유틸리티",
"VTLANG_UTIL_SHOW_EFI_DRV": "EFI 드라이버 표시", "VTLANG_UTIL_SHOW_EFI_DRV": "UEFI 드라이버 표시",
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Windows 초기화 라이브러리 오류 복구", "VTLANG_UTIL_FIX_BLINIT_FAIL": "Windows 초기화 라이브러리 오류 복구",
"VTLANG_JSON_CHK_JSON": "플러그인 json 구성 확인 (ventoy.json)", "VTLANG_JSON_CHK_JSON": "플러그인 파일 구성 확인 (ventoy.json)",
"VTLANG_JSON_CHK_CONTROL": "전역 제어 플러그인 구성 확인", "VTLANG_JSON_CHK_CONTROL": "전역 제어 플러그인 구성 확인",
"VTLANG_JSON_CHK_THEME": "테마 플러그인 구성 확인", "VTLANG_JSON_CHK_THEME": "테마 플러그인 구성 확인",
"VTLANG_JSON_CHK_AUTOINS": "자동 설치 플러그인 구성 확인", "VTLANG_JSON_CHK_AUTOINS": "자동 설치 플러그인 구성 확인",
@ -64,7 +63,7 @@
"VTLANG_JSON_CHK_DUD": "드라이버 업데이트 디스크 플러그인 구성 확인", "VTLANG_JSON_CHK_DUD": "드라이버 업데이트 디스크 플러그인 구성 확인",
"VTLANG_JSON_CHK_PASSWORD": "암호 플러그인 구성 확인", "VTLANG_JSON_CHK_PASSWORD": "암호 플러그인 구성 확인",
"VTLANG_NORMAL_MODE": "정상 모드로 부팅", "VTLANG_NORMAL_MODE": "일반 모드로 부팅",
"VTLANG_WIMBOOT_MODE": "wimboot 모드로 부팅", "VTLANG_WIMBOOT_MODE": "wimboot 모드로 부팅",
"VTLANG_GRUB2_MODE": "grub2 모드로 부팅", "VTLANG_GRUB2_MODE": "grub2 모드로 부팅",
"VTLANG_MEMDISK_MODE": "메모리 디스크 모드로 부팅", "VTLANG_MEMDISK_MODE": "메모리 디스크 모드로 부팅",
@ -74,16 +73,18 @@
"VTLANG_NO_AUTOINS_SCRIPT": "자동 설치 스크립트 사용 안 함", "VTLANG_NO_AUTOINS_SCRIPT": "자동 설치 스크립트 사용 안 함",
"VTLANG_AUTOINS_USE": "부팅 대상", "VTLANG_AUTOINS_USE": "부팅 대상",
"VTLANG_NO_PERSIST": "영구화된 데이터 파일 사용 안 함", "VTLANG_NO_PERSIST": "영구화된 데이터 파일 사용 안 함",
"VTLANG_PERSIST_USE": "부팅 대상", "VTLANG_PERSIST_USE": "부팅 대상",
"VTLANG_BROWER_RETURN": "돌아가기", "VTLANG_BROWER_RETURN": "돌아가기",
"VTLANG_ENTER_EXIT": "종료하려면 Enter 키를 누르십시오", "VTLANG_ENTER_EXIT": "종료하려면 Enter 키를 누르십시오",
"VTLANG_ENTER_REBOOT": "다시 시작하려면 Enter 키를 누르십시오", "VTLANG_ENTER_REBOOT": "다시 시작하려면 Enter 키를 누르십시오",
"VTLANG_ENTER_CONTINUE": "계속하려면 Enter 키를 누르십시오", "VTLANG_ENTER_CONTINUE": "계속하려면 Enter 키를 누르십시오",
"VTLANG_CTRL_TEMP_SET": "임시 제어 설정", "VTLANG_CTRL_TEMP_SET": "임시 제어 설정",
"VTLANG_WIN11_BYPASS_CHECK": "Windows 11 설치 시 CPU/TPM/Secure Boot 검사 회피", "VTLANG_WIN11_BYPASS_CHECK": "Windows 11 설치 시 CPU/TPM/SecureBoot 검사 회피",
"VTLANG_WIN11_BYPASS_NRO": "Windows 11 설치 시 온라인 계정 요구 사항 무시", "VTLANG_WIN11_BYPASS_NRO": "Windows 11 설치 시 온라인 계정 요구 사항 무시",
"VTLANG_LINUX_REMOUNT": "Linux 부팅 후 Ventoy 파티션 마운트", "VTLANG_LINUX_REMOUNT": "Linux 부팅 후 Ventoy 파티션 마운트",
"VTLANG_SECONDARY_BOOT_MENU": "보조 부팅 메뉴 표시", "VTLANG_SECONDARY_BOOT_MENU": "보조 부팅 메뉴 표시",

@ -0,0 +1,93 @@
{
"VTLANG_LANGUAGE_NAME": "Brazilian Portuguese (Português Brasileiro)",
"VTLANG_STR_HOTKEY_LIST": "L:Idioma F1:Ajuda F2:Explorar F3:Visualização em Lista F4:Inicialização Local F5:Ferramentas F6:Sair",
"VTLANG_STR_HOTKEY_TREE": "L:Idioma F1:Ajuda F2:Explorar F3:Visualização em Árvore F4:Inicialização Local F5:Ferramentas F6:Sair",
"VTLANG_RETURN_PREVIOUS": "Retornar ao menu anterior [Esc]",
"VTLANG_RETURN_PRV_NOESC": "Retornar ao menu anterior",
"VTLANG_MENU_LANG": "Menu de Seleção dos Idiomas",
"VTLANG_LB_SBOOT_WINDOWS": "Procurar e iniciar o Windows",
"VTLANG_LB_SBOOT_G4D": "Procurar e iniciar o Grub4dos",
"VTLANG_LB_SBOOT_HDD1": "Iniciar o 1º disco local",
"VTLANG_LB_SBOOT_HDD2": "Iniciar o 2º disco local",
"VTLANG_LB_SBOOT_HDD3": "Iniciar o 3º disco local",
"VTLANG_LB_SBOOT_X64EFI": "Procurar e iniciar o BOOTX64.EFI",
"VTLANG_LB_SBOOT_IA32EFI": "Procurar e iniciar o BOOTIA32.EFI",
"VTLANG_LB_SBOOT_AA64EFI": "Procurar e iniciar o BOOTAA64.EFI",
"VTLANG_LB_SBOOT_XORBOOT": "Procurar e iniciar o xorboot",
"VTLANG_FILE_CHKSUM": "Checksum do arquivo",
"VTLANG_CHKSUM_MD5_CALC": "Calcular o md5sum",
"VTLANG_CHKSUM_SHA1_CALC": "Calcular o sha1sum",
"VTLANG_CHKSUM_SHA256_CALC": "Calcular o sha256sum",
"VTLANG_CHKSUM_SHA512_CALC": "Calcular o sha512sum",
"VTLANG_CHKSUM_MD5_CALC_CHK": "Calcular e verificar o md5sum",
"VTLANG_CHKSUM_SHA1_CALC_CHK": "Calcular e verificar o sha1sum",
"VTLANG_CHKSUM_SHA256_CALC_CHK": "Calcular e verificar o sha256sum",
"VTLANG_CHKSUM_SHA512_CALC_CHK": "Calcular e verificar o sha512sum",
"VTLANG_POWER": "Energia",
"VTLANG_POWER_REBOOT": "Reiniciar",
"VTLANG_POWER_HALT": "Desligar",
"VTLANG_POWER_BOOT_EFIFW": "Reiniciar com a configuração do EFI",
"VTLANG_KEYBRD_LAYOUT": "Esquemas do Teclado",
"VTLANG_HWINFO": "Informações do Hardware",
"VTLANG_RESOLUTION_CFG": "Configuração da Resolução",
"VTLANG_SCREEN_MODE": "Modo de Exibição da Tela",
"VTLANG_SCREEN_TEXT_MODE": "Forçar o Modo Texto",
"VTLANG_SCREEN_GUI_MODE": "Forçar o Modo Gráfico",
"VTLANG_THEME_SELECT": "Seleção de Tema",
"VTLANG_UEFI_UTIL": "Utilitários UEFI do Ventoy",
"VTLANG_UTIL_SHOW_EFI_DRV": "Mostrar os Drivers EFI",
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Consertar a Falha BlinitializeLibrary do Windows",
"VTLANG_JSON_CHK_JSON": "Verificar a configuração do plugin json (ventoy.json)",
"VTLANG_JSON_CHK_CONTROL": "Verificar a configuração do plugin de controle global",
"VTLANG_JSON_CHK_THEME": "Verificar a configuração do plugin dos temas",
"VTLANG_JSON_CHK_AUTOINS": "Verificar a configuração do plugin de instalação automática",
"VTLANG_JSON_CHK_PERSIST": "Verificar a configuração do plugin de persistência",
"VTLANG_JSON_CHK_MENU_ALIAS": "Verificar a configuração do plugin do menu alias",
"VTLANG_JSON_CHK_MENU_TIP": "Verificar a configuração do plugin do menu das dicas",
"VTLANG_JSON_CHK_MENU_CLASS": "Verificar a configuração do plugin do menu classe",
"VTLANG_JSON_CHK_INJECTION": "Verificar a configuração do plugin de injeção",
"VTLANG_JSON_CHK_AUTO_MEMDISK": "Verificar a configuração do plugin automático do memdisk",
"VTLANG_JSON_CHK_IMG_LIST": "Verificar a configuração do plugin da lista de imagens",
"VTLANG_JSON_CHK_IMG_BLIST": "Verificar a configuração do plugin da lista negra de imagens",
"VTLANG_JSON_CHK_CONF_REPLACE": "Verificar a configuração do plugin de substituição da configuração de inicialização",
"VTLANG_JSON_CHK_DUD": "Verificar a configuração do plugin dud",
"VTLANG_JSON_CHK_PASSWORD": "Verificar a configuração do plugin das senhas",
"VTLANG_NORMAL_MODE": "Iniciar no modo normal",
"VTLANG_WIMBOOT_MODE": "Iniciar no modo wimboot",
"VTLANG_GRUB2_MODE": "Iniciar no modo grub2",
"VTLANG_MEMDISK_MODE": "Iniciar no modo memdisk",
"VTLANG_RET_TO_LISTVIEW": "Retornar pra Visualização em Lista",
"VTLANG_RET_TO_TREEVIEW": "Retornar para Visualização em Árvore",
"VTLANG_NO_AUTOINS_SCRIPT": "Iniciar sem modelo de instalação automática",
"VTLANG_AUTOINS_USE": "Iniciar com",
"VTLANG_NO_PERSIST": "Iniciar sem persistência",
"VTLANG_PERSIST_USE": "Iniciar com",
"VTLANG_BROWER_RETURN": "Retornar",
"VTLANG_ENTER_EXIT": "Pressione a tecla Enter pra sair",
"VTLANG_ENTER_REBOOT": "Pressione a tecla Enter pra reiniciar",
"VTLANG_ENTER_CONTINUE": "Pressione a tecla Enter pra continuar",
"VTLANG_CTRL_TEMP_SET": "Configurações do Controle Temporário",
"VTLANG_WIN11_BYPASS_CHECK": "Ignorar a verificação da CPU/TPM/SecureBoot quando instalar o Windows 11",
"VTLANG_WIN11_BYPASS_NRO": "Ignorar o requerimento de conta online quanto instalar o Windows 11",
"VTLANG_LINUX_REMOUNT": "Montar a partição do Ventoy após iniciar o Linux",
"VTLANG_SECONDARY_BOOT_MENU": "Mostrar o menu secundário da inicialização",
"MENU_STR_XXX": ""
}

@ -1,8 +1,8 @@
{ {
"VTLANG_LANGUAGE_NAME": "Russian (Русский)", "VTLANG_LANGUAGE_NAME": "Russian (Русский)",
"VTLANG_STR_HOTKEY_LIST": "L:Язык F1:Помощь F2:Просмотр F3:ВидСписком F4:Локальная загрузка F5:Инструменты F6:Выйти из меню", "VTLANG_STR_HOTKEY_LIST": "L:Язык F1:Помощь F2:Обзор F3:ВидСписок F4:ЛокалЗагрузка F5:Сервис F6:РасширМеню",
"VTLANG_STR_HOTKEY_TREE": "L:Язык F1:Помощь F2:Просмотр F3:ВидДревом F4:Локальная загрузка F5:Инструменты F6:Выйти из меню", "VTLANG_STR_HOTKEY_TREE": "L:Язык F1:Помощь F2:Обзор F3:ВидДерево F4:ЛокалЗагрузка F5:Сервис F6:РасширМеню",
"VTLANG_RETURN_PREVIOUS": "Вернуться в предыдущее меню [Esc]", "VTLANG_RETURN_PREVIOUS": "Вернуться в предыдущее меню [Esc]",
"VTLANG_RETURN_PRV_NOESC": "Вернуться в предыдущее меню", "VTLANG_RETURN_PRV_NOESC": "Вернуться в предыдущее меню",
@ -30,20 +30,20 @@
"VTLANG_POWER": "Питание", "VTLANG_POWER": "Питание",
"VTLANG_POWER_REBOOT": "Перезагрузить", "VTLANG_POWER_REBOOT": "Перезагрузить",
"VTLANG_POWER_HALT": "Завершить роботу", "VTLANG_POWER_HALT": "Завершить работу",
"VTLANG_POWER_BOOT_EFIFW": "Перезагрузиться в настройку EFI", "VTLANG_POWER_BOOT_EFIFW": "Перезагрузиться в настройку EFI",
"VTLANG_KEYBRD_LAYOUT": "Раскладки клавиатуры", "VTLANG_KEYBRD_LAYOUT": "Раскладки клавиатуры",
"VTLANG_HWINFO": "Сведения об оборудовании", "VTLANG_HWINFO": "Сведения об оборудовании",
"VTLANG_RESOLUTION_CFG": "Конфигурация разрешения", "VTLANG_RESOLUTION_CFG": "Конфигурация разрешения",
"VTLANG_SCREEN_MODE": "Режим Screen Display", "VTLANG_SCREEN_MODE": "Режим отображения экрана",
"VTLANG_SCREEN_TEXT_MODE": "Выбрать текстовый режим", "VTLANG_SCREEN_TEXT_MODE": "Выбрать текстовый режим",
"VTLANG_SCREEN_GUI_MODE": "Выбрать графический режим", "VTLANG_SCREEN_GUI_MODE": "Выбрать графический режим",
"VTLANG_THEME_SELECT": "Выбор темы", "VTLANG_THEME_SELECT": "Выбор темы",
"VTLANG_UEFI_UTIL": "UEFI утилиты Ventoy", "VTLANG_UEFI_UTIL": "Утилиты UEFI Ventoy",
"VTLANG_UTIL_SHOW_EFI_DRV": "Показать драйверы EFI", "VTLANG_UTIL_SHOW_EFI_DRV": "Показать драйверы EFI",
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Исправить ошибку Windows «BlinitializeLibrary»", "VTLANG_UTIL_FIX_BLINIT_FAIL": "Исправить ошибку Windows «BlinitializeLibrary»",

@ -0,0 +1,93 @@
{
"VTLANG_LANGUAGE_NAME": "Slovenija (Slovenski)",
"VTLANG_STR_HOTKEY_LIST": "L:Jezik F1:Pomoč F2:Prebrskaj F3:ListView F4:Localboot F5:Orodja F6:ExMenu",
"VTLANG_STR_HOTKEY_TREE": "L:Jezik F1:Pomoč F2:Prebrskaj F3:TreeView F4:Localboot F5:Orodja F6:ExMenu",
"VTLANG_RETURN_PREVIOUS": "Vrnitev v prejšnji meni [Esc]",
"VTLANG_RETURN_PRV_NOESC": "Vrnitev v prejšnji meni",
"VTLANG_MENU_LANG": "Izbira jezika menija",
"VTLANG_LB_SBOOT_WINDOWS": "Iskanje in zagon sistema Windows",
"VTLANG_LB_SBOOT_G4D": "Iskanje in zagon Grub4dos",
"VTLANG_LB_SBOOT_HDD1": "Zagon 1. lokalnega diska",
"VTLANG_LB_SBOOT_HDD2": "Zagon 2. lokalnega diska",
"VTLANG_LB_SBOOT_HDD3": "Zagon 3. lokalnega diska",
"VTLANG_LB_SBOOT_X64EFI": "Iskanje in zagon BOOTX64.EFI",
"VTLANG_LB_SBOOT_IA32EFI": "Iskanje in zagon BOOTIA32.EFI",
"VTLANG_LB_SBOOT_AA64EFI": "Iskanje in zagon BOOTAA64.EFI",
"VTLANG_LB_SBOOT_XORBOOT": "Iskanje in zagon xorboot",
"VTLANG_FILE_CHKSUM": "File checksum",
"VTLANG_CHKSUM_MD5_CALC": "Izračunaj md5sum",
"VTLANG_CHKSUM_SHA1_CALC": "Izračunaj sha1sum",
"VTLANG_CHKSUM_SHA256_CALC": "Izračunaj sha256sum",
"VTLANG_CHKSUM_SHA512_CALC": "Izračunaj sha512sum",
"VTLANG_CHKSUM_MD5_CALC_CHK": "Izračunaj in preveri md5sum",
"VTLANG_CHKSUM_SHA1_CALC_CHK": "Izračunaj in preveri sha1sum",
"VTLANG_CHKSUM_SHA256_CALC_CHK": "Izračunaj in preveri sha256sum",
"VTLANG_CHKSUM_SHA512_CALC_CHK": "Izračunaj in preveri sha512sum",
"VTLANG_POWER": "Napajanje",
"VTLANG_POWER_REBOOT": "Ponovni zagon",
"VTLANG_POWER_HALT": "Halt",
"VTLANG_POWER_BOOT_EFIFW": "Ponovni zagon v nastavitev EFI",
"VTLANG_KEYBRD_LAYOUT": "Postavitev tipkovnice",
"VTLANG_HWINFO": "Informacije o strojni opremi",
"VTLANG_RESOLUTION_CFG": "Nastavitev ločljivosti",
"VTLANG_SCREEN_MODE": "Način prikaza na zaslonu",
"VTLANG_SCREEN_TEXT_MODE": "Vsili besedilni način",
"VTLANG_SCREEN_GUI_MODE": "Vsili grafični način",
"VTLANG_THEME_SELECT": "Izbira teme",
"VTLANG_UEFI_UTIL": "Pripomočki Ventoy UEFI",
"VTLANG_UTIL_SHOW_EFI_DRV": "Prikaži gonilnike EFI",
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Popravek napake Windows BlinitializeLibrary",
"VTLANG_JSON_CHK_JSON": "Preverite konfiguracijo vtičnika json (ventoy.json)",
"VTLANG_JSON_CHK_CONTROL": "Preverite konfiguracijo globalnega nadzornega vtičnika",
"VTLANG_JSON_CHK_THEME": "Preverite konfiguracijo vtičnika teme",
"VTLANG_JSON_CHK_AUTOINS": "Preverite konfiguracijo vtičnika za samodejno namestitev",
"VTLANG_JSON_CHK_PERSIST": "Preverite konfiguracijo vtičnika persistence",
"VTLANG_JSON_CHK_MENU_ALIAS": "Preverite konfiguracijo vtičnika menija",
"VTLANG_JSON_CHK_MENU_TIP": "Preverite konfiguracijo vtičnika za nasvete menija",
"VTLANG_JSON_CHK_MENU_CLASS": "Preverite konfiguracijo vtičnika razreda menija",
"VTLANG_JSON_CHK_INJECTION": "Check injection plugin configuration",
"VTLANG_JSON_CHK_AUTO_MEMDISK": "Preverite konfiguracijo vtičnika Auto Memdisk.",
"VTLANG_JSON_CHK_IMG_LIST": "Preverite konfiguracijo vtičnika za seznam slik",
"VTLANG_JSON_CHK_IMG_BLIST": "Preverite konfiguracijo vtičnika za črno listo slik",
"VTLANG_JSON_CHK_CONF_REPLACE": "Preverite boot conf zamenjajte plugin konfiguracijo",
"VTLANG_JSON_CHK_DUD": "Preverite konfiguracijo vtičnika dud",
"VTLANG_JSON_CHK_PASSWORD": "Preverite konfiguracijo vtičnika za geslo",
"VTLANG_NORMAL_MODE": "Zagon v običajnem načinu",
"VTLANG_WIMBOOT_MODE": "Zagon v načinu wimboot",
"VTLANG_GRUB2_MODE": "Zagon v načinu grub2",
"VTLANG_MEMDISK_MODE": "Zagon v načinu memdisk",
"VTLANG_RET_TO_LISTVIEW": "Vrnitev na ListView",
"VTLANG_RET_TO_TREEVIEW": "Vrnitev v TreeView",
"VTLANG_NO_AUTOINS_SCRIPT": "Zagon brez predloge za samodejno namestitev",
"VTLANG_AUTOINS_USE": "Zagon z",
"VTLANG_NO_PERSIST": "Boot without persistence",
"VTLANG_PERSIST_USE": "Zagon z",
"VTLANG_BROWER_RETURN": "Nazaj",
"VTLANG_ENTER_EXIT": "za izhod pritisnite tipko Enter",
"VTLANG_ENTER_REBOOT": "pritisnite tipko Enter za ponovni zagon",
"VTLANG_ENTER_CONTINUE": "za nadaljevanje pritisnite tipko Enter",
"VTLANG_CTRL_TEMP_SET": "Začasne nadzorne nastavitve",
"VTLANG_WIN11_BYPASS_CHECK": "Obid preverjanja CPU/TPM/SecureBoot pri namestitvi sistema Windows 11",
"VTLANG_WIN11_BYPASS_NRO": "Obid zahteve po spletnem računu pri namestitvi sistema Windows 11",
"VTLANG_LINUX_REMOUNT": "Priklopi Ventoy particijo po zagonu Linuxa",
"VTLANG_SECONDARY_BOOT_MENU": "Prikaz sekundarnega zagonskega menija",
"MENU_STR_XXX": ""
}

@ -31,7 +31,7 @@
"VTLANG_POWER": "Живлення", "VTLANG_POWER": "Живлення",
"VTLANG_POWER_REBOOT": "Перезавантажити", "VTLANG_POWER_REBOOT": "Перезавантажити",
"VTLANG_POWER_HALT": "Завершити роботу", "VTLANG_POWER_HALT": "Завершити роботу",
"VTLANG_POWER_BOOT_EFIFW": "Перезавантажитись до налаштувань EFI", "VTLANG_POWER_BOOT_EFIFW": "Перезавантажитись до налаштувань UEFI/BIOS",
"VTLANG_KEYBRD_LAYOUT": "Розкладка клавіатури", "VTLANG_KEYBRD_LAYOUT": "Розкладка клавіатури",
"VTLANG_HWINFO": "Відомості про пристрій", "VTLANG_HWINFO": "Відомості про пристрій",
@ -41,7 +41,7 @@
"VTLANG_SCREEN_TEXT_MODE": "Перейти до текстового інтерфейсу", "VTLANG_SCREEN_TEXT_MODE": "Перейти до текстового інтерфейсу",
"VTLANG_SCREEN_GUI_MODE": "Перейти до графічного інтерфейсу", "VTLANG_SCREEN_GUI_MODE": "Перейти до графічного інтерфейсу",
"VTLANG_THEME_SELECT": "Обрати тему", "VTLANG_THEME_SELECT": "Теми",
"VTLANG_UEFI_UTIL": "Утиліти Ventoy UEFI", "VTLANG_UEFI_UTIL": "Утиліти Ventoy UEFI",
"VTLANG_UTIL_SHOW_EFI_DRV": "Показати драйвери EFI", "VTLANG_UTIL_SHOW_EFI_DRV": "Показати драйвери EFI",
@ -83,7 +83,7 @@
"VTLANG_ENTER_REBOOT": "натисніть Enter для перезавантаження", "VTLANG_ENTER_REBOOT": "натисніть Enter для перезавантаження",
"VTLANG_ENTER_CONTINUE": "натисніть Enter для продовження", "VTLANG_ENTER_CONTINUE": "натисніть Enter для продовження",
"VTLANG_CTRL_TEMP_SET": "Налаштування тимчасового контролю", "VTLANG_CTRL_TEMP_SET": "Різні налаштування",
"VTLANG_WIN11_BYPASS_CHECK": "Обійти перевірку CPU/TPM/SecureBoot під час інсталяції Windows 11", "VTLANG_WIN11_BYPASS_CHECK": "Обійти перевірку CPU/TPM/SecureBoot під час інсталяції Windows 11",
"VTLANG_WIN11_BYPASS_NRO": "Обійти вимогу онлайн-аккаунту під час інсталяції Windows 11", "VTLANG_WIN11_BYPASS_NRO": "Обійти вимогу онлайн-аккаунту під час інсталяції Windows 11",
"VTLANG_LINUX_REMOUNT": "Монтувати розділ Ventoy після завантаження Linux", "VTLANG_LINUX_REMOUNT": "Монтувати розділ Ventoy після завантаження Linux",

@ -0,0 +1,93 @@
{
"VTLANG_LANGUAGE_NAME": "Vietnamese (Tiếng Việt)",
"VTLANG_STR_HOTKEY_LIST": "L:Ngôn ngữ F1:Trợ giúp F2:Duyệt F3:ListView F4:Khởi động cục bộ F5:Công cụ F6:ExMenu",
"VTLANG_STR_HOTKEY_TREE": "L:Ngôn ngữ F1:Trợ giúp F2:Duyệt F3:TreeView F4:Khởi động cục bộ F5:Công cụ F6:ExMenu",
"VTLANG_RETURN_PREVIOUS": "Trở về menu trước [Esc]",
"VTLANG_RETURN_PRV_NOESC": "Trở về menu trước",
"VTLANG_MENU_LANG": "Chọn ngôn ngữ menu",
"VTLANG_LB_SBOOT_WINDOWS": "Tìm kiếm và khởi động Windows",
"VTLANG_LB_SBOOT_G4D": "Tìm kiếm và khởi động Grub4dos",
"VTLANG_LB_SBOOT_HDD1": "Khởi động từ ổ đĩa thứ 1 ở trên máy",
"VTLANG_LB_SBOOT_HDD2": "Khởi động từ ổ đĩa thứ 2 ở trên máy",
"VTLANG_LB_SBOOT_HDD3": "Khởi động từ ổ đĩa thứ 3 ở trên máy",
"VTLANG_LB_SBOOT_X64EFI": "Tìm kiếm và khởi động BOOTX64.EFI",
"VTLANG_LB_SBOOT_IA32EFI": "Tìm kiếm và khởi động BOOTIA32.EFI",
"VTLANG_LB_SBOOT_AA64EFI": "Tìm kiếm và khởi động BOOTAA64.EFI",
"VTLANG_LB_SBOOT_XORBOOT": "Tìm kiếm và khởi động xorboot",
"VTLANG_FILE_CHKSUM": "Checksum tệp",
"VTLANG_CHKSUM_MD5_CALC": "Tính md5sum",
"VTLANG_CHKSUM_SHA1_CALC": "Tính sha1sum",
"VTLANG_CHKSUM_SHA256_CALC": "Tính sha256sum",
"VTLANG_CHKSUM_SHA512_CALC": "Tính sha512sum",
"VTLANG_CHKSUM_MD5_CALC_CHK": "Tính và kiểm tra md5sum",
"VTLANG_CHKSUM_SHA1_CALC_CHK": "Tính và kiểm tra sha1sum",
"VTLANG_CHKSUM_SHA256_CALC_CHK": "Tính và kiểm tra sha256sum",
"VTLANG_CHKSUM_SHA512_CALC_CHK": "Tính và kiểm tra sha512sum",
"VTLANG_POWER": "Nguồn điện",
"VTLANG_POWER_REBOOT": "Khởi động lại",
"VTLANG_POWER_HALT": "Tắt máy",
"VTLANG_POWER_BOOT_EFIFW": "Khởi động lại vào cài đặt UEFI",
"VTLANG_KEYBRD_LAYOUT": "Bố cục bàn phím",
"VTLANG_HWINFO": "Thông tin phần cứng",
"VTLANG_RESOLUTION_CFG": "Cấu hình độ phân giải",
"VTLANG_SCREEN_MODE": "Chế độ hiển thị",
"VTLANG_SCREEN_TEXT_MODE": "Bắt buộc giao diện văn bản",
"VTLANG_SCREEN_GUI_MODE": "Bắt buộc giao diện đồ hoạ",
"VTLANG_THEME_SELECT": "Chọn chủ đề",
"VTLANG_UEFI_UTIL": "Các tiện ích UEFI Ventoy",
"VTLANG_UTIL_SHOW_EFI_DRV": "Hiển thị các driver EFI",
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Sửa lỗi BlinitializeLibrary của Windows",
"VTLANG_JSON_CHK_JSON": "Kiểm tra cấu hình plugin json (ventoy.json)",
"VTLANG_JSON_CHK_CONTROL": "Kiểm tra cấu hình plugin điều khiển toàn cục",
"VTLANG_JSON_CHK_THEME": "Kiểm tra cấu hình plugin chủ đề",
"VTLANG_JSON_CHK_AUTOINS": "Kiểm tra cấu hình plugin tự động cài đặt",
"VTLANG_JSON_CHK_PERSIST": "Kiểm tra cấu hình plugin persistence",
"VTLANG_JSON_CHK_MENU_ALIAS": "Kiểm tra cấu hình plugin alias menu",
"VTLANG_JSON_CHK_MENU_TIP": "Kiểm tra cấu hình plugin tip menu",
"VTLANG_JSON_CHK_MENU_CLASS": "Kiểm tra cấu hình plugin lớp menu",
"VTLANG_JSON_CHK_INJECTION": "Kiểm tra cấu hình plugin injection",
"VTLANG_JSON_CHK_AUTO_MEMDISK": "Kiểm tra cấu hình plugin auto memdisk",
"VTLANG_JSON_CHK_IMG_LIST": "Kiểm tra cấu hình plugin danh sách ảnh đĩa",
"VTLANG_JSON_CHK_IMG_BLIST": "Kiểm tra cấu hình plugin danh sách đen ảnh đĩa",
"VTLANG_JSON_CHK_CONF_REPLACE": "Kiểm tra cấu hình plugin boot replace conf",
"VTLANG_JSON_CHK_DUD": "Kiểm tra cấu hình plugin dud",
"VTLANG_JSON_CHK_PASSWORD": "Kiểm tra cấu hình plugin mật khẩu",
"VTLANG_NORMAL_MODE": "Khởi động ở chế độ bình thường",
"VTLANG_WIMBOOT_MODE": "Khởi động ở chế độ wimboot",
"VTLANG_GRUB2_MODE": "Khởi động ở chế độ GRUB2",
"VTLANG_MEMDISK_MODE": "Khởi động ở chế độ memdisk",
"VTLANG_RET_TO_LISTVIEW": "Trở về ListView",
"VTLANG_RET_TO_TREEVIEW": "Trở về TreeView",
"VTLANG_NO_AUTOINS_SCRIPT": "Khởi động không dùng mẫu cài đặt",
"VTLANG_AUTOINS_USE": "Khởi động với",
"VTLANG_NO_PERSIST": "Khởi động không có persistence",
"VTLANG_PERSIST_USE": "Khởi động với",
"VTLANG_BROWER_RETURN": "Trở về",
"VTLANG_ENTER_EXIT": "nhấn Enter để thoát",
"VTLANG_ENTER_REBOOT": "nhấn Enter để khởi động lại",
"VTLANG_ENTER_CONTINUE": "nhấn enter để tiếp tục",
"VTLANG_CTRL_TEMP_SET": "Cài đặt điều khiển tạm",
"VTLANG_WIN11_BYPASS_CHECK": "Bỏ qua kiểm tra CPU/TPM/SecureBoot khi cài đặt Windows 11",
"VTLANG_WIN11_BYPASS_NRO": "Bỏ qua yêu cầu tài khoản trực tuyến khi cài đặt Windows 11",
"VTLANG_LINUX_REMOUNT": "Gắn phân vùng Ventoy sau khi khởi động GNU/Linux",
"VTLANG_SECONDARY_BOOT_MENU": "Hiện menu khởi động thứ cấp`",
"MENU_STR_XXX": ""
}

@ -26,7 +26,7 @@ sfs: fshelp
reiserfs: fshelp reiserfs: fshelp
part_sunpc: part_sunpc:
zstd: zstd:
gfxmenu: video_colors trig gfxterm bitmap_scale font normal video bitmap gfxmenu: video_colors trig bitmap_scale gfxterm font normal video bitmap
backtrace: backtrace:
jfs: jfs:
help: extcmd normal help: extcmd normal
@ -121,7 +121,7 @@ ehci: cs5536 usb boot
crypto: crypto:
part_bsd: part_msdos part_bsd: part_msdos
cs5536: cs5536:
ventoy: ext2 fshelp elf btrfs font crypto gcry_md5 exfat udf div extcmd datetime normal video gcry_sha1 mmap iso9660 ventoy: ext2 fshelp elf btrfs crypto font gcry_md5 exfat udf datetime div extcmd normal video gcry_sha1 mmap iso9660
gcry_sha512: crypto gcry_sha512: crypto
password: crypto normal password: crypto normal
fshelp: fshelp:
@ -202,7 +202,7 @@ cbmemc: cbtable normal terminfo
hfsplus: fshelp hfsplus: fshelp
gcry_cast5: crypto gcry_cast5: crypto
extcmd: extcmd:
squash4: fshelp lzopio zfs xzio gzio squash4: fshelp zstd lzopio zfs xzio gzio
part_plan: part_plan:
minix_be: minix_be:
gcry_whirlpool: crypto gcry_whirlpool: crypto

@ -143,7 +143,7 @@ if grep "$DISK" /proc/mounts; then
fi fi
#check swap partition #check swap partition
if swapon --help 2>&1 | grep -q '^ \-s,'; then if swapon --help 2>&1 | grep -q '^ -s,'; then
if swapon -s | grep -q "^${DISK}[0-9]"; then if swapon -s | grep -q "^${DISK}[0-9]"; then
vterr "$DISK is used as swap, please swapoff it first!" vterr "$DISK is used as swap, please swapoff it first!"
exit 1 exit 1
@ -195,7 +195,7 @@ if [ "$MODE" = "install" -a -z "$NONDESTRUCTIVE" ]; then
fi fi
if [ "$PARTTOOL" = "parted" ]; then if [ "$PARTTOOL" = "parted" ]; then
if parted $DISK p | grep -i -q 'sector size.*4096.*4096'; then if parted -s $DISK p 2>&1 | grep -i -q 'sector size.*4096.*4096'; then
vterr "Currently Ventoy does not support 4K native device." vterr "Currently Ventoy does not support 4K native device."
exit 1 exit 1
fi fi

@ -92,6 +92,10 @@ get_disk_part_name() {
echo ${DISK}p${2} echo ${DISK}p${2}
elif echo $DISK | grep -q "/dev/nbd[0-9]"; then elif echo $DISK | grep -q "/dev/nbd[0-9]"; then
echo ${DISK}p${2} echo ${DISK}p${2}
elif echo $DISK | grep -q "/dev/zd[0-9]"; then
echo ${DISK}p${2}
elif echo $DISK | grep -q "/dev/md[0-9]"; then
echo ${DISK}p${2}
else else
echo ${DISK}${2} echo ${DISK}${2}
fi fi
@ -209,14 +213,14 @@ get_disk_ventoy_version() {
wait_and_create_part() { wait_and_create_part() {
vPART1=$1 vPART1=$1
vPART2=$2 vPART2=$2
echo 'Wait for partitions ...' echo 'Wait for partitions $vPART1 and $vPART2 ...'
for i in 0 1 2 3 4 5 6 7 8 9; do for i in 0 1 2 3 4 5 6 7 8 9; do
if ls -l $vPART1 2>/dev/null | grep -q '^b'; then if ls -l $vPART1 2>/dev/null | grep -q '^b'; then
if ls -l $vPART2 2>/dev/null | grep -q '^b'; then if ls -l $vPART2 2>/dev/null | grep -q '^b'; then
break break
fi fi
else else
echo "Wait for $vPART1/$vPART2 ..." echo "Wait for $vPART1 and $vPART2 ..."
sleep 1 sleep 1
fi fi
done done

Binary file not shown.

@ -585,67 +585,67 @@
"STRXXX":"" "STRXXX":""
}, },
{ {
"name":"Portuguese Brazilian (Português do Brasil)", "name":"Portuguese Brazilian (Português Brasileiro)",
"FontFamily":"Courier New", "FontFamily":"Courier New",
"FontSize":16, "FontSize":16,
"Author":"EstevaoCostaG3, David BrazSan, Hildo Guillardi Júnior, Chrystian Rubio", "Author":"EstevaoCostaG3, David BrazSan, Hildo Guillardi Júnior, Chrystian Rubio, Felipe",
"STR_ERROR":"Erro", "STR_ERROR":"Erro",
"STR_WARNING":"Atenção", "STR_WARNING":"Aviso",
"STR_INFO":"Informação", "STR_INFO":"Informações",
"STR_INCORRECT_DIR":"Por favor, execute no diretório correto!", "STR_INCORRECT_DIR":"Por favor execute no diretório correto!",
"STR_INCORRECT_TREE_DIR":"Não me execute aqui, por favor baixe o pacote de instalação lançado, e me execute lá.", "STR_INCORRECT_TREE_DIR":"Não me execute aqui, por favor baixe o pacote de instalação lançado e me execute lá.",
"STR_DEVICE":"Dispositivo", "STR_DEVICE":"Dispositivo",
"STR_LOCAL_VER":"Ventoy em pacote", "STR_LOCAL_VER":"Ventoy no Pacote",
"STR_DISK_VER":"Ventoy em dispositivo", "STR_DISK_VER":"Ventoy no Dispositivo",
"STR_STATUS":"Status - PRONTO", "STR_STATUS":"Status - PRONTO",
"STR_INSTALL":"Instalar", "STR_INSTALL":"Instalar",
"STR_UPDATE":"Atualizar", "STR_UPDATE":"Atualizar",
"STR_UPDATE_TIP":"A operação de atualização é segura, os arquivos ISO não serão alterados.#@Continuar?", "STR_UPDATE_TIP":"A operação de atualização é segura, os arquivos ISO não serão alterados.#@Continuar?",
"STR_INSTALL_TIP":"O disco será formatado e todos os dados serão perdidos.#@Continuar?", "STR_INSTALL_TIP":"O dispositivo será formatado e todos os dados serão perdidos.#@Continuar?",
"STR_INSTALL_TIP2":"O disco será formatado e todos os dados serão perdidos.#@Continuar? (Verificação dupla)", "STR_INSTALL_TIP2":"O dispositivo será formatado e todos os dados serão perdidos.#@Continuar? (Verificação Dupla)",
"STR_INSTALL_SUCCESS":"Parabéns!#@Ventoy foi instalado com sucesso no dispositivo.", "STR_INSTALL_SUCCESS":"Parabéns!#@O Ventoy foi instalado com sucesso no dispositivo.",
"STR_INSTALL_FAILED":"Um erro ocorreu durante a instalação. Você pode reconectar o dispositivo USB e tentar novamente. Verifique o arquivo log.txt para mais detalhes.", "STR_INSTALL_FAILED":"Um erro ocorreu durante a instalação. Você pode re-inserir o dispositivo USB e tentar de novo. Verifique o log.txt para mais detalhes. Se ele sempre falha por favor refira-se ao FAQ no site oficial da web.",
"STR_UPDATE_SUCCESS":"Parabéns!#@Ventoy foi atualizado com sucesso no dispositivo.", "STR_UPDATE_SUCCESS":"Parabéns!#@O Ventoy foi atualizado com sucesso no dispositivo.",
"STR_UPDATE_FAILED":"Um erro ocorreu durante a atualização. Você pode reconectar o dispositivo USB e tentar novamente. Verifique o arquivo log.txt para mais detalhes.", "STR_UPDATE_FAILED":"Um erro ocorreu durante a atualização. Você pode re-inserir o dispositivo USB e tentar de novo. Verifique o log.txt para mais detalhes. Se ele sempre falha por favor refira-se ao FAQ no site oficial da web.",
"STR_WAIT_PROCESS":"Uma tarefa está em execução, por favor espere...", "STR_WAIT_PROCESS":"Um thread está em execução, por favor espere...",
"STR_MENU_OPTION":"Opção", "STR_MENU_OPTION":"Opção",
"STR_MENU_SECURE_BOOT":"Boot seguro", "STR_MENU_SECURE_BOOT":"Suporte ao Boot Seguro",
"STR_MENU_PART_CFG":"Configuração de Partição", "STR_MENU_PART_CFG":"Configuração da Partição",
"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 fim do disco",
"STR_SPACE_VAL_INVALID":"Valor inválido 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":"Limpar o Ventoy",
"STR_CLEAR_SUCCESS":"O Ventoy foi removido deste dispositivo com sucesso.", "STR_CLEAR_SUCCESS":"O Ventoy foi removido do 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 quando removia o Ventoy do disco. Você pode re-inserir o dispositivo USB e tentar de novo. Verifique o log.txt para mais detalhes.",
"STR_MENU_PART_STYLE":"Estilo de Partição", "STR_MENU_PART_STYLE":"Estilo da Partição",
"STR_DISK_2TB_MBR_ERROR":"Por favor selecione GPT para discos maiores que 2TB", "STR_DISK_2TB_MBR_ERROR":"Por favor selecione o GPT para dispositivos acima de 2 TBs",
"STR_SHOW_ALL_DEV":"Mostrar Todos os Dispositivos", "STR_SHOW_ALL_DEV":"Mostrar Todos os Dispositivos",
"STR_PART_ALIGN_4KB":"Alinhar partições com 4kB", "STR_PART_ALIGN_4KB":"Alinhar as partições com 4 KBs",
"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 cronometrada", "STR_WEB_REQUEST_TIMEOUT":"Erro de comunicação: O Tempo da Requisição se Esgotou",
"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 do daemon atualizado, por favor tente de novo 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 de novo 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 gerado um arquivo VTSI.#@Continuar?", "STR_VTSI_CREATE_TIP":"Desta vez não gravará no dispositivo mas vai gerar apenas 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 o Rufus (3.15+) pra gravá-lo no dispositivo e completar a instalação do Ventoy.",
"STR_VTSI_CREATE_FAILED":"Criação do arquivo VTSI falhada.", "STR_VTSI_CREATE_FAILED":"A criação do arquivo VTSI falhou.",
"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":"O 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 instalação não destrutiva, cheque o arquivo log.txt para entender.", "STR_PART_RESIZE_FAILED":"A instalação não destrutiva falhou, verifique o 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.", "STR_PART_RESIZE_UNSUPPORTED":"A instalação não destrutiva do Ventoy parou porque algumas condições não podem ser atendidas. Verifique o log.txt para detalhes.",
"STR_INSTALL_YES_TIP1":"Aviso: Os dados serão perdidos!", "STR_INSTALL_YES_TIP1":"Aviso: Os dados serão perdidos!",
"STR_INSTALL_YES_TIP2":"Por favor, digite YES na caixa de texto abaixo para confirmar que você realmente quer fazer uma nova instalação em vez de atualização.", "STR_INSTALL_YES_TIP2":"Por favor insira YES na caixa de texto abaixo pra confirmar que você de fato quer fazer uma nova instalação ao invés de atualizar.",
"STR_PART_VENTOY_FS":"Sistema de arquivos para partição Ventoy", "STR_PART_VENTOY_FS":"Sistema de Arquivos para a partição do Ventoy",
"STR_PART_FS":"Sistema de arquivo", "STR_PART_FS":"Sistema de Arquivos",
"STR_PART_CLUSTER":"Tamanho do cluster", "STR_PART_CLUSTER":"Tamanho do Cluster",
"STR_PART_CLUSTER_DEFAULT":"Valor padrão do sistema", "STR_PART_CLUSTER_DEFAULT":"Valor Padrão do Sistema",
"STR_DONATE":"Doar", "STR_DONATE":"Doar",
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.", "STR_4KN_UNSUPPORTED":"Atualmente o Ventoy não suporta dispositivos 4K nativos.",
"STRXXX":"" "STRXXX":""
}, },
@ -735,9 +735,9 @@
"STR_INSTALL_TIP":"Das Gerät wird formatiert und alle Daten gehen verloren.#@Fortfahren?", "STR_INSTALL_TIP":"Das Gerät wird formatiert und alle Daten gehen verloren.#@Fortfahren?",
"STR_INSTALL_TIP2":"Das Gerät wird formatiert und alle Daten gehen verloren.#@Fortfahren? (erneute Überprüfung)", "STR_INSTALL_TIP2":"Das Gerät wird formatiert und alle Daten gehen verloren.#@Fortfahren? (erneute Überprüfung)",
"STR_INSTALL_SUCCESS":"Herzlichen Glückwunsch!#@Ventoy wurde erfolgreich auf dem Gerät installiert.", "STR_INSTALL_SUCCESS":"Herzlichen Glückwunsch!#@Ventoy wurde erfolgreich auf dem Gerät installiert.",
"STR_INSTALL_FAILED":"Während der Installation ist ein Fehler aufgetreten. Stecken Sie das Gerät neu ein und versuchen Sie es erneut. Überprüfen Sie die log.txt auf Details.", "STR_INSTALL_FAILED":"Während der Installation ist ein Fehler aufgetreten. Stecken Sie das Gerät neu ein und versuchen Sie es erneut. Details finden Sie in log.txt. Falls der Vorgang immer fehlschlägt, lesen Sie bitte das FAQ auf der offiziellen Website.",
"STR_UPDATE_SUCCESS":"Herzlichen Glückwunsch!#@Ventoy wurde erfolgreich auf dem Gerät aktualisiert.", "STR_UPDATE_SUCCESS":"Herzlichen Glückwunsch!#@Ventoy wurde erfolgreich auf dem Gerät aktualisiert.",
"STR_UPDATE_FAILED":"Während der Aktualisierung ist ein Fehler aufgetreten. Stecken Sie das Gerät neu ein und versuchen Sie es erneut. Überprüfen Sie die log.txt auf Details.", "STR_UPDATE_FAILED":"Während der Aktualisierung ist ein Fehler aufgetreten. Stecken Sie das Gerät neu ein und versuchen Sie es erneut. Details finden Sie in log.txt. Falls der Vorgang immer fehlschlägt, lesen Sie bitte das FAQ auf der offiziellen Website.",
"STR_WAIT_PROCESS":"Ein anderer Thread läuft, bitte warten...", "STR_WAIT_PROCESS":"Ein anderer Thread läuft, bitte warten...",
"STR_MENU_OPTION":"Optionen", "STR_MENU_OPTION":"Optionen",
"STR_MENU_SECURE_BOOT":"Secure Boot", "STR_MENU_SECURE_BOOT":"Secure Boot",
@ -754,28 +754,28 @@
"STR_SHOW_ALL_DEV":"Alle Geräte anzeigen", "STR_SHOW_ALL_DEV":"Alle Geräte anzeigen",
"STR_PART_ALIGN_4KB":"Richten Sie Partitionen mit 4KB aus", "STR_PART_ALIGN_4KB":"Richten Sie Partitionen mit 4KB aus",
"STR_WEB_COMMUNICATION_ERR":"Kommunikationsfehler:", "STR_WEB_COMMUNICATION_ERR":"Kommunikationsfehler:",
"STR_WEB_REMOTE_ABNORMAL":"Kommunikationsfehler: unnormales Verhalten", "STR_WEB_REMOTE_ABNORMAL":"Kommunikationsfehler: Unnormales Verhalten",
"STR_WEB_REQUEST_TIMEOUT":"Kommunikationsfehler: Zeitüberschreitung der Anforderung", "STR_WEB_REQUEST_TIMEOUT":"Kommunikationsfehler: Zeitüberschreitung der Anforderung",
"STR_WEB_SERVICE_UNAVAILABLE":"Kommunikationsfehler: Dienst nicht verfügbar", "STR_WEB_SERVICE_UNAVAILABLE":"Kommunikationsfehler: Dienst nicht verfügbar",
"STR_WEB_TOKEN_MISMATCH":"Daemon-Status aktualisiert, bitte später erneut versuchen.", "STR_WEB_TOKEN_MISMATCH":"Daemon-Status aktualisiert, bitte später erneut versuchen.",
"STR_WEB_SERVICE_BUSY":"Dienst ist ausgelastet, bitte später erneut versuchen.", "STR_WEB_SERVICE_BUSY":"Dienst ist ausgelastet, bitte später erneut versuchen.",
"STR_MENU_VTSI_CREATE":"VTSI-Datei erstellen", "STR_MENU_VTSI_CREATE":"VTSI-Datei erstellen",
"STR_VTSI_CREATE_TIP":"Es wird nur eine VTSI-Datei erstellt und nichts auf ein Gerät geschrieben.#@Fortfahren?", "STR_VTSI_CREATE_TIP":"Es wird nur eine VTSI-Datei erstellt und nichts auf ein Gerät geschrieben. #@Fortfahren?",
"STR_VTSI_CREATE_SUCCESS":"VTSI-Datei erfolgreich erstellt!#@Sie können Rufus(3.15+) zum auf das Gerät schreiben verwenden um die Installation von Ventoy fertigzustellen.", "STR_VTSI_CREATE_SUCCESS":"VTSI-Datei erfolgreich erstellt!#@Sie können Rufus(3.15+) zum auf das Gerät schreiben verwenden um die Installation von Ventoy fertigzustellen.",
"STR_VTSI_CREATE_FAILED":"VTSI-Datei konnte nicht erstellt werden.", "STR_VTSI_CREATE_FAILED":"VTSI-Datei konnte nicht erstellt werden.",
"STR_MENU_PART_RESIZE":"zerstörungsfreie Installation", "STR_MENU_PART_RESIZE":"Zerstörungsfreie Installation",
"STR_PART_RESIZE_TIP":"Ventoy wird eine Installation ohne vorherige Formatierung versuchen. #@Fortfahren?", "STR_PART_RESIZE_TIP":"Ventoy wird eine Installation ohne vorherige Formatierung versuchen. #@Fortfahren?",
"STR_PART_RESIZE_SUCCESS":"Glückwunsch!#@Die Installation von Ventoy, ohne vorherige Formatierung, wurde erfolgreich abgeschlossen.", "STR_PART_RESIZE_SUCCESS":"Glückwunsch! #@Die Installation von Ventoy, ohne vorherige Formatierung, wurde erfolgreich abgeschlossen.",
"STR_PART_RESIZE_FAILED":"Installation ohne vorherige Formatierung fehlgeschlagen. Für Details die log.txt prüfen.", "STR_PART_RESIZE_FAILED":"Installation ohne vorherige Formatierung fehlgeschlagen. Details dazu finden Sie in log.txt.",
"STR_PART_RESIZE_UNSUPPORTED":"Installation ohne vorherige Formatierung wurde auf Grund einiger nicht erfüllbarer Bedingungen gestoppt. Für Details die log.txt prüfen.", "STR_PART_RESIZE_UNSUPPORTED":"Aufgrund einiger nicht erfüllbarer Bedingungen wurde die Installation, ohne vorherige Formatierung, gestoppt. Details dazu finden Sie in log.txt.",
"STR_INSTALL_YES_TIP1":"Warnung: Die Daten gehen verloren!", "STR_INSTALL_YES_TIP1":"Warnung: Die Daten gehen verloren!",
"STR_INSTALL_YES_TIP2":"Bitte bestätigen Sie in der unteren Textbox mit YES, dass Sie anstelle eines Upgrades eine frische Installation durchführen möchten.", "STR_INSTALL_YES_TIP2":"Bitte bestätigen Sie die untere Textbox, um eine Neuinstallation durchzuführen.",
"STR_PART_VENTOY_FS":"Dateisystem für die Ventoy-Partition", "STR_PART_VENTOY_FS":"Dateisystem für die Ventoy-Partition",
"STR_PART_FS":"Dateisystem", "STR_PART_FS":"Dateisystem",
"STR_PART_CLUSTER":"Clustergröße", "STR_PART_CLUSTER":"Clustergröße",
"STR_PART_CLUSTER_DEFAULT":"Systemstandardwert", "STR_PART_CLUSTER_DEFAULT":"Systemstandardwert",
"STR_DONATE":"Spenden", "STR_DONATE":"Spenden",
"STR_4KN_UNSUPPORTED":"Ventoy unterstützt native 4K Geräte derzeit leider nocht nicht.", "STR_4KN_UNSUPPORTED":"Ventoy unterstützt derzeit keine nativen 4K-Geräte.",
"STRXXX":"" "STRXXX":""
}, },
@ -905,7 +905,7 @@
"STR_PART_CLUSTER":"Taille de cluster", "STR_PART_CLUSTER":"Taille de cluster",
"STR_PART_CLUSTER_DEFAULT":"Valeur par défaut du système", "STR_PART_CLUSTER_DEFAULT":"Valeur par défaut du système",
"STR_DONATE":"Faire un don", "STR_DONATE":"Faire un don",
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.", "STR_4KN_UNSUPPORTED":"Actuellement, Ventoy ne prend pas en charge les appareils natifs 4K.",
"STRXXX":"" "STRXXX":""
}, },
@ -1223,7 +1223,7 @@
"STR_PART_RESIZE_FAILED":"Не удалось выполнить неразрушающую установку, см. файл log.txt с подробностями.", "STR_PART_RESIZE_FAILED":"Не удалось выполнить неразрушающую установку, см. файл log.txt с подробностями.",
"STR_PART_RESIZE_UNSUPPORTED":"Неразрушающая установка Ventoy остановлена из-за несоответствия некоторым требованиям. См. файл log.txt с подробностями.", "STR_PART_RESIZE_UNSUPPORTED":"Неразрушающая установка Ventoy остановлена из-за несоответствия некоторым требованиям. См. файл log.txt с подробностями.",
"STR_INSTALL_YES_TIP1":"ВНИМАНИЕ: все данные будут потеряны!", "STR_INSTALL_YES_TIP1":"ВНИМАНИЕ: все данные будут потеряны!",
"STR_INSTALL_YES_TIP2":"Введите «YES» в текстовом поле ниже, чтобы подтвердить, что вы действительно хотите выполнить новую установку, а не обновление.", "STR_INSTALL_YES_TIP2":"Введите «YES» в текстовом поле ниже, чтобы подтвердить, что Вы действительно хотите выполнить новую установку, а не обновление.",
"STR_PART_VENTOY_FS":"Файловая система для раздела Ventoy", "STR_PART_VENTOY_FS":"Файловая система для раздела Ventoy",
"STR_PART_FS":"Тип:", "STR_PART_FS":"Тип:",
"STR_PART_CLUSTER":"Размер кластера:", "STR_PART_CLUSTER":"Размер кластера:",
@ -1489,72 +1489,72 @@
"STR_PART_CLUSTER":"Dimensiunea clusterului", "STR_PART_CLUSTER":"Dimensiunea clusterului",
"STR_PART_CLUSTER_DEFAULT":"Valoarea implicită a sistemului", "STR_PART_CLUSTER_DEFAULT":"Valoarea implicită a sistemului",
"STR_DONATE":"Donează", "STR_DONATE":"Donează",
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.", "STR_4KN_UNSUPPORTED":"Momentan, Ventoy nu suporta dispozitive native 4k.",
"STRXXX":"" "STRXXX":""
}, },
{ {
"name":"Japanese (日本語)", "name":"Japanese (日本語)",
"FontFamily":"Yu Gothic UI", "FontFamily":"Yu Gothic UI",
"FontSize":14, "FontSize":16,
"Author":"taichi eto, Bentnand, cmplstofB", "Author":"taichi eto, Bentnand, cmplstofB, Re*Index.(ot_inc)",
"STR_ERROR":"エラー", "STR_ERROR":"エラー",
"STR_WARNING":"警告", "STR_WARNING":"警告",
"STR_INFO":"情報", "STR_INFO":"情報",
"STR_INCORRECT_DIR":"正しいディレクトリで実行してください", "STR_INCORRECT_DIR":"正しいディレクトリで実行してください!",
"STR_INCORRECT_TREE_DIR":"この場所で実行するには、パッケージを導入してください。", "STR_INCORRECT_TREE_DIR":"ここで実行をしないでください。リリースされたインストールパッケージをダウンロードして、実行をしてください。",
"STR_DEVICE":"機器", "STR_DEVICE":"デバイス",
"STR_LOCAL_VER":"パッケージのVentoy", "STR_LOCAL_VER":"パッケージのVentoy",
"STR_DISK_VER":"機器中のVentoy", "STR_DISK_VER":"デバイス内のVentoy",
"STR_STATUS":"状態 - 準備完了", "STR_STATUS":"状態 - 準備完了",
"STR_INSTALL":"導入", "STR_INSTALL":"インストール",
"STR_UPDATE":"更新", "STR_UPDATE":"アップデート",
"STR_UPDATE_TIP":"更新可能です、ISOファイルは改変されません。#@続行しますか?", "STR_UPDATE_TIP":"アップグレードの操作は安全に行なわれ、ISOファイルは変更もされません。#@続行しますか?",
"STR_INSTALL_TIP":"選択した機器は完全に初期化され、保存されたデータは二度と復元できません。#@続行しますか?", "STR_INSTALL_TIP":"デバイスはフォーマットされ、すべてのデータが失われます。#@続行しますか?",
"STR_INSTALL_TIP2":"選択した機器は完全に初期化され、保存されたデータは二度と復元できません。#@続行しますか?(再確認)", "STR_INSTALL_TIP2":"デバイスはフォーマットされ、すべてのデータが失われます。#@続行しますか? (再確認)",
"STR_INSTALL_SUCCESS":"おめでとうございます。#@Ventoyの導入は正常に行われました。", "STR_INSTALL_SUCCESS":"おめでとうございます!#@Ventoyがデバイスにインストールされました。",
"STR_INSTALL_FAILED":"導入中にエラーが発生しました。機器を再接続してもう一度やり直してください。詳細な記録はlog.txtにあります。", "STR_INSTALL_FAILED":"インストール中にエラーが発生しました。USBデバイスを再接続をして再試行ができます。詳細については、log.txtを確認してください。何度も失敗する場合は、公式サイト内のFAQをご参照ください。",
"STR_UPDATE_SUCCESS":"おめでとうございます。#@Ventoyの更新は正常に行われました。", "STR_UPDATE_SUCCESS":"おめでとうございます!#@Ventoyがデバイスで正常にアップデートされました。",
"STR_UPDATE_FAILED":"更新中にエラーが発生しました。機器を再接続してもう一度やり直してください。詳細な記録はlog.txtにあります。", "STR_UPDATE_FAILED":"アップデート中にエラーが発生しました。USBデバイスを再接続して再試行ができます。詳細については、log.txtを確認してください。何度も失敗する場合は、公式サイトのFAQをご参照ください。",
"STR_WAIT_PROCESS":"スレッドが稼動しています。お待ちください...", "STR_WAIT_PROCESS":"スレッドが実行中です。お待ちください...",
"STR_MENU_OPTION":"設定", "STR_MENU_OPTION":"オプション",
"STR_MENU_SECURE_BOOT":"セキュアブート", "STR_MENU_SECURE_BOOT":"セキュアブートのサポート",
"STR_MENU_PART_CFG":"区画構成", "STR_MENU_PART_CFG":"パーティションの設定",
"STR_BTN_OK":"了解", "STR_BTN_OK":"OK",
"STR_BTN_CANCEL":"取消", "STR_BTN_CANCEL":"キャンセル",
"STR_PRESERVE_SPACE":"機器の最後に領域を確保する", "STR_PRESERVE_SPACE":"ディスクの最後にある程度の容量を確保する",
"STR_SPACE_VAL_INVALID":"確保する領域の値が正しくありません", "STR_SPACE_VAL_INVALID":"システム予約済みパーティションの値が無効です",
"STR_MENU_CLEAR":"Ventoyを削除", "STR_MENU_CLEAR":"Ventoyを削除する",
"STR_CLEAR_SUCCESS":"Ventoyが機器から削除されました。", "STR_CLEAR_SUCCESS":"Ventoyがデバイスから正常に削除されました。",
"STR_CLEAR_FAILED":"Ventoyを機器から削除できませんでした。機器を再接続してもう一度やり直してください。詳細な記録はlog.txtにあります。", "STR_CLEAR_FAILED":"Ventoyをディスクから削除するときにエラーが発生しました。USBデバイスを再接続して再試行ができます。詳細については、log.txtを確認してください。",
"STR_MENU_PART_STYLE":"区画の構成方式", "STR_MENU_PART_STYLE":"パーティションのスタイル",
"STR_DISK_2TB_MBR_ERROR":"2TB以上の機器にはGPTを使用してください。", "STR_DISK_2TB_MBR_ERROR":"2TBを超えるデバイスの場合はGPTを選択してください",
"STR_SHOW_ALL_DEV":"すべての機器を表示", "STR_SHOW_ALL_DEV":"すべてのデバイスを表示",
"STR_PART_ALIGN_4KB":"区画単位を4KBに揃える", "STR_PART_ALIGN_4KB":"パーティションを4KBに揃える",
"STR_WEB_COMMUNICATION_ERR":"通信エラー:", "STR_WEB_COMMUNICATION_ERR":"コミュニケーションエラー:",
"STR_WEB_REMOTE_ABNORMAL":"通信エラー: 通信先で異常が発生しています", "STR_WEB_REMOTE_ABNORMAL":"コミュニケーションエラー: リモート先が異常になっています",
"STR_WEB_REQUEST_TIMEOUT":"通信エラー: 要求が時間切れしました", "STR_WEB_REQUEST_TIMEOUT":"コミュニケーションエラー: リクエストがタイムアウトしました",
"STR_WEB_SERVICE_UNAVAILABLE":"通信エラー: サービスが利用できません", "STR_WEB_SERVICE_UNAVAILABLE":"コミュニケーションエラー: サービスが利用できません",
"STR_WEB_TOKEN_MISMATCH":"デーモンの状態が更新されました。しばらくしてから再試行してください。", "STR_WEB_TOKEN_MISMATCH":"デーモンのステータスが更新されました。後で再試行してください。",
"STR_WEB_SERVICE_BUSY":"サービスが繁忙です。後で再試行してください。", "STR_WEB_SERVICE_BUSY":"サービスがビジーの状態です。後で再試行してください。",
"STR_MENU_VTSI_CREATE":"VTSIファイルを成する", "STR_MENU_VTSI_CREATE":"VTSIファイルを成する",
"STR_VTSI_CREATE_TIP":"VTSIファイルを生成し記憶装置への書き込みは行いません。#@続行しますか?", "STR_VTSI_CREATE_TIP":"今回はデバイスへの書き込みを行なわず、VTSIファイルの作成のみを行ないます。#@続行しますか?",
"STR_VTSI_CREATE_SUCCESS":"VTSIファイルが生成されました。#@Rufus3.15以上の版を使って記憶装置に書き込んでVentoyの導入を完遂しましょう。", "STR_VTSI_CREATE_SUCCESS":"VTSIファイルが正常に作成されました!#@Rufus(3.15以降)を使用してデバイスに書き込むことでVentoyのインストールが完了します。",
"STR_VTSI_CREATE_FAILED":"VTSIファイルを生成できませんでした。", "STR_VTSI_CREATE_FAILED":"VTSIファイルの作成に失敗しました。",
"STR_MENU_PART_RESIZE":"非破壊的導入", "STR_MENU_PART_RESIZE":"非破壊なインストール",
"STR_PART_RESIZE_TIP":"Ventoyを(可能であれば)非破壊的に導入します。#@続行しますか?", "STR_PART_RESIZE_TIP":"Ventoyは、可能であれば非破壊なインストールを試みます。#@続行しますか?",
"STR_PART_RESIZE_SUCCESS":"おめでとうございます。#@Ventoyの非破壊的導入は正常に行われました。", "STR_PART_RESIZE_SUCCESS":"おめでとうございます!#@Ventoyの非破壊なインストールが正常に完了しました。",
"STR_PART_RESIZE_FAILED":"Ventoyを非破壊的に導入できませんでした。詳細な記録はlog.txtにあります。", "STR_PART_RESIZE_FAILED":"非破壊なインストールが失敗しました。詳細については、log.txtを確認してください。",
"STR_PART_RESIZE_UNSUPPORTED":"Ventoyを非破壊的に導入できませんでした。非破壊的導入にあたっての要件が満たされていません。詳細な記録はlog.txtにあります。", "STR_PART_RESIZE_UNSUPPORTED":"いくつかの条件を満たしていないため、Ventoyの非破壊なインストールは停止されました。詳細については、log.txtを確認してください。",
"STR_INSTALL_YES_TIP1":"警告: データが消去されます", "STR_INSTALL_YES_TIP1":"警告: データが失われます!",
"STR_INSTALL_YES_TIP2":"Ventoyを更新するのではなく新規に導入するということを確認するために下の入力欄に「YES」と入力してください。", "STR_INSTALL_YES_TIP2":"アップグレードではなく新規インストールを実行するには、下のテキストボックスに「YES」と入力してください。",
"STR_PART_VENTOY_FS":"Ventoy パーティションのファイル システム", "STR_PART_VENTOY_FS":"Ventoyパーティションのファイルシステム",
"STR_PART_FS":"ファイルシステム", "STR_PART_FS":"ファイルシステム",
"STR_PART_CLUSTER":"クラスタサイズ", "STR_PART_CLUSTER":"クラスタサイズ",
"STR_PART_CLUSTER_DEFAULT":"システムのデフォルト値", "STR_PART_CLUSTER_DEFAULT":"システムの既定値",
"STR_DONATE":"寄付", "STR_DONATE":"寄付",
"STR_4KN_UNSUPPORTED":"現在、Ventoy 4K ネイティブ デバイスをサポートしていません。", "STR_4KN_UNSUPPORTED":"現在、Ventoyは4Kネイティブデバイスをサポートしていません。",
"STRXXX":"" "STRXXX":""
}, },
@ -1575,13 +1575,13 @@
"STR_STATUS":"Stato - PRONTO", "STR_STATUS":"Stato - PRONTO",
"STR_INSTALL":"Installa", "STR_INSTALL":"Installa",
"STR_UPDATE":"Aggiorna", "STR_UPDATE":"Aggiorna",
"STR_UPDATE_TIP":"L'aggiornamento è sicuro, i file presenti nel dispositivo rimarranno invariati.#@Vuoi continuare?", "STR_UPDATE_TIP":"L'aggiornamento è sicuro, i file presenti nel dispositivo rimarranno invariati.#@#@Vuoi continuare?",
"STR_INSTALL_TIP":"Il dispositivo verrà formattato e tutti i dati saranno persi.#@Vuoi continuare?", "STR_INSTALL_TIP":"Il dispositivo verrà formattato e tutti i dati saranno persi.#@#@Vuoi continuare?",
"STR_INSTALL_TIP2":"Il dispositivo verrà formattato e tutti i dati saranno persi.#@Vuoi continuare (seconda verifica)?", "STR_INSTALL_TIP2":"Il dispositivo verrà formattato e tutti i dati saranno persi.#@#@Vuoi continuare (seconda verifica)?",
"STR_INSTALL_SUCCESS":"Congratulazioni!#@Installazione di Ventoy nel dispositivo completata.", "STR_INSTALL_SUCCESS":"Congratulazioni!#@#@Installazione di Ventoy nel dispositivo completata.",
"STR_INSTALL_FAILED":"Si è verificato un errore durante l'installazione.#@Riconnetti il dispositivo e riprova.#@Controlla il file log.txt per i dettagli.", "STR_INSTALL_FAILED":"Si è verificato un errore durante l'installazione.#@#@Riconnetti il dispositivo e riprova.#@#@Per i dettagli controlla il file log.txt .",
"STR_UPDATE_SUCCESS":"Congratulazioni!#@Aggiornamento di Ventoy nel dispositivo completato", "STR_UPDATE_SUCCESS":"Congratulazioni!#@#@Aggiornamento di Ventoy nel dispositivo completato",
"STR_UPDATE_FAILED":"Si è verificato un errore durante l'aggiornamento.#@È possibile riconnettere il dispositivo USB e riprovare.#@Controlla il file log.txt per i dettagli. Se l'aggiornamento non va a buon fine, consulta le FAQ sul sito ufficiale", "STR_UPDATE_FAILED":"Si è verificato un errore durante l'aggiornamento.#@È possibile riconnettere il dispositivo USB e riprovare.#@Per i dettagli controlla il file log.txt.#@Se l'aggiornamento non va a buon fine, consulta le FAQ sul sito ufficiale",
"STR_WAIT_PROCESS":"Un processo è in esecuzione. Attendi...", "STR_WAIT_PROCESS":"Un processo è in esecuzione. Attendi...",
"STR_MENU_OPTION":"Opzioni", "STR_MENU_OPTION":"Opzioni",
"STR_MENU_SECURE_BOOT":"Avvio protetto (secure boot)", "STR_MENU_SECURE_BOOT":"Avvio protetto (secure boot)",
@ -1592,33 +1592,33 @@
"STR_SPACE_VAL_INVALID":"Quantità di spazio da riservare non valida", "STR_SPACE_VAL_INVALID":"Quantità di spazio da riservare non valida",
"STR_MENU_CLEAR":"Rimuovi Ventoy dal dispositivo", "STR_MENU_CLEAR":"Rimuovi Ventoy dal dispositivo",
"STR_CLEAR_SUCCESS":"Rimozione di Ventoy dal dispositivo completata.", "STR_CLEAR_SUCCESS":"Rimozione di Ventoy dal dispositivo completata.",
"STR_CLEAR_FAILED":"Si è verificato un errore durante la rimozione di Ventoy dal dispositivo.#@È possibile riconnettere il dispositivo USB e riprovare.#@Controlla il file log.txt per i dettagli", "STR_CLEAR_FAILED":"Si è verificato un errore durante la rimozione di Ventoy dal dispositivo.#@È possibile riconnettere il dispositivo USB e riprovare.#@Per i dettagli controlla il file log.txt ",
"STR_MENU_PART_STYLE":"Stile tabella partizioni", "STR_MENU_PART_STYLE":"Stile tabella partizioni",
"STR_DISK_2TB_MBR_ERROR":"Seleziona GPT per i dispositivi più grandi di 2TB", "STR_DISK_2TB_MBR_ERROR":"Seleziona GPT per i dispositivi più grandi di 2TB",
"STR_SHOW_ALL_DEV":"Visualizza tutti i dispositivi", "STR_SHOW_ALL_DEV":"Visualizza tutti i dispositivi",
"STR_PART_ALIGN_4KB":"Allinea le partizioni con 4KB", "STR_PART_ALIGN_4KB":"Allinea le partizioni con 4KB",
"STR_WEB_COMMUNICATION_ERR":"Errore di comunicazione:", "STR_WEB_COMMUNICATION_ERR":"Errore di comunicazione:",
"STR_WEB_REMOTE_ABNORMAL":"Errore di comunicazione: remoto anormale", "STR_WEB_REMOTE_ABNORMAL":"Errore di comunicazione: remoto non normale",
"STR_WEB_REQUEST_TIMEOUT":"Errore di comunicazione: richiesta scaduta", "STR_WEB_REQUEST_TIMEOUT":"Errore di comunicazione: richiesta scaduta",
"STR_WEB_SERVICE_UNAVAILABLE":"Errore di comunicazione: servizio non disponibile", "STR_WEB_SERVICE_UNAVAILABLE":"Errore di comunicazione: servizio non disponibile",
"STR_WEB_TOKEN_MISMATCH":"Stato del demone aggiornato. Riprova più tardi.", "STR_WEB_TOKEN_MISMATCH":"Stato del demon aggiornato. Riprova più tardi.",
"STR_WEB_SERVICE_BUSY":"Il servizio è occupato. Riprova più tardi.", "STR_WEB_SERVICE_BUSY":"Il servizio è occupato. Riprova più tardi.",
"STR_MENU_VTSI_CREATE":"Genera file VTSI", "STR_MENU_VTSI_CREATE":"Genera file VTSI",
"STR_VTSI_CREATE_TIP":"Questa volta non scriverà sul dispositivo, ma genererà solo un file VTSI#@Vuoi continuare?", "STR_VTSI_CREATE_TIP":"Questa volta non scriverà sul dispositivo, ma genererà solo un file VTSI#@#@Vuoi continuare?",
"STR_VTSI_CREATE_SUCCESS":"Creazione file VTSI completata!#@Per scriverlo nel dispositivo in modo da completare l'installazione di Ventoy puoi usare Rufus (versione 3.15 o successiva).", "STR_VTSI_CREATE_SUCCESS":"Creazione file VTSI completata!#@Per scriverlo nel dispositivo in modo da completare l'installazione di Ventoy puoi usare Rufus (versione 3.15 o successiva).",
"STR_VTSI_CREATE_FAILED":"Creazione file VTSI non riuscita.", "STR_VTSI_CREATE_FAILED":"Creazione file VTSI non riuscita.",
"STR_MENU_PART_RESIZE":"Installazione non distruttiva", "STR_MENU_PART_RESIZE":"Installazione non distruttiva",
"STR_PART_RESIZE_TIP":"Ventoy proverà, se possibile, l'installazione non distruttiva.#@Vuoi continuare?", "STR_PART_RESIZE_TIP":"Ventoy proverà, se possibile, l'installazione non distruttiva.#@#@Vuoi continuare?",
"STR_PART_RESIZE_SUCCESS":"Congratulazioni!#@Installazione non distruttiva di Ventoy completata.", "STR_PART_RESIZE_SUCCESS":"Congratulazioni!#@Installazione non distruttiva di Ventoy completata.",
"STR_PART_RESIZE_FAILED":"Installazione non distruttiva fallita.#@Controlla il file log.txt per i dettagli.", "STR_PART_RESIZE_FAILED":"Installazione non distruttiva fallita.#@Controlla il file log.txt per i dettagli.",
"STR_PART_RESIZE_UNSUPPORTED":"L'installazione non distruttiva di Ventoy è stata interrotta perché alcune condizioni non possono essere soddisfatte.#@Controlla il file log.txt per i dettagli.", "STR_PART_RESIZE_UNSUPPORTED":"L'installazione non distruttiva di Ventoy è stata interrotta perché alcune condizioni non possono essere soddisfatte.#@Controlla il file log.txt per i dettagli.",
"STR_INSTALL_YES_TIP1":"Attenzione: i dati verranno persi!", "STR_INSTALL_YES_TIP1":"Attenzione: i dati verranno persi!",
"STR_INSTALL_YES_TIP2":"Digita YES nella casella di testo qui sotto per confermare che vuoi davvero eseguire un'installazione pulita anziché un aggiornamento.", "STR_INSTALL_YES_TIP2":"Per confermare che vuoi davvero eseguire un'installazione pulita anziché un aggiornamento digita YES nella casella di testo qui sotto .",
"STR_PART_VENTOY_FS":"File system per la partizione Ventoy", "STR_PART_VENTOY_FS":"File system partizione Ventoy",
"STR_PART_FS":"File system", "STR_PART_FS":"File system",
"STR_PART_CLUSTER":"Dimensione del cluster", "STR_PART_CLUSTER":"Dimensione cluster",
"STR_PART_CLUSTER_DEFAULT":"Valore predefinito di sistema", "STR_PART_CLUSTER_DEFAULT":"Valore predefinito sistema",
"STR_DONATE":"Donare", "STR_DONATE":"Dona",
"STR_4KN_UNSUPPORTED":"Attualmente Ventoy non supporta dispositivi nativi 4K.", "STR_4KN_UNSUPPORTED":"Attualmente Ventoy non supporta dispositivi nativi 4K.",
"STRXXX":"" "STRXXX":""
@ -1822,13 +1822,13 @@
"name":"Serbian Latin (Srpski)", "name":"Serbian Latin (Srpski)",
"FontFamily":"Courier New", "FontFamily":"Courier New",
"FontSize":16, "FontSize":16,
"Author":"Bojan Maksimović, panickingkernel, Zoran Jankov, Stefan Šućur", "Author":"Bojan Maksimović, panickingkernel, Zoran Jankov, Stefan Šućur, Kosta Stojiljković",
"STR_ERROR":"Greška", "STR_ERROR":"Greška",
"STR_WARNING":"Upozorenje", "STR_WARNING":"Upozorenje",
"STR_INFO":"Informacija", "STR_INFO":"Informacija",
"STR_INCORRECT_DIR":"Molim Vas, pokrenite me u pravom direktorijumu!", "STR_INCORRECT_DIR":"Molim Vas, pokrenite me u pravom direktorijumu!",
"STR_INCORRECT_TREE_DIR":"Nemojте me pokretati ovde, molim Vas preuzmite objavljeni instalacioni paket i pokrenite me tamo.", "STR_INCORRECT_TREE_DIR":"Nemojtе me pokretati ovde, molim Vas preuzmite objavljeni instalacioni paket i pokrenite me tamo.",
"STR_DEVICE":"Uređaj", "STR_DEVICE":"Uređaj",
"STR_LOCAL_VER":"Ventoy u paketu", "STR_LOCAL_VER":"Ventoy u paketu",
"STR_DISK_VER":"Ventoy u uređaju", "STR_DISK_VER":"Ventoy u uređaju",
@ -1879,7 +1879,7 @@
"STR_PART_CLUSTER":"Veličina klastera", "STR_PART_CLUSTER":"Veličina klastera",
"STR_PART_CLUSTER_DEFAULT":"Podrazumevana sistemska vrednost", "STR_PART_CLUSTER_DEFAULT":"Podrazumevana sistemska vrednost",
"STR_DONATE":"Donirajte", "STR_DONATE":"Donirajte",
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.", "STR_4KN_UNSUPPORTED":"Ventoy trenutno ne podržava 4K izvorne uređaje.",
"STRXXX":"" "STRXXX":""
}, },
@ -1887,7 +1887,7 @@
"name":"Serbian Cyrillic (Српски)", "name":"Serbian Cyrillic (Српски)",
"FontFamily":"Courier New", "FontFamily":"Courier New",
"FontSize":16, "FontSize":16,
"Author":"Bojan Maksimović, panickingkernel, Zoran Jankov, Stefan Šućur", "Author":"Bojan Maksimović, panickingkernel, Zoran Jankov, Stefan Šućur, Kosta Stojiljković",
"STR_ERROR":"Грешка", "STR_ERROR":"Грешка",
"STR_WARNING":"Упозорење", "STR_WARNING":"Упозорење",
@ -1923,7 +1923,7 @@
"STR_SHOW_ALL_DEV":"Прикажи све уређаје", "STR_SHOW_ALL_DEV":"Прикажи све уређаје",
"STR_PART_ALIGN_4KB":"Поравнајте партиције са 4KB", "STR_PART_ALIGN_4KB":"Поравнајте партиције са 4KB",
"STR_WEB_COMMUNICATION_ERR":"Комуникациона грешка:", "STR_WEB_COMMUNICATION_ERR":"Комуникациона грешка:",
"STR_WEB_REMOTE_ABNORMAL":"Комуникациона грешка: ненормално даљинско управљање", "STR_WEB_REMOTE_ABNORMAL":"Комуникациона грешка: Ненормално даљинско управљање",
"STR_WEB_REQUEST_TIMEOUT":"Комуникациона грешка: Захтев је истекао", "STR_WEB_REQUEST_TIMEOUT":"Комуникациона грешка: Захтев је истекао",
"STR_WEB_SERVICE_UNAVAILABLE":"Комуникациона грешка: Сервис је недоступан", "STR_WEB_SERVICE_UNAVAILABLE":"Комуникациона грешка: Сервис је недоступан",
"STR_WEB_TOKEN_MISMATCH":"Статус демона ажуриран, покушајте поново касније.", "STR_WEB_TOKEN_MISMATCH":"Статус демона ажуриран, покушајте поново касније.",
@ -1944,7 +1944,7 @@
"STR_PART_CLUSTER":"Величина кластера", "STR_PART_CLUSTER":"Величина кластера",
"STR_PART_CLUSTER_DEFAULT":"Подразумевана системска вредност", "STR_PART_CLUSTER_DEFAULT":"Подразумевана системска вредност",
"STR_DONATE":"Донирајте", "STR_DONATE":"Донирајте",
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.", "STR_4KN_UNSUPPORTED":"Ventoy тренутно не подржава 4К изворне уређаје.",
"STRXXX":"" "STRXXX":""
}, },
@ -2082,7 +2082,7 @@
"name":"Vietnamese (Tiếng Việt)", "name":"Vietnamese (Tiếng Việt)",
"FontFamily":"Tahoma", "FontFamily":"Tahoma",
"FontSize":14, "FontSize":14,
"Author":"Nguyen Quoc Hoang - cuumay.win", "Author":"Nguyen Quoc Hoang - cuumay.win, HoangNPV - @isoamyl50",
"STR_ERROR":"Lỗi", "STR_ERROR":"Lỗi",
"STR_WARNING":"Cảnh báo", "STR_WARNING":"Cảnh báo",
@ -2099,9 +2099,9 @@
"STR_INSTALL_TIP":"Thiết bị sẽ được định dạng và do đó TẤT CẢ DỮ LIỆU trên thiết bị sẽ bị mất.#@Bạn thật sự muốn tiếp tục?", "STR_INSTALL_TIP":"Thiết bị sẽ được định dạng và do đó TẤT CẢ DỮ LIỆU trên thiết bị sẽ bị mất.#@Bạn thật sự muốn tiếp tục?",
"STR_INSTALL_TIP2":"Thiết bị sẽ được định dạng và do đó TẤT CẢ DỮ LIỆU trên thiết bị sẽ bị mất.#@Bạn thật sự muốn tiếp tục? (Xác nhận lần hai)", "STR_INSTALL_TIP2":"Thiết bị sẽ được định dạng và do đó TẤT CẢ DỮ LIỆU trên thiết bị sẽ bị mất.#@Bạn thật sự muốn tiếp tục? (Xác nhận lần hai)",
"STR_INSTALL_SUCCESS":"Chúc mừng bạn!#@Thiết bị đã được cài Ventoy thành công.", "STR_INSTALL_SUCCESS":"Chúc mừng bạn!#@Thiết bị đã được cài Ventoy thành công.",
"STR_INSTALL_FAILED":"Đã xảy ra lỗi trong quá trình cài đặt Ventoy. Bạn có thể rút thiết bị ra và thử lại. Xem chi tiết ở tệp log.txt.", "STR_INSTALL_FAILED":"Đã xảy ra lỗi trong quá trình cài đặt Ventoy. Bạn có thể cắm lại USB và thử lại. Xem chi tiết ở tệp log.txt. Nếu lỗi tiếp tục xảy ra, vui lòng đọc FAQ tại trang web chính thức.",
"STR_UPDATE_SUCCESS":"Chúc mừng bạn!#@Thiết bị đã được cập nhật Ventoy thành công.", "STR_UPDATE_SUCCESS":"Chúc mừng bạn!#@Thiết bị đã được cập nhật Ventoy thành công.",
"STR_UPDATE_FAILED":"Đã xảy ra lỗi trong quá trình cập nhật Ventoy. Bạn có thể rút thiết bị ra và thử lại. Xem chi tiết ở tệp log.txt.", "STR_UPDATE_FAILED":"Đã xảy ra lỗi trong quá trình cập nhật Ventoy. Bạn có thể cắm lại USB và thử lại. Xem chi tiết ở tệp log.txt. Nếu lỗi tiếp tục xảy ra, vui lòng đọc FAQ tại trang web chính thức.",
"STR_WAIT_PROCESS":"Một luồng xử lý đang chạy, vui lòng chờ...", "STR_WAIT_PROCESS":"Một luồng xử lý đang chạy, vui lòng chờ...",
"STR_MENU_OPTION":"Tùy chọn", "STR_MENU_OPTION":"Tùy chọn",
"STR_MENU_SECURE_BOOT":"Bật hỗ trợ Secure Boot", "STR_MENU_SECURE_BOOT":"Bật hỗ trợ Secure Boot",
@ -2112,7 +2112,7 @@
"STR_SPACE_VAL_INVALID":"Giá trị dung lượng giữ lại không hợp lệ.", "STR_SPACE_VAL_INVALID":"Giá trị dung lượng giữ lại không hợp lệ.",
"STR_MENU_CLEAR":"Gỡ bỏ Ventoy", "STR_MENU_CLEAR":"Gỡ bỏ Ventoy",
"STR_CLEAR_SUCCESS":"Chúc mừng bạn!#@Thiết bị đã được gỡ bỏ Ventoy thành công.", "STR_CLEAR_SUCCESS":"Chúc mừng bạn!#@Thiết bị đã được gỡ bỏ Ventoy thành công.",
"STR_CLEAR_FAILED":"Đã xảy ra lỗi trong quá trình gỡ bỏ Ventoy. Bạn có thể rút thiết bị ra và thử lại. Xem chi tiết ở tệp log.txt.", "STR_CLEAR_FAILED":"Đã xảy ra lỗi trong quá trình gỡ bỏ Ventoy. Bạn có thể cắm lại USB và thử lại. Xem chi tiết ở tệp log.txt.",
"STR_MENU_PART_STYLE":"Kiểu phân vùng", "STR_MENU_PART_STYLE":"Kiểu phân vùng",
"STR_DISK_2TB_MBR_ERROR":"Thiết bị có dung lượng lớn hơn 2TB. Vui lòng chọn Kiểu phân vùng là GPT.", "STR_DISK_2TB_MBR_ERROR":"Thiết bị có dung lượng lớn hơn 2TB. Vui lòng chọn Kiểu phân vùng là GPT.",
"STR_SHOW_ALL_DEV":"Hiện tất cả Thiết bị", "STR_SHOW_ALL_DEV":"Hiện tất cả Thiết bị",
@ -2133,13 +2133,13 @@
"STR_PART_RESIZE_FAILED":"Đã xảy ra lỗi trong quá trình cài Ventoy theo cách cài đặt không phá hủy. Xem chi tiết ở tệp log.txt.", "STR_PART_RESIZE_FAILED":"Đã xảy ra lỗi trong quá trình cài Ventoy theo cách cài đặt không phá hủy. Xem chi tiết ở tệp log.txt.",
"STR_PART_RESIZE_UNSUPPORTED":"Cài Ventoy theo cách cài đặt không phá hủy đã bị dừng lại vì chưa đúng điều kiện. Xem chi tiết ở tệp log.txt.", "STR_PART_RESIZE_UNSUPPORTED":"Cài Ventoy theo cách cài đặt không phá hủy đã bị dừng lại vì chưa đúng điều kiện. Xem chi tiết ở tệp log.txt.",
"STR_INSTALL_YES_TIP1":"Cảnh báo: Dữ liệu sẽ bị mất !", "STR_INSTALL_YES_TIP1":"Cảnh báo: Dữ liệu sẽ bị mất !",
"STR_INSTALL_YES_TIP2":"Vui lòng nhập YES vào textbox bên dưới để xác nhận bạn muốn cài mới thay vì cài nâng cấp.", "STR_INSTALL_YES_TIP2":"Vui lòng nhập YES vào ô bên dưới để xác nhận bạn muốn cài mới thay vì cài nâng cấp.",
"STR_PART_VENTOY_FS":"Hệ thống tập tin cho Phân vùng Ventoy", "STR_PART_VENTOY_FS":"Hệ thống tập tin cho Phân vùng Ventoy",
"STR_PART_FS":"Hệ thống tập tin", "STR_PART_FS":"Hệ thống tập tin",
"STR_PART_CLUSTER":"Cỡ Cluster", "STR_PART_CLUSTER":"Kích thước Cluster",
"STR_PART_CLUSTER_DEFAULT":"Theo mặc định hệ thống", "STR_PART_CLUSTER_DEFAULT":"Theo giá trị mặc định của hệ thống",
"STR_DONATE":"Thưởng tác giả", "STR_DONATE":"Ủng hộ tác giả",
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.", "STR_4KN_UNSUPPORTED":"Hiện tại Ventoy không hỗ trợ các thiết bị 4K native.",
"STRXXX":"" "STRXXX":""
}, },
@ -2399,7 +2399,7 @@
"STR_PART_CLUSTER":"Tamanho do cluster", "STR_PART_CLUSTER":"Tamanho do cluster",
"STR_PART_CLUSTER_DEFAULT":"Valor predefinido do sistema", "STR_PART_CLUSTER_DEFAULT":"Valor predefinido do sistema",
"STR_DONATE":"Doar", "STR_DONATE":"Doar",
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.", "STR_4KN_UNSUPPORTED":"Atualmente, o Ventoy não é compatível com dispositivos nativos 4K.",
"STRXXX":"" "STRXXX":""
}, },
@ -2420,7 +2420,7 @@
"STR_STATUS":"Status - SIAP", "STR_STATUS":"Status - SIAP",
"STR_INSTALL":"Pasang", "STR_INSTALL":"Pasang",
"STR_UPDATE":"Perbarui", "STR_UPDATE":"Perbarui",
"STR_UPDATE_TIP":"Operasi pembaruan ini aman, Tidak akan ada perubahan berkas ISO.#@Lanjutkan?", "STR_UPDATE_TIP":"Operasi pembaruan ini aman, tidak akan ada perubahan pada berkas ISO.#@Lanjutkan?",
"STR_INSTALL_TIP":"Disk akan di-format dan semua data akan hilang.#@Lanjutkan?", "STR_INSTALL_TIP":"Disk akan di-format dan semua data akan hilang.#@Lanjutkan?",
"STR_INSTALL_TIP2":"Disk akan di-format dan semua data akan hilang.#@Lanjutkan? (YAKIN)", "STR_INSTALL_TIP2":"Disk akan di-format dan semua data akan hilang.#@Lanjutkan? (YAKIN)",
"STR_INSTALL_SUCCESS":"Selamat!#@Ventoy telah berhasil terpasang di perangkat ini.", "STR_INSTALL_SUCCESS":"Selamat!#@Ventoy telah berhasil terpasang di perangkat ini.",
@ -2434,11 +2434,11 @@
"STR_BTN_OK":"OK", "STR_BTN_OK":"OK",
"STR_BTN_CANCEL":"Batal", "STR_BTN_CANCEL":"Batal",
"STR_PRESERVE_SPACE":"Menyisakan sejumlah ruang penyimpanan pada disk di bawah ini", "STR_PRESERVE_SPACE":"Menyisakan sejumlah ruang penyimpanan pada disk di bawah ini",
"STR_SPACE_VAL_INVALID":"Nilai sisa ruang tidak valid", "STR_SPACE_VAL_INVALID":"Nilai sisa ruang tidak benar",
"STR_MENU_CLEAR":"Bersihkan Ventoy", "STR_MENU_CLEAR":"Bersihkan Ventoy",
"STR_CLEAR_SUCCESS":"Ventoy telah berhasil dihapus pada perangkat ini.", "STR_CLEAR_SUCCESS":"Ventoy telah berhasil dihapus pada perangkat ini.",
"STR_CLEAR_FAILED":"Terjadi kesalahan ketika penghapusan berlangsung. Anda perlu mencabut-pasang ulang USB dan coba lagi. Periksa berkas log.txt untuk detil.", "STR_CLEAR_FAILED":"Terjadi kesalahan ketika penghapusan berlangsung. Anda perlu mencabut-pasang ulang USB dan coba lagi. Periksa berkas log.txt untuk detil.",
"STR_MENU_PART_STYLE":"Gaya Partisi", "STR_MENU_PART_STYLE":"Model Partisi",
"STR_DISK_2TB_MBR_ERROR":"Silakan pilih GPT untuk disk yang lebih dari 2TB", "STR_DISK_2TB_MBR_ERROR":"Silakan pilih GPT untuk disk yang lebih dari 2TB",
"STR_SHOW_ALL_DEV":"Tampilkan semua perangkat", "STR_SHOW_ALL_DEV":"Tampilkan semua perangkat",
"STR_PART_ALIGN_4KB":"Meluruskan dengan partisi 4KB", "STR_PART_ALIGN_4KB":"Meluruskan dengan partisi 4KB",
@ -2458,7 +2458,7 @@
"STR_PART_RESIZE_FAILED":"Pemasangan tanpa merusakkan gagal, periksa berkas log.txt untuk detil.", "STR_PART_RESIZE_FAILED":"Pemasangan tanpa merusakkan gagal, periksa berkas log.txt untuk detil.",
"STR_PART_RESIZE_UNSUPPORTED":"Pemasangan tanpa merusakkan Ventoy terhenti karena beberapa kondisi yang tidak mendukung. Periksa berkas log.txt untuk detil.", "STR_PART_RESIZE_UNSUPPORTED":"Pemasangan tanpa merusakkan Ventoy terhenti karena beberapa kondisi yang tidak mendukung. Periksa berkas log.txt untuk detil.",
"STR_INSTALL_YES_TIP1":"Peringatan: Data akan hilang!", "STR_INSTALL_YES_TIP1":"Peringatan: Data akan hilang!",
"STR_INSTALL_YES_TIP2":"Silakan ketik YES pada kotak tulis di bawah untuk meyakinkan bahwa anda memang untuk melakukan pemasangan baru ketimbang memperbaruinya", "STR_INSTALL_YES_TIP2":"Silakan ketik YES pada kotak tulis di bawah untuk mengonfirmasikan bahwa anda memang yakin melakukan pemasangan baru ketimbang memperbaruinya",
"STR_PART_VENTOY_FS":"Berkas Sistem Untuk Partisi Ventoy", "STR_PART_VENTOY_FS":"Berkas Sistem Untuk Partisi Ventoy",
"STR_PART_FS":"Berkas Sistem", "STR_PART_FS":"Berkas Sistem",
"STR_PART_CLUSTER":"Ukuran Kelompok", "STR_PART_CLUSTER":"Ukuran Kelompok",
@ -2622,7 +2622,7 @@
"STR_INSTALL_FAILED":"Παρουσιάστηκε σφάλμα κατά την εγκατάσταση. Μπορείτε να επανασυνδέσετε το USB και να δοκιμάσετε ξανά. Ελέγξτε το αρχείο log.txt για λεπτομέρειες.", "STR_INSTALL_FAILED":"Παρουσιάστηκε σφάλμα κατά την εγκατάσταση. Μπορείτε να επανασυνδέσετε το USB και να δοκιμάσετε ξανά. Ελέγξτε το αρχείο log.txt για λεπτομέρειες.",
"STR_UPDATE_SUCCESS":"Συγχαρητήρια!#@Ventoy ενημερώθηκε με επιτυχία στη συσκευή.", "STR_UPDATE_SUCCESS":"Συγχαρητήρια!#@Ventoy ενημερώθηκε με επιτυχία στη συσκευή.",
"STR_UPDATE_FAILED":"Παρουσιάστηκε σφάλμα κατά την ενημέρωση. Μπορείτε να επανασυνδέσετε το USB και να δοκιμάσετε ξανά. Ελέγξτε το αρχείο log.txt για λεπτομέρειες.", "STR_UPDATE_FAILED":"Παρουσιάστηκε σφάλμα κατά την ενημέρωση. Μπορείτε να επανασυνδέσετε το USB και να δοκιμάσετε ξανά. Ελέγξτε το αρχείο log.txt για λεπτομέρειες.",
"STR_WAIT_PROCESS":"Ένα νήμα εκτελείται, παρακαλώ περιμένετε...", "STR_WAIT_PROCESS":"Μια εργασία εκτελείται, παρακαλώ περιμένετε...",
"STR_MENU_OPTION":"Επιλογές", "STR_MENU_OPTION":"Επιλογές",
"STR_MENU_SECURE_BOOT":"Υποστήριξη ασφαλούς εκκίνησης (Secure Boot)", "STR_MENU_SECURE_BOOT":"Υποστήριξη ασφαλούς εκκίνησης (Secure Boot)",
"STR_MENU_PART_CFG":"Διαμόρφωση κατατμήσεων", "STR_MENU_PART_CFG":"Διαμόρφωση κατατμήσεων",
@ -2630,7 +2630,7 @@
"STR_BTN_CANCEL":"Ακύρωση", "STR_BTN_CANCEL":"Ακύρωση",
"STR_PRESERVE_SPACE":"Διατηρήστε λίγο χώρο στο κάτω μέρος του δίσκου", "STR_PRESERVE_SPACE":"Διατηρήστε λίγο χώρο στο κάτω μέρος του δίσκου",
"STR_SPACE_VAL_INVALID":"Μη έγκυρη τιμή για τον δεσμευμένο χώρο", "STR_SPACE_VAL_INVALID":"Μη έγκυρη τιμή για τον δεσμευμένο χώρο",
"STR_MENU_CLEAR":"Απεγκατάσταση του Ventoy", "STR_MENU_CLEAR":"Κατάργηση του Ventoy",
"STR_CLEAR_SUCCESS":"Το Ventoy καταργήθηκε με επιτυχία από τη συσκευή.", "STR_CLEAR_SUCCESS":"Το Ventoy καταργήθηκε με επιτυχία από τη συσκευή.",
"STR_CLEAR_FAILED":"Παρουσιάστηκε σφάλμα κατά την εκκαθάριση του Ventoy από το δίσκο. Μπορείτε να επανασυνδέσετε το USB και να δοκιμάσετε ξανά. Ελέγξτε το αρχείο log.txt για λεπτομέρειες.", "STR_CLEAR_FAILED":"Παρουσιάστηκε σφάλμα κατά την εκκαθάριση του Ventoy από το δίσκο. Μπορείτε να επανασυνδέσετε το USB και να δοκιμάσετε ξανά. Ελέγξτε το αρχείο log.txt για λεπτομέρειες.",
"STR_MENU_PART_STYLE":"Στυλ κατατμήσεων", "STR_MENU_PART_STYLE":"Στυλ κατατμήσεων",
@ -2644,7 +2644,7 @@
"STR_WEB_TOKEN_MISMATCH":"Η κατάσταση του δαίμονα επικαιροποιήθηκε. Παρακαλώ δοκιμάστε αργότερα.", "STR_WEB_TOKEN_MISMATCH":"Η κατάσταση του δαίμονα επικαιροποιήθηκε. Παρακαλώ δοκιμάστε αργότερα.",
"STR_WEB_SERVICE_BUSY":"Η υπηρεσία είναι απασχολημένη. Παρακαλώ δοκιμάστε αργότερα.", "STR_WEB_SERVICE_BUSY":"Η υπηρεσία είναι απασχολημένη. Παρακαλώ δοκιμάστε αργότερα.",
"STR_MENU_VTSI_CREATE":"Δημιουργία αρχείου VTSI", "STR_MENU_VTSI_CREATE":"Δημιουργία αρχείου VTSI",
"STR_VTSI_CREATE_TIP":"Αυτή τη φορά δεν θα γράψει στη συσκευή, αλλά θα δημιουργήσει μόνο ένα αρχείο VTSI#@Συνέχεια;", "STR_VTSI_CREATE_TIP":"Αυτή τη φορά δε θα γράψει στη συσκευή, αλλά θα δημιουργήσει μόνο ένα αρχείο VTSI#@Συνέχεια;",
"STR_VTSI_CREATE_SUCCESS":"Το αρχείο VTSI δημιουργήθηκε με επιτυχία!#@Μπορείτε να χρησιμοποιήσετε το Rufus(3.15+) για να το γράψετε στη συσκευή ώστε να ολοκληρώσετε την εγκατάσταση του Ventoy.", "STR_VTSI_CREATE_SUCCESS":"Το αρχείο VTSI δημιουργήθηκε με επιτυχία!#@Μπορείτε να χρησιμοποιήσετε το Rufus(3.15+) για να το γράψετε στη συσκευή ώστε να ολοκληρώσετε την εγκατάσταση του Ventoy.",
"STR_VTSI_CREATE_FAILED":"Αποτυχία δημιουργίας αρχείου VTSI.", "STR_VTSI_CREATE_FAILED":"Αποτυχία δημιουργίας αρχείου VTSI.",
"STR_MENU_PART_RESIZE":"Μη καταστροφική εγκατάσταση", "STR_MENU_PART_RESIZE":"Μη καταστροφική εγκατάσταση",
@ -2653,13 +2653,13 @@
"STR_PART_RESIZE_FAILED":"Η μη καταστροφική εγκατάσταση απέτυχε. Ελέγξτε το log.txt για λεπτομέρειες.", "STR_PART_RESIZE_FAILED":"Η μη καταστροφική εγκατάσταση απέτυχε. Ελέγξτε το log.txt για λεπτομέρειες.",
"STR_PART_RESIZE_UNSUPPORTED":"Η μη καταστρεπτική εγκατάσταση του Ventoy σταμάτησε επειδή δεν μπορούν να τηρηθούν ορισμένες προϋποθέσεις. Ελέγξτε το log.txt για λεπτομέρειες.", "STR_PART_RESIZE_UNSUPPORTED":"Η μη καταστρεπτική εγκατάσταση του Ventoy σταμάτησε επειδή δεν μπορούν να τηρηθούν ορισμένες προϋποθέσεις. Ελέγξτε το log.txt για λεπτομέρειες.",
"STR_INSTALL_YES_TIP1":"Προειδοποίηση: Τα δεδομένα θα χαθούν!", "STR_INSTALL_YES_TIP1":"Προειδοποίηση: Τα δεδομένα θα χαθούν!",
"STR_INSTALL_YES_TIP2":"Εισαγάγετε ΝΑΙ στο παρακάτω πλαίσιο κειμένου για να επιβεβαιώσετε ότι όντως θέλετε να κάνετε μια νέα εγκατάσταση αντί για αναβάθμιση.", "STR_INSTALL_YES_TIP2":"Εισάγετε ΝΑΙ στο παρακάτω πλαίσιο κειμένου για να επιβεβαιώσετε ότι όντως θέλετε να κάνετε μια νέα εγκατάσταση αντί για αναβάθμιση.",
"STR_PART_VENTOY_FS":"Σύστημα αρχείων για το διαμέρισμα Ventoy", "STR_PART_VENTOY_FS":"Σύστημα αρχείων για το διαμέρισμα Ventoy",
"STR_PART_FS":"Σύστημα αρχείων", "STR_PART_FS":"Σύστημα αρχείων",
"STR_PART_CLUSTER":"Μέγεθος συμπλέγματος", "STR_PART_CLUSTER":"Μέγεθος συμπλέγματος",
"STR_PART_CLUSTER_DEFAULT":"Προεπιλεγμένη τιμή συστήματος", "STR_PART_CLUSTER_DEFAULT":"Προεπιλεγμένη τιμή συστήματος",
"STR_DONATE":"Προσφέρω", "STR_DONATE":"Δωρεά",
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.", "STR_4KN_UNSUPPORTED":"Επί του παρόντος, το Ventoy δεν υποστηρίζει εγγενείς συσκευές 4K.",
"STRXXX":"" "STRXXX":""
}, },
@ -2718,14 +2718,14 @@
"STR_PART_RESIZE_SUCCESS":"Gratulerar!#@Ventoy lyckades slutföra en icke-förstörande installation.", "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_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.", "STR_PART_RESIZE_UNSUPPORTED":"Icke-förstörande installation stoppades eftersom vissa villkor inte kunde uppfyllas. Mer information finns i log.txt.",
"STR_INSTALL_YES_TIP1":"Varning: Data kommer att gå förlorade!", "STR_INSTALL_YES_TIP1":"Varning: Data kommer att gå förlorad!",
"STR_INSTALL_YES_TIP2":"Skriv YES i textrutan nedan för att bekräfta att du verkligen vill göra en nyinstallation i stället för att uppgradera.", "STR_INSTALL_YES_TIP2":"Skriv YES i textrutan nedan för att bekräfta att du verkligen vill göra en nyinstallation i stället för att uppgradera.",
"STR_PART_VENTOY_FS":"Filsystem för Ventoy-partition", "STR_PART_VENTOY_FS":"Filsystem för Ventoy-partition",
"STR_PART_FS":"Filsystem", "STR_PART_FS":"Filsystem",
"STR_PART_CLUSTER":"Klusterstorlek", "STR_PART_CLUSTER":"Klusterstorlek",
"STR_PART_CLUSTER_DEFAULT":"Systemets standardvärde", "STR_PART_CLUSTER_DEFAULT":"Systemets standardvärde",
"STR_DONATE":"Donera", "STR_DONATE":"Donera",
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.", "STR_4KN_UNSUPPORTED":"För närvarande stöder inte Ventoy 4K-enheter.",
"STRXXX":"" "STRXXX":""
}, },
@ -2818,7 +2818,7 @@
"STR_INSTALL_FAILED":"По време на инсталацията е възникнала грешка. Можете да поставите отново USB устройството и да опитате отново. Проверете log.txt за подробности. Ако инсталацията винаги е неуспешна, направете справка с често задаваните въпроси на официалната страница.", "STR_INSTALL_FAILED":"По време на инсталацията е възникнала грешка. Можете да поставите отново USB устройството и да опитате отново. Проверете log.txt за подробности. Ако инсталацията винаги е неуспешна, направете справка с често задаваните въпроси на официалната страница.",
"STR_UPDATE_SUCCESS":"Поздравление!#@Ventoy е успешно обновен на устройството.", "STR_UPDATE_SUCCESS":"Поздравление!#@Ventoy е успешно обновен на устройството.",
"STR_UPDATE_FAILED":"По време на обновяването е възникнала грешка. Можете да поставите отново USB устройството и да опитате отново. Проверете log.txt за подробности. Ако обновяването винаги е неуспешно, направете справка с често задаваните въпроси на официалната страница.", "STR_UPDATE_FAILED":"По време на обновяването е възникнала грешка. Можете да поставите отново USB устройството и да опитате отново. Проверете log.txt за подробности. Ако обновяването винаги е неуспешно, направете справка с често задаваните въпроси на официалната страница.",
"STR_WAIT_PROCESS":"Работи, моля изчакайте…", "STR_WAIT_PROCESS":"В процес, изчакайте…",
"STR_MENU_OPTION":"Настройки", "STR_MENU_OPTION":"Настройки",
"STR_MENU_SECURE_BOOT":"Поддръжка на Secure Boot", "STR_MENU_SECURE_BOOT":"Поддръжка на Secure Boot",
"STR_MENU_PART_CFG":"Допълнителен дял", "STR_MENU_PART_CFG":"Допълнителен дял",
@ -2835,27 +2835,27 @@
"STR_PART_ALIGN_4KB":"Подравняване на дяловете по 4КБ", "STR_PART_ALIGN_4KB":"Подравняване на дяловете по 4КБ",
"STR_WEB_COMMUNICATION_ERR":"Грешка при свързване:", "STR_WEB_COMMUNICATION_ERR":"Грешка при свързване:",
"STR_WEB_REMOTE_ABNORMAL":"Грешка при свързване: Отдалечената връзка е недействителна", "STR_WEB_REMOTE_ABNORMAL":"Грешка при свързване: Отдалечената връзка е недействителна",
"STR_WEB_REQUEST_TIMEOUT":"Грешка при свързване: Изтекло време за изчакване на заявката", "STR_WEB_REQUEST_TIMEOUT":"Грешка при свързване: Времето за изчакване на заявката е просрочено",
"STR_WEB_SERVICE_UNAVAILABLE":"Грешка при свързване: Услугата е недостъпна", "STR_WEB_SERVICE_UNAVAILABLE":"Грешка при свързване: Услугата е недостъпна",
"STR_WEB_TOKEN_MISMATCH":"Статуса на демона е обновен, опитайте по-късно.", "STR_WEB_TOKEN_MISMATCH":"Състоянието на услугата е обновено, опитайте по-късно.",
"STR_WEB_SERVICE_BUSY":"Услугата е заета, опитайте по-късно.", "STR_WEB_SERVICE_BUSY":"Услугата е заета, опитайте по-късно.",
"STR_MENU_VTSI_CREATE":"Създаване на файл на VTSI", "STR_MENU_VTSI_CREATE":"Създаване на файл на VTSI",
"STR_VTSI_CREATE_TIP":"Този път няма да се записва на устройството, а само ще се създаде файл на VTSI#@Продължаване?", "STR_VTSI_CREATE_TIP":"Този път няма да се извършва запис на устройството, а само ще бъде създаден файл на VTSI#@Продължаване?",
"STR_VTSI_CREATE_SUCCESS":"Файлът на VTSI е създаден успешно!#@Може да използвате Rufus(3.15+), за да го запишете на устройството и така да завършите инсталацията на Ventoy.", "STR_VTSI_CREATE_SUCCESS":"Файлът на VTSI е създаден успешно!#@Може да използвате Rufus(3.15+), за да го запишете на устройството и така да завършите инсталацията на Ventoy.",
"STR_VTSI_CREATE_FAILED":"Грешка при създаване на файла на VTSI.", "STR_VTSI_CREATE_FAILED":"Грешка при създаване на файла на VTSI.",
"STR_MENU_PART_RESIZE":"Неразрушително инсталиране", "STR_MENU_PART_RESIZE":"Неразрушително инсталиране",
"STR_PART_RESIZE_TIP":"Ventoy ще направи опит за неразрушително инсталиране, ако е възможно.#@Продължаване?", "STR_PART_RESIZE_TIP":"Ventoy ще направи опит за неразрушително инсталиране, ако е възможно.#@Продължаване?",
"STR_PART_RESIZE_SUCCESS":"Поздравления!#@Неразрушителното инсталиране на Ventoy е успешно.", "STR_PART_RESIZE_SUCCESS":"Поздравления!#@Неразрушителното инсталиране на Ventoy е успешно.",
"STR_PART_RESIZE_FAILED":"Неразрушителното инсталиране на Ventoy е неуспешно. Проверете log.txt за подробности.", "STR_PART_RESIZE_FAILED":"Неразрушителното инсталиране на Ventoy е неуспешно. Проверете log.txt за подробности.",
"STR_PART_RESIZE_UNSUPPORTED":"Неразрушителното инсталиране на Ventoy е спряна, защото някои от условията не могат да бъдат изпълнени. Проверете log.txt за подробности.", "STR_PART_RESIZE_UNSUPPORTED":"Неразрушителното инсталиране на Ventoy е спряно, защото някои от условията не могат да бъдат изпълнени. Проверете log.txt за подробности.",
"STR_INSTALL_YES_TIP1":"Внимание: Ще има загуба на данни!", "STR_INSTALL_YES_TIP1":"Внимание: Ще има загуба на данни!",
"STR_INSTALL_YES_TIP2":"Въведете „YES“ в полето отдолу, за да потвърдите, че искате да извършите нова инсталация вместо обновяване.", "STR_INSTALL_YES_TIP2":"Въведете „YES“ в полето отдолу, за да потвърдите, че искате да извършите нова инсталация вместо обновяване.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition", "STR_PART_VENTOY_FS":"Файлова система за дял на Ventoy",
"STR_PART_FS":"File System", "STR_PART_FS":"Файлова система",
"STR_PART_CLUSTER":"Cluster Size", "STR_PART_CLUSTER":"Размер на клъстера",
"STR_PART_CLUSTER_DEFAULT":"System Default Value", "STR_PART_CLUSTER_DEFAULT":"По подразбиране от системата",
"STR_DONATE":"Дарете", "STR_DONATE":"Дарете",
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.", "STR_4KN_UNSUPPORTED":"За момента Ventoy не поддържа устройства с клъстери, чиито размери са 4КБ.",
"STRXXX":"" "STRXXX":""
}, },

@ -1 +1 @@
20221204 15:15:33 20231014 18:52:12

@ -1 +1 @@
ar_ARbn_BNde_DEen_USes_ESfr_FRhi_HIhr_HRhu_HUid_IDja_JPka_GEko_KRpl_PLpt_PTru_RUsr_RSta_INtr_TRzh_CNzh_TW ar_ARbn_BNcs_CZde_DEel_GRen_USes_ESfr_FRhi_HIhr_HRhu_HUid_IDit_ITja_JPka_GEko_KRpl_PLpt_BRpt_PTru_RUsr_RSta_INtr_TRuk_UAzh_CNzh_TW

@ -757,7 +757,7 @@
<footer class="main-footer"> <footer class="main-footer">
<div class="pull-right hidden-xs"> <div class="pull-right hidden-xs">
<b id="plugson_build_date">20221204 15:15:33</b> <b id="plugson_build_date">20231014 18:52:12</b>
</div> </div>
<strong><a href="https://www.ventoy.net" target="_blank">https://www.ventoy.net</a></strong> <strong><a href="https://www.ventoy.net" target="_blank">https://www.ventoy.net</a></strong>
</footer> </footer>
@ -777,10 +777,10 @@
<script src="/static/js/jQuery-2.1.4.min.js"></script> <script src="/static/js/jQuery-2.1.4.min.js"></script>
<!-- jquery validate --> <!-- jquery validate -->
<script src="/static/js/jquery.validate.min.js"></script> <script src="/static/js/jquery.validate.min.js"></script>
<script src="/static/js/jquery.validate.vtoymethods.js?v=142"></script> <script src="/static/js/jquery.validate.vtoymethods.js?v=192"></script>
<script src="/static/js/jquery.vtoy.alert.js?v=142"></script> <script src="/static/js/jquery.vtoy.alert.js?v=192"></script>
<script src="/static/js/vtoy.js?v=142"></script> <script src="/static/js/vtoy.js?v=192"></script>
<script src="/static/js/md5.min.js"></script> <script src="/static/js/md5.min.js"></script>
<!-- Bootstrap 3.3.5 --> <!-- Bootstrap 3.3.5 -->

@ -1 +1 @@
ar_ARbn_BNde_DEen_USes_ESfr_FRhi_HIhr_HRhu_HUid_IDja_JPka_GEko_KRpl_PLpt_PTru_RUsr_RSta_INtr_TRzh_CNzh_TW ar_ARbn_BNcs_CZde_DEel_GRen_USes_ESfr_FRhi_HIhr_HRhu_HUid_IDit_ITja_JPka_GEko_KRpl_PLpt_BRpt_PTru_RUsl_sisr_RSta_INtr_TRuk_UAzh_CNzh_TW

@ -164,7 +164,7 @@
} }
function CommonPasswordEntry(tbl, name, cn, en) { function CommonPasswordEntry(tbl, name, cn, en) {
var tr = '<tr><td>'+name+'</td><td><input type="text" class="form-control" id="id_'+name+'" disabled="disabled"/></td>' + var tr = '<tr><td>'+name+'</td><td><input type="password" class="form-control" id="id_'+name+'" disabled="disabled"/></td>' +
'<td><button id="id_btn_set_'+name+'" class="btn btn-primary btn-sm btn-add CommPwdSetBtn"><span class="fa fa-edit"></span><span id="id_span_edit"></span></button>&nbsp;&nbsp;' + '<td><button id="id_btn_set_'+name+'" class="btn btn-primary btn-sm btn-add CommPwdSetBtn"><span class="fa fa-edit"></span><span id="id_span_edit"></span></button>&nbsp;&nbsp;' +
'<button id="id_btn_clr_'+name+'" class="btn btn-danger btn-sm btn-del CommPwdClearBtn"><span class="fa fa-trash"></span><span id="id_span_clear"></span></button></td>' + '<button id="id_btn_clr_'+name+'" class="btn btn-danger btn-sm btn-del CommPwdClearBtn"><span class="fa fa-trash"></span><span id="id_span_clear"></span></button></td>' +
'<td><span id="id_span_desc_cn">' + cn + '</span>' + '<td><span id="id_span_desc_cn">' + cn + '</span>' +
@ -185,13 +185,13 @@
CommonPasswordEntry($tbl, 'efipwd', '所有 .efi 文件的默认密码。', 'Default password for all .efi files.'); CommonPasswordEntry($tbl, 'efipwd', '所有 .efi 文件的默认密码。', 'Default password for all .efi files.');
CommonPasswordEntry($tbl, 'vtoypwd', '所有 .vtoy 文件的默认密码。', 'Default password for all .vtoy files.'); CommonPasswordEntry($tbl, 'vtoypwd', '所有 .vtoy 文件的默认密码。', 'Default password for all .vtoy files.');
$('input:text[id=id_bootpwd]').val(data.bootpwd); $('input:password[id=id_bootpwd]').val(data.bootpwd);
$('input:text[id=id_isopwd]').val(data.isopwd); $('input:password[id=id_isopwd]').val(data.isopwd);
$('input:text[id=id_wimpwd]').val(data.wimpwd); $('input:password[id=id_wimpwd]').val(data.wimpwd);
$('input:text[id=id_imgpwd]').val(data.imgpwd); $('input:password[id=id_imgpwd]').val(data.imgpwd);
$('input:text[id=id_efipwd]').val(data.efipwd); $('input:password[id=id_efipwd]').val(data.efipwd);
$('input:text[id=id_vhdpwd]').val(data.vhdpwd); $('input:password[id=id_vhdpwd]').val(data.vhdpwd);
$('input:text[id=id_vtoypwd]').val(data.vtoypwd); $('input:password[id=id_vtoypwd]').val(data.vtoypwd);
} }
function FillMenuPwdTable(data) { function FillMenuPwdTable(data) {
@ -240,13 +240,13 @@
} }
function VtoyGetCurrentPageItem(data) { function VtoyGetCurrentPageItem(data) {
data.bootpwd = $('input:text[id=id_bootpwd]').val(); data.bootpwd = $('input:password[id=id_bootpwd]').val();
data.isopwd = $('input:text[id=id_isopwd]').val(); data.isopwd = $('input:password[id=id_isopwd]').val();
data.wimpwd = $('input:text[id=id_wimpwd]').val(); data.wimpwd = $('input:password[id=id_wimpwd]').val();
data.imgpwd = $('input:text[id=id_imgpwd]').val(); data.imgpwd = $('input:password[id=id_imgpwd]').val();
data.efipwd = $('input:text[id=id_efipwd]').val(); data.efipwd = $('input:password[id=id_efipwd]').val();
data.vhdpwd = $('input:text[id=id_vhdpwd]').val(); data.vhdpwd = $('input:password[id=id_vhdpwd]').val();
data.vtoypwd = $('input:text[id=id_vtoypwd]').val(); data.vtoypwd = $('input:password[id=id_vtoypwd]').val();
} }
function VtoySaveCurrentPage() { function VtoySaveCurrentPage() {
@ -417,7 +417,7 @@ function VtoySetPassword(common, type, cb, data) {
}); });
function set_common_pwd_callback(path, pwd, type, data) { function set_common_pwd_callback(path, pwd, type, data) {
var selector = 'input:text[id=id_'+ data +']'; var selector = 'input:password[id=id_'+ data +']';
var value = format_password(pwd, type); var value = format_password(pwd, type);
$(selector).val(value); $(selector).val(value);
@ -433,7 +433,7 @@ function VtoySetPassword(common, type, cb, data) {
var id = $(this).attr('id'); var id = $(this).attr('id');
//id_btn_clr_ //id_btn_clr_
var selector = 'input:text[id=id_'+ id.substr(11) +']'; var selector = 'input:password[id=id_'+ id.substr(11) +']';
$(selector).val(''); $(selector).val('');
VtoySaveCurrentPage(); VtoySaveCurrentPage();
}); });
@ -525,13 +525,13 @@ function VtoySetPassword(common, type, cb, data) {
}); });
function VtoySaveCurrentPage() { function VtoySaveCurrentPage() {
var bootpwd = $('input:text[id=id_bootpwd]').val(); var bootpwd = $('input:password[id=id_bootpwd]').val();
var isopwd = $('input:text[id=id_isopwd]').val(); var isopwd = $('input:password[id=id_isopwd]').val();
var wimpwd = $('input:text[id=id_wimpwd]').val(); var wimpwd = $('input:password[id=id_wimpwd]').val();
var imgpwd = $('input:text[id=id_imgpwd]').val(); var imgpwd = $('input:password[id=id_imgpwd]').val();
var vhdpwd = $('input:text[id=id_vhdpwd]').val(); var vhdpwd = $('input:password[id=id_vhdpwd]').val();
var efipwd = $('input:text[id=id_efipwd]').val(); var efipwd = $('input:password[id=id_efipwd]').val();
var vtoypwd = $('input:text[id=id_vtoypwd]').val(); var vtoypwd = $('input:password[id=id_vtoypwd]').val();
callVtoy({ callVtoy({
method : 'save_password', method : 'save_password',
@ -548,13 +548,13 @@ function VtoySetPassword(common, type, cb, data) {
}); });
} }
$('input:text[id=id_bootpwd]').change(VtoySaveCurrentPage); $('input:password[id=id_bootpwd]').change(VtoySaveCurrentPage);
$('input:text[id=id_isopwd]').change(VtoySaveCurrentPage); $('input:password[id=id_isopwd]').change(VtoySaveCurrentPage);
$('input:text[id=id_wimpwd]').change(VtoySaveCurrentPage); $('input:password[id=id_wimpwd]').change(VtoySaveCurrentPage);
$('input:text[id=id_imgpwd]').change(VtoySaveCurrentPage); $('input:password[id=id_imgpwd]').change(VtoySaveCurrentPage);
$('input:text[id=id_vhdpwd]').change(VtoySaveCurrentPage); $('input:password[id=id_vhdpwd]').change(VtoySaveCurrentPage);
$('input:text[id=id_efipwd]').change(VtoySaveCurrentPage); $('input:password[id=id_efipwd]').change(VtoySaveCurrentPage);
$('input:text[id=id_vtoypwd]').change(VtoySaveCurrentPage); $('input:password[id=id_vtoypwd]').change(VtoySaveCurrentPage);
$('#id_tab_password a[href="#tab_0"]').click(OnClickMultiModeTab); $('#id_tab_password a[href="#tab_0"]').click(OnClickMultiModeTab);
$('#id_tab_password a[href="#tab_1"]').click(OnClickMultiModeTab); $('#id_tab_password a[href="#tab_1"]').click(OnClickMultiModeTab);

@ -357,7 +357,12 @@
var id = $(this).attr('id'); var id = $(this).attr('id');
if (typeof(id) != 'undefined' && id.startsWith('id_theme_file')) { if (typeof(id) != 'undefined' && id.startsWith('id_theme_file')) {
$(this).change(function() { $(this).change(function() {
m_data_theme[current_tab_index].default_file =parseInt(id.substr(id.length - 1)); var prelen = 'id_theme_file_radio'.length;
m_data_theme[current_tab_index].default_file = parseInt(id.substr(id.length - 1));
if (id.substr(0, prelen) === 'id_theme_file_radio') {
m_data_theme[current_tab_index].default_file = parseInt(id.substr(prelen));
}
VtoySaveCurrentPage(); VtoySaveCurrentPage();
}); });
} }

@ -18,7 +18,7 @@ You can also browse ISO/WIM/IMG/VHD(x)/EFI files in local disk and boot them.<br
x86 Legacy BIOS, IA32 UEFI, x86_64 UEFI, ARM64 UEFI and MIPS64EL UEFI are supported in the same way.<br/> 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/> 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/> Most type of OS supported(Windows/WinPE/Linux/Unix/ChromeOS/Vmware/Xen...) <br/>
1000+ 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/> 1200+ 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> <br/>Official Website: <a href=https://www.ventoy.net>https://www.ventoy.net</a>
</h4> </h4>
@ -27,10 +27,10 @@ Most type of OS supported(Windows/WinPE/Linux/Unix/ChromeOS/Vmware/Xen...) <br/>
Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11, Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019, Windows Server 2022, WinPE Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11, Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019, Windows Server 2022, WinPE
**Linux** **Linux**
Debian, Ubuntu, CentOS(6/7/8/9), RHEL(6/7/8/9), Deepin, Fedora, Rocky Linux, AlmaLinux, EuroLinux(6/7/8/9), openEuler, OpenAnolis, SLES, openSUSE, MX Linux, Manjaro, Linux Mint, Endless OS, Elementary OS, Solus, Linx, Zorin, antiX, PClinuxOS, Arch, ArcoLinux, ArchLabs, BlackArch, Obarun, Artix Linux, Puppy Linux, Tails, Slax, Kali, Mageia, Slackware, Q4OS, Archman, Gentoo, Pentoo, NixOS, Kylin, openKylin, Ubuntu Kylin, KylinSec, Lubuntu, Xubuntu, Kubuntu, Ubuntu MATE, Ubuntu Budgie, Ubuntu Studio, Bluestar, OpenMandriva, ExTiX, Netrunner, ALT Linux, Nitrux, Peppermint, KDE neon, Linux Lite, Parrot OS, Qubes, Pop OS, ROSA, Void Linux, Star Linux, EndeavourOS, MakuluLinux, Voyager, Feren, ArchBang, LXLE, Knoppix, Calculate Linux, Clear Linux, Pure OS, Oracle Linux, Trident, Septor, Porteus, Devuan, GoboLinux, 4MLinux, Simplicity Linux, Zeroshell, Android-x86, netboot.xyz, Slitaz, SuperGrub2Disk, Proxmox VE, Kaspersky Rescue, SystemRescueCD, MemTest86, MemTest86+, MiniTool Partition Wizard, Parted Magic, veket, Sabayon, Scientific, alpine, ClearOS, CloneZilla, Berry Linux, Trisquel, Ataraxia Linux, Minimal Linux Live, BackBox Linux, Emmabuntüs, ESET SysRescue Live,Nova Linux, AV Linux, RoboLinux, NuTyX, IPFire, SELKS, ZStack, Enso Linux, Security Onion, Network Security Toolkit, Absolute Linux, TinyCore, Springdale Linux, Frost Linux, Shark Linux, LinuxFX, Snail Linux, Astra Linux, Namib Linux, Resilient Linux, Virage Linux, Blackweb Security OS, R-DriveImage, O-O.DiskImage, Macrium, ToOpPy LINUX, GNU Guix, YunoHost, foxclone, siduction, Adelie Linux, Elive, Pardus, CDlinux, AcademiX, Austrumi, Zenwalk, Anarchy, DuZeru, BigLinux, OpenMediaVault, Ubuntu DP, Exe GNU/Linux, 3CX Phone System, KANOTIX, Grml, Karoshi, PrimTux, ArchStrike, CAELinux, Cucumber, Fatdog, ForLEx, Hanthana, Kwort, MiniNo, Redcore, Runtu, Asianux, Clu Linux Live, Uruk, OB2D, BlueOnyx, Finnix, HamoniKR, Parabola, LinHES, LinuxConsole, BEE free, Untangle, Pearl, Thinstation, TurnKey, tuxtrans, Neptune, HefftorLinux, GeckoLinux, Mabox Linux, Zentyal, Maui, Reborn OS, SereneLinux , SkyWave Linux, Kaisen Linux, Regata OS, TROM-Jaro, DRBL Linux, Chalet OS, Chapeau, Desa OS, BlankOn, OpenMamba, Frugalware, Kibojoe Linux, Revenge OS, Tsurugi Linux, Drauger OS, Hash Linux, gNewSense, Ikki Boot, SteamOS, Hyperbola, VyOS, EasyNAS, SuperGamer, Live Raizo, Swift Linux, RebeccaBlackOS, Daphile, CRUX, Univention, Ufficio Zero, Rescuezilla, Phoenix OS, Garuda Linux, Mll, NethServer, OSGeoLive, Easy OS, Volumio, FreedomBox, paldo, UBOS, Recalbox, batocera, Lakka, LibreELEC, Pardus Topluluk, Pinguy, KolibriOS, Elastix, Arya, Omoikane, Omarine, Endian Firewall, Hamara, Rocks Cluster, MorpheusArch, Redo, Slackel, SME Server, APODIO, Smoothwall, Dragora, Linspire, Secure-K OS, Peach OSI, Photon, Plamo, SuperX, Bicom, Ploplinux, HP SPP, LliureX, Freespire, DietPi, BOSS, Webconverger, Lunar, TENS, Source Mage, RancherOS, T2, Vine, Pisi, blackPanther, mAid, Acronis, Active.Boot, AOMEI, Boot.Repair, CAINE, DaRT, EasyUEFI, R-Drive, PrimeOS, Avira Rescue System, bitdefender, Checkra1n Linux, Lenovo Diagnostics, Clover, Bliss-OS, Lenovo BIOS Update, Arcabit Rescue Disk, MiyoLinux, TeLOS, Kerio Control, RED OS, OpenWrt, MocaccinoOS, EasyStartup, Pyabr, Refracta, Eset SysRescue, Linpack Xtreme, Archcraft, NHVBOOT, pearOS, SeaTools, Easy Recovery Essentional, iKuai, StorageCraft SCRE, ZFSBootMenu, TROMjaro, BunsenLabs, Todo en Uno, ChallengerOS, Nobara, Holo, CachyOS, Peux OS, ...... Debian, Ubuntu, CentOS(6/7/8/9), RHEL(6/7/8/9), Deepin, Fedora, Rocky Linux, AlmaLinux, EuroLinux(6/7/8/9), openEuler, OpenAnolis, SLES, openSUSE, MX Linux, Manjaro, Linux Mint, Endless OS, Elementary OS, Solus, Linx, Zorin, antiX, PClinuxOS, Arch, ArcoLinux, ArchLabs, BlackArch, Obarun, Artix Linux, Puppy Linux, Tails, Slax, Kali, Mageia, Slackware, Q4OS, Archman, Gentoo, Pentoo, NixOS, Kylin, openKylin, Ubuntu Kylin, KylinSec, Lubuntu, Xubuntu, Kubuntu, Ubuntu MATE, Ubuntu Budgie, Ubuntu Studio, Bluestar, OpenMandriva, ExTiX, Netrunner, ALT Linux, Nitrux, Peppermint, KDE neon, Linux Lite, Parrot OS, Qubes, Pop OS, ROSA, Void Linux, Star Linux, EndeavourOS, MakuluLinux, Voyager, Feren, ArchBang, LXLE, Knoppix, Calculate Linux, Clear Linux, Pure OS, Oracle Linux, Trident, Septor, Porteus, Devuan, GoboLinux, 4MLinux, Simplicity Linux, Zeroshell, Android-x86, netboot.xyz, Slitaz, SuperGrub2Disk, Proxmox VE, Kaspersky Rescue, SystemRescueCD, MemTest86, MemTest86+, MiniTool Partition Wizard, Parted Magic, veket, Sabayon, Scientific, alpine, ClearOS, CloneZilla, Berry Linux, Trisquel, Ataraxia Linux, Minimal Linux Live, BackBox Linux, Emmabuntüs, ESET SysRescue Live,Nova Linux, AV Linux, RoboLinux, NuTyX, IPFire, SELKS, ZStack, Enso Linux, Security Onion, Network Security Toolkit, Absolute Linux, TinyCore, Springdale Linux, Frost Linux, Shark Linux, LinuxFX, Snail Linux, Astra Linux, Namib Linux, Resilient Linux, Virage Linux, Blackweb Security OS, R-DriveImage, O-O.DiskImage, Macrium, ToOpPy LINUX, GNU Guix, YunoHost, foxclone, siduction, Adelie Linux, Elive, Pardus, CDlinux, AcademiX, Austrumi, Zenwalk, Anarchy, DuZeru, BigLinux, OpenMediaVault, Ubuntu DP, Exe GNU/Linux, 3CX Phone System, KANOTIX, Grml, Karoshi, PrimTux, ArchStrike, CAELinux, Cucumber, Fatdog, ForLEx, Hanthana, Kwort, MiniNo, Redcore, Runtu, Asianux, Clu Linux Live, Uruk, OB2D, BlueOnyx, Finnix, HamoniKR, Parabola, LinHES, LinuxConsole, BEE free, Untangle, Pearl, Thinstation, TurnKey, tuxtrans, Neptune, HefftorLinux, GeckoLinux, Mabox Linux, Zentyal, Maui, Reborn OS, SereneLinux , SkyWave Linux, Kaisen Linux, Regata OS, TROM-Jaro, DRBL Linux, Chalet OS, Chapeau, Desa OS, BlankOn, OpenMamba, Frugalware, Kibojoe Linux, Revenge OS, Tsurugi Linux, Drauger OS, Hash Linux, gNewSense, Ikki Boot, SteamOS, Hyperbola, VyOS, EasyNAS, SuperGamer, Live Raizo, Swift Linux, RebeccaBlackOS, Daphile, CRUX, Univention, Ufficio Zero, Rescuezilla, Phoenix OS, Garuda Linux, Mll, NethServer, OSGeoLive, Easy OS, Volumio, FreedomBox, paldo, UBOS, Recalbox, batocera, Lakka, LibreELEC, Pardus Topluluk, Pinguy, KolibriOS, Elastix, Arya, Omoikane, Omarine, Endian Firewall, Hamara, Rocks Cluster, MorpheusArch, Redo, Slackel, SME Server, APODIO, Smoothwall, Dragora, Linspire, Secure-K OS, Peach OSI, Photon, Plamo, SuperX, Bicom, Ploplinux, HP SPP, LliureX, Freespire, DietPi, BOSS, Webconverger, Lunar, TENS, Source Mage, RancherOS, T2, Vine, Pisi, blackPanther, mAid, Acronis, Active.Boot, AOMEI, Boot.Repair, CAINE, DaRT, EasyUEFI, R-Drive, PrimeOS, Avira Rescue System, bitdefender, Checkra1n Linux, Lenovo Diagnostics, Clover, Bliss-OS, Lenovo BIOS Update, Arcabit Rescue Disk, MiyoLinux, TeLOS, Kerio Control, RED OS, OpenWrt, MocaccinoOS, EasyStartup, Pyabr, Refracta, Eset SysRescue, Linpack Xtreme, Archcraft, NHVBOOT, pearOS, SeaTools, Easy Recovery Essentional, iKuai, StorageCraft SCRE, ZFSBootMenu, TROMjaro, BunsenLabs, Todo en Uno, ChallengerOS, Nobara, Holo, CachyOS, Peux OS, Vanilla OS, ShredOS, paladin, Palen1x, dban, ReviOS, HelenOS, XeroLinux, Tiny 11, chimera linux, CuteFish, DragonOs, Rhino Linux, vanilladpup, crystal, IGELOS, MiniOS, gnoppix, PikaOS, ......
**Unix** **Unix**
DragonFly FreeBSD pfSense GhostBSD FreeNAS TrueNAS XigmaNAS FuryBSD OPNsense HardenedBSD MidnightBSD ClonOS EmergencyBootKit DragonFly, FreeBSD, pfSense, GhostBSD, FreeNAS, TrueNAS, XigmaNAS, FuryBSD, OPNsense, HardenedBSD, MidnightBSD, ClonOS, EmergencyBootKit
**ChromeOS** **ChromeOS**
FydeOS, CloudReady, ChromeOS Flex FydeOS, CloudReady, ChromeOS Flex
@ -38,11 +38,6 @@ FydeOS, CloudReady, ChromeOS Flex
**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 the Ventoy project needs to pay for the server hosting, domain name, bandwidth, many USB sticks for testing, 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)
@ -73,7 +68,7 @@ A GUI Ventoy plugin configurator. [VentoyPlugson](https://www.ventoy.net/en/plug
* Menu alias, Menu tip message supported * Menu alias, Menu tip message supported
* Password protect supported * Password protect supported
* Native boot menu style for Legacy & UEFI * Native boot menu style for Legacy & UEFI
* Most types of OS supported, 1000+ iso files tested * Most types of OS supported, 1200+ iso files tested
* Linux vDisk boot supported * Linux vDisk boot supported
* Not only boot but also complete installation process * Not only boot but also complete installation process
* Menu dynamically switchable between List/TreeView mode * Menu dynamically switchable between List/TreeView mode

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save