Compare commits

...

59 Commits

Author SHA1 Message Date
longpanda
2dafe75509 Fix the boot issue for TrueNAS Scale. (#3069)
Some checks failed
Ventoy CI / build (push) Has been cancelled
Mirror GitHub to Gitee / Sync-GitHub-to-Gitee (push) Has been cancelled
2025-03-03 14:42:44 +08:00
longpanda
6fbc08cfcb Only for VirtualBox.
Some checks failed
Ventoy CI / build (push) Has been cancelled
Mirror GitHub to Gitee / Sync-GitHub-to-Gitee (push) Has been cancelled
2025-02-28 14:58:36 +08:00
longpanda
6034b25cba Don't force to use max resolution for VMware/VirtualBox. (#3140) 2025-02-28 14:49:40 +08:00
longpanda
c5fd64d21c Support TrueNAS Scale (Linux) distro. (#3069 #3137)
Some checks failed
Ventoy CI / build (push) Has been cancelled
Mirror GitHub to Gitee / Sync-GitHub-to-Gitee (push) Has been cancelled
2025-02-26 23:25:27 +08:00
longpanda
32fac72b5b 1.1.05
Some checks failed
Ventoy CI / build (push) Has been cancelled
Mirror GitHub to Gitee / Sync-GitHub-to-Gitee (push) Has been cancelled
2025-02-24 19:29:46 +08:00
longpanda
022322c8fa Fix the resolution issue when boot Windows/WinPE in UEFI mode. 2025-02-24 19:17:19 +08:00
longpanda
96f11252d9 support devuan in Legacy BIOS mode. 2025-02-24 19:16:31 +08:00
longpanda
004ad27e0d 1.1.04 release
Some checks failed
Ventoy CI / build (push) Has been cancelled
Mirror GitHub to Gitee / Sync-GitHub-to-Gitee (push) Has been cancelled
2025-02-22 11:27:31 +08:00
longpanda
9a8dc42d93 Fix the issue introduced in LinuxGUI version. (#3128) 2025-02-22 11:27:18 +08:00
longpanda
6166a813ea 1.1.03
Some checks are pending
Ventoy CI / build (push) Waiting to run
Mirror GitHub to Gitee / Sync-GitHub-to-Gitee (push) Waiting to run
2025-02-21 18:14:18 +08:00
longpanda
786a9ec678 Update Ventoy2Disk.exe
Some checks are pending
Ventoy CI / build (push) Waiting to run
Mirror GitHub to Gitee / Sync-GitHub-to-Gitee (push) Waiting to run
2025-02-21 13:00:15 +08:00
longpanda
0600576c78 Update Linux GUI type condition 2025-02-21 13:00:01 +08:00
longpanda
72b722c86c Fix the boot issue for latest TinyCore Linux. 2025-02-21 12:59:33 +08:00
longpanda
bea5607ea5 Fix the boot issue for pfSense 2.7.x (#2775)
Some checks are pending
Ventoy CI / build (push) Waiting to run
Mirror GitHub to Gitee / Sync-GitHub-to-Gitee (push) Waiting to run
2025-02-21 00:29:38 +08:00
longpanda
b3c2bcf58f Fix the issue that SLES/OpenSUSE can not boot after install. (#3125) 2025-02-20 22:07:28 +08:00
longpanda
4e8d8b2e19 Fix Windows 11 error 0x80070001. (#3010 #3029 #3105)
Some checks are pending
Ventoy CI / build (push) Waiting to run
Mirror GitHub to Gitee / Sync-GitHub-to-Gitee (push) Waiting to run
2025-02-19 23:49:03 +08:00
longpanda
60d88cb7b1 1.1.02 release
Some checks failed
Ventoy CI / build (push) Has been cancelled
Mirror GitHub to Gitee / Sync-GitHub-to-Gitee (push) Has been cancelled
2025-02-12 23:01:35 +08:00
longpanda
f7e6bbc70c Fix the "Unsupported vtoy type unknown" error when boot a VDI file created by VirtualBox 7.x 2025-02-12 23:00:27 +08:00
longpanda
ee994a0569 github ai version update
Some checks failed
Ventoy CI / build (push) Has been cancelled
Mirror GitHub to Gitee / Sync-GitHub-to-Gitee (push) Has been cancelled
2025-02-10 21:46:39 +08:00
longpanda
966ed21de7 1.1.01
Some checks are pending
Ventoy CI / build (push) Waiting to run
Mirror GitHub to Gitee / Sync-GitHub-to-Gitee (push) Waiting to run
2025-02-10 20:14:46 +08:00
longpanda
ff7ee9c10e 1.1.00 release 2025-01-22 19:32:29 +08:00
Liangbin Lian
f43461a16c
loader/linux: Ensure the newc pathname is NULL-terminated (#3082)
Per "man 5 cpio", the namesize in the cpio header includes the trailing
NUL byte of the pathname and the pathname is followed by NUL bytes, but
the current implementation ignores the trailing NUL byte when making
the newc header. Although make_header() tries to pad the pathname string,
the padding won't happen when strlen(name) + sizeof(struct newc_head)
is a multiple of 4, and the non-NULL-terminated pathname may lead to
unexpected results.

Assume that a file is created with 'echo -n aaaa > /boot/test12' and
loaded by grub2:

    linux /boot/vmlinuz
    initrd newc:test12:/boot/test12 /boot/initrd

The initrd command eventually invoked grub_initrd_load() and sent
't''e''s''t''1''2' to make_header() to generate the header:

00000070  30 37 30 37 30 31 33 30  31 43 41 30 44 45 30 30  |070701301CA0DE00|
00000080  30 30 38 31 41 34 30 30  30 30 30 33 45 38 30 30  |0081A4000003E800|
00000090  30 30 30 30 36 34 30 30  30 30 30 30 30 31 36 33  |0000640000000163|
000000a0  37 36 45 34 35 32 30 30  30 30 30 30 30 34 30 30  |76E4520000000400|
000000b0  30 30 30 30 30 38 30 30  30 30 30 30 31 33 30 30  |0000080000001300|
000000c0  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  |0000000000000000|
000000d0  30 30 30 30 30 36 30 30  30 30 30 30 30 30 74 65  |00000600000000te|
                                                                  ^namesize
000000e0  73 74 31 32 61 61 61 61  30 37 30 37 30 31 30 30  |st12aaaa07070100|
                   ^^ end of the pathname

Since strlen("test12") + sizeof(struct newc_head) is 116 = 29 * 4,
make_header() didn't pad the pathname, and the file content followed
"test12" immediately. This violates the cpio format and may trigger such
error during linux boot:

    Initramfs unpacking failed: ZSTD-compressed data is trunc

To avoid the potential problems, this commit counts the trailing NUL byte
in when calling make_header() and adjusts the initrd size accordingly.

Now the header becomes

00000070  30 37 30 37 30 31 33 30  31 43 41 30 44 45 30 30  |070701301CA0DE00|
00000080  30 30 38 31 41 34 30 30  30 30 30 33 45 38 30 30  |0081A4000003E800|
00000090  30 30 30 30 36 34 30 30  30 30 30 30 30 31 36 33  |0000640000000163|
000000a0  37 36 45 34 35 32 30 30  30 30 30 30 30 34 30 30  |76E4520000000400|
000000b0  30 30 30 30 30 38 30 30  30 30 30 30 31 33 30 30  |0000080000001300|
000000c0  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  |0000000000000000|
000000d0  30 30 30 30 30 37 30 30  30 30 30 30 30 30 74 65  |00000700000000te|
                                                                  ^namesize
000000e0  73 74 31 32 00 00 00 00  61 61 61 61 30 37 30 37  |st12....aaaa0707|
                      ^^ end of the pathname

Besides the trailing NUL byte, make_header() pads 3 more NUL bytes, and
the user can safely read the pathname without a further check.

To conform to the cpio format, the headers for "TRAILER!!!" are also
adjusted to include the trailing NUL byte, not ignore it.


Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>

Signed-off-by: Gary Lin <glin@suse.com>
Co-authored-by: Gary Lin <glin@suse.com>
2025-01-22 19:19:29 +08:00
longpanda
377e3fb7bc Fix the boot issue of SystemRescue 11.02+ (#2958) (#3058) 2025-01-22 19:07:08 +08:00
longpanda
f62bd1be14 support eweOS ISO (#3068) 2025-01-22 18:24:09 +08:00
longpanda
b11c38779d docker file 2024-11-16 17:00:25 +08:00
longpanda
f202542c62 docker compose up 2024-11-16 12:38:43 +08:00
longpanda
279491a36a Update to latest Shim (Fix verifying shim SBAT data failed) #2947 2024-11-16 12:34:39 +08:00
longpanda
cb209f9b9e 1.0.99 2024-06-08 17:26:33 +08:00
Andrei Stepanov
b7b2f6a5c1
Update Russian translation (#2857) 2024-06-08 17:10:31 +08:00
Zohir Tamda
3967fb5fb5
Fix French language (#2850)
Co-authored-by: tamdaz <tamda.zohir.pro@gmail.com>
2024-06-08 17:10:07 +08:00
bovirus
a2ad95792d
Fixed Italian language (#2840) 2024-06-08 17:09:53 +08:00
Re*Index. (ot_inc)
791308d2ce
Japanese Fix typo. (#2839)
* Japanese translation Fixed.

* Fix typo

Fix Typo.
2024-06-08 17:09:26 +08:00
longpanda
0ffb1b15ef Fix the issue that VTOY_LINUX_REMOUNT option does not take effect in latest openSUSE. (#2551) 2024-05-25 18:13:52 +08:00
longpanda
d6e1730ca0 Fix the install issue for /dev/mdX device. (#2846) 2024-05-23 19:30:11 +08:00
longpanda
4d55f505f9 Fix the UEFI boot issue for some computer. 2024-05-22 22:53:55 +08:00
longpanda
30a61ac5c4 1.0.98 release 2024-05-19 23:14:49 +08:00
Re*Index. (ot_inc)
9b79831516
Japanese translation Fixed. (#2808) 2024-05-19 16:43:20 +08:00
jermanuts
af2d6bc247
Update ar_AR.json (#2755)
* Update ar_AR.json

* Update ar_AR.json
2024-05-19 16:41:51 +08:00
bovirus
d8ae740427
Update Italian help/menu (#2752) 2024-05-19 16:41:37 +08:00
Samuel Johnson
b685157ae3
Minor Update on README.md for Consistency (#2687) 2024-05-19 16:41:12 +08:00
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>
2024-05-19 16:39:34 +08:00
Zhymabek Roman
b8838b305d
Adding root user check to ExtendPersistentImg (as in CreatePersistentImg) (#2633)
* Adding root user check & Enhance help info

* Update root user check
2024-05-19 16:35:22 +08:00
Batuhan
00de8b932d
Update tr_TR.txt (#2618)
corrected grammar mistakes, fixed typos
2024-05-19 16:29:13 +08:00
WebSnke
1e49dbe957
Update German translation (#2612) 2024-05-19 16:28:35 +08:00
Ida Bagus
580416facc
Update languages.json (#2600)
minor update for indonesian language
2024-05-19 16:28:25 +08:00
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>
2024-05-19 16:27:19 +08:00
Ikko Eltociear Ashimine
8723aeb4cc
fix typo in diskio.h (#2497)
fucntion -> function
2024-05-19 16:25:42 +08:00
SunderB
dc9a99bb20
Correct some spelling and grammar in BuildVentoyFromSource.txt (#2491) 2024-05-19 16:24:41 +08:00
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
2024-05-19 16:17:54 +08:00
Balázs Úr
bdab55e8aa
Updated Hungarian translation (#2836) 2024-05-19 16:11:30 +08:00
longpanda
1b2483ec14 Skip trash directory by default. (#2831) 2024-05-19 16:00:46 +08:00
longpanda
c16e76130b Fix VTOY_LINUX_REMOUNT option for latest CentOS 9 Stream. (#2827) 2024-05-19 15:35:05 +08:00
longpanda
d672af4819 Support ext4 fs with checksum seed feature. 2024-05-19 12:14:02 +08:00
longpanda
712f10e86a Fix VTOY_LINUX_REMOUNT feature in RHEL 9.4+ (#2827) 2024-05-14 14:59:12 +08:00
longpanda
2be340d2e8 update 2024-05-12 14:57:19 +08:00
longpanda
b77ef718b4 bugfix 2024-05-12 12:37:12 +08:00
longpanda
72f5710b88 Fix arch iso boot issue (#2825 #2824) 2024-05-12 12:36:58 +08:00
longpanda
ee7da60d88 Fix the boot issue for latest KAOS. 2024-04-06 23:53:07 +08:00
longpanda
44fb9f4564 Fix the VTOY_LINUX_REMOUNT option on latest linux kernel 2024-04-06 21:22:17 +08:00
92 changed files with 1272 additions and 797 deletions

View File

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

View File

@ -56,6 +56,9 @@ typedef struct ko_param
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;
@ -157,6 +160,26 @@ static unsigned int g_claim_ptr = 0;
static unsigned char *g_get_patch[MAX_PATCH] = { NULL };
static unsigned char *g_put_patch[MAX_PATCH] = { NULL };
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;
@ -246,7 +269,7 @@ static int notrace dmpatch_replace_code
return 0;
}
static unsigned long dmpatch_find_call_offset(unsigned long addr, unsigned long size, unsigned long func)
static unsigned long notrace dmpatch_find_call_offset(unsigned long addr, unsigned long size, unsigned long func)
{
unsigned long i = 0;
unsigned long dest;
@ -275,18 +298,15 @@ static unsigned long dmpatch_find_call_offset(unsigned long addr, unsigned long
return 0;
}
static unsigned int dmpatch_patch_claim_ptr(void)
static unsigned int notrace dmpatch_patch_claim_ptr(void)
{
unsigned long i = 0;
unsigned long t = 0;
unsigned long offset1;
unsigned long offset2;
unsigned long align;
unsigned long offset1 = 0;
unsigned long offset2 = 0;
unsigned long align = 0;
unsigned char *opCode = NULL;
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);
opCode = (unsigned char *)g_ko_param.sym_get_addr;
for (i = 0; i < 4; i++)
{
@ -297,6 +317,28 @@ static unsigned int dmpatch_patch_claim_ptr(void)
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)
@ -304,6 +346,9 @@ static unsigned int dmpatch_patch_claim_ptr(void)
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);
@ -327,6 +372,15 @@ static unsigned int dmpatch_patch_claim_ptr(void)
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++)
{
@ -348,15 +402,11 @@ static unsigned int dmpatch_patch_claim_ptr(void)
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);
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;
}
@ -382,7 +432,7 @@ static __always_inline void dmpatch_wrmsr(unsigned int msr, u32 low, u32 high)
: : "c" (msr), "a"(low), "d" (high) : "memory");
}
static u64 dmpatch_ibt_save(void)
static u64 notrace dmpatch_ibt_save(void)
{
u64 msr = 0;
u64 val = 0;
@ -394,7 +444,7 @@ static u64 dmpatch_ibt_save(void)
return msr;
}
static void dmpatch_ibt_restore(u64 save)
static void notrace dmpatch_ibt_restore(u64 save)
{
u64 msr;
@ -406,44 +456,29 @@ static void dmpatch_ibt_restore(u64 save)
dmpatch_wrmsr(MSR_IA32_S_CET, (u32)(msr & 0xffffffffULL), (u32)(msr >> 32));
}
#else
static u64 dmpatch_ibt_save(void) { return 0; }
static void dmpatch_ibt_restore(u64 save) { (void)save; }
static u64 notrace dmpatch_ibt_save(void) { return 0; }
static void notrace dmpatch_ibt_restore(u64 save) { (void)save; }
#endif
static int notrace dmpatch_init(void)
static int notrace dmpatch_process(unsigned long a, unsigned long b, unsigned long c)
{
int r = 0;
int rc = 0;
u64 msr = 0;
unsigned long kv_major = 0;
unsigned long kv_minor = 0;
unsigned long kv_subminor = 0;
if (g_ko_param.ibt == 0x8888)
{
msr = dmpatch_ibt_save();
}
vdebug("dmpatch_process as KV %d.%d.%d ...\n", (int)a, (int)b, (int)c);
kprintf = (printk_pf)(g_ko_param.printk_addr);
kv_major = g_ko_param.kv_major;
kv_minor = g_ko_param.kv_minor;
kv_subminor = g_ko_param.kv_subminor;
vdebug("dmpatch_init start pagesize=%lu kernel=%lu.%lu ...\n",
g_ko_param.pgsize, g_ko_param.kv_major, g_ko_param.kv_minor);
g_ko_param.kv_major = a;
g_ko_param.kv_minor = b;
g_ko_param.kv_subminor = c;
if (g_ko_param.struct_size != sizeof(ko_param))
{
vdebug("Invalid struct size %d %d\n", (int)g_ko_param.struct_size, (int)sizeof(ko_param));
return -EINVAL;
}
if (g_ko_param.sym_get_addr == 0 || g_ko_param.sym_put_addr == 0 ||
g_ko_param.ro_addr == 0 || g_ko_param.rw_addr == 0)
{
return -EINVAL;
}
set_mem_ro = (set_memory_attr_pf)(g_ko_param.ro_addr);
set_mem_rw = (set_memory_attr_pf)(g_ko_param.rw_addr);
reg_kprobe = (kprobe_reg_pf)g_ko_param.reg_kprobe_addr;
unreg_kprobe = (kprobe_unreg_pf)g_ko_param.unreg_kprobe_addr;
if (g_ko_param.kv_major > 6 || (g_ko_param.kv_major == 6 && g_ko_param.kv_minor >= 5))
if (dmpatch_kv_above(6, 5, 0)) /* >= kernel 6.5 */
{
vdebug("new interface patch dm_get_table_device...\n");
r = dmpatch_patch_claim_ptr();
@ -466,37 +501,89 @@ static int notrace dmpatch_init(void)
if (r)
{
rc = -EINVAL;
rc = -EFAULT;
goto out;
}
vdebug("patch dm_get_table_device success\n");
if (g_ko_param.kv_major >= 6 && g_ko_param.kv_minor >= 5)
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 = -EINVAL;
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);
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))
{
vdebug("Invalid struct size %d %d\n", (int)g_ko_param.struct_size, (int)sizeof(ko_param));
return -EINVAL;
}
if (g_ko_param.sym_get_addr == 0 || g_ko_param.sym_put_addr == 0 ||
g_ko_param.ro_addr == 0 || g_ko_param.rw_addr == 0)
{
return -EINVAL;
}
set_mem_ro = (set_memory_attr_pf)(g_ko_param.ro_addr);
set_mem_rw = (set_memory_attr_pf)(g_ko_param.rw_addr);
reg_kprobe = (kprobe_reg_pf)g_ko_param.reg_kprobe_addr;
unreg_kprobe = (kprobe_unreg_pf)g_ko_param.unreg_kprobe_addr;
rc = dmpatch_process(g_ko_param.kv_major, g_ko_param.kv_minor, g_ko_param.kv_subminor);
if (rc)
{
if (g_ko_param.kv_major >= 5)
{
rc = dmpatch_process(6, 5, 0);
if (rc)
{
rc = dmpatch_process(6, 7, 0);
}
}
}
if (g_ko_param.ibt == 0x8888)
{
dmpatch_ibt_restore(msr);
}
out:
return rc;
}
@ -513,8 +600,11 @@ static void notrace dmpatch_exit(void)
if (g_claim_ptr)
{
dmpatch_restore_code(4, g_get_patch[0], g_claim_ptr);
if (g_put_patch[0])
{
dmpatch_restore_code(4, g_put_patch[0], g_claim_ptr);
}
}
else
{
for (i = 0; i < MAX_PATCH; i++)

View File

@ -3,7 +3,7 @@
1. Compile Environment
==========================================
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
I use CentOS-7-x86_64-Everything-2003.iso and select Minimal install
@ -21,10 +21,10 @@
==========================================
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).
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://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://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
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
@ -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/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/
tar xf musl-1.2.1.tar.gz
cd musl-1.2.1
@ -62,21 +62,21 @@
==========================================
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.
cd /home/Ventoy-master/INSTALL
sh all_in_one.sh
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.
2. some part of Ventoy has 32bit&64bit 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.
Fortunately these parts are few modified, you only need to build once or you can directly use the binary I have built.
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 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 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
@ -122,14 +122,14 @@
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
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 ==
cd /home/Ventoy-master/FUSEISO
sh build_libfuse.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 ==
cd /home/Ventoy-master/SQUASHFS/SRC
@ -141,7 +141,7 @@
cd /home/Ventoy-master/SQUASHFS/squashfs-tools-4.4/squashfs-tools
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 ==
cd /home/Ventoy-master/VBLADE/vblade-master

View File

@ -1,6 +1,11 @@
FROM centos:7
RUN yum -y -q install \
RUN sed -i \
-e 's/^mirrorlist/#mirrorlist/' \
-e 's/^#baseurl/baseurl/' \
-e 's/mirror\.centos\.org/vault.centos.org/' \
/etc/yum.repos.d/*.repo && \
yum -y -q install \
libXpm net-tools bzip2 wget vim gcc gcc-c++ samba dos2unix glibc-devel glibc.i686 glibc-devel.i686 \
mpfr.i686 mpfr-devel.i686 rsync autogen autoconf automake libtool gettext* bison binutils \
flex device-mapper-devel SDL libpciaccess libusb freetype freetype-devel gnu-free-* qemu-* virt-* \

View File

@ -103,6 +103,7 @@ GRUB_MOD_LICENSE ("GPLv3+");
#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080
#define EXT4_FEATURE_INCOMPAT_MMP 0x0100
#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200
#define EXT4_FEATURE_INCOMPAT_CSUM_SEED 0x2000
#define EXT4_FEATURE_INCOMPAT_ENCRYPT 0x10000
/* 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
* avoid multiple read-write mounts. Safe to ignore for this
* 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 \
| EXT4_FEATURE_INCOMPAT_MMP)
| EXT4_FEATURE_INCOMPAT_MMP \
| EXT4_FEATURE_INCOMPAT_CSUM_SEED)
#define EXT3_JOURNAL_MAGIC_NUMBER 0xc03b3998U
@ -723,10 +731,11 @@ grub_ext2_read_symlink (grub_fshelp_node_t node)
if (! symlink)
return 0;
/* If the filesize of the symlink is bigger than
60 the symlink 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 the filesize of the symlink is equal to or bigger than 60 the symlink
* 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))
grub_memcpy (symlink,
diro->inode.symlink,
grub_le_to_cpu32 (diro->inode.size));

View File

@ -128,11 +128,22 @@ insert_dir (const char *name, struct dir **root,
n->name = grub_strndup (cb, ce - cb);
if (ptr)
{
grub_dprintf ("linux", "Creating directory %s, %s\n", name, ce);
ptr = make_header (ptr, name, ce - name,
040777, 0);
/*
* Create the substring with the trailing NUL byte
* to be included in the cpio header.
*/
char *tmp_name = grub_strndup (name, ce - name);
if (!tmp_name) {
grub_free (n->name);
grub_free (n);
return grub_errno;
}
size += ALIGN_UP ((ce - (char *) name)
grub_dprintf ("linux", "Creating directory %s, %s\n", name, ce);
ptr = make_header (ptr, tmp_name, ce - name + 1,
040777, 0);
grub_free (tmp_name);
}
size += ALIGN_UP ((ce - (char *) name + 1)
+ sizeof (struct newc_head), 4);
*head = n;
cur = n;
@ -183,7 +194,7 @@ grub_initrd_init (int argc, char *argv[],
}
initrd_ctx->size
+= ALIGN_UP (sizeof (struct newc_head)
+ grub_strlen (initrd_ctx->components[i].newc_name),
+ grub_strlen (initrd_ctx->components[i].newc_name) + 1,
4);
initrd_ctx->size += insert_dir (initrd_ctx->components[i].newc_name,
&root, 0);
@ -194,7 +205,7 @@ grub_initrd_init (int argc, char *argv[],
else if (newc)
{
initrd_ctx->size += ALIGN_UP (sizeof (struct newc_head)
+ sizeof ("TRAILER!!!") - 1, 4);
+ sizeof ("TRAILER!!!"), 4);
free_dir (root);
root = 0;
newc = 0;
@ -217,7 +228,7 @@ grub_initrd_init (int argc, char *argv[],
{
initrd_ctx->size = ALIGN_UP (initrd_ctx->size, 4);
initrd_ctx->size += ALIGN_UP (sizeof (struct newc_head)
+ sizeof ("TRAILER!!!") - 1, 4);
+ sizeof ("TRAILER!!!"), 4);
free_dir (root);
root = 0;
}
@ -269,14 +280,14 @@ grub_initrd_load (struct grub_linux_initrd_context *initrd_ctx,
ptr += insert_dir (initrd_ctx->components[i].newc_name,
&root, ptr);
ptr = make_header (ptr, initrd_ctx->components[i].newc_name,
grub_strlen (initrd_ctx->components[i].newc_name),
grub_strlen (initrd_ctx->components[i].newc_name) + 1,
0100777,
initrd_ctx->components[i].size);
newc = 1;
}
else if (newc)
{
ptr = make_header (ptr, "TRAILER!!!", sizeof ("TRAILER!!!") - 1,
ptr = make_header (ptr, "TRAILER!!!", sizeof ("TRAILER!!!"),
0, 0);
free_dir (root);
root = 0;
@ -308,7 +319,7 @@ grub_initrd_load (struct grub_linux_initrd_context *initrd_ctx,
{
grub_memset (ptr, 0, ALIGN_UP_OVERHEAD (cursize, 4));
ptr += ALIGN_UP_OVERHEAD (cursize, 4);
ptr = make_header (ptr, "TRAILER!!!", sizeof ("TRAILER!!!") - 1, 0, 0);
ptr = make_header (ptr, "TRAILER!!!", sizeof ("TRAILER!!!"), 0, 0);
}
free_dir (root);
root = 0;

View File

@ -244,6 +244,15 @@ static int ventoy_browser_valid_dirname(const char *name, int len)
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 (0 == grub_strncmp(name, "$RECYCLE.BIN", 12) ||

View File

@ -65,6 +65,7 @@ int g_initrd_img_count = 0;
int g_valid_initrd_count = 0;
int g_default_menu_mode = 0;
int g_filt_dot_underscore_file = 0;
int g_filt_trash_dir = 1;
int g_sort_case_sensitive = 0;
int g_tree_view_menu_style = 0;
static grub_file_t g_old_file;
@ -1900,10 +1901,15 @@ static int ventoy_collect_img_files(const char *filename, const struct grub_dirh
return 0;
}
if (filename[0] == '$' && 0 == grub_strncmp(filename, "$RECYCLE.BIN", 12))
if (g_filt_trash_dir)
{
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)
{
@ -2832,6 +2838,12 @@ static grub_err_t ventoy_cmd_list_img(grub_extcmd_context_t ctxt, int argc, char
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");
if (strdata && strdata[0] == '1' && strdata[1] == 0)
{

View File

@ -862,6 +862,7 @@ typedef struct vhd_footer_t
}vhd_footer_t;
#define VDI_IMAGE_FILE_INFO "<<< Oracle VM VirtualBox Disk Image >>>\n"
#define VDI_IMAGE_FILE_INFO2 "<<< Oracle VirtualBox Disk Image >>>\n"
/** Image signature. */
#define VDI_IMAGE_SIGNATURE (0xbeda107f)
@ -1298,6 +1299,7 @@ extern int g_tree_view_menu_style;
extern int g_sort_case_sensitive;
extern int g_wimboot_enable;
extern int g_filt_dot_underscore_file;
extern int g_filt_trash_dir;
extern int g_vtoy_file_flt[VTOY_FILE_FLT_BUTT];
extern const char *g_menu_class[img_type_max];
extern char g_iso_path[256];

View File

@ -504,7 +504,7 @@ grub_err_t ventoy_cmd_get_vtoy_type(grub_extcmd_context_t ctxt, int argc, char *
vhd_footer_t vhdfoot;
VDIPREHEADER vdihdr;
char type[16] = {0};
ventoy_gpt_info *gpt;
ventoy_gpt_info *gpt = NULL;
(void)ctxt;
@ -536,12 +536,25 @@ grub_err_t ventoy_cmd_get_vtoy_type(grub_extcmd_context_t ctxt, int argc, char *
{
grub_file_seek(file, 0);
grub_file_read(file, &vdihdr, sizeof(vdihdr));
if (vdihdr.u32Signature == VDI_IMAGE_SIGNATURE &&
grub_strncmp(vdihdr.szFileInfo, VDI_IMAGE_FILE_INFO, grub_strlen(VDI_IMAGE_FILE_INFO)) == 0)
if (vdihdr.u32Signature == VDI_IMAGE_SIGNATURE)
{
grub_snprintf(type, sizeof(type), "vdi");
if (grub_strncmp(vdihdr.szFileInfo, VDI_IMAGE_FILE_INFO, grub_strlen(VDI_IMAGE_FILE_INFO)) == 0)
{
offset = 2 * 1048576;
g_img_trim_head_secnum = offset / 512;
grub_snprintf(type, sizeof(type), "vdi");
debug("VDI V1\n");
}
else if (grub_strncmp(vdihdr.szFileInfo, VDI_IMAGE_FILE_INFO2, grub_strlen(VDI_IMAGE_FILE_INFO2)) == 0)
{
offset = 2 * 1048576;
g_img_trim_head_secnum = offset / 512;
debug("VDI V2\n");
}
else
{
debug("invalid file info <%s>\n", vdihdr.szFileInfo);
}
}
else
{
@ -568,7 +581,7 @@ grub_err_t ventoy_cmd_get_vtoy_type(grub_extcmd_context_t ctxt, int argc, char *
if (gpt->MBR.Byte55 != 0x55 || gpt->MBR.ByteAA != 0xAA)
{
grub_env_set(args[1], "unknown");
debug("invalid mbr signature: 0x%x 0x%x\n", gpt->MBR.Byte55, gpt->MBR.ByteAA);
debug("invalid mbr signature: 0x%x 0x%x offset=%d\n", gpt->MBR.Byte55, gpt->MBR.ByteAA, offset);
goto end;
}

View File

@ -20,7 +20,7 @@
. $VTOY_PATH/hook/ventoy-os-lib.sh
$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 exec $BUSYBOX_PATH/sh" -i /init

View File

@ -0,0 +1,43 @@
#!/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
if is_ventoy_hook_finished; then
exit 0
fi
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
ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2"
PATH=$VTPATH_OLD
set_ventoy_hook_finish

View File

@ -0,0 +1,21 @@
#!/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/>.
#
#************************************************************************************
$SED "/Mount.*cdrom/a\ $BUSYBOX_PATH/sh $VTOY_PATH/hook/debian/devuan-disk.sh" -i /init

View File

@ -0,0 +1,25 @@
#!/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 "mount ventoy.iso"
mkdir -p /root/cdrom >>$VTLOG 2>&1
mount -t iso9660 $VTOY_PATH/mnt/fuse/ventoy.iso /root/cdrom >>$VTLOG 2>&1

View File

@ -0,0 +1,52 @@
#!/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
ventoy_run_fuse() {
vtlog "ventoy_run_fuse $*"
mkdir -p $VTOY_PATH/mnt/fuse $VTOY_PATH/mnt/iso
vtoydm -p -f $VTOY_PATH/ventoy_image_map -d $1 > $VTOY_PATH/ventoy_dm_table
vtoy_fuse_iso -f $VTOY_PATH/ventoy_dm_table -m $VTOY_PATH/mnt/fuse
mount -t iso9660 $VTOY_PATH/mnt/fuse/ventoy.iso $VTOY_PATH/mnt/iso
}
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
ventoy_run_fuse $vtdiskname
if [ -f /ventoy/autoinstall ]; then
sh /ventoy/hook/default/auto_install_varexp.sh /ventoy/autoinstall
fi

View File

@ -0,0 +1,27 @@
#!/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/debian/truenas-disk.sh" -i /init
$SED "/^mountroot$/i\\export LIVEMEDIA=/dev/mapper/ventoy" -i /init
$SED "/^mountroot$/i\\export LIVE_MEDIA=/dev/mapper/ventoy" -i /init
$SED "/^mountroot$/i\\export FROMISO=$VTOY_PATH/mnt/fuse/ventoy.iso" -i /init
$SED "/exec *run-init/i\\$BUSYBOX_PATH/sh $VTOY_PATH/hook/debian/truenas-bottom.sh" -i /init
fi

View File

@ -110,6 +110,14 @@ ventoy_get_debian_distro() {
echo 'pyabr'; return
fi
if [ -e /devuan-logo.txt ]; then
echo 'devuan'; return
fi
if $GREP -q 'truenas' /proc/version; then
echo 'truenas'; return
fi
echo 'default'
}

View File

@ -0,0 +1,75 @@
#!/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 $* ############"
if is_ventoy_hook_finished; then
exit 0
fi
wait_for_usb_disk_ready
vtdiskname=$(get_ventoy_disk_name)
if [ "$vtdiskname" = "unknown" ]; then
vtlog "ventoy disk not found"
exit 0
fi
ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2" "noreplace"
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})
vtlog "blkdev_num=$blkdev_num vtDM=$vtDM ..."
while [ -n "Y" ]; do
if [ -b /dev/$vtDM ]; then
break
else
sleep 0.3
fi
done
if [ -n "$1" ]; then
vtlog "ln -s /dev/$vtDM $1"
if [ -e "$1" ]; then
vtlog "$1 already exist"
else
ln -s /dev/$vtDM "$1"
fi
else
vtLABEL=$($BUSYBOX_PATH/blkid /dev/$vtDM | $SED 's/.*LABEL="\([^"]*\)".*/\1/')
vtlog "vtLABEL is $vtLABEL"
if [ -z "$vtLABEL" ]; then
vtLABEL=$($SED "s/.*label=\([^ ]*\)/\1/" /proc/cmdline)
vtlog "vtLABEL is $vtLABEL from cmdline"
fi
if [ -e "/dev/disk/by-label/$vtLABEL" ]; then
vtlog "$1 already exist"
else
ln -s /dev/$vtDM "/dev/disk/by-label/$vtLABEL"
fi
fi
# OK finish
set_ventoy_hook_finish

View File

@ -0,0 +1,25 @@
#!/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
echo "hook live.init" >> $VTLOG
$SED "1i $BUSYBOX_PATH/sh $VTOY_PATH/hook/ewe/ventoy-disk.sh" -i /lib/tinyramfs/hook.d/live/live.init

View File

@ -26,6 +26,12 @@ if [ -f $VTOY_PATH/autoinstall ]; then
fi
fi
if $GREP -q 'rdinit=/vtoy/vtoy' /proc/cmdline; then
echo "remove rdinit param" >> $VTLOG
echo "ptoptions=+rdinit" >> /linuxrc.config
fi
if $BUSYBOX_PATH/ls $VTOY_PATH | $GREP -q 'ventoy_dud[0-9]'; then
if [ -f /linuxrc.config ]; then
vtKerVer=$($BUSYBOX_PATH/uname -r)
@ -60,7 +66,7 @@ fi
if [ -e /etc/initrd.functions ] && $GREP -q 'HPIP' /etc/initrd.functions; then
echo "HPIP" >> $VTLOG
$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 CD_DEVICES=\"/dev/ventoy \$CD_DEVICES\"" -i /etc/initrd.functions
elif [ -f /scripts/udev_setup ]; then

View File

@ -45,6 +45,13 @@ fi
# TinyCore linux distro doesn't contain dmsetup, we use aoe here
sudo modprobe aoe aoe_iflist=lo
if [ -e /sys/module/aoe ]; then
if ! [ -d /lib64 ]; then
vtlog "link lib64"
NEED_UNLIB64=1
ln -s /lib /lib64
fi
VBLADE_BIN=$(ventoy_get_vblade_bin)
sudo nohup $VBLADE_BIN -r -f $VTOY_PATH/ventoy_image_map 9 0 lo "$vtdiskname" > /dev/null &
@ -57,6 +64,11 @@ if [ -e /sys/module/aoe ]; then
sudo cp -a /dev/etherd/e9.0 "$vPart"
if [ -n "$NEED_UNLIB64" ]; then
vtlog "unlink lib64"
unlink /lib64
fi
ventoy_find_bin_run rebuildfstab
else
vterr "aoe driver module load failed..."

View File

@ -232,247 +232,6 @@ ventoy_check_dm_module() {
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() {
if [ "$VTOY_LINUX_REMOUNT" != "01" ]; then
if $GREP -q 'VTOY_LINUX_REMOUNT=1' /proc/cmdline; then
:
else
$BUSYBOX_PATH/false; return
fi
fi
if $GREP -q 'device-mapper' /proc/devices; then
:
else
$BUSYBOX_PATH/false; return
fi
if $GREP -q 'dm_patch' /proc/modules; then
$BUSYBOX_PATH/false; return
fi
vtMajorVer=$($BUSYBOX_PATH/uname -r | $AWK -F. '{print $1}')
vtMinorVer=$($BUSYBOX_PATH/uname -r | $AWK -F. '{print $2}')
if [ $vtMajorVer -lt 3 ]; then
$BUSYBOX_PATH/false; return
elif [ $vtMajorVer -eq 3 -a $vtMinorVer -lt 10 ]; then
$BUSYBOX_PATH/false; return
fi
$BUSYBOX_PATH/true
}
ventoy_dm_patch() {
vtDmPatchDebug=0
vtMType=$($BUSYBOX_PATH/uname -m)
vtlog "######### ventoy_dm_patch ############"
if echo $vtMType | $EGREP -i -q "x86.64|amd64"; then
vtKoName=dm_patch_64.ko
elif echo $vtMType | $EGREP -i -q "i[3-6]86"; then
vtKoName=dm_patch_32.ko
else
vtlog "unsupported machine type $vtMType"
return
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
vtlog "/ventoy/tool/$vtKoName exist OK"
else
vtlog "/ventoy/tool/$vtKoName NOT exist"
return
fi
$CAT /proc/kallsyms | $BUSYBOX_PATH/sort > $VTOY_PATH/kallsyms
if $GREP -m1 -q 'open_table_device.isra' $VTOY_PATH/kallsyms; then
vtLine=$($VTOY_PATH/tool/vtoyksym open_table_device.isra $VTOY_PATH/kallsyms)
vtlog "get open_table_device.isra address $vtLine"
else
vtLine=$($VTOY_PATH/tool/vtoyksym dm_get_table_device $VTOY_PATH/kallsyms)
vtlog "get dm_get_table_device address $vtLine"
fi
get_addr=$(echo $vtLine | $AWK '{print $1}')
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}')
if $GREP -m1 -q 'close_table_device.isra' $VTOY_PATH/kallsyms; then
vtLine=$($VTOY_PATH/tool/vtoyksym close_table_device.isra $VTOY_PATH/kallsyms)
vtlog "get close_table_device.isra address $vtLine"
else
vtLine=$($VTOY_PATH/tool/vtoyksym dm_put_table_device $VTOY_PATH/kallsyms)
vtlog "get dm_put_table_device address $vtLine"
fi
put_addr=$(echo $vtLine | $AWK '{print $1}')
put_size=$(echo $vtLine | $AWK '{print $2}')
ro_addr=$($GREP ' set_memory_ro$' /proc/kallsyms | $AWK '{print $1}')
rw_addr=$($GREP ' set_memory_rw$' /proc/kallsyms | $AWK '{print $1}')
kprobe_reg_addr=$($GREP ' register_kprobe$' /proc/kallsyms | $AWK '{print $1}')
kprobe_unreg_addr=$($GREP ' unregister_kprobe$' /proc/kallsyms | $AWK '{print $1}')
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}')
if [ -z "$printk_addr" ]; then
printk_addr=$($GREP ' _printk$' /proc/kallsyms | $AWK '{print $1}')
fi
vtDebug="-v"
else
printk_addr=0
fi
#printk_addr=$($GREP ' printk$' /proc/kallsyms | $AWK '{print $1}')
#vtDebug="-v"
vtlog get_addr=$get_addr get_size=$get_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 ro_addr=$ro_addr rw_addr=$rw_addr printk_addr=$printk_addr
if [ "$get_addr" = "0" -o "$put_addr" = "0" ]; then
vtlog "Invalid symbol address"
return
fi
if [ "$ro_addr" = "0" -o "$rw_addr" = "0" ]; then
vtlog "Invalid symbol address"
return
fi
vtKv=$($BUSYBOX_PATH/uname -r)
vtKVMajor=$(echo $vtKv | $AWK -F. '{print $1}')
vtKVMinor=$(echo $vtKv | $AWK -F. '{print $2}')
if [ ! -d /lib/modules/$vtKv ]; then
vtlog "No modules directory found"
return
elif [ -d /lib/modules/$vtKv/kernel/fs ]; then
vtModPath=$($FIND /lib/modules/$vtKv/kernel/fs/ -name "*.ko*" | $HEAD -n1)
elif [ -d /lib/modules/$vtKv/kernel ]; then
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
if [ -z "$vtModPath" ]; then
vtModPath=$($FIND /lib/modules/$vtKv/ -name "*.ko*" | $HEAD -n1)
fi
vtModName=$($BUSYBOX_PATH/basename $vtModPath)
vtlog "template module is $vtModPath $vtModName"
if [ -z "$vtModPath" ]; then
vtlog "No template module found"
return
elif echo $vtModPath | $GREP -q "[.]ko$"; then
$BUSYBOX_PATH/cp -a $vtModPath $VTOY_PATH/$vtModName
elif echo $vtModPath | $GREP -q "[.]ko[.]xz$"; then
$BUSYBOX_PATH/xzcat $vtModPath > $VTOY_PATH/$vtModName
elif echo $vtModPath | $GREP -q "[.]ko[.]gz$"; then
$BUSYBOX_PATH/zcat $vtModPath > $VTOY_PATH/$vtModName
elif echo $vtModPath | $GREP -q "[.]ko[.]zst$"; then
$VTOY_PATH/tool/zstdcat $vtModPath > $VTOY_PATH/$vtModName
else
vtlog "unsupport module type"
return
fi
#step1: modify vermagic/mod crc/relocation
vtlog "$VTOY_PATH/tool/vtoykmod -u $vtKVMajor $vtKVMinor $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
vtPgsize=$($VTOY_PATH/tool/vtoyksym -p)
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 $vtDebug"
vtlog "$VTOY_PATH/tool/vtoykmod -f $vtPrams"
$VTOY_PATH/tool/vtoykmod -f $vtPrams >>$VTLOG 2>&1
vtlog "insmod $VTOY_PATH/tool/$vtKoName"
$BUSYBOX_PATH/insmod $VTOY_PATH/tool/$vtKoName >>$VTLOG 2>&1
if $GREP -q 'dm_patch' /proc/modules; then
vtlog "dm_patch module OK"
echo "done" > $VTOY_PATH/dm_patch_done
else
vtlog "dm_patch module FAILED"
fi
}
create_ventoy_device_mapper() {
vtlog "create_ventoy_device_mapper $*"
@ -492,17 +251,7 @@ create_ventoy_device_mapper() {
fi
$VTOY_PATH/tool/vtoydm -p -f $VTOY_PATH/ventoy_image_map -d $1 > $VTOY_PATH/ventoy_dm_table
vtLevel1=$($CAT /proc/sys/kernel/printk | $AWK '{print $1}')
vtLevel2=$($CAT /proc/sys/kernel/printk | $AWK '{print $2}')
vtLevel3=$($CAT /proc/sys/kernel/printk | $AWK '{print $3}')
vtLevel4=$($CAT /proc/sys/kernel/printk | $AWK '{print $4}')
if ventoy_need_dm_patch; then
ventoy_dm_patch
#suppress printk message
echo 0 $vtLevel2 0 $vtLevel4 > /proc/sys/kernel/printk
fi
$VTOY_PATH/tool/vtoydm -r -f $VTOY_PATH/ventoy_image_map -d $1 > $VTOY_PATH/ventoy_raw_table
if [ -z "$2" ]; then
$VT_DM_BIN create ventoy $VTOY_PATH/ventoy_dm_table >>$VTLOG 2>&1
@ -510,10 +259,8 @@ create_ventoy_device_mapper() {
$VT_DM_BIN "$2" create ventoy $VTOY_PATH/ventoy_dm_table >>$VTLOG 2>&1
fi
if ventoy_need_dm_patch; then
#recover printk level
echo $vtLevel1 $vtLevel2 $vtLevel3 $vtLevel4 > /proc/sys/kernel/printk
fi
RAWDISKNAME=$($HEAD -n1 $VTOY_PATH/ventoy_raw_table | $AWK '{print $4}')
$VT_DM_BIN create ${RAWDISKNAME#/dev/} $VTOY_PATH/ventoy_raw_table >>$VTLOG 2>&1
}
create_persistent_device_mapper() {
@ -534,23 +281,7 @@ create_persistent_device_mapper() {
fi
$VTOY_PATH/tool/vtoydm -p -f $VTOY_PATH/ventoy_persistent_map -d $1 > $VTOY_PATH/persistent_dm_table
vtLevel1=$($CAT /proc/sys/kernel/printk | $AWK '{print $1}')
vtLevel2=$($CAT /proc/sys/kernel/printk | $AWK '{print $2}')
vtLevel3=$($CAT /proc/sys/kernel/printk | $AWK '{print $3}')
vtLevel4=$($CAT /proc/sys/kernel/printk | $AWK '{print $4}')
if [ -f $VTOY_PATH/dm_patch_done ]; then
#suppress printk message
echo 0 $vtLevel2 0 $vtLevel4 > /proc/sys/kernel/printk
fi
$VT_DM_BIN create vtoy_persistent $VTOY_PATH/persistent_dm_table >>$VTLOG 2>&1
if [ -f $VTOY_PATH/dm_patch_done ]; then
#recover printk level
echo $vtLevel1 $vtLevel2 $vtLevel3 $vtLevel4 > /proc/sys/kernel/printk
fi
}
@ -844,11 +575,6 @@ ventoy_udev_disk_common_hook() {
create_persistent_device_mapper "/dev/$VTDISK"
ventoy_create_persistent_link
fi
if $GREP -q 'dm_patch' /proc/modules; then
vtlog "remove dm_patch module."
$BUSYBOX_PATH/rmmod dm_patch
fi
}
ventoy_create_dev_ventoy_part() {
@ -857,16 +583,6 @@ ventoy_create_dev_ventoy_part() {
if [ -e /vtoy_dm_table ]; then
vtPartid=1
vtLevel1=$($CAT /proc/sys/kernel/printk | $AWK '{print $1}')
vtLevel2=$($CAT /proc/sys/kernel/printk | $AWK '{print $2}')
vtLevel3=$($CAT /proc/sys/kernel/printk | $AWK '{print $3}')
vtLevel4=$($CAT /proc/sys/kernel/printk | $AWK '{print $4}')
if [ -f $VTOY_PATH/dm_patch_done ]; then
#suppress printk message
echo 0 $vtLevel2 0 $vtLevel4 > /proc/sys/kernel/printk
fi
$CAT /vtoy_dm_table | while read vtline; do
echo $vtline > /ventoy/dm_table_part${vtPartid}
$VTOY_PATH/tool/dmsetup create ventoy${vtPartid} /ventoy/dm_table_part${vtPartid}
@ -876,11 +592,6 @@ ventoy_create_dev_ventoy_part() {
vtPartid=$(expr $vtPartid + 1)
done
if [ -f $VTOY_PATH/dm_patch_done ]; then
#recover printk level
echo $vtLevel1 $vtLevel2 $vtLevel3 $vtLevel4 > /proc/sys/kernel/printk
fi
fi
}

View File

@ -73,7 +73,12 @@ ventoy_unpack_initramfs() {
for vtx in '1F8B zcat' '1F9E zcat' '425A bzcat' '5D00 lzcat' 'FD37 xzcat' '894C lzopcat' '0221 lz4cat' '28B5 zstdcat' '3037 cat' '4C5A lunzip -c'; do
if [ "${vtx:0:4}" = "${vtmagic:0:4}" ]; then
echo "vtx=$vtx" >> $VTLOG
if [ $vtskip -eq 0 ]; then
if [ $vtskip -ne 0 ]; then
dd if=$vtfile skip=$vtskip iflag=skip_bytes status=none > ${vtfile}.skip
rm -f $vtfile
mv ${vtfile}.skip $vtfile
fi
if [ "${vtx:5}" = "xzcat" ]; then
rm -f $VTOY_PATH/xzlog
${vtx:5} $vtfile 2> $VTOY_PATH/xzlog | (cpio -idmu 2>>$VTLOG; cat > $vttmp)
@ -90,9 +95,6 @@ ventoy_unpack_initramfs() {
else
${vtx:5} $vtfile | (cpio -idmu 2>>$VTLOG; cat > $vttmp)
fi
else
dd if=$vtfile skip=$vtskip iflag=skip_bytes status=none | ${vtx:5} | (cpio -idmu 2>>$VTLOG; cat > $vttmp)
fi
break
fi
done
@ -112,6 +114,28 @@ ventoy_unpack_initrd() {
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
export EXTRACT_UNSAFE_SYMLINKS=1
@ -131,14 +155,23 @@ for vtfile in $(ls /initrd*); do
#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
mv ${vtfile}_tmp $vtfile
vtdump=$(hexdump -n 512 -e '512/1 "%02X"' $vtfile)
vtmagic=$(echo $vtdump | sed 's/^\(00\)*//')
let vtoffset="(${#vtdump}-${#vtmagic})/2"
if [ -z "$vtmagic" ]; then
vtHeadZero=$(vtfile_head_zero $vtfile)
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
ventoy_unpack_initramfs $vtfile $vtoffset ${vtmagic:0:4} ${vtfile}_tmp
done

View File

@ -39,35 +39,6 @@ fi
ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2" "noreplace"
ventoy_create_dev_ventoy_part
if ventoy_need_dm_patch; then
vtlog "extract a ko file"
mkdir -p /ventoy/tmpmnt1 /ventoy/tmpmnt2
mount /dev/ventoy1 /ventoy/tmpmnt1
mount /ventoy/tmpmnt1/boot/batocera /ventoy/tmpmnt2
vtKV=$(uname -r)
mkdir -p /lib/modules/$vtKV/kernel/
vtKO=$(find "/ventoy/tmpmnt2/lib/modules/$vtKV/kernel/fs/" -name "*.ko*" | head -n1)
cp -a $vtKO /lib/modules/$vtKV/kernel/
vtlog "vtKV=$vtKV vtKO=$vtKO"
umount /ventoy/tmpmnt2
umount /ventoy/tmpmnt1
vtPartid=1
cat /vtoy_dm_table | while read vtline; do
dmsetup remove ventoy$vtPartid
vtPartid=$(expr $vtPartid + 1)
done
dmsetup remove ventoy
vtlog "Recreate device-mapper"
ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2" "noreplace"
ventoy_create_dev_ventoy_part
fi
PATH=$VTPATH_OLD

View File

@ -384,6 +384,12 @@ ventoy_get_os_type() {
fi
fi
if [ -f /etc/tinyramfs/config ]; then
if $GREP -q 'EWE_ISO' /etc/tinyramfs/config; then
echo "ewe"; return
fi
fi
echo "default"
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -4,8 +4,9 @@ print_usage() {
echo 'Usage: ExtendPersistentImg.sh file size'
echo ' file persistent dat file'
echo ' size extend size in MB'
echo 'Example:'
echo ' sh ExtendPersistentImg.sh ubuntu.dat 2048'
echo 'Examples:'
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 ''
}
@ -19,6 +20,11 @@ if [ -z "$2" ]; then
exit 1
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
shift

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -21,15 +21,6 @@ submenu "$VTLANG_CTRL_TEMP_SET" --class=debug_temp_set --class=F5tool {
fi
}
menuentry "[ $VTOY_LINUX_REMOUNT ] $VTLANG_LINUX_REMOUNT" --class=debug_temp_linux_remount --class=debug_temp_set --class=F5tool \
VTOY_RUN_SET2 {
if [ "$VTOY_LINUX_REMOUNT" = "0" ]; then
set VTOY_LINUX_REMOUNT=1
else
set VTOY_LINUX_REMOUNT=0
fi
}
menuentry "[ $VTOY_SECONDARY_BOOT_MENU ] $VTLANG_SECONDARY_BOOT_MENU" --class=debug_temp_second_menu --class=debug_temp_set --class=F5tool \
VTOY_RUN_SET3 {
if [ "$VTOY_SECONDARY_BOOT_MENU" = "0" ]; then

View File

@ -33,6 +33,21 @@ function ventoy_debug_pause {
fi
}
function ventoy_max_resolution {
#Skip this for VirtualBox
smbios -t 1 -s 0x05 --set=system_product;
if vt_str_casebegin "$system_product" "VirtualBox"; then
return
fi
vt_enum_video_mode
vt_get_video_mode 0 vtCurMode
terminal_output console
set gfxmode=$vtCurMode
terminal_output gfxterm
}
function ventoy_cli_console {
if [ -z "$vtoy_display_mode" ]; then
terminal_output console
@ -403,10 +418,14 @@ function distro_specify_initrd_file_phase2 {
vt_linux_specify_initrd_file /images/pxeboot/initrd.img
elif [ -f (loop)/live/initrd ]; then
vt_linux_specify_initrd_file /live/initrd
elif [ -f (loop)/initramfs-linux.img ]; then
vt_linux_specify_initrd_file /initramfs-linux.img
elif [ -f (loop)/boot/isolinux/initrd.gz ]; then
vt_linux_specify_initrd_file /boot/isolinux/initrd.gz
fi
}
function ventoy_get_ghostbsd_ver {
# fallback to parse version from elf /boot/kernel/kernel
set vt_freebsd_ver=xx
@ -514,6 +533,13 @@ function ventoy_freebsd_proc {
fi
fi
if [ "$vt_freebsd_ver" = "14.x" ]; then
if [ -e (loop)/boot/lua/brand-pfSense.lua ]; then
set vtFreeBsdDistro=pfSense
fi
fi
if [ -n "${vtdebug_flag}" ]; then
echo "This is $vtFreeBsdDistro $vt_freebsd_ver ${vt_freebsd_bit}bit"
fi
@ -620,7 +646,7 @@ function uefi_windows_menu_func {
if [ -n "$vtoy_chain_mem_addr" ]; then
ventoy_acpi_param ${vtoy_chain_mem_addr} 2048
ventoy_cli_console
ventoy_max_resolution
chainloader ${vtoy_path}/ventoy_${VTOY_EFI_ARCH}.efi env_param=${env_param} isoefi=${LoadIsoEfiDriver} iso_${ventoy_fs_probe} ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}
boot
else
@ -662,7 +688,7 @@ function uefi_linux_menu_func {
if [ -d (loop)/pmagic ]; then
vt_linux_specify_initrd_file /pmagic/initrd.img
else
for file in "boot/grub/grub.cfg" "EFI/BOOT/grub.cfg" "EFI/boot/grub.cfg" "efi/boot/grub.cfg" "EFI/BOOT/BOOTX64.conf" "/grub/grub.cfg"; do
for file in "boot/grub/grub.cfg" "EFI/BOOT/grub.cfg" "EFI/boot/grub.cfg" "efi/boot/grub.cfg" "EFI/BOOT/BOOTX64.conf" "/grub/grub.cfg" "EFI/BOOT/grub/grub.cfg"; do
if [ -e (loop)/$file ]; then
vt_linux_parse_initrd_grub file (loop)/$file
fi
@ -1411,6 +1437,8 @@ function ventoy_iso_busybox_ver {
set ventoy_busybox_ver=64
elif vt_str_begin "$vt_volume_id" "LDiagBootable"; then
set ventoy_busybox_ver=64
elif vt_str_begin "$vt_volume_id" "KAOS_"; then
set ventoy_busybox_ver=64
fi
fi
@ -2397,7 +2425,7 @@ function mimg_common_menuentry {
#############################################################
#############################################################
set VENTOY_VERSION="1.0.97"
set VENTOY_VERSION="1.1.05"
#ACPI not compatible with Window7/8, so disable by default
set VTOY_PARAM_NO_ACPI=1

View File

@ -1,19 +1,19 @@
L - Nyelv kiválasztása
F1 - Jelenítse meg ezt a súgóinformációt
F2 - A helyi lemezen lévő fájlok böngészése és indítása
F3 - Menü mód váltása Fanézet <-> Listanézet között
F4 - Windows/Linux indítása helyi lemezről
F1 - Súgóinformációk megjelenítése
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
F4 - Windows/Linux indítása a helyi lemezről
F5 - Segédprogramok
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)
d/Ctrl+d - Memdisk mód (Csak kis WinPE/LiveCD ISO/IMG esetén)
w/Ctrl+w - WIMBOOT mód (Csak Windows/WinPE ISO esetében)
r/Ctrl+r - Grub2 mód (Csak néhány Linux disztró esetében)
i/Ctrl+i - Kompatibilis mód (Csak hibakeresésre)
u/Ctrl+u - ISO efi driver betöltés (Csak hibakeresésre, hivatalosan nem használható.)
m/Ctrl+m - Lemezképfájlok ellenőrzőösszege (md5/sha1/sha256/sha512)
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én)
r/Ctrl+r - Grub2 mód (csak néhány Linux disztribúció esetén)
i/Ctrl+i - Kompatibilis mód (csak hibakereséshez)
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 ......

View File

@ -1,19 +1,19 @@
L - Selezione lingua
F1 - Mostra informazioni di aiuto
F2 - Sfoglia e avvia file sul disco locale
F3 - Cambia la modalità del menu tra VistaAlbero <-> VistaLista
F4 - Avvia Windows/Linux sul disco locale
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 - Passa tra Modalità GUI <-> Modalità TESTO
F7 - Cambia modalità GUI <-> modalità TESTO
m/Ctrl+m - Checksum dei file immagine (md5/sha1/sha256/sha512)
d/Ctrl+d - Modalità Memdisk (Solo per i file ISO/IMG di WinPE/LiveCD piccoli)
w/Ctrl+w - Modalità WIMBOOT (SOlo per i file ISO di 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 può essere usato ufficialmente)
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 ritornare ......
Premi 'ESC' per continuare...

View File

@ -1,19 +1,19 @@
L - Dil Seçimi
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
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
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)
d/Ctrl+d - Memdisk Modu 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)
r/Ctrl+r - Grub2 Modu başlat (Yalnızca bazı Linux dağıtımları 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)
m/Ctrl+m - Görüntü dosyalarının sağlama toplamını al (md5/sha1/sha256/sha512)
d/Ctrl+d - Memdisk Modunu başlat(Yalnızca küçük WinPE/LiveCD ISO/IMG'ler için)
w/Ctrl+w - WIMBOOT Modunu başlat(Yalnızca normal Windows/WinPE ISO'ları 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)
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 ......

View File

@ -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 ......

View File

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

View File

@ -47,7 +47,7 @@
"VTLANG_UTIL_SHOW_EFI_DRV": "Afficher les pilotes EFI",
"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_THEME": "Afficher la configuration du plugin de thème",
"VTLANG_JSON_CHK_AUTOINS": "Afficher la configuration du plugin dinstallation automatique",

View File

@ -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_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_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á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_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_G4D": "Keresés és indítás - Grub4dos",
"VTLANG_LB_SBOOT_WINDOWS": "Windows keresése és indítása",
"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_HDD2": "Indítás az 2. helyi lemezről",
"VTLANG_LB_SBOOT_HDD3": "Indítás az 3. helyi lemezről",
"VTLANG_LB_SBOOT_X64EFI": "Keresés és indítás - BOOTX64.EFI",
"VTLANG_LB_SBOOT_IA32EFI": "Keresés és indítás - BOOTIA32.EFI",
"VTLANG_LB_SBOOT_AA64EFI": "Keresés és indítás - BOOTAA64.EFI",
"VTLANG_LB_SBOOT_XORBOOT": "Keresés és indítás - xorboot",
"VTLANG_LB_SBOOT_HDD2": "Indítás a 2. helyi lemezről",
"VTLANG_LB_SBOOT_HDD3": "Indítás a 3. helyi lemezről",
"VTLANG_LB_SBOOT_X64EFI": "BOOTX64.EFI keresése és indítása",
"VTLANG_LB_SBOOT_IA32EFI": "BOOTIA32.EFI keresése és indítása",
"VTLANG_LB_SBOOT_AA64EFI": "BOOTAA64.EFI keresése és indítása",
"VTLANG_LB_SBOOT_XORBOOT": "xorboot keresése és indítása",
"VTLANG_FILE_CHKSUM": "Fájl ell.összeg",
"VTLANG_CHKSUM_MD5_CALC": "Számítás - md5sum",
"VTLANG_CHKSUM_SHA1_CALC": "Számítás - sha1sum",
"VTLANG_CHKSUM_SHA256_CALC": "Számítás - sha256sum",
"VTLANG_CHKSUM_SHA512_CALC": "Számítás - sha512sum",
"VTLANG_CHKSUM_MD5_CALC_CHK": "Számítás és ellenőrzés - md5sum",
"VTLANG_CHKSUM_SHA1_CALC_CHK": "Számítás és ellenőrzés - sha1sum",
"VTLANG_CHKSUM_SHA256_CALC_CHK": "Számítás és ellenőrzés - sha256sum",
"VTLANG_CHKSUM_SHA512_CALC_CHK": "Számítás és ellenőrzés - sha512sum",
"VTLANG_FILE_CHKSUM": "Fájl ellenőrzőösszege",
"VTLANG_CHKSUM_MD5_CALC": "md5sum kiszámítása",
"VTLANG_CHKSUM_SHA1_CALC": "sha1sum kiszámítása",
"VTLANG_CHKSUM_SHA256_CALC": "sha256sum kiszámítása",
"VTLANG_CHKSUM_SHA512_CALC": "sha512sum kiszámítása",
"VTLANG_CHKSUM_MD5_CALC_CHK": "md5sum kiszámítása és ellenőrzése",
"VTLANG_CHKSUM_SHA1_CALC_CHK": "sha1sum kiszámítása és ellenőrzése",
"VTLANG_CHKSUM_SHA256_CALC_CHK": "sha256sum kiszámítása és ellenőrzése",
"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_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_HWINFO": "Hardver információ",
"VTLANG_KEYBRD_LAYOUT": "Billentyűzetkiosztások",
"VTLANG_HWINFO": "Hardverinformációk",
"VTLANG_RESOLUTION_CFG": "Felbontás konfigurációja",
"VTLANG_SCREEN_MODE": "Képernyő megjelenítési mód",
"VTLANG_SCREEN_TEXT_MODE": "Kénysz. szöveges mód",
"VTLANG_SCREEN_GUI_MODE": "Kénysz. grafikus mód",
"VTLANG_RESOLUTION_CFG": "Felbontás beállítása",
"VTLANG_SCREEN_MODE": "Képernyő megjelenítési módja",
"VTLANG_SCREEN_TEXT_MODE": "Szöveges mód kényszerítése",
"VTLANG_SCREEN_GUI_MODE": "Grafikus mód kényszerítése",
"VTLANG_THEME_SELECT": "Téma kiválasztása",
"VTLANG_UEFI_UTIL": "Ventoy UEFI Utilities",
"VTLANG_UTIL_SHOW_EFI_DRV": "EFI driverek megjelenítése",
"VTLANG_UEFI_UTIL": "Ventoy UEFI-segédprogramok",
"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_JSON_CHK_JSON": "Ellenőrizze a plugin json konfigurációt (ventoy.json)",
"VTLANG_JSON_CHK_CONTROL": "Ellenőrizze a globális vezérlő plugin konfigurációt",
"VTLANG_JSON_CHK_THEME": "Ellenőrizze a téma plugin konfigurációt",
"VTLANG_JSON_CHK_AUTOINS": "Ellenőrizze az auto. telepítő plugin konfigurációt",
"VTLANG_JSON_CHK_PERSIST": "A persistence plugin konfigurációjának ellenőrzése",
"VTLANG_JSON_CHK_MENU_ALIAS": "Ellenőrizze a menü alias plugin konfigurációt",
"VTLANG_JSON_CHK_MENU_TIP": "Ellenőrizze a menü tipp plugin konfigurációt",
"VTLANG_JSON_CHK_MENU_CLASS": "Ellenőrizze a menü osztály plugin konfigurációt",
"VTLANG_JSON_CHK_INJECTION": "Injekciós plugin konfiguráció ellenőrzése",
"VTLANG_JSON_CHK_AUTO_MEMDISK": "Auto. memdisk plugin konfiguráció ellenőrzése",
"VTLANG_JSON_CHK_IMG_LIST": "Ellenőrizze a képlista plugin beállításait",
"VTLANG_JSON_CHK_IMG_BLIST": "Ellenőrizze a kép feketelista plugin konfigurációt",
"VTLANG_JSON_CHK_CONF_REPLACE": "Check boot conf cserélje ki a plugin konfigurációt",
"VTLANG_JSON_CHK_DUD": "Ellenőrizze a dud plugin konfigurációt",
"VTLANG_JSON_CHK_PASSWORD": "Ellenőrizze a jelszó plugin konfigurációját",
"VTLANG_JSON_CHK_JSON": "A bővítmény JSON-beállításának (ventoy.json) ellenőrzése",
"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": "A téma bővítmény beállításnak ellenőrzése",
"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": "Az állandóság bővítmény beállításának ellenőrzése",
"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": "A menütipp bővítmény beállításának ellenőrzése",
"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": "A befecskendezés bővítmény beállításnak 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": "A lemezképlista bővítmény beállításnak ellenőrzése",
"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": "Az indítási beállítás csere bővítmény beállításnak ellenőrzése",
"VTLANG_JSON_CHK_DUD": "A dud bővítmény beállításnak ellenőrzése",
"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_WIMBOOT_MODE": "Indítás wimboot 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_TREEVIEW": "Vissza a Fanézethez",
"VTLANG_RET_TO_LISTVIEW": "Vissza a listané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_AUTOINS_USE": "Indítás ezzel",
"VTLANG_NO_AUTOINS_SCRIPT": "Indítás automatikus telepítési sablon nélkül",
"VTLANG_AUTOINS_USE": "Indítás ezzel:",
"VTLANG_NO_PERSIST": "Indítás perzisztencia nélkül",
"VTLANG_PERSIST_USE": "Indítás ezzel",
"VTLANG_NO_PERSIST": "Indítás állandóság nélkül",
"VTLANG_PERSIST_USE": "Indítás ezzel:",
"VTLANG_BROWER_RETURN": "Vissza",
"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_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_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11",
"VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11",
"VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
"VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
"VTLANG_CTRL_TEMP_SET": "Ideiglenes vezérlési beállítások",
"VTLANG_WIN11_BYPASS_CHECK": "CPU/TPM/SecureBoot ellenőrzés megkerülése Windows 11 telepítésekor",
"VTLANG_WIN11_BYPASS_NRO": "Internetes fiók követelményének megkerülése Windows 11 telepítésekor",
"VTLANG_LINUX_REMOUNT": "Ventoy partíció csatolása a Linux indítása után",
"VTLANG_SECONDARY_BOOT_MENU": "Másodlagos indítási menü megjelenítése",
"MENU_STR_XXX": ""
}

View File

@ -1,12 +1,12 @@
{
"VTLANG_LANGUAGE_NAME": "Italiano (Italian)",
"VTLANG_STR_HOTKEY_LIST": "L:Lingua F1:Aiuto F2:Sfoglia F3:VistaLista F4:BootLocale F5:Strumenti F6:ExMenu",
"VTLANG_STR_HOTKEY_TREE": "L:Lingua F1:Aiuto F2:Sfoglia F3:VistaAlbero F4:BootLocale F5:Strumenti F6:ExMenu",
"VTLANG_RETURN_PREVIOUS": "Ritorna al menu precedente [Esc]",
"VTLANG_RETURN_PRV_NOESC": "Ritorna al menu precedente",
"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": "Menu selezione lingua",
"VTLANG_MENU_LANG": "Selezione lingua interfaccia",
"VTLANG_LB_SBOOT_WINDOWS": "Cerca e avvia Windows",
"VTLANG_LB_SBOOT_G4D": "Cerca e avvia Grub4dos",
@ -18,7 +18,7 @@
"VTLANG_LB_SBOOT_AA64EFI": "Cerca e avvia BOOTAA64.EFI",
"VTLANG_LB_SBOOT_XORBOOT": "Cerca e avvia xorboot",
"VTLANG_FILE_CHKSUM": "Checksum file",
"VTLANG_FILE_CHKSUM": "File checksum",
"VTLANG_CHKSUM_MD5_CALC": "Calcola md5sum",
"VTLANG_CHKSUM_SHA1_CALC": "Calcola sha1sum",
"VTLANG_CHKSUM_SHA256_CALC": "Calcola sha256sum",
@ -28,66 +28,66 @@
"VTLANG_CHKSUM_SHA256_CALC_CHK": "Calcola e controlla sha256sum",
"VTLANG_CHKSUM_SHA512_CALC_CHK": "Calcola e controlla sha512sum",
"VTLANG_POWER": "Spegni",
"VTLANG_POWER_REBOOT": "Riavvia",
"VTLANG_POWER_HALT": "Arresta",
"VTLANG_POWER_BOOT_EFIFW": "Riavvia nel setup EFI",
"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 di tastiera",
"VTLANG_HWINFO": "Informazioni hardware",
"VTLANG_KEYBRD_LAYOUT": "Layout tastiera",
"VTLANG_HWINFO": "Informazioni hardware computer",
"VTLANG_RESOLUTION_CFG": "Configurazione risoluzione",
"VTLANG_SCREEN_MODE": "Modalità display schermo",
"VTLANG_SCREEN_TEXT_MODE": "Forza modalità testuale",
"VTLANG_SCREEN_GUI_MODE": "Forza modalità grafica",
"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",
"VTLANG_THEME_SELECT": "Seleziona tema interfaccia",
"VTLANG_UEFI_UTIL": "Utilità UEFI Ventoy UEFI Utilities",
"VTLANG_UTIL_SHOW_EFI_DRV": "Mostra driver EFI",
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Correzione del fallimento di BlinitializeLibrary di Windows",
"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": "Controlla la configurazione json dei plugin (ventoy.json)",
"VTLANG_JSON_CHK_CONTROL": "Controlla il controllo globale della configurazione dei plugin",
"VTLANG_JSON_CHK_THEME": "Controlla il tema della configurazione dei plugin",
"VTLANG_JSON_CHK_AUTOINS": "Controlla l'installazione automatica della configurazione dei plugin",
"VTLANG_JSON_CHK_PERSIST": "Controlla la persistenza della configurazione dei plugin",
"VTLANG_JSON_CHK_MENU_ALIAS": "Controlla l'alias del menu della configurazione dei plugin",
"VTLANG_JSON_CHK_MENU_TIP": "Controlla il suggerimento del menu della configurazione dei plugin",
"VTLANG_JSON_CHK_MENU_CLASS": "Controlla la classe del menu della configurazione dei plugin",
"VTLANG_JSON_CHK_INJECTION": "Controlla l'injection della configurazione dei plugin",
"VTLANG_JSON_CHK_AUTO_MEMDISK": "Controlla il memdisk automatico della configurazione dei plugin",
"VTLANG_JSON_CHK_IMG_LIST": "Controlla la lista delle immagini della configurazione dei plugin",
"VTLANG_JSON_CHK_IMG_BLIST": "Controlla la lista nera delle immagini della configurazione dei plugin",
"VTLANG_JSON_CHK_CONF_REPLACE": "Controlla la sostituzione della configurazione di avvio della configurazione dei plugin",
"VTLANG_JSON_CHK_DUD": "Controlla dud della configurazione dei plugin",
"VTLANG_JSON_CHK_PASSWORD": "Controlla password della configurazione dei plugin",
"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": "Ritorna alla VistaLista",
"VTLANG_RET_TO_TREEVIEW": "Ritorna alla VistaAlbero",
"VTLANG_RET_TO_LISTVIEW": "Torna alla VistaElenco",
"VTLANG_RET_TO_TREEVIEW": "Torna alla VistaStruttura",
"VTLANG_NO_AUTOINS_SCRIPT": "Avvia senza il modello di installazione automatica",
"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": "Ritorna",
"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_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": "Bypassa il controllo di CPU/TPM/SecureBoot durante l'installazione di Windows 11",
"VTLANG_WIN11_BYPASS_NRO": "Bypassa il requisito di un account online durante l'installazione di Windows 11",
"VTLANG_LINUX_REMOUNT": "Monta la partizione di Ventoy dopo l'avvio di Linux",
"VTLANG_SECONDARY_BOOT_MENU": "Mostra il menu di avvio secondario",
"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": ""
}

View File

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

View File

@ -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": ""
}

View File

@ -626,6 +626,14 @@ else
vtoycli partresize -s $DISK $part2_start
fi
if [ "$PART1_TYPE" = "EE" ]; then
vtinfo "update esp partition attribute"
vtoycli gpt -f $DISK
sync
fi
echo ""
vtinfo "Update Ventoy on $DISK successfully finished."
echo ""

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -19,5 +19,34 @@
"condition": "equal",
"expression": "ukui",
"gui": "gtk3"
},
{
"type": "env",
"name": "DESKTOP_SESSION",
"condition": "equal",
"expression": "cinnamon",
"gui": "gtk3"
},
{
"type": "env",
"name": "DESKTOP_SESSION",
"condition": "equal",
"expression": "gnome",
"gui": "gtk3"
},
{
"type": "env",
"name": "DESKTOP_SESSION",
"condition": "equal",
"expression": "plasma",
"gui": "qt5"
},
{
"type": "env",
"name": "DESKTOP_SESSION",
"condition": "equal",
"expression": "xfce",
"gui": "gtk3"
}
]

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -92,6 +92,10 @@ get_disk_part_name() {
echo ${DISK}p${2}
elif echo $DISK | grep -q "/dev/nbd[0-9]"; then
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
echo ${DISK}${2}
fi
@ -209,14 +213,14 @@ get_disk_ventoy_version() {
wait_and_create_part() {
vPART1=$1
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
if ls -l $vPART1 2>/dev/null | grep -q '^b'; then
if ls -l $vPART2 2>/dev/null | grep -q '^b'; then
break
fi
else
echo "Wait for $vPART1/$vPART2 ..."
echo "Wait for $vPART1 and $vPART2 ..."
sleep 1
fi
done
@ -445,7 +449,6 @@ format_ventoy_disk_gpt() {
mkpart Ventoy ntfs $part1_start_sector $part1_end_sector \
mkpart VTOYEFI fat16 $part2_start_sector $part2_end_sector \
$vt_set_efi_type \
set 2 hidden on \
quit
sync

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -754,28 +754,28 @@
"STR_SHOW_ALL_DEV":"Alle Geräte anzeigen",
"STR_PART_ALIGN_4KB":"Richten Sie Partitionen mit 4KB aus",
"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_SERVICE_UNAVAILABLE":"Kommunikationsfehler: Dienst nicht verfügbar",
"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_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_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_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_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_SUCCESS":"Glückwunsch! #@Die Installation von Ventoy, ohne vorherige Formatierung, wurde erfolgreich abgeschlossen.",
"STR_PART_RESIZE_FAILED":"Installation ohne vorherige Formatierung fehlgeschlagen. Details dazu finden Sie in log.txt.",
"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_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_FS":"Dateisystem",
"STR_PART_CLUSTER":"Clustergröße",
"STR_PART_CLUSTER_DEFAULT":"Systemstandardwert",
"STR_DONATE":"Spenden",
"STR_4KN_UNSUPPORTED":"Ventoy unterstützt derzeit keine nativen 4K Geräte.",
"STR_4KN_UNSUPPORTED":"Ventoy unterstützt derzeit keine nativen 4K-Geräte.",
"STRXXX":""
},
@ -1496,65 +1496,65 @@
{
"name":"Japanese (日本語)",
"FontFamily":"Yu Gothic UI",
"FontSize":14,
"Author":"taichi eto, Bentnand, cmplstofB",
"FontSize":16,
"Author":"taichi eto, Bentnand, cmplstofB, Re*Index.(ot_inc)",
"STR_ERROR":"エラー",
"STR_WARNING":"警告",
"STR_INFO":"情報",
"STR_INCORRECT_DIR":"正しいディレクトリで実行してください",
"STR_INCORRECT_TREE_DIR":"この場所で実行するには、パッケージを導入してください。",
"STR_DEVICE":"機器",
"STR_LOCAL_VER":"パッケージのVentoy",
"STR_DISK_VER":"機器中のVentoy",
"STR_INCORRECT_DIR":"正しいディレクトリで実行してください!",
"STR_INCORRECT_TREE_DIR":"ここで実行をしないでください。リリースされたインストールパッケージをダウンロードして、実行をしてください。",
"STR_DEVICE":"デバイス",
"STR_LOCAL_VER":"パッケージのVentoy",
"STR_DISK_VER":"デバイス内のVentoy",
"STR_STATUS":"状態 - 準備完了",
"STR_INSTALL":"導入",
"STR_UPDATE":"更新",
"STR_UPDATE_TIP":"更新可能です、ISOファイルは改変されません。#@続行しますか?",
"STR_INSTALL_TIP":"選択した機器は完全に初期化され、保存されたデータは二度と復元できません。#@続行しますか?",
"STR_INSTALL_TIP2":"選択した機器は完全に初期化され、保存されたデータは二度と復元できません。#@続行しますか?(再確認)",
"STR_INSTALL_SUCCESS":"おめでとうございます。#@Ventoyの導入は正常に行われました。",
"STR_INSTALL_FAILED":"導入中にエラーが発生しました。機器を再接続してもう一度やり直してください。詳細な記録はlog.txtにあります。",
"STR_UPDATE_SUCCESS":"おめでとうございます。#@Ventoyの更新は正常に行われました。",
"STR_UPDATE_FAILED":"更新中にエラーが発生しました。機器を再接続してもう一度やり直してください。詳細な記録はlog.txtにあります。",
"STR_WAIT_PROCESS":"スレッドが稼動しています。お待ちください...",
"STR_MENU_OPTION":"設定",
"STR_MENU_SECURE_BOOT":"セキュアブート",
"STR_MENU_PART_CFG":"区画構成",
"STR_BTN_OK":"了解",
"STR_BTN_CANCEL":"取消",
"STR_PRESERVE_SPACE":"機器の最後に領域を確保する",
"STR_SPACE_VAL_INVALID":"確保する領域の値が正しくありません",
"STR_MENU_CLEAR":"Ventoyを削除",
"STR_CLEAR_SUCCESS":"Ventoyが機器から削除されました。",
"STR_CLEAR_FAILED":"Ventoyを機器から削除できませんでした。機器を再接続してもう一度やり直してください。詳細な記録はlog.txtにあります。",
"STR_MENU_PART_STYLE":"区画の構成方式",
"STR_DISK_2TB_MBR_ERROR":"2TB以上の機器にはGPTを使用してください。",
"STR_SHOW_ALL_DEV":"すべての機器を表示",
"STR_PART_ALIGN_4KB":"区画単位を4KBに揃える",
"STR_WEB_COMMUNICATION_ERR":"通信エラー:",
"STR_WEB_REMOTE_ABNORMAL":"通信エラー: 通信先で異常が発生しています",
"STR_WEB_REQUEST_TIMEOUT":"通信エラー: 要求が時間切れしました",
"STR_WEB_SERVICE_UNAVAILABLE":"通信エラー: サービスが利用できません",
"STR_WEB_TOKEN_MISMATCH":"デーモンの状態が更新されました。しばらくしてから再試行してください。",
"STR_WEB_SERVICE_BUSY":"サービスが繁忙です。後で再試行してください。",
"STR_MENU_VTSI_CREATE":"VTSIファイルを成する",
"STR_VTSI_CREATE_TIP":"VTSIファイルを生成し記憶装置への書き込みは行いません。#@続行しますか?",
"STR_VTSI_CREATE_SUCCESS":"VTSIファイルが生成されました。#@Rufus3.15以上の版を使って記憶装置に書き込んでVentoyの導入を完遂しましょう。",
"STR_VTSI_CREATE_FAILED":"VTSIファイルを生成できませんでした。",
"STR_MENU_PART_RESIZE":"非破壊的導入",
"STR_PART_RESIZE_TIP":"Ventoyを(可能であれば)非破壊的に導入します。#@続行しますか?",
"STR_PART_RESIZE_SUCCESS":"おめでとうございます。#@Ventoyの非破壊的導入は正常に行われました。",
"STR_PART_RESIZE_FAILED":"Ventoyを非破壊的に導入できませんでした。詳細な記録はlog.txtにあります。",
"STR_PART_RESIZE_UNSUPPORTED":"Ventoyを非破壊的に導入できませんでした。非破壊的導入にあたっての要件が満たされていません。詳細な記録はlog.txtにあります。",
"STR_INSTALL_YES_TIP1":"警告: データが消去されます",
"STR_INSTALL_YES_TIP2":"Ventoyを更新するのではなく新規に導入するということを確認するために下の入力欄に「YES」と入力してください。",
"STR_PART_VENTOY_FS":"Ventoy パーティションのファイル システム",
"STR_INSTALL":"インストール",
"STR_UPDATE":"アップデート",
"STR_UPDATE_TIP":"アップグレードの操作は安全に行なわれ、ISOファイルは変更もされません。#@続行しますか?",
"STR_INSTALL_TIP":"デバイスはフォーマットされ、すべてのデータが失われます。#@続行しますか?",
"STR_INSTALL_TIP2":"デバイスはフォーマットされ、すべてのデータが失われます。#@続行しますか? (再確認)",
"STR_INSTALL_SUCCESS":"おめでとうございます!#@Ventoyがデバイスにインストールされました。",
"STR_INSTALL_FAILED":"インストール中にエラーが発生しました。USBデバイスを再接続をして再試行ができます。詳細については、log.txtを確認してください。何度も失敗する場合は、公式サイト内のFAQをご参照ください。",
"STR_UPDATE_SUCCESS":"おめでとうございます!#@Ventoyがデバイスで正常にアップデートされました。",
"STR_UPDATE_FAILED":"アップデート中にエラーが発生しました。USBデバイスを再接続して再試行ができます。詳細については、log.txtを確認してください。何度も失敗する場合は、公式サイトのFAQをご参照ください。",
"STR_WAIT_PROCESS":"スレッドが実行中です。お待ちください...",
"STR_MENU_OPTION":"オプション",
"STR_MENU_SECURE_BOOT":"セキュアブートのサポート",
"STR_MENU_PART_CFG":"パーティションの設定",
"STR_BTN_OK":"OK",
"STR_BTN_CANCEL":"キャンセル",
"STR_PRESERVE_SPACE":"ディスクの最後にある程度の容量を確保する",
"STR_SPACE_VAL_INVALID":"システム予約済みパーティションの値が無効です",
"STR_MENU_CLEAR":"Ventoyを削除する",
"STR_CLEAR_SUCCESS":"Ventoyがデバイスから正常に削除されました。",
"STR_CLEAR_FAILED":"Ventoyをディスクから削除するときにエラーが発生しました。USBデバイスを再接続して再試行ができます。詳細については、log.txtを確認してください。",
"STR_MENU_PART_STYLE":"パーティションのスタイル",
"STR_DISK_2TB_MBR_ERROR":"2TBを超えるデバイスの場合はGPTを選択してください",
"STR_SHOW_ALL_DEV":"すべてのデバイスを表示",
"STR_PART_ALIGN_4KB":"パーティションを4KBに揃える",
"STR_WEB_COMMUNICATION_ERR":"コミュニケーションエラー:",
"STR_WEB_REMOTE_ABNORMAL":"コミュニケーションエラー: リモート先が異常になっています",
"STR_WEB_REQUEST_TIMEOUT":"コミュニケーションエラー: リクエストがタイムアウトしました",
"STR_WEB_SERVICE_UNAVAILABLE":"コミュニケーションエラー: サービスが利用できません",
"STR_WEB_TOKEN_MISMATCH":"デーモンのステータスが更新されました。後で再試行してください。",
"STR_WEB_SERVICE_BUSY":"サービスがビジーの状態です。後で再試行してください。",
"STR_MENU_VTSI_CREATE":"VTSIファイルを成する",
"STR_VTSI_CREATE_TIP":"今回はデバイスへの書き込みを行なわず、VTSIファイルの作成のみを行ないます。#@続行しますか?",
"STR_VTSI_CREATE_SUCCESS":"VTSIファイルが正常に作成されました!#@Rufus(3.15以降)を使用してデバイスに書き込むことでVentoyのインストールが完了します。",
"STR_VTSI_CREATE_FAILED":"VTSIファイルの作成に失敗しました。",
"STR_MENU_PART_RESIZE":"非破壊なインストール",
"STR_PART_RESIZE_TIP":"Ventoyは、可能であれば非破壊なインストールを試みます。#@続行しますか?",
"STR_PART_RESIZE_SUCCESS":"おめでとうございます!#@Ventoyの非破壊なインストールが正常に完了しました。",
"STR_PART_RESIZE_FAILED":"非破壊なインストールが失敗しました。詳細については、log.txtを確認してください。",
"STR_PART_RESIZE_UNSUPPORTED":"いくつかの条件を満たしていないため、Ventoyの非破壊なインストールは停止されました。詳細については、log.txtを確認してください。",
"STR_INSTALL_YES_TIP1":"警告: データが失われます!",
"STR_INSTALL_YES_TIP2":"アップグレードではなく新規インストールを実行するには、下のテキストボックスに「YES」と入力してください。",
"STR_PART_VENTOY_FS":"Ventoyパーティションのファイルシステム",
"STR_PART_FS":"ファイルシステム",
"STR_PART_CLUSTER":"クラスタサイズ",
"STR_PART_CLUSTER_DEFAULT":"システムのデフォルト値",
"STR_PART_CLUSTER":"クラスタサイズ",
"STR_PART_CLUSTER_DEFAULT":"システムの既定値",
"STR_DONATE":"寄付",
"STR_4KN_UNSUPPORTED":"現在、Ventoy 4K ネイティブ デバイスをサポートしていません。",
"STR_4KN_UNSUPPORTED":"現在、Ventoyは4Kネイティブデバイスをサポートしていません。",
"STRXXX":""
},
@ -1575,13 +1575,13 @@
"STR_STATUS":"Stato - PRONTO",
"STR_INSTALL":"Installa",
"STR_UPDATE":"Aggiorna",
"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_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_FAILED":"Si è verificato un errore durante l'installazione.#@Riconnetti il dispositivo e riprova.#@Controlla il file log.txt per i dettagli.",
"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_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_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_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_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_MENU_OPTION":"Opzioni",
"STR_MENU_SECURE_BOOT":"Avvio protetto (secure boot)",
@ -1592,28 +1592,28 @@
"STR_SPACE_VAL_INVALID":"Quantità di spazio da riservare non valida",
"STR_MENU_CLEAR":"Rimuovi Ventoy dal dispositivo",
"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_DISK_2TB_MBR_ERROR":"Seleziona GPT per i dispositivi più grandi di 2TB",
"STR_SHOW_ALL_DEV":"Visualizza tutti i dispositivi",
"STR_PART_ALIGN_4KB":"Allinea le partizioni con 4KB",
"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_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_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_FAILED":"Creazione file VTSI non riuscita.",
"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_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_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 partizione Ventoy",
"STR_PART_FS":"File system",
"STR_PART_CLUSTER":"Dimensione cluster",
@ -2082,7 +2082,7 @@
"name":"Vietnamese (Tiếng Việt)",
"FontFamily":"Tahoma",
"FontSize":14,
"Author":"Nguyen Quoc Hoang - cuumay.win",
"Author":"Nguyen Quoc Hoang - cuumay.win, HoangNPV - @isoamyl50",
"STR_ERROR":"Lỗi",
"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_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_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_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_MENU_OPTION":"Tùy chọn",
"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_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_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_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ị",
@ -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_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_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_FS":"Hệ thống tập tin",
"STR_PART_CLUSTER":"Cỡ Cluster",
"STR_PART_CLUSTER_DEFAULT":"Theo mặc định hệ thống",
"STR_DONATE":"Thưởng tác giả",
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.",
"STR_PART_CLUSTER":"Kích thước Cluster",
"STR_PART_CLUSTER_DEFAULT":"Theo giá trị mặc định của hệ thống",
"STR_DONATE":"Ủng hộ tác giả",
"STR_4KN_UNSUPPORTED":"Hiện tại Ventoy không hỗ trợ các thiết bị 4K native.",
"STRXXX":""
},
@ -2420,7 +2420,7 @@
"STR_STATUS":"Status - SIAP",
"STR_INSTALL":"Pasang",
"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_TIP2":"Disk akan di-format dan semua data akan hilang.#@Lanjutkan? (YAKIN)",
"STR_INSTALL_SUCCESS":"Selamat!#@Ventoy telah berhasil terpasang di perangkat ini.",
@ -2434,11 +2434,11 @@
"STR_BTN_OK":"OK",
"STR_BTN_CANCEL":"Batal",
"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_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_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_SHOW_ALL_DEV":"Tampilkan semua perangkat",
"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_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_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_FS":"Berkas Sistem",
"STR_PART_CLUSTER":"Ukuran Kelompok",

View File

@ -442,7 +442,7 @@ int ventoy_fill_gpt(uint64_t size, uint64_t reserve, int align4k, VTOY_GPT_INFO
ventoy_gen_preudo_uuid(&(Table[1].PartGuid));
Table[1].StartLBA = Table[0].LastLBA + 1;
Table[1].LastLBA = Table[1].StartLBA + VTOYEFI_PART_BYTES / 512 - 1;
Table[1].Attr = 0xC000000000000001ULL;
Table[1].Attr = 0x8000000000000000ULL;
ventoy_fill_gpt_partname(Table[1].Name, "VTOYEFI");
#if 0

View File

@ -727,6 +727,7 @@ static void * ventoy_update_thread(void *data)
MBR_HEAD MBR;
ventoy_disk *disk = NULL;
ventoy_thread_data *thread = (ventoy_thread_data *)data;
VTOY_GPT_INFO *pstGPT = NULL;
vdebug("ventoy_update_thread run ...\n");
@ -790,6 +791,36 @@ static void * ventoy_update_thread(void *data)
vlog("No need to update MBR\n");
}
if (disk->vtoydata.partition_style)
{
pstGPT = (VTOY_GPT_INFO *)malloc(sizeof(VTOY_GPT_INFO));
memset(pstGPT, 0, sizeof(VTOY_GPT_INFO));
offset = lseek(fd, 0, SEEK_SET);
len = read(fd, pstGPT, sizeof(VTOY_GPT_INFO));
vlog("Read GPT table offset:%llu len:%llu ...\n", (_ull)offset, (_ull)len);
if (pstGPT->PartTbl[1].Attr != 0x8000000000000000ULL)
{
vlog("Update EFI part attr from 0x%016llx to 0x%016llx\n",
pstGPT->PartTbl[1].Attr, 0x8000000000000000ULL);
pstGPT->PartTbl[1].Attr = 0x8000000000000000ULL;
pstGPT->Head.PartTblCrc = ventoy_crc32(pstGPT->PartTbl, sizeof(pstGPT->PartTbl));
pstGPT->Head.Crc = 0;
pstGPT->Head.Crc = ventoy_crc32(&(pstGPT->Head), pstGPT->Head.Length);
ventoy_write_gpt_part_table(fd, disk->size_in_byte, pstGPT);
}
else
{
vlog("No need to update EFI part attr\n");
}
free(pstGPT);
}
g_current_progress = PT_SYNC_DATA1;
vlog("fsync data1...\n");

View File

@ -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/>
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/>
1100+ 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>
</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
**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, Vanilla OS, ShredOS, paladin, Palen1x, dban, ReviOS, HelenOS, XeroLinux, ......
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**
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**
FydeOS, CloudReady, ChromeOS Flex
@ -38,11 +38,6 @@ FydeOS, CloudReady, ChromeOS Flex
**Other**
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
[【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
* Password protect supported
* Native boot menu style for Legacy & UEFI
* Most types of OS supported, 1100+ iso files tested
* Most types of OS supported, 1200+ iso files tested
* Linux vDisk boot supported
* Not only boot but also complete installation process
* Menu dynamically switchable between List/TreeView mode

View File

@ -2520,7 +2520,7 @@ int PartitionResizeForVentoy(PHY_DRIVE_INFO *pPhyDrive)
pGPT->PartTbl[1].StartLBA = pGPT->PartTbl[0].LastLBA + 1;
pGPT->PartTbl[1].LastLBA = pGPT->PartTbl[1].StartLBA + VENTOY_EFI_PART_SIZE / 512 - 1;
pGPT->PartTbl[1].Attr = 0xC000000000000001ULL;
pGPT->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;
memcpy(pGPT->PartTbl[1].Name, L"VTOYEFI", 7 * 2);
//Update CRC
@ -2797,6 +2797,7 @@ int UpdateVentoy2PhyDrive(PHY_DRIVE_INFO *pPhyDrive, int TryId)
BOOL CleanDisk = FALSE;
BOOL DelEFI = FALSE;
BOOL bWriteBack = TRUE;
BOOL bUpdateEFIAttr = FALSE;
HANDLE hVolume;
HANDLE hDrive;
DWORD Status;
@ -2906,6 +2907,12 @@ int UpdateVentoy2PhyDrive(PHY_DRIVE_INFO *pPhyDrive, int TryId)
Log("TryId=%d EFI GPT partition type is 0x%llx", TryId, pPhyDrive->Part2GPTAttr);
PROGRESS_BAR_SET_POS(PT_DEL_ALL_PART);
if (pGptInfo->PartTbl[1].Attr != VENTOY_EFI_PART_ATTR)
{
bUpdateEFIAttr = TRUE;
}
if (TryId == 1)
{
Log("Change GPT partition type to ESP");
@ -2917,8 +2924,8 @@ int UpdateVentoy2PhyDrive(PHY_DRIVE_INFO *pPhyDrive, int TryId)
}
else if (TryId == 2)
{
Log("Change GPT partition attribute");
if (DISK_ChangeVtoyEFIAttr(pPhyDrive->PhyDrive, StartSector * 512ULL, 0x8000000000000001))
Log("Try2 Change GPT partition attribute to 0x%016llx", VENTOY_EFI_PART_ATTR & 0xFFFFFFFFFFFFFFFEULL);
if (DISK_ChangeVtoyEFIAttr(pPhyDrive->PhyDrive, StartSector * 512ULL, VENTOY_EFI_PART_ATTR & 0xFFFFFFFFFFFFFFFEULL))
{
ChangeAttr = TRUE;
Sleep(2000);
@ -3253,15 +3260,16 @@ End:
DISK_ChangeVtoyEFI2Basic(pPhyDrive->PhyDrive, StartSector * 512);
}
if (pPhyDrive->PartStyle == 1)
{
if (ChangeAttr || ((pPhyDrive->Part2GPTAttr >> 56) != 0xC0))
if (ChangeAttr || bUpdateEFIAttr)
{
Log("Change EFI partition attr %u <0x%llx> to <0x%llx>", ChangeAttr, pPhyDrive->Part2GPTAttr, 0xC000000000000001ULL);
if (DISK_ChangeVtoyEFIAttr(pPhyDrive->PhyDrive, StartSector * 512ULL, 0xC000000000000001ULL))
Log("Change EFI partition attr %u <0x%llx> to <0x%llx>", ChangeAttr, pGptInfo->PartTbl[1].Attr, VENTOY_EFI_PART_ATTR);
if (DISK_ChangeVtoyEFIAttr(pPhyDrive->PhyDrive, StartSector * 512ULL, VENTOY_EFI_PART_ATTR))
{
Log("Change EFI partition attr success");
pPhyDrive->Part2GPTAttr = 0xC000000000000001ULL;
pPhyDrive->Part2GPTAttr = VENTOY_EFI_PART_ATTR;
}
else
{

View File

@ -982,7 +982,7 @@ int VentoyFillGpt(UINT64 DiskSizeBytes, VTOY_GPT_INFO *pInfo)
CoCreateGuid(&(Table[1].PartGuid));
Table[1].StartLBA = Table[0].LastLBA + 1;
Table[1].LastLBA = Table[1].StartLBA + VENTOY_EFI_PART_SIZE / 512 - 1;
Table[1].Attr = 0xC000000000000001ULL;
Table[1].Attr = VENTOY_EFI_PART_ATTR;
memcpy(Table[1].Name, L"VTOYEFI", 7 * 2);
#if 0

View File

@ -34,6 +34,9 @@ typedef enum VTOY_FS
#define FAT32_MAX_LIMIT (32 * 1073741824ULL)
#define VENTOY_EFI_PART_ATTR 0x8000000000000000ULL
#define SIZE_1KB (1024)
#define SIZE_1GB (1024 * 1024 * 1024)
#define SIZE_1TB (1024ULL * 1024ULL * 1024ULL * 1024ULL)

View File

@ -40,7 +40,7 @@ DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void* buff);
#define STA_PROTECT 0x04 /* Write protected */
/* Command code for disk_ioctrl fucntion */
/* Command code for disk_ioctrl function */
/* Generic command (Used by FatFs) */
#define CTRL_SYNC 0 /* Complete pending write process (needed at FF_FS_READONLY == 0) */

View File

@ -68,6 +68,7 @@ static int verbose = 0;
#define CMD_DUMP_ISO_INFO 3
#define CMD_EXTRACT_ISO_FILE 4
#define CMD_PRINT_EXTRACT_ISO_FILE 5
#define CMD_PRINT_RAW_TABLE 6
static uint64_t g_iso_file_size;
static char g_disk_name[128];
@ -578,6 +579,45 @@ static uint64_t vtoydm_get_part_start(const char *diskname, int part)
return size;
}
static uint64_t vtoydm_get_part_secnum(const char *diskname, int part)
{
int fd;
unsigned long long size = 0;
char diskpath[256] = {0};
char sizebuf[64] = {0};
diskname += 5; /* skip /dev/ */
if (strstr(diskname, "nvme") || strstr(diskname, "mmc") || strstr(diskname, "nbd"))
{
snprintf(diskpath, sizeof(diskpath) - 1, "/sys/class/block/%sp%d/size", diskname, part);
}
else
{
snprintf(diskpath, sizeof(diskpath) - 1, "/sys/class/block/%s%d/size", diskname, part);
}
if (access(diskpath, F_OK) >= 0)
{
debug("get part size from sysfs for %s %d\n", diskname, part);
fd = open(diskpath, O_RDONLY | O_BINARY);
if (fd >= 0)
{
read(fd, sizebuf, sizeof(sizebuf));
size = strtoull(sizebuf, NULL, 10);
close(fd);
return size;
}
}
else
{
debug("%s not exist \n", diskpath);
}
return size;
}
static int vtoydm_vlnk_convert(char *disk, int len, int *part, uint64_t *offset)
{
int rc = 1;
@ -627,6 +667,24 @@ end:
return rc;
}
static int vtoydm_print_raw_linear_table(const char *img_map_file, const char *diskname, int part)
{
uint64_t disk_sector_num;
disk_sector_num = vtoydm_get_part_secnum(diskname, part);
if (strstr(diskname, "nvme") || strstr(diskname, "mmc") || strstr(diskname, "nbd"))
{
printf("0 %lu linear %sp%d 0\n", (unsigned long)disk_sector_num, diskname, part);
}
else
{
printf("0 %lu linear %s%d 0\n", (unsigned long)disk_sector_num, diskname, part);
}
return 0;
}
int vtoydm_main(int argc, char **argv)
{
int ch;
@ -639,7 +697,7 @@ int vtoydm_main(int argc, char **argv)
char filepath[300] = {0};
char outfile[300] = {0};
while ((ch = getopt(argc, argv, "s:l:o:d:f:v::i::p::c::h::e::E::")) != -1)
while ((ch = getopt(argc, argv, "s:l:o:d:f:v::i::p::r::c::h::e::E::")) != -1)
{
if (ch == 'd')
{
@ -653,6 +711,10 @@ int vtoydm_main(int argc, char **argv)
{
cmd = CMD_PRINT_TABLE;
}
else if (ch == 'r')
{
cmd = CMD_PRINT_RAW_TABLE;
}
else if (ch == 'c')
{
cmd = CMD_CREATE_DM;
@ -713,6 +775,10 @@ int vtoydm_main(int argc, char **argv)
{
return vtoydm_print_linear_table(filepath, diskname, part, offset);
}
case CMD_PRINT_RAW_TABLE:
{
return vtoydm_print_raw_linear_table(filepath, diskname, part);
}
case CMD_CREATE_DM:
{
break;

View File

@ -191,6 +191,9 @@ typedef struct ko_param
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;
@ -577,6 +580,9 @@ int vtoykmod_fill_param(char **argv)
param->kv_minor = strtoul(argv[13], NULL, 10);
param->blkdev_get_addr = strtoul(argv[14], NULL, 16);
param->blkdev_put_addr = strtoul(argv[15], NULL, 16);
param->kv_subminor = strtoul(argv[16], NULL, 10);
param->bdev_open_addr = strtoul(argv[17], NULL, 16);
param->bdev_file_open_addr = strtoul(argv[18], NULL, 16);
debug("pgsize=%lu (%s)\n", param->pgsize, argv[1]);
debug("printk_addr=0x%lx (%s)\n", param->printk_addr, argv[2]);
@ -593,6 +599,9 @@ int vtoykmod_fill_param(char **argv)
debug("kv_minor=%lu (%s)\n", param->kv_minor, argv[13]);
debug("blkdev_get_addr=0x%lx (%s)\n", param->blkdev_get_addr, argv[14]);
debug("blkdev_put_addr=0x%lx (%s)\n", param->blkdev_put_addr, argv[15]);
debug("kv_subminor=%lu (%s)\n", param->kv_subminor, argv[16]);
debug("bdev_open_addr=0x%lx (%s)\n", param->bdev_open_addr, argv[17]);
debug("bdev_file_open_addr=0x%lx (%s)\n", param->bdev_file_open_addr, argv[18]);
break;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -599,7 +599,7 @@ static int update_part_table(char *disk, UINT64 part2start)
PartTbl[1].StartLBA = PartTbl[0].LastLBA + 1;
PartTbl[1].LastLBA = PartTbl[1].StartLBA + VENTOY_EFI_PART_SIZE / 512 - 1;
PartTbl[1].Attr = 0xC000000000000001ULL;
PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;
PartTbl[1].Name[0] = 'V';
PartTbl[1].Name[1] = 'T';
PartTbl[1].Name[2] = 'O';

View File

@ -21,7 +21,7 @@
#ifndef __VTOYCLI_H__
#define __VTOYCLI_H__
#define VENTOY_EFI_PART_ATTR 0xC000000000000001ULL
#define VENTOY_EFI_PART_ATTR 0x8000000000000000ULL
#define SIZE_1MB (1024 * 1024)
#define VENTOY_EFI_PART_SIZE (32 * SIZE_1MB)

View File

@ -190,6 +190,8 @@ int vtoygpt_main(int argc, char **argv)
Name = pMainGptInfo->PartTbl[1].Name;
if (Name[0] == 'V' && Name[1] == 'T' && Name[2] == 'O' && Name[3] == 'Y')
{
if (pMainGptInfo->PartTbl[1].Attr != VENTOY_EFI_PART_ATTR)
{
pMainGptInfo->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;
pMainGptInfo->Head.PartTblCrc = VtoyCrc32(pMainGptInfo->PartTbl, sizeof(pMainGptInfo->PartTbl));
@ -210,6 +212,7 @@ int vtoygpt_main(int argc, char **argv)
fsync(fd);
}
}
}
free(pMainGptInfo);
free(pBackGptInfo);

View File

@ -244,7 +244,7 @@ int DumpGptInfo(VTOY_GPT_INFO *pGptInfo)
return 0;
}
#define VENTOY_EFI_PART_ATTR 0xC000000000000001ULL
#define VENTOY_EFI_PART_ATTR 0x8000000000000000ULL
int main(int argc, const char **argv)
{
@ -290,6 +290,8 @@ int main(int argc, const char **argv)
Name = pMainGptInfo->PartTbl[1].Name;
if (Name[0] == 'V' && Name[1] == 'T' && Name[2] == 'O' && Name[3] == 'Y')
{
if (pMainGptInfo->PartTbl[1].Attr != VENTOY_EFI_PART_ATTR)
{
pMainGptInfo->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;
pMainGptInfo->Head.PartTblCrc = VtoyCrc32(pMainGptInfo->PartTbl, sizeof(pMainGptInfo->PartTbl));
@ -310,6 +312,7 @@ int main(int argc, const char **argv)
fsync(fd);
}
}
}
free(pMainGptInfo);
free(pBackGptInfo);