mirror of
https://github.com/ventoy/Ventoy.git
synced 2025-09-19 10:21:14 +00:00
Compare commits
42 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
854d17a4e9 | ||
|
a326b13fc3 | ||
|
3ff1867a2a | ||
|
7f63a1c327 | ||
|
d617985093 | ||
|
605da1ba94 | ||
|
c8dc36a5c3 | ||
|
689f7df902 | ||
|
a9d53e7448 | ||
|
46061bcd41 | ||
|
01b0de7811 | ||
|
2fee243a56 | ||
|
d0e10f8e48 | ||
|
7ff243f9bb | ||
|
f8811a4656 | ||
|
0ce90ad9b9 | ||
|
5bfddae81d | ||
|
2991f097fb | ||
|
986835338d | ||
|
f2562fecb9 | ||
|
529541f218 | ||
|
430f81ac49 | ||
|
038c0533d9 | ||
|
102b179cd9 | ||
|
6785f5d049 | ||
|
0c812ed5e9 | ||
|
9f2b9b0867 | ||
|
c79b072680 | ||
|
6b4509a550 | ||
|
feea11e2bb | ||
|
35c952d891 | ||
|
82053680bf | ||
|
6d5de12f52 | ||
|
84b2ee7ee3 | ||
|
da1b306e81 | ||
|
0961ce5624 | ||
|
07574f0379 | ||
|
142aa47944 | ||
|
11739fa9d0 | ||
|
9fc85051a7 | ||
|
b9e82bcf16 | ||
|
cff3a01289 |
2
.github/ISSUE_TEMPLATE/issue_template.yml
vendored
2
.github/ISSUE_TEMPLATE/issue_template.yml
vendored
@@ -21,7 +21,7 @@ body:
|
|||||||
attributes:
|
attributes:
|
||||||
label: Ventoy Version
|
label: Ventoy Version
|
||||||
description: What version of ventoy are you running?
|
description: What version of ventoy are you running?
|
||||||
placeholder: 1.0.90
|
placeholder: 1.0.96
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
|
12
.github/workflows/ci.yml
vendored
12
.github/workflows/ci.yml
vendored
@@ -12,26 +12,26 @@ jobs:
|
|||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- name: Run docker-compose up
|
- name: Run docker-compose up
|
||||||
run: docker-compose up
|
run: docker-compose up
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: ventoy-windows
|
name: ventoy-windows
|
||||||
path: INSTALL/ventoy-*windows*
|
path: INSTALL/ventoy-*windows*
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: ventoy-linux
|
name: ventoy-linux
|
||||||
path: INSTALL/ventoy-*linux*
|
path: INSTALL/ventoy-*linux*
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: ventoy-livecd
|
name: ventoy-livecd
|
||||||
path: INSTALL/ventoy-*livecd*
|
path: INSTALL/ventoy-*livecd*
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: SHA256SUM
|
name: SHA256SUM
|
||||||
path: INSTALL/sha256.txt
|
path: INSTALL/sha256.txt
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: xxx-build-log
|
name: xxx-build-log
|
||||||
path: DOC/build.log
|
path: DOC/build.log
|
||||||
|
@@ -79,14 +79,24 @@ static volatile ko_param g_ko_param =
|
|||||||
#define CODE_MATCH2(code, i) \
|
#define CODE_MATCH2(code, i) \
|
||||||
(code[i] == 0x0C && code[i + 1] == 0x80 && code[i + 2] == 0x89 && code[i + 3] == 0xC6)
|
(code[i] == 0x0C && code[i + 1] == 0x80 && code[i + 2] == 0x89 && code[i + 3] == 0xC6)
|
||||||
|
|
||||||
|
#define PATCH_OP_POS3 4
|
||||||
|
#define CODE_MATCH3(code, i) \
|
||||||
|
(code[i] == 0x44 && code[i + 1] == 0x89 && code[i + 2] == 0xe8 && code[i + 3] == 0x0c && code[i + 4] == 0x80)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#elif defined(CONFIG_X86_32)
|
#elif defined(CONFIG_X86_32)
|
||||||
#define PATCH_OP_POS1 2
|
#define PATCH_OP_POS1 2
|
||||||
#define CODE_MATCH1(code, i) \
|
#define CODE_MATCH1(code, i) \
|
||||||
(code[i] == 0x80 && code[i + 1] == 0xca && code[i + 2] == 0x80 && code[i + 3] == 0xe8)
|
(code[i] == 0x80 && code[i + 1] == 0xca && code[i + 2] == 0x80 && code[i + 3] == 0xe8)
|
||||||
|
|
||||||
#define PATCH_OP_POS2 2
|
#define PATCH_OP_POS2 PATCH_OP_POS1
|
||||||
#define CODE_MATCH2(code, i) \
|
#define CODE_MATCH2 CODE_MATCH1
|
||||||
(code[i] == 0x80 && code[i + 1] == 0xca && code[i + 2] == 0x80 && code[i + 3] == 0xe8)
|
#define PATCH_OP_POS3 PATCH_OP_POS1
|
||||||
|
#define CODE_MATCH3 CODE_MATCH1
|
||||||
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#error "unsupported arch"
|
#error "unsupported arch"
|
||||||
@@ -173,7 +183,7 @@ static int notrace dmpatch_replace_code
|
|||||||
|
|
||||||
vdebug("patch for %s style[%d] 0x%lx %d\n", desc, style, addr, (int)size);
|
vdebug("patch for %s style[%d] 0x%lx %d\n", desc, style, addr, (int)size);
|
||||||
|
|
||||||
for (i = 0; i < (int)size - 4; i++)
|
for (i = 0; i < (int)size - 8; i++)
|
||||||
{
|
{
|
||||||
if (style == 1)
|
if (style == 1)
|
||||||
{
|
{
|
||||||
@@ -183,7 +193,7 @@ static int notrace dmpatch_replace_code
|
|||||||
cnt++;
|
cnt++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else if (style == 2)
|
||||||
{
|
{
|
||||||
if (CODE_MATCH2(opCode, i) && cnt < MAX_PATCH)
|
if (CODE_MATCH2(opCode, i) && cnt < MAX_PATCH)
|
||||||
{
|
{
|
||||||
@@ -191,7 +201,19 @@ static int notrace dmpatch_replace_code
|
|||||||
cnt++;
|
cnt++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (style == 3)
|
||||||
|
{
|
||||||
|
if (CODE_MATCH3(opCode, i) && cnt < MAX_PATCH)
|
||||||
|
{
|
||||||
|
patch[cnt] = opCode + i + PATCH_OP_POS3;
|
||||||
|
cnt++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (cnt != expect || cnt >= MAX_PATCH)
|
if (cnt != expect || cnt >= MAX_PATCH)
|
||||||
{
|
{
|
||||||
@@ -297,10 +319,17 @@ static int notrace dmpatch_init(void)
|
|||||||
r = dmpatch_replace_code(1, g_ko_param.sym_get_addr, g_ko_param.sym_get_size, 2, "dm_get_table_device", g_get_patch);
|
r = dmpatch_replace_code(1, g_ko_param.sym_get_addr, g_ko_param.sym_get_size, 2, "dm_get_table_device", g_get_patch);
|
||||||
if (r && g_ko_param.kv_major >= 5)
|
if (r && g_ko_param.kv_major >= 5)
|
||||||
{
|
{
|
||||||
vdebug("new patch dm_get_table_device...\n");
|
vdebug("new2 patch dm_get_table_device...\n");
|
||||||
r = dmpatch_replace_code(2, g_ko_param.sym_get_addr, g_ko_param.sym_get_size, 1, "dm_get_table_device", g_get_patch);
|
r = dmpatch_replace_code(2, g_ko_param.sym_get_addr, g_ko_param.sym_get_size, 1, "dm_get_table_device", g_get_patch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (r && g_ko_param.kv_major >= 5)
|
||||||
|
{
|
||||||
|
vdebug("new3 patch dm_get_table_device...\n");
|
||||||
|
r = dmpatch_replace_code(3, g_ko_param.sym_get_addr, g_ko_param.sym_get_size, 1, "dm_get_table_device", g_get_patch);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (r)
|
if (r)
|
||||||
{
|
{
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
|
@@ -1,10 +1,12 @@
|
|||||||
1. install ubuntu 21.10
|
1. install ubuntu 22.04 5.15.0-25
|
||||||
2. apt-get install build-essential flex libncurses-dev linux-headers-generic linux-source libssl-dev ...... and so on
|
2. apt-get install build-essential flex libncurses-dev linux-headers-generic linux-source libssl-dev bison yacc vim libelf-dev ...... and so on
|
||||||
3. cp /lib/modules/5.13.0-23-generic/build/Module.symvers ./
|
3. cp /lib/modules/5.15.0-25-generic/build/Module.symvers ./
|
||||||
4. /boot/config-5.13.0-23-generic as .config make oldconfig
|
4. /boot/config-5.15.0-25-generic as .config make oldconfig
|
||||||
5. make menuconfig
|
5. make menuconfig
|
||||||
1. close CONFIG_STACKPROTECTOR
|
1. close CONFIG_STACKPROTECTOR
|
||||||
2. close CONFIG_RETPOLINE
|
2. close CONFIG_RETPOLINE
|
||||||
|
3. close CONFIG_UBSAN_BOUNDS
|
||||||
|
4. close CONFIG_UBSAN_ENUM
|
||||||
|
|
||||||
6. modify ./scripts/mod/modpost.c
|
6. modify ./scripts/mod/modpost.c
|
||||||
1. skip add_srcversion (just return)
|
1. skip add_srcversion (just return)
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
FTPIP=168.0.0.209
|
FTPIP=192.168.44.1
|
||||||
FTPUSR='a:a'
|
FTPUSR='a:a'
|
||||||
|
|
||||||
rm -f dmpatch.c Makefile Makefile_IBT
|
rm -f dmpatch.c Makefile Makefile_IBT
|
||||||
@@ -27,7 +27,7 @@ mkdir ./aa
|
|||||||
cp -a *.c aa/
|
cp -a *.c aa/
|
||||||
cp -a Makefile aa/
|
cp -a Makefile aa/
|
||||||
|
|
||||||
cd /home/panda/linux-source-5.13.0
|
cd /home/panda/linux-source-5.15.0
|
||||||
make modules M=/home/panda/build/aa/
|
make modules M=/home/panda/build/aa/
|
||||||
strip --strip-debug /home/panda/build/aa/dm_patch.ko
|
strip --strip-debug /home/panda/build/aa/dm_patch.ko
|
||||||
cd -
|
cd -
|
||||||
@@ -43,7 +43,7 @@ mkdir ./aa
|
|||||||
cp -a *.c aa/
|
cp -a *.c aa/
|
||||||
cp -a Makefile_IBT aa/Makefile
|
cp -a Makefile_IBT aa/Makefile
|
||||||
|
|
||||||
cd /home/panda/linux-source-5.13.0
|
cd /home/panda/linux-source-5.15.0
|
||||||
make modules M=/home/panda/build/aa/
|
make modules M=/home/panda/build/aa/
|
||||||
strip --strip-debug /home/panda/build/aa/dm_patch_ibt.ko
|
strip --strip-debug /home/panda/build/aa/dm_patch_ibt.ko
|
||||||
cd -
|
cd -
|
||||||
|
@@ -5,7 +5,7 @@ use an old version of dmsetup
|
|||||||
http://vault.centos.org/5.3/os/SRPMS/device-mapper-1.02.28-2.el5.src.rpm
|
http://vault.centos.org/5.3/os/SRPMS/device-mapper-1.02.28-2.el5.src.rpm
|
||||||
https://www.fefe.de/dietlibc/dietlibc-0.34.tar.xz
|
https://www.fefe.de/dietlibc/dietlibc-0.34.tar.xz
|
||||||
|
|
||||||
======== Build Envrioment ========
|
======== Build Environment ========
|
||||||
build for 32bit, static linked with dietlibc
|
build for 32bit, static linked with dietlibc
|
||||||
1. install centos 6.10 i386 with CentOS-6.10-i386-bin-DVD1.iso
|
1. install centos 6.10 i386 with CentOS-6.10-i386-bin-DVD1.iso
|
||||||
2. yum install gcc kernel-devel package
|
2. yum install gcc kernel-devel package
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
==========================================
|
==========================================
|
||||||
1. Compile Enviroment
|
1. Compile Environment
|
||||||
==========================================
|
==========================================
|
||||||
My build envrioment is CentOS 7.8 x86_64. So here I first explain how to create the build environment from scratch.
|
My build environment is CentOS 7.8 x86_64. So here I first explain how to create the build environment from scratch.
|
||||||
Because Ventoy is based on many open source projects, so the environment is important. I suggest you test it on a virtual machine firstly.
|
Because Ventoy is based on many open source projects, so the environment is important. I suggest you test it on a virtual machine firstly.
|
||||||
|
|
||||||
1.1 Install CentOS 7.8
|
1.1 Install CentOS 7.8
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
mv /opt/output /opt/mips64el-linux-musl-gcc730
|
mv /opt/output /opt/mips64el-linux-musl-gcc730
|
||||||
|
|
||||||
|
|
||||||
2.4 Set PATH envrioment
|
2.4 Set PATH environment
|
||||||
export PATH=$PATH:/opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin:/opt/aarch64--uclibc--stable-2020.08-1/bin:/opt/mips64el-linux-musl-gcc730/bin
|
export PATH=$PATH:/opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin:/opt/aarch64--uclibc--stable-2020.08-1/bin:/opt/mips64el-linux-musl-gcc730/bin
|
||||||
better to add this line to /root/.bashrc and relogin as root
|
better to add this line to /root/.bashrc and relogin as root
|
||||||
|
|
||||||
|
@@ -889,6 +889,7 @@ grub_ntfs_mount (grub_disk_t disk)
|
|||||||
struct grub_ntfs_bpb bpb;
|
struct grub_ntfs_bpb bpb;
|
||||||
struct grub_ntfs_data *data = 0;
|
struct grub_ntfs_data *data = 0;
|
||||||
grub_uint32_t spc;
|
grub_uint32_t spc;
|
||||||
|
grub_uint32_t sectors_per_cluster;
|
||||||
|
|
||||||
if (!disk)
|
if (!disk)
|
||||||
goto fail;
|
goto fail;
|
||||||
@@ -903,14 +904,18 @@ grub_ntfs_mount (grub_disk_t disk)
|
|||||||
if (grub_disk_read (disk, 0, 0, sizeof (bpb), &bpb))
|
if (grub_disk_read (disk, 0, 0, sizeof (bpb), &bpb))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
sectors_per_cluster = bpb.sectors_per_cluster;
|
||||||
|
if (sectors_per_cluster > 0x80)
|
||||||
|
sectors_per_cluster = 1U << (256U - bpb.sectors_per_cluster);
|
||||||
|
|
||||||
if (grub_memcmp ((char *) &bpb.oem_name, "NTFS", 4) != 0
|
if (grub_memcmp ((char *) &bpb.oem_name, "NTFS", 4) != 0
|
||||||
|| bpb.sectors_per_cluster == 0
|
|| sectors_per_cluster == 0
|
||||||
|| (bpb.sectors_per_cluster & (bpb.sectors_per_cluster - 1)) != 0
|
|| (sectors_per_cluster & (sectors_per_cluster - 1)) != 0
|
||||||
|| bpb.bytes_per_sector == 0
|
|| bpb.bytes_per_sector == 0
|
||||||
|| (bpb.bytes_per_sector & (bpb.bytes_per_sector - 1)) != 0)
|
|| (bpb.bytes_per_sector & (bpb.bytes_per_sector - 1)) != 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
spc = (((grub_uint32_t) bpb.sectors_per_cluster
|
spc = (((grub_uint32_t) sectors_per_cluster
|
||||||
* (grub_uint32_t) grub_le_to_cpu16 (bpb.bytes_per_sector))
|
* (grub_uint32_t) grub_le_to_cpu16 (bpb.bytes_per_sector))
|
||||||
>> GRUB_NTFS_BLK_SHR);
|
>> GRUB_NTFS_BLK_SHR);
|
||||||
if (spc == 0)
|
if (spc == 0)
|
||||||
|
@@ -405,13 +405,6 @@ static grub_ssize_t zstd_decompress_wrap(char *inbuf, grub_size_t insize, grub_o
|
|||||||
{
|
{
|
||||||
char *udata = NULL;
|
char *udata = NULL;
|
||||||
int usize = data->blksz;
|
int usize = data->blksz;
|
||||||
|
|
||||||
if (off == 0)
|
|
||||||
{
|
|
||||||
ZSTD_decompress(outbuf, len, inbuf, insize);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (usize < 8192)
|
if (usize < 8192)
|
||||||
usize = 8192;
|
usize = 8192;
|
||||||
|
|
||||||
@@ -422,7 +415,6 @@ static grub_ssize_t zstd_decompress_wrap(char *inbuf, grub_size_t insize, grub_o
|
|||||||
ZSTD_decompress(udata, usize, inbuf, insize);
|
ZSTD_decompress(udata, usize, inbuf, insize);
|
||||||
grub_memcpy(outbuf, udata + off, len);
|
grub_memcpy(outbuf, udata + off, len);
|
||||||
grub_free(udata);
|
grub_free(udata);
|
||||||
}
|
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
@@ -551,7 +543,7 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,
|
|||||||
break;
|
break;
|
||||||
case grub_cpu_to_le16_compile_time (SQUASH_TYPE_LONG_DIR):
|
case grub_cpu_to_le16_compile_time (SQUASH_TYPE_LONG_DIR):
|
||||||
off = grub_le_to_cpu16 (dir->ino.long_dir.offset);
|
off = grub_le_to_cpu16 (dir->ino.long_dir.offset);
|
||||||
endoff = grub_le_to_cpu16 (dir->ino.long_dir.size) + off - 3;
|
endoff = grub_le_to_cpu32 (dir->ino.long_dir.size) + off - 3;
|
||||||
chunk = grub_le_to_cpu32 (dir->ino.long_dir.chunk);
|
chunk = grub_le_to_cpu32 (dir->ino.long_dir.chunk);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@@ -342,11 +342,13 @@ grub_file_read (grub_file_t file, void *buf, grub_size_t len)
|
|||||||
if (len == 0)
|
if (len == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (file->name) {
|
||||||
if (grub_strncmp(file->name, GRUB_MEMFILE_MEM, grub_strlen(GRUB_MEMFILE_MEM)) == 0) {
|
if (grub_strncmp(file->name, GRUB_MEMFILE_MEM, grub_strlen(GRUB_MEMFILE_MEM)) == 0) {
|
||||||
grub_memcpy(buf, (grub_uint8_t *)(file->data) + file->offset, len);
|
grub_memcpy(buf, (grub_uint8_t *)(file->data) + file->offset, len);
|
||||||
file->offset += len;
|
file->offset += len;
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
read_hook = file->read_hook;
|
read_hook = file->read_hook;
|
||||||
read_hook_data = file->read_hook_data;
|
read_hook_data = file->read_hook_data;
|
||||||
|
@@ -229,10 +229,7 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
|||||||
if (! file)
|
if (! file)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
/* Get the root device's device path. */
|
dev = file->device;
|
||||||
dev = grub_device_open (0);
|
|
||||||
if (! dev)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
if (dev->disk)
|
if (dev->disk)
|
||||||
dev_handle = grub_efidisk_get_device_handle (dev->disk);
|
dev_handle = grub_efidisk_get_device_handle (dev->disk);
|
||||||
@@ -257,15 +254,12 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
|||||||
if (dev_handle)
|
if (dev_handle)
|
||||||
dp = grub_efi_get_device_path (dev_handle);
|
dp = grub_efi_get_device_path (dev_handle);
|
||||||
|
|
||||||
if (! dp)
|
if (dp != NULL)
|
||||||
{
|
{
|
||||||
grub_error (GRUB_ERR_BAD_DEVICE, "not a valid root device");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
file_path = make_file_path (dp, filename);
|
file_path = make_file_path (dp, filename);
|
||||||
if (! file_path)
|
if (! file_path)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
//grub_printf ("file path: ");
|
//grub_printf ("file path: ");
|
||||||
//grub_efi_print_device_path (file_path);
|
//grub_efi_print_device_path (file_path);
|
||||||
@@ -390,16 +384,12 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
|||||||
}
|
}
|
||||||
|
|
||||||
grub_file_close (file);
|
grub_file_close (file);
|
||||||
grub_device_close (dev);
|
|
||||||
|
|
||||||
grub_loader_set (grub_chainloader_boot, grub_chainloader_unload, 0);
|
grub_loader_set (grub_chainloader_boot, grub_chainloader_unload, 0);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
|
||||||
if (dev)
|
|
||||||
grub_device_close (dev);
|
|
||||||
|
|
||||||
if (file)
|
if (file)
|
||||||
grub_file_close (file);
|
grub_file_close (file);
|
||||||
|
|
||||||
|
@@ -88,6 +88,8 @@ static int ventoy_linux_argc = 0;
|
|||||||
static char **ventoy_linux_args = NULL;
|
static char **ventoy_linux_args = NULL;
|
||||||
static int ventoy_extra_initrd_num = 0;
|
static int ventoy_extra_initrd_num = 0;
|
||||||
static char *ventoy_extra_initrd_list[256];
|
static char *ventoy_extra_initrd_list[256];
|
||||||
|
static grub_command_func_t ventoy_linux16_func = NULL;
|
||||||
|
static grub_command_func_t ventoy_initrd16_func = NULL;
|
||||||
static grub_err_t
|
static grub_err_t
|
||||||
grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)), int argc, char *argv[]);
|
grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)), int argc, char *argv[]);
|
||||||
|
|
||||||
@@ -667,54 +669,6 @@ static int ventoy_bootopt_hook(int argc, char *argv[])
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static grub_err_t
|
|
||||||
grub_cmd_set_boot_opt (grub_command_t cmd __attribute__ ((unused)),
|
|
||||||
int argc, char *argv[])
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
const char *vtdebug;
|
|
||||||
|
|
||||||
for (i = 0; i < argc; i++)
|
|
||||||
{
|
|
||||||
ventoy_linux_args[ventoy_linux_argc + (LINUX_MAX_ARGC / 2) ] = grub_strdup(argv[i]);
|
|
||||||
ventoy_linux_argc++;
|
|
||||||
}
|
|
||||||
|
|
||||||
vtdebug = grub_env_get("vtdebug_flag");
|
|
||||||
if (vtdebug && vtdebug[0])
|
|
||||||
{
|
|
||||||
ventoy_debug = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ventoy_debug) grub_printf("ventoy set boot opt %d\n", ventoy_linux_argc);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static grub_err_t
|
|
||||||
grub_cmd_unset_boot_opt (grub_command_t cmd __attribute__ ((unused)),
|
|
||||||
int argc, char *argv[])
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
(void)argc;
|
|
||||||
(void)argv;
|
|
||||||
|
|
||||||
for (i = 0; i < LINUX_MAX_ARGC; i++)
|
|
||||||
{
|
|
||||||
if (ventoy_linux_args[i])
|
|
||||||
{
|
|
||||||
grub_free(ventoy_linux_args[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ventoy_debug = 0;
|
|
||||||
ventoy_linux_argc = 0;
|
|
||||||
ventoy_initrd_called = 0;
|
|
||||||
grub_memset(ventoy_linux_args, 0, sizeof(char *) * LINUX_MAX_ARGC);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static grub_err_t
|
static grub_err_t
|
||||||
grub_cmd_extra_initrd_append (grub_command_t cmd __attribute__ ((unused)),
|
grub_cmd_extra_initrd_append (grub_command_t cmd __attribute__ ((unused)),
|
||||||
int argc, char *argv[])
|
int argc, char *argv[])
|
||||||
@@ -1576,6 +1530,92 @@ ventoy_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
|
|||||||
return grub_cmd_initrd(cmd, ventoy_extra_initrd_num, ventoy_extra_initrd_list);
|
return grub_cmd_initrd(cmd, ventoy_extra_initrd_num, ventoy_extra_initrd_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_cmd_set_boot_opt (grub_command_t cmd __attribute__ ((unused)),
|
||||||
|
int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
const char *vtdebug;
|
||||||
|
grub_command_t regcmd;
|
||||||
|
|
||||||
|
for (i = 0; i < argc; i++)
|
||||||
|
{
|
||||||
|
ventoy_linux_args[ventoy_linux_argc + (LINUX_MAX_ARGC / 2) ] = grub_strdup(argv[i]);
|
||||||
|
ventoy_linux_argc++;
|
||||||
|
}
|
||||||
|
|
||||||
|
vtdebug = grub_env_get("vtdebug_flag");
|
||||||
|
if (vtdebug && vtdebug[0])
|
||||||
|
{
|
||||||
|
ventoy_debug = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ventoy_debug) grub_printf("ventoy set boot opt %d\n", ventoy_linux_argc);
|
||||||
|
|
||||||
|
ventoy_linux16_func = ventoy_initrd16_func = NULL;
|
||||||
|
regcmd = grub_command_find("linux16");
|
||||||
|
if (regcmd)
|
||||||
|
{
|
||||||
|
ventoy_linux16_func = regcmd->func;
|
||||||
|
regcmd->func = grub_cmd_linux;
|
||||||
|
}
|
||||||
|
|
||||||
|
regcmd = grub_command_find("initrd16");
|
||||||
|
if (regcmd)
|
||||||
|
{
|
||||||
|
ventoy_initrd16_func = regcmd->func;
|
||||||
|
regcmd->func = ventoy_cmd_initrd;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_cmd_unset_boot_opt (grub_command_t cmd __attribute__ ((unused)),
|
||||||
|
int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
grub_command_t regcmd;
|
||||||
|
|
||||||
|
(void)argc;
|
||||||
|
(void)argv;
|
||||||
|
|
||||||
|
for (i = 0; i < LINUX_MAX_ARGC; i++)
|
||||||
|
{
|
||||||
|
if (ventoy_linux_args[i])
|
||||||
|
{
|
||||||
|
grub_free(ventoy_linux_args[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ventoy_debug = 0;
|
||||||
|
ventoy_linux_argc = 0;
|
||||||
|
ventoy_initrd_called = 0;
|
||||||
|
grub_memset(ventoy_linux_args, 0, sizeof(char *) * LINUX_MAX_ARGC);
|
||||||
|
|
||||||
|
if (ventoy_linux16_func)
|
||||||
|
{
|
||||||
|
regcmd = grub_command_find("linux16");
|
||||||
|
if (regcmd)
|
||||||
|
{
|
||||||
|
regcmd->func = ventoy_linux16_func;
|
||||||
|
}
|
||||||
|
ventoy_linux16_func = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ventoy_initrd16_func)
|
||||||
|
{
|
||||||
|
regcmd = grub_command_find("initrd16");
|
||||||
|
if (regcmd)
|
||||||
|
{
|
||||||
|
regcmd->func = ventoy_initrd16_func;
|
||||||
|
}
|
||||||
|
ventoy_initrd16_func = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static grub_command_t cmd_linux, cmd_initrd, cmd_linuxefi, cmd_initrdefi;
|
static grub_command_t cmd_linux, cmd_initrd, cmd_linuxefi, cmd_initrdefi;
|
||||||
static grub_command_t cmd_set_bootopt, cmd_unset_bootopt, cmd_extra_initrd_append, cmd_extra_initrd_reset;
|
static grub_command_t cmd_set_bootopt, cmd_unset_bootopt, cmd_extra_initrd_append, cmd_extra_initrd_reset;
|
||||||
|
@@ -1099,6 +1099,7 @@ static grub_err_t ventoy_linux_locate_initrd(int filt, int *filtcnt)
|
|||||||
if (filtbysize
|
if (filtbysize
|
||||||
&& (NULL == grub_strstr(node->name, "minirt.gz"))
|
&& (NULL == grub_strstr(node->name, "minirt.gz"))
|
||||||
&& (NULL == grub_strstr(node->name, "initrd.xz"))
|
&& (NULL == grub_strstr(node->name, "initrd.xz"))
|
||||||
|
&& (NULL == grub_strstr(node->name, "initrd.gz"))
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (filt > 0 && file->size <= g_ventoy_cpio_size + 2048)
|
if (filt > 0 && file->size <= g_ventoy_cpio_size + 2048)
|
||||||
|
@@ -40,13 +40,13 @@ ventoy_os_install_dmsetup_by_unsquashfs() {
|
|||||||
|
|
||||||
dmModPath="/usr/lib/modules/$vtKerVer/kernel/drivers/md/dm-mod.$vtKoPo"
|
dmModPath="/usr/lib/modules/$vtKerVer/kernel/drivers/md/dm-mod.$vtKoPo"
|
||||||
echo $dmModPath > $VTOY_PATH/fsextract
|
echo $dmModPath > $VTOY_PATH/fsextract
|
||||||
vtoy_unsquashfs -d $VTOY_PATH/sqfs -n -q -e $VTOY_PATH/fsextract $VTOY_PATH/fsdisk
|
vtoy_unsquashfs -d $VTOY_PATH/sqfs -n -q -e $VTOY_PATH/fsextract $VTOY_PATH/fsdisk 2>>$VTLOG
|
||||||
|
|
||||||
if ! [ -e $VTOY_PATH/sqfs${dmModPath} ]; then
|
if ! [ -e $VTOY_PATH/sqfs${dmModPath} ]; then
|
||||||
rm -rf $VTOY_PATH/sqfs
|
rm -rf $VTOY_PATH/sqfs
|
||||||
dmModPath="/lib/modules/$vtKerVer/kernel/drivers/md/dm-mod.$vtKoPo"
|
dmModPath="/lib/modules/$vtKerVer/kernel/drivers/md/dm-mod.$vtKoPo"
|
||||||
echo $dmModPath > $VTOY_PATH/fsextract
|
echo $dmModPath > $VTOY_PATH/fsextract
|
||||||
vtoy_unsquashfs -d $VTOY_PATH/sqfs -n -q -e $VTOY_PATH/fsextract $VTOY_PATH/fsdisk
|
vtoy_unsquashfs -d $VTOY_PATH/sqfs -n -q -e $VTOY_PATH/fsextract $VTOY_PATH/fsdisk 2>>$VTLOG
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -e $VTOY_PATH/sqfs${dmModPath} ]; then
|
if [ -e $VTOY_PATH/sqfs${dmModPath} ]; then
|
||||||
|
@@ -37,12 +37,20 @@ ventoy_os_install_dmsetup_by_fuse() {
|
|||||||
|
|
||||||
mount -t iso9660 $VTOY_PATH/mnt/fuse/ventoy.iso $VTOY_PATH/mnt/iso
|
mount -t iso9660 $VTOY_PATH/mnt/fuse/ventoy.iso $VTOY_PATH/mnt/iso
|
||||||
|
|
||||||
|
if ls $VTOY_PATH/mnt/iso/zdrv_*.sfs 2>/dev/null; then
|
||||||
|
sfsfile=$(ls $VTOY_PATH/mnt/iso/zdrv_*.sfs)
|
||||||
|
else
|
||||||
sfsfile=$(ls $VTOY_PATH/mnt/iso/*.sfs)
|
sfsfile=$(ls $VTOY_PATH/mnt/iso/*.sfs)
|
||||||
|
fi
|
||||||
|
|
||||||
mount -t squashfs $sfsfile $VTOY_PATH/mnt/squashfs
|
mount -t squashfs $sfsfile $VTOY_PATH/mnt/squashfs
|
||||||
|
|
||||||
kVer=$(uname -r)
|
kVer=$(uname -r)
|
||||||
KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$kVer/kernel/drivers/md/dm-mod.ko*)
|
KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$kVer/kernel/drivers/md/dm-mod.ko*)
|
||||||
|
if [ -z "$KoName" ]; then
|
||||||
|
KoName=$(ls $VTOY_PATH/mnt/squashfs/usr/lib/modules/$kVer/kernel/drivers/md/dm-mod.ko*)
|
||||||
|
fi
|
||||||
|
|
||||||
vtlog "insmod $KoName"
|
vtlog "insmod $KoName"
|
||||||
insmod $KoName
|
insmod $KoName
|
||||||
|
|
||||||
|
@@ -28,6 +28,7 @@ vtlog "####### $0 $* ########"
|
|||||||
VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
|
VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
|
||||||
|
|
||||||
ventoy_os_install_dmsetup_by_fuse() {
|
ventoy_os_install_dmsetup_by_fuse() {
|
||||||
|
local drvdir=""
|
||||||
vtlog "ventoy_os_install_dmsetup_by_fuse $*"
|
vtlog "ventoy_os_install_dmsetup_by_fuse $*"
|
||||||
|
|
||||||
mkdir -p $VTOY_PATH/mnt/fuse $VTOY_PATH/mnt/iso $VTOY_PATH/mnt/squashfs
|
mkdir -p $VTOY_PATH/mnt/fuse $VTOY_PATH/mnt/iso $VTOY_PATH/mnt/squashfs
|
||||||
@@ -37,11 +38,13 @@ ventoy_os_install_dmsetup_by_fuse() {
|
|||||||
|
|
||||||
mount -t iso9660 $VTOY_PATH/mnt/fuse/ventoy.iso $VTOY_PATH/mnt/iso
|
mount -t iso9660 $VTOY_PATH/mnt/fuse/ventoy.iso $VTOY_PATH/mnt/iso
|
||||||
|
|
||||||
|
|
||||||
for sfsfile in $(ls $VTOY_PATH/mnt/iso/*drv_veket*.sfs); do
|
for sfsfile in $(ls $VTOY_PATH/mnt/iso/*drv_veket*.sfs); do
|
||||||
mount -t squashfs $sfsfile $VTOY_PATH/mnt/squashfs
|
mount -t squashfs $sfsfile $VTOY_PATH/mnt/squashfs
|
||||||
if [ -d $VTOY_PATH/mnt/squashfs/lib/modules ]; then
|
if [ -d $VTOY_PATH/mnt/squashfs/lib/modules ]; then
|
||||||
KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$2/kernel/drivers/md/dm-mod.ko*)
|
KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$2/kernel/drivers/md/dm-mod.ko*)
|
||||||
if [ -n "$KoName" -a -f $KoName ]; then
|
if [ -n "$KoName" -a -f $KoName ]; then
|
||||||
|
drvdir=$VTOY_PATH/mnt/squashfs/lib/modules/$2
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -49,11 +52,29 @@ ventoy_os_install_dmsetup_by_fuse() {
|
|||||||
umount $VTOY_PATH/mnt/squashfs
|
umount $VTOY_PATH/mnt/squashfs
|
||||||
done
|
done
|
||||||
|
|
||||||
KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$2/kernel/drivers/dax/dax.ko*)
|
|
||||||
|
if [ -z "$drvdir" ]; then
|
||||||
|
vtlog "retry for usr/lib dir"
|
||||||
|
for sfsfile in $(ls $VTOY_PATH/mnt/iso/*drv_veket*.sfs); do
|
||||||
|
mount -t squashfs $sfsfile $VTOY_PATH/mnt/squashfs
|
||||||
|
if [ -d $VTOY_PATH/mnt/squashfs/usr/lib/modules ]; then
|
||||||
|
KoName=$(ls $VTOY_PATH/mnt/squashfs/usr/lib/modules/$2/kernel/drivers/md/dm-mod.ko*)
|
||||||
|
if [ -n "$KoName" -a -f $KoName ]; then
|
||||||
|
drvdir=$VTOY_PATH/mnt/squashfs/usr/lib/modules/$2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
umount $VTOY_PATH/mnt/squashfs
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
KoName=$(ls $drvdir/kernel/drivers/dax/dax.ko*)
|
||||||
vtlog "insmod $KoName"
|
vtlog "insmod $KoName"
|
||||||
insmod $KoName
|
insmod $KoName
|
||||||
|
|
||||||
KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$2/kernel/drivers/md/dm-mod.ko*)
|
KoName=$(ls $drvdir/kernel/drivers/md/dm-mod.ko*)
|
||||||
vtlog "insmod $KoName"
|
vtlog "insmod $KoName"
|
||||||
insmod $KoName
|
insmod $KoName
|
||||||
|
|
||||||
|
@@ -26,6 +26,10 @@ ventoy_get_debian_distro() {
|
|||||||
if $EGREP -q "ID=.*antix|ID=.*mx" /etc/initrd-release; then
|
if $EGREP -q "ID=.*antix|ID=.*mx" /etc/initrd-release; then
|
||||||
echo 'antix'; return
|
echo 'antix'; return
|
||||||
fi
|
fi
|
||||||
|
elif [ -e /etc/initrd_release ]; then
|
||||||
|
if $EGREP -q "ID=.*antix|ID=.*mx" /etc/initrd_release; then
|
||||||
|
echo 'antix'; return
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -e /DISTRO_SPECS ]; then
|
if [ -e /DISTRO_SPECS ]; then
|
||||||
|
40
IMG/cpio/ventoy/hook/deepin/disk_mount_hook.sh
Normal file
40
IMG/cpio/ventoy/hook/deepin/disk_mount_hook.sh
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
#!/ventoy/busybox/sh
|
||||||
|
#************************************************************************************
|
||||||
|
# Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License as
|
||||||
|
# published by the Free Software Foundation; either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
#************************************************************************************
|
||||||
|
|
||||||
|
. /ventoy/hook/ventoy-hook-lib.sh
|
||||||
|
|
||||||
|
vtlog "####### $0 $* ########"
|
||||||
|
|
||||||
|
VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
|
||||||
|
|
||||||
|
wait_for_usb_disk_ready
|
||||||
|
|
||||||
|
vtdiskname=$(get_ventoy_disk_name)
|
||||||
|
if [ "$vtdiskname" = "unknown" ]; then
|
||||||
|
vtlog "ventoy disk not found"
|
||||||
|
PATH=$VTPATH_OLD
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
vtlog "${vtdiskname#/dev/}2 found..."
|
||||||
|
$BUSYBOX_PATH/sh $VTOY_PATH/hook/debian/udev_disk_hook.sh "${vtdiskname#/dev/}2"
|
||||||
|
|
||||||
|
if [ -f /ventoy/autoinstall ]; then
|
||||||
|
sh /ventoy/hook/default/auto_install_varexp.sh /ventoy/autoinstall
|
||||||
|
fi
|
151
IMG/cpio/ventoy/hook/deepin/udev_disk_hook.sh
Normal file
151
IMG/cpio/ventoy/hook/deepin/udev_disk_hook.sh
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
#!/ventoy/busybox/sh
|
||||||
|
#************************************************************************************
|
||||||
|
# Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License as
|
||||||
|
# published by the Free Software Foundation; either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
#************************************************************************************
|
||||||
|
|
||||||
|
. /ventoy/hook/ventoy-hook-lib.sh
|
||||||
|
|
||||||
|
ventoy_os_install_dmsetup() {
|
||||||
|
|
||||||
|
vtlog "ventoy_os_install_dmsetup $1 ..."
|
||||||
|
|
||||||
|
vt_usb_disk=$1
|
||||||
|
|
||||||
|
# dump iso file location
|
||||||
|
$VTOY_PATH/tool/vtoydm -i -f $VTOY_PATH/ventoy_image_map -d ${vt_usb_disk} > $VTOY_PATH/iso_file_list
|
||||||
|
|
||||||
|
# install dmsetup
|
||||||
|
LINE=$($GREP ' dmsetup.*\.udeb' $VTOY_PATH/iso_file_list)
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
install_udeb_from_line "$LINE" ${vt_usb_disk}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# install libdevmapper
|
||||||
|
LINE=$($GREP ' libdevmapper.*\.udeb' $VTOY_PATH/iso_file_list)
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
install_udeb_from_line "$LINE" ${vt_usb_disk}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# install md-modules
|
||||||
|
LINE=$($GREP -i ' md-modules.*\.udeb' $VTOY_PATH/iso_file_list)
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
LINTCNT=$($GREP -i -c ' md-modules.*\.udeb' $VTOY_PATH/iso_file_list)
|
||||||
|
if [ $LINTCNT -gt 1 ]; then
|
||||||
|
vtlog "more than one pkgs, need to filter..."
|
||||||
|
VER=$($BUSYBOX_PATH/uname -r)
|
||||||
|
|
||||||
|
LINE=$($GREP -i ' md-modules.*\.udeb' $VTOY_PATH/iso_file_list | $GREP -i $VER)
|
||||||
|
LINTCNT=$($GREP -i ' md-modules.*\.udeb' $VTOY_PATH/iso_file_list | $GREP -i -c $VER)
|
||||||
|
if [ $LINTCNT -gt 1 ]; then
|
||||||
|
vtlog "Still more than one pkgs, use the first one..."
|
||||||
|
LINE=$($GREP -i ' md-modules.*\.udeb' $VTOY_PATH/iso_file_list | $GREP -i -m1 $VER)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
install_udeb_from_line "$LINE" ${vt_usb_disk}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# insmod md-mod if needed
|
||||||
|
if $GREP -q 'device-mapper' /proc/devices; then
|
||||||
|
vtlog "device mapper module is loaded"
|
||||||
|
else
|
||||||
|
vtlog "device mapper module is NOT loaded, now load it..."
|
||||||
|
|
||||||
|
VER=$($BUSYBOX_PATH/uname -r)
|
||||||
|
KO=$($FIND /lib/modules/$VER/kernel/drivers/md -name "dm-mod*")
|
||||||
|
vtlog "KO=$KO"
|
||||||
|
|
||||||
|
insmod $KO
|
||||||
|
fi
|
||||||
|
|
||||||
|
vtlog "dmsetup install finish, now check it..."
|
||||||
|
if dmsetup info >> $VTLOG 2>&1; then
|
||||||
|
vtlog "dmsetup work ok"
|
||||||
|
else
|
||||||
|
vtlog "dmsetup not work, now try to load eglibc ..."
|
||||||
|
|
||||||
|
# install eglibc (some ubuntu 32 bit version need it)
|
||||||
|
LINE=$($GREP 'libc6-.*\.udeb' $VTOY_PATH/iso_file_list)
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
install_udeb_from_line "$LINE" ${vt_usb_disk}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if dmsetup info >> $VTLOG 2>&1; then
|
||||||
|
vtlog "dmsetup work ok after retry"
|
||||||
|
else
|
||||||
|
vtlog "dmsetup still not work after retry"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if is_ventoy_hook_finished || not_ventoy_disk "${1:0:-1}"; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
vtlog "==== $0 $* ===="
|
||||||
|
|
||||||
|
dmsetup_path=$(ventoy_find_bin_path dmsetup)
|
||||||
|
if [ -z "$dmsetup_path" ]; then
|
||||||
|
ventoy_os_install_dmsetup "/dev/${1:0:-1}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $GREP -q 'device-mapper' /proc/devices; then
|
||||||
|
ventoy_os_install_dmsetup "/dev/${1:0:-1}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ventoy_udev_disk_common_hook $*
|
||||||
|
|
||||||
|
#
|
||||||
|
# Some distro default only accept usb partitions as install medium.
|
||||||
|
# So if ventoy is installed on a non-USB device, we just mount /cdrom here except
|
||||||
|
# for these has boot=live or boot=casper parameter in cmdline
|
||||||
|
#
|
||||||
|
VT_BUS_USB=""
|
||||||
|
if [ -n "$ID_BUS" ]; then
|
||||||
|
if echo $ID_BUS | $GREP -q -i usb; then
|
||||||
|
VT_BUS_USB="YES"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if $BUSYBOX_PATH/ls -l /sys/class/block/${1:0:-1} | $GREP -q -i usb; then
|
||||||
|
VT_BUS_USB="YES"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$VT_BUS_USB" ]; then
|
||||||
|
vtlog "$1 is USB device"
|
||||||
|
echo /dev/$1 > /ventoy/list-devices-usb-part
|
||||||
|
else
|
||||||
|
vtlog "$1 is NOT USB device (bus $ID_BUS)"
|
||||||
|
|
||||||
|
if $EGREP -q 'boot=|casper' /proc/cmdline; then
|
||||||
|
vtlog "boot=, or casper, don't mount"
|
||||||
|
else
|
||||||
|
vtlog "No boot param, need to mount"
|
||||||
|
echo /dev/$1 > /ventoy/list-devices-usb-part
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
#special process for Linx
|
||||||
|
if $BUSYBOX_PATH/uname -r | $GREP -q "^2\.6"; then
|
||||||
|
if $GREP -q "linx" /proc/version; then
|
||||||
|
blkdev_num=$($VTOY_PATH/tool/dmsetup ls | $GREP ventoy | $SED 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/')
|
||||||
|
vtDM=$(ventoy_find_dm_id ${blkdev_num})
|
||||||
|
echo "/dev/$vtDM" > /ventoy/list-devices-usb-part
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# OK finish
|
||||||
|
set_ventoy_hook_finish
|
42
IMG/cpio/ventoy/hook/deepin/ventoy-hook.sh
Normal file
42
IMG/cpio/ventoy/hook/deepin/ventoy-hook.sh
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
#!/ventoy/busybox/sh
|
||||||
|
#************************************************************************************
|
||||||
|
# Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License as
|
||||||
|
# published by the Free Software Foundation; either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
#************************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
if [ -e /init ] && $GREP -q '^mountroot$' /init; then
|
||||||
|
echo "Here before mountroot ..." >> $VTLOG
|
||||||
|
|
||||||
|
$SED "/^mountroot$/i\\$BUSYBOX_PATH/sh $VTOY_PATH/hook/deepin/disk_mount_hook.sh" -i /init
|
||||||
|
$SED "/^mountroot$/i\\export LIVEMEDIA=/dev/mapper/ventoy" -i /init
|
||||||
|
$SED "/^mountroot$/i\\export LIVE_MEDIA=/dev/mapper/ventoy" -i /init
|
||||||
|
|
||||||
|
if $GREP -q 'live-media=' /proc/cmdline; then
|
||||||
|
if [ -f /scripts/casper ] && $GREP -q '^ *LIVEMEDIA=' /scripts/casper; then
|
||||||
|
$SED "s#^ *LIVEMEDIA=.*#LIVEMEDIA=/dev/mapper/ventoy#" -i /scripts/casper
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Here use udev hook ..." >> $VTLOG
|
||||||
|
ventoy_systemd_udevd_work_around
|
||||||
|
ventoy_add_udev_rule "$VTOY_PATH/hook/deepin/udev_disk_hook.sh %k"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f $VTOY_PATH/autoinstall ]; then
|
||||||
|
echo "Do auto install ..." >> $VTLOG
|
||||||
|
$SED '/maybe_break[[:space:]]*init/i\/ventoy/busybox/sh /ventoy/hook/deepin/ventoy_autoinstall.sh >>/ventoy/autoinstall.log 2>&1' -i /init
|
||||||
|
fi
|
122
IMG/cpio/ventoy/hook/deepin/ventoy_autoinstall.sh
Normal file
122
IMG/cpio/ventoy/hook/deepin/ventoy_autoinstall.sh
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
#!/ventoy/busybox/sh
|
||||||
|
|
||||||
|
. /ventoy/hook/ventoy_hook_lib.sh
|
||||||
|
|
||||||
|
change_var_value() {
|
||||||
|
local vfile=$1
|
||||||
|
local vkey=$2
|
||||||
|
local vVal=$3
|
||||||
|
local quote=$4
|
||||||
|
local vline
|
||||||
|
|
||||||
|
if [ $quote -eq 0 ]; then
|
||||||
|
vline="$vkey = $vVal"
|
||||||
|
else
|
||||||
|
vline="$vkey = \"$vVal\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if grep -q -m1 "^$vkey[[:space:]]*=" $vfile; then
|
||||||
|
sed "s#^$vkey[[:space:]]*=.*#$vline#g" -i $vfile
|
||||||
|
else
|
||||||
|
echo "$vline" >> $vfile
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
setting_script_process() {
|
||||||
|
local sfile=$1
|
||||||
|
local vItem
|
||||||
|
local vB64Item
|
||||||
|
|
||||||
|
vItem=$(grep '^language[[:space:]]*=' /ventoy/autoinstall | awk '{print $3}')
|
||||||
|
if [ -n "$vItem" ]; then
|
||||||
|
change_var_value $sfile 'select_language_default_locale' "$vItem" 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
vItem=$(grep '^timezone[[:space:]]*=' /ventoy/autoinstall | awk '{print $3}')
|
||||||
|
if [ -n "$vItem" ]; then
|
||||||
|
change_var_value $sfile 'timezone_default' "$vItem" 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
vItem=$(grep '^hostname[[:space:]]*=' /ventoy/autoinstall | awk '{print $3}')
|
||||||
|
if [ -n "$vItem" ]; then
|
||||||
|
change_var_value $sfile 'system_info_default_hostname' "$vItem" 1
|
||||||
|
change_var_value $sfile 'DI_HOSTNAME' "$vItem" 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
vItem=$(grep '^root_password[[:space:]]*=' /ventoy/autoinstall | awk '{print $3}')
|
||||||
|
if [ -n "$vItem" ]; then
|
||||||
|
vB64Item=$(echo -n "$vItem" | base64)
|
||||||
|
change_var_value $sfile 'system_info_default_root_password' "$vB64Item" 1
|
||||||
|
change_var_value $sfile 'DI_ROOTPASSWORD' "$vB64Item" 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
vItem=$(grep '^default_username[[:space:]]*=' /ventoy/autoinstall | awk '{print $3}')
|
||||||
|
if [ -n "$vItem" ]; then
|
||||||
|
change_var_value $sfile 'system_info_default_username' "$vItem" 1
|
||||||
|
change_var_value $sfile 'DI_USERNAME' "$vItem" 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
vItem=$(grep '^default_password[[:space:]]*=' /ventoy/autoinstall | awk '{print $3}')
|
||||||
|
if [ -n "$vItem" ]; then
|
||||||
|
change_var_value $sfile 'system_info_default_password' "$vItem" 1
|
||||||
|
change_var_value $sfile 'DI_PASSWORD' "$vItem" 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
vItem=$(grep '^install_disk[[:space:]]*=' /ventoy/autoinstall | awk '{print $3}')
|
||||||
|
if [ -n "$vItem" ]; then
|
||||||
|
echo "DI_FULLDISK_MULTIDISK_DEVICE = $vItem" >> $sfile
|
||||||
|
echo "DI_ROOTDISK = $vItem" >> $sfile
|
||||||
|
echo "DI_BOOTLOADER = $vItem" >> $sfile
|
||||||
|
fi
|
||||||
|
|
||||||
|
change_var_value $sfile 'skip_virtual_machine_page' 'true' 0
|
||||||
|
change_var_value $sfile 'skip_select_language_page' 'true' 0
|
||||||
|
change_var_value $sfile 'skip_select_language_page_on_first_boot' 'true' 0
|
||||||
|
change_var_value $sfile 'skip_system_keyboard_page' 'true' 0
|
||||||
|
change_var_value $sfile 'skip_system_info_page' 'true' 0
|
||||||
|
change_var_value $sfile 'skip_qr_code_system_info_page' 'true' 0
|
||||||
|
change_var_value $sfile 'skip_timezone_page' 'true' 0
|
||||||
|
change_var_value $sfile 'skip_partition_page' 'true' 0
|
||||||
|
change_var_value $sfile 'system_info_password_validate_required' '0' 0
|
||||||
|
change_var_value $sfile 'system_info_password_strong_check' 'false' 0
|
||||||
|
change_var_value $sfile 'partition_do_auto_part' 'true' 0
|
||||||
|
change_var_value $sfile 'system_info_disable_license' 'true' 0
|
||||||
|
change_var_value $sfile 'system_info_disable_experience' 'true' 0
|
||||||
|
change_var_value $sfile 'system_info_disable_privacy_license' 'true' 0
|
||||||
|
|
||||||
|
#filesystem.squashfs search ini
|
||||||
|
#first_page_state=0,表示不跳过首页,展示首页让用户自己选择
|
||||||
|
#first_page_state=1,表示跳过首页,并且自动点击一键安装
|
||||||
|
#first_page_state=2,表示跳过首页,并且自动点击自定义安装
|
||||||
|
#first_page_state=3,表示跳过首页,并且直接以全盘安装方式自动安装
|
||||||
|
change_var_value $sfile 'first_page_state' '3' 0
|
||||||
|
}
|
||||||
|
|
||||||
|
update_settings() {
|
||||||
|
local script=$1
|
||||||
|
local newscript
|
||||||
|
|
||||||
|
echo "update_settings for $script ..."
|
||||||
|
|
||||||
|
newscript=$(basename $script)
|
||||||
|
cp -a $script /ventoy/vini_${newscript}
|
||||||
|
setting_script_process /ventoy/vini_${newscript}
|
||||||
|
|
||||||
|
rm -f $script
|
||||||
|
cp -a /ventoy/vini_${newscript} $script
|
||||||
|
}
|
||||||
|
|
||||||
|
sh /ventoy/hook/common/auto_install_varexp.sh /ventoy/autoinstall
|
||||||
|
|
||||||
|
update_settings /root/usr/share/deepin-installer/resources/default_settings.ini
|
||||||
|
|
||||||
|
ls -1 /root/usr/share/deepin-installer/resources/override/ | while read line; do
|
||||||
|
update_settings /root/usr/share/deepin-installer/resources/override/$line
|
||||||
|
done
|
||||||
|
|
||||||
|
ls -1 /root/usr/share/deepin-installer/resources/oem/ | while read line; do
|
||||||
|
update_settings /root/usr/share/deepin-installer/resources/oem/$line
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
|
@@ -125,6 +125,7 @@ fi
|
|||||||
|
|
||||||
#iso-scan (currently only for Fedora)
|
#iso-scan (currently only for Fedora)
|
||||||
if $GREP -q Fedora /etc/os-release; then
|
if $GREP -q Fedora /etc/os-release; then
|
||||||
|
if /ventoy/tool/vtoydump -a /ventoy/ventoy_os_param; then
|
||||||
if ventoy_iso_scan_check; then
|
if ventoy_iso_scan_check; then
|
||||||
echo "iso_scan process ..." >> $VTLOG
|
echo "iso_scan process ..." >> $VTLOG
|
||||||
|
|
||||||
@@ -140,6 +141,7 @@ if $GREP -q Fedora /etc/os-release; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
echo "common process ..." >> $VTLOG
|
echo "common process ..." >> $VTLOG
|
||||||
|
@@ -54,6 +54,21 @@ if [ -z "$dmsetup_path" ]; then
|
|||||||
ventoy_os_install_dmsetup "/dev/${1:0:-1}"
|
ventoy_os_install_dmsetup "/dev/${1:0:-1}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -f /proc/devices ]; then
|
||||||
|
vtlog "/proc/devices exist OK"
|
||||||
|
else
|
||||||
|
for i in 1 2 3 4 5 6 7 8 9; do
|
||||||
|
if [ -f /proc/devices ]; then
|
||||||
|
vtlog "/proc/devices exist OK now"
|
||||||
|
break
|
||||||
|
else
|
||||||
|
vtlog "/proc/devices NOT exist, wait $i"
|
||||||
|
$BUSYBOX_PATH/sleep 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
ventoy_udev_disk_common_hook $*
|
ventoy_udev_disk_common_hook $*
|
||||||
|
|
||||||
# OK finish
|
# OK finish
|
||||||
|
@@ -209,8 +209,17 @@ ventoy_check_dm_module() {
|
|||||||
vtlog "modprobe failed, now try to insmod ko..."
|
vtlog "modprobe failed, now try to insmod ko..."
|
||||||
|
|
||||||
$FIND /lib/modules/ -name "dm-mod.ko*" | while read vtline; do
|
$FIND /lib/modules/ -name "dm-mod.ko*" | while read vtline; do
|
||||||
vtlog "insmode $vtline "
|
vtlog "insmod $vtline "
|
||||||
$BUSYBOX_PATH/insmod $vtline >>$VTLOG 2>&1
|
$BUSYBOX_PATH/insmod $vtline >>$VTLOG 2>&1
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
vtlog "insmod success"
|
||||||
|
else
|
||||||
|
vtlog "insmod failed, try decompress"
|
||||||
|
if echo $vtline | $GREP -q "\.zst"; then
|
||||||
|
$VTOY_PATH/tool/zstdcat $vtline > $VTOY_PATH/extract_dm_mod.ko
|
||||||
|
$BUSYBOX_PATH/insmod $VTOY_PATH/extract_dm_mod.ko >>$VTLOG 2>&1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -292,6 +301,7 @@ ventoy_need_dm_patch() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ventoy_dm_patch() {
|
ventoy_dm_patch() {
|
||||||
|
vtDmPatchDebug=0
|
||||||
vtMType=$($BUSYBOX_PATH/uname -m)
|
vtMType=$($BUSYBOX_PATH/uname -m)
|
||||||
|
|
||||||
vtlog "######### ventoy_dm_patch ############"
|
vtlog "######### ventoy_dm_patch ############"
|
||||||
@@ -350,6 +360,15 @@ ventoy_dm_patch() {
|
|||||||
kprobe_unreg_addr=$($GREP ' unregister_kprobe$' /proc/kallsyms | $AWK '{print $1}')
|
kprobe_unreg_addr=$($GREP ' unregister_kprobe$' /proc/kallsyms | $AWK '{print $1}')
|
||||||
|
|
||||||
if [ "$VTOY_DEBUG_LEVEL" = "01" ]; then
|
if [ "$VTOY_DEBUG_LEVEL" = "01" ]; then
|
||||||
|
vtDmPatchDebug=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $GREP -q 'dmpatch_debug' /proc/cmdline; then
|
||||||
|
vtDmPatchDebug=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $vtDmPatchDebug -eq 1 ]; then
|
||||||
printk_addr=$($GREP ' printk$' /proc/kallsyms | $AWK '{print $1}')
|
printk_addr=$($GREP ' printk$' /proc/kallsyms | $AWK '{print $1}')
|
||||||
if [ -z "$printk_addr" ]; then
|
if [ -z "$printk_addr" ]; then
|
||||||
printk_addr=$($GREP ' _printk$' /proc/kallsyms | $AWK '{print $1}')
|
printk_addr=$($GREP ' _printk$' /proc/kallsyms | $AWK '{print $1}')
|
||||||
@@ -384,12 +403,15 @@ ventoy_dm_patch() {
|
|||||||
return
|
return
|
||||||
elif [ -d /lib/modules/$vtKv/kernel/fs ]; then
|
elif [ -d /lib/modules/$vtKv/kernel/fs ]; then
|
||||||
vtModPath=$($FIND /lib/modules/$vtKv/kernel/fs/ -name "*.ko*" | $HEAD -n1)
|
vtModPath=$($FIND /lib/modules/$vtKv/kernel/fs/ -name "*.ko*" | $HEAD -n1)
|
||||||
else
|
elif [ -d /lib/modules/$vtKv/kernel ]; then
|
||||||
vtModPath=$($FIND /lib/modules/$vtKv/kernel/ -name "xfs.ko*" | $HEAD -n1)
|
vtModPath=$($FIND /lib/modules/$vtKv/kernel/ -name "xfs.ko*" | $HEAD -n1)
|
||||||
|
elif [ -d /lib/modules/$vtKv/initrd ]; then
|
||||||
|
vtModPath=$($FIND /lib/modules/$vtKv/initrd/ -name "xfs.ko*" | $HEAD -n1)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [ -z "$vtModPath" ]; then
|
if [ -z "$vtModPath" ]; then
|
||||||
vtModPath=$($FIND /lib/modules/$vtKv/kernel/ -name "*.ko*" | $HEAD -n1)
|
vtModPath=$($FIND /lib/modules/$vtKv/ -name "*.ko*" | $HEAD -n1)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
vtModName=$($BUSYBOX_PATH/basename $vtModPath)
|
vtModName=$($BUSYBOX_PATH/basename $vtModPath)
|
||||||
@@ -405,6 +427,8 @@ ventoy_dm_patch() {
|
|||||||
$BUSYBOX_PATH/xzcat $vtModPath > $VTOY_PATH/$vtModName
|
$BUSYBOX_PATH/xzcat $vtModPath > $VTOY_PATH/$vtModName
|
||||||
elif echo $vtModPath | $GREP -q "[.]ko[.]gz$"; then
|
elif echo $vtModPath | $GREP -q "[.]ko[.]gz$"; then
|
||||||
$BUSYBOX_PATH/zcat $vtModPath > $VTOY_PATH/$vtModName
|
$BUSYBOX_PATH/zcat $vtModPath > $VTOY_PATH/$vtModName
|
||||||
|
elif echo $vtModPath | $GREP -q "[.]ko[.]zst$"; then
|
||||||
|
$VTOY_PATH/tool/zstdcat $vtModPath > $VTOY_PATH/$vtModName
|
||||||
else
|
else
|
||||||
vtlog "unsupport module type"
|
vtlog "unsupport module type"
|
||||||
return
|
return
|
||||||
@@ -414,17 +438,21 @@ ventoy_dm_patch() {
|
|||||||
|
|
||||||
#step1: modify vermagic/mod crc/relocation
|
#step1: modify vermagic/mod crc/relocation
|
||||||
vtlog "$VTOY_PATH/tool/vtoykmod -u $VTOY_PATH/tool/$vtKoName $VTOY_PATH/$vtModName $vtDebug"
|
vtlog "$VTOY_PATH/tool/vtoykmod -u $VTOY_PATH/tool/$vtKoName $VTOY_PATH/$vtModName $vtDebug"
|
||||||
$VTOY_PATH/tool/vtoykmod -u $VTOY_PATH/tool/$vtKoName $VTOY_PATH/$vtModName $vtDebug
|
$VTOY_PATH/tool/vtoykmod -u $VTOY_PATH/tool/$vtKoName $VTOY_PATH/$vtModName $vtDebug >>$VTLOG 2>&1
|
||||||
|
|
||||||
#step2: fill parameters
|
#step2: fill parameters
|
||||||
vtPgsize=$($VTOY_PATH/tool/vtoyksym -p)
|
vtPgsize=$($VTOY_PATH/tool/vtoyksym -p)
|
||||||
vtlog "$VTOY_PATH/tool/vtoykmod -f $VTOY_PATH/tool/$vtKoName $vtPgsize 0x$printk_addr 0x$ro_addr 0x$rw_addr $get_addr $get_size $put_addr $put_size 0x$kprobe_reg_addr 0x$kprobe_unreg_addr $vtKv $vtIBT $vtDebug"
|
vtlog "$VTOY_PATH/tool/vtoykmod -f $VTOY_PATH/tool/$vtKoName $vtPgsize 0x$printk_addr 0x$ro_addr 0x$rw_addr $get_addr $get_size $put_addr $put_size 0x$kprobe_reg_addr 0x$kprobe_unreg_addr $vtKv $vtIBT $vtDebug"
|
||||||
$VTOY_PATH/tool/vtoykmod -f $VTOY_PATH/tool/$vtKoName $vtPgsize 0x$printk_addr 0x$ro_addr 0x$rw_addr $get_addr $get_size $put_addr $put_size 0x$kprobe_reg_addr 0x$kprobe_unreg_addr $vtKv $vtIBT $vtDebug
|
$VTOY_PATH/tool/vtoykmod -f $VTOY_PATH/tool/$vtKoName $vtPgsize 0x$printk_addr 0x$ro_addr 0x$rw_addr $get_addr $get_size $put_addr $put_size 0x$kprobe_reg_addr 0x$kprobe_unreg_addr $vtKv $vtIBT $vtDebug >>$VTLOG 2>&1
|
||||||
|
|
||||||
$BUSYBOX_PATH/insmod $VTOY_PATH/tool/$vtKoName
|
vtlog "insmod $VTOY_PATH/tool/$vtKoName"
|
||||||
|
$BUSYBOX_PATH/insmod $VTOY_PATH/tool/$vtKoName >>$VTLOG 2>&1
|
||||||
|
|
||||||
if $GREP -q 'dm_patch' /proc/modules; then
|
if $GREP -q 'dm_patch' /proc/modules; then
|
||||||
|
vtlog "dm_patch module OK"
|
||||||
echo "done" > $VTOY_PATH/dm_patch_done
|
echo "done" > $VTOY_PATH/dm_patch_done
|
||||||
|
else
|
||||||
|
vtlog "dm_patch module FAILED"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -160,9 +160,14 @@ ventoy_rw_iso_scan() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ventoy_iso_scan_check() {
|
ventoy_iso_scan_check() {
|
||||||
|
vtCheckOk=0
|
||||||
if ventoy_is_exfat_part; then
|
if ventoy_is_exfat_part; then
|
||||||
if ventoy_has_exfat_ko; then
|
if ventoy_has_exfat_ko; then
|
||||||
ventoy_has_iso_scan
|
if ventoy_has_iso_scan; then
|
||||||
|
vtCheckOk=1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ $vtCheckOk -eq 1 ]
|
||||||
}
|
}
|
@@ -64,9 +64,9 @@ ventoy_get_os_type() {
|
|||||||
elif $GREP -q '[Uu]buntu' /proc/version; then
|
elif $GREP -q '[Uu]buntu' /proc/version; then
|
||||||
echo 'debian'; return
|
echo 'debian'; return
|
||||||
|
|
||||||
# Deepin : do the same process with debian
|
# Deepin :
|
||||||
elif $GREP -q '[Dd]eepin' /proc/version; then
|
elif $GREP -q '[Dd]eepin' /proc/version; then
|
||||||
echo 'debian'; return
|
echo 'deepin'; return
|
||||||
|
|
||||||
# rhel5/CentOS5 and all other distributions based on them
|
# rhel5/CentOS5 and all other distributions based on them
|
||||||
elif $GREP -q 'el5' /proc/version; then
|
elif $GREP -q 'el5' /proc/version; then
|
||||||
@@ -169,9 +169,9 @@ ventoy_get_os_type() {
|
|||||||
elif $GREP -q 'fuyu' /etc/os-release; then
|
elif $GREP -q 'fuyu' /etc/os-release; then
|
||||||
echo 'openEuler'; return
|
echo 'openEuler'; return
|
||||||
elif $GREP -q 'deepin' /etc/os-release; then
|
elif $GREP -q 'deepin' /etc/os-release; then
|
||||||
echo 'debian'; return
|
echo 'deepin'; return
|
||||||
elif $GREP -q 'chinauos' /etc/os-release; then
|
elif $GREP -q 'chinauos' /etc/os-release; then
|
||||||
echo 'debian'; return
|
echo 'deepin'; return
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -229,6 +229,10 @@ ventoy_get_os_type() {
|
|||||||
echo 'android'; return
|
echo 'android'; return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if $GREP -q 'android.google' /proc/version; then
|
||||||
|
echo 'android'; return
|
||||||
|
fi
|
||||||
|
|
||||||
if $GREP -q 'adelielinux' /proc/version; then
|
if $GREP -q 'adelielinux' /proc/version; then
|
||||||
echo 'adelie'; return
|
echo 'adelie'; return
|
||||||
fi
|
fi
|
||||||
@@ -373,6 +377,14 @@ ventoy_get_os_type() {
|
|||||||
echo 'chimera'; return
|
echo 'chimera'; return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if $GREP -q '4.19.' /proc/version; then
|
||||||
|
if [ -d /lib/dracut/hooks ]; then
|
||||||
|
echo 'openEuler'; return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
echo "default"
|
echo "default"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -196,7 +196,7 @@ fi
|
|||||||
|
|
||||||
#change current directory to Ventoy disk
|
#change current directory to Ventoy disk
|
||||||
cd "$mtpnt"
|
cd "$mtpnt"
|
||||||
$OLDDIR/tool/$TOOLDIR/Plugson "$HOST" "$PORT" "$OLDDIR" "$DISK" $version "$fstype" $partstyle $secureboot &
|
"$OLDDIR/tool/$TOOLDIR/Plugson" "$HOST" "$PORT" "$OLDDIR" "$DISK" $version "$fstype" $partstyle $secureboot &
|
||||||
wID=$!
|
wID=$!
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
VTOY_PATH=$PWD/..
|
VTOY_PATH=$PWD/..
|
||||||
|
|
||||||
date +"%Y/%m/%d %H:%M:%S"
|
date +"%Y/%m/%d %H:%M:%S"
|
||||||
echo downloading envrionment ...
|
echo downloading environment ...
|
||||||
|
|
||||||
wget -q -P $VTOY_PATH/DOC/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/dietlibc-0.34.tar.xz
|
wget -q -P $VTOY_PATH/DOC/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/dietlibc-0.34.tar.xz
|
||||||
wget -q -P $VTOY_PATH/DOC/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/musl-1.2.1.tar.gz
|
wget -q -P $VTOY_PATH/DOC/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/musl-1.2.1.tar.gz
|
||||||
@@ -14,6 +14,6 @@ wget -q -P /opt/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/a
|
|||||||
wget -q -P /opt/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz
|
wget -q -P /opt/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz
|
||||||
|
|
||||||
date +"%Y/%m/%d %H:%M:%S"
|
date +"%Y/%m/%d %H:%M:%S"
|
||||||
echo downloading envrionment finish...
|
echo downloading environment finish...
|
||||||
|
|
||||||
sh all_in_one.sh CI
|
sh all_in_one.sh CI
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -413,10 +413,9 @@ function ventoy_get_ghostbsd_ver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function ventoy_get_furybsd_ver {
|
function ventoy_get_furybsd_ver {
|
||||||
if regexp "13\.[0-9]" "$2"; then
|
|
||||||
set vt_freebsd_ver=13.x
|
|
||||||
else
|
|
||||||
set vt_freebsd_ver=12.x
|
set vt_freebsd_ver=12.x
|
||||||
|
if regexp --set 1:vtFuryVer "(14|13)\.[0-9]" "$2"; then
|
||||||
|
set vt_freebsd_ver=${vtFuryVer}.x
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -425,12 +424,8 @@ function ventoy_get_freenas_ver {
|
|||||||
|
|
||||||
if [ -e (loop)/FreeNAS-MANIFEST ]; then
|
if [ -e (loop)/FreeNAS-MANIFEST ]; then
|
||||||
vt_parse_freenas_ver (loop)/FreeNAS-MANIFEST vt_freenas_ver
|
vt_parse_freenas_ver (loop)/FreeNAS-MANIFEST vt_freenas_ver
|
||||||
if regexp "^13\.[0-9]" "$vt_freenas_ver"; then
|
if regexp --set 1:vtNasVer "^(14|13|12|11)\.[0-9]" "$vt_freenas_ver"; then
|
||||||
set vt_freebsd_ver=13.x
|
set vt_freebsd_ver=${vtNasVer}.x
|
||||||
elif regexp "^12\.[0-9]" "$vt_freenas_ver"; then
|
|
||||||
set vt_freebsd_ver=12.x
|
|
||||||
elif regexp "^11\.[0-9]" "$vt_freenas_ver"; then
|
|
||||||
set vt_freebsd_ver=11.x
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -440,12 +435,8 @@ function ventoy_get_truenas_ver {
|
|||||||
|
|
||||||
if [ -e (loop)/TrueNAS-MANIFEST ]; then
|
if [ -e (loop)/TrueNAS-MANIFEST ]; then
|
||||||
vt_parse_freenas_ver (loop)/TrueNAS-MANIFEST vt_truenas_ver
|
vt_parse_freenas_ver (loop)/TrueNAS-MANIFEST vt_truenas_ver
|
||||||
if regexp "^13\.[0-9]" "$vt_truenas_ver"; then
|
if regexp --set 1:vtTNasVer "^(14|13|12|11)\.[0-9]" "$vt_truenas_ver"; then
|
||||||
set vt_freebsd_ver=13.x
|
set vt_freebsd_ver=${vtTNasVer}.x
|
||||||
elif regexp "^12\.[0-9]" "$vt_truenas_ver"; then
|
|
||||||
set vt_freebsd_ver=12.x
|
|
||||||
elif regexp "^11\.[0-9]" "$vt_truenas_ver"; then
|
|
||||||
set vt_freebsd_ver=11.x
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -477,44 +468,20 @@ function ventoy_freebsd_proc {
|
|||||||
ventoy_get_truenas_ver "$1" "${chosen_path}"
|
ventoy_get_truenas_ver "$1" "${chosen_path}"
|
||||||
elif vt_strstr "$vt_volume_id" "FURYBSD"; then
|
elif vt_strstr "$vt_volume_id" "FURYBSD"; then
|
||||||
ventoy_get_furybsd_ver "$1" "${chosen_path}"
|
ventoy_get_furybsd_ver "$1" "${chosen_path}"
|
||||||
elif regexp "^13_[0-9]" "$vt_volume_id"; then
|
elif regexp --set 1:vtBsdVerNum "^(14|13|12|11|10|9)_[0-9]" "$vt_volume_id"; then
|
||||||
set vt_freebsd_ver=13.x
|
set vt_freebsd_ver=${vtBsdVerNum}.x
|
||||||
elif regexp "^12_[0-9]" "$vt_volume_id"; then
|
|
||||||
set vt_freebsd_ver=12.x
|
|
||||||
elif regexp "^11_[0-9]" "$vt_volume_id"; then
|
|
||||||
set vt_freebsd_ver=11.x
|
|
||||||
elif regexp "^10_[0-9]" "$vt_volume_id"; then
|
|
||||||
set vt_freebsd_ver=10.x
|
|
||||||
elif regexp "^9_[0-9]" "$vt_volume_id"; then
|
|
||||||
set vt_freebsd_ver=9.x
|
|
||||||
elif [ -d (loop)/usr/midnightbsd-dist ]; then
|
elif [ -d (loop)/usr/midnightbsd-dist ]; then
|
||||||
ventoy_get_midnightbsd_ver "$1" "${chosen_path}"
|
ventoy_get_midnightbsd_ver "$1" "${chosen_path}"
|
||||||
set vtFreeBsdDistro=MidnightBSD
|
set vtFreeBsdDistro=MidnightBSD
|
||||||
elif [ -e (loop)/bin/freebsd-version ]; then
|
elif [ -e (loop)/bin/freebsd-version ]; then
|
||||||
vt_unix_parse_freebsd_ver (loop)/bin/freebsd-version vt_userland_ver
|
vt_unix_parse_freebsd_ver (loop)/bin/freebsd-version vt_userland_ver
|
||||||
if regexp "\"13\.[0-9]-" "$vt_userland_ver"; then
|
if regexp --set 1:vtBsdVerNum "\"(14|13|12|11|10|9)\.[0-9]-" "$vt_userland_ver"; then
|
||||||
set vt_freebsd_ver=13.x
|
set vt_freebsd_ver=${vtBsdVerNum}.x
|
||||||
elif regexp "\"12\.[0-9]-" "$vt_userland_ver"; then
|
|
||||||
set vt_freebsd_ver=12.x
|
|
||||||
elif regexp "\"11\.[0-9]-" "$vt_userland_ver"; then
|
|
||||||
set vt_freebsd_ver=11.x
|
|
||||||
elif regexp "\"10\.[0-9]-" "$vt_userland_ver"; then
|
|
||||||
set vt_freebsd_ver=10.x
|
|
||||||
elif regexp "\"9\.[0-9]-" "$vt_userland_ver"; then
|
|
||||||
set vt_freebsd_ver=9.x
|
|
||||||
fi
|
fi
|
||||||
elif [ -e (loop)/README.TXT ]; then
|
elif [ -e (loop)/README.TXT ]; then
|
||||||
vt_1st_line (loop)/README.TXT vt_freebsd_line1
|
vt_1st_line (loop)/README.TXT vt_freebsd_line1
|
||||||
if regexp "FreeBSD 13\.[0-9]-" "$vt_freebsd_line1"; then
|
if regexp --set 1:vtBsdVerNum "FreeBSD (14|13|12|11|10|9)\.[0-9]-" "$vt_freebsd_line1"; then
|
||||||
set vt_freebsd_ver=13.x
|
set vt_freebsd_ver=${vtBsdVerNum}.x
|
||||||
elif regexp "FreeBSD 12\.[0-9]-" "$vt_freebsd_line1"; then
|
|
||||||
set vt_freebsd_ver=12.x
|
|
||||||
elif regexp "FreeBSD 11\.[0-9]-" "$vt_freebsd_line1"; then
|
|
||||||
set vt_freebsd_ver=11.x
|
|
||||||
elif regexp "FreeBSD 10\.[0-9]-" "$vt_freebsd_line1"; then
|
|
||||||
set vt_freebsd_ver=10.x
|
|
||||||
elif regexp "FreeBSD 9\.[0-9]-" "$vt_freebsd_line1"; then
|
|
||||||
set vt_freebsd_ver=9.x
|
|
||||||
fi
|
fi
|
||||||
elif vt_strstr "${chosen_path}" "MidnightBSD"; then
|
elif vt_strstr "${chosen_path}" "MidnightBSD"; then
|
||||||
set vt_freebsd_ver=9.x
|
set vt_freebsd_ver=9.x
|
||||||
@@ -543,7 +510,7 @@ function ventoy_freebsd_proc {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$vt_freebsd_ver" = "xx" ]; then
|
if [ "$vt_freebsd_ver" = "xx" ]; then
|
||||||
set vt_freebsd_ver=13.x
|
set vt_freebsd_ver=14.x
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -2318,6 +2285,8 @@ function img_common_menuentry {
|
|||||||
if [ -z "$vtImgHd1Label" ]; then
|
if [ -z "$vtImgHd1Label" ]; then
|
||||||
if [ -d (vtimghd,2)/efi ]; then
|
if [ -d (vtimghd,2)/efi ]; then
|
||||||
vt_get_fs_label (vtimghd,3) vtImgHd3Label
|
vt_get_fs_label (vtimghd,3) vtImgHd3Label
|
||||||
|
elif [ -d (vtimghd,12)/efi ]; then
|
||||||
|
vt_get_fs_label (vtimghd,3) vtImgHd3Label
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -2428,7 +2397,7 @@ function mimg_common_menuentry {
|
|||||||
#############################################################
|
#############################################################
|
||||||
#############################################################
|
#############################################################
|
||||||
|
|
||||||
set VENTOY_VERSION="1.0.90"
|
set VENTOY_VERSION="1.0.96"
|
||||||
|
|
||||||
#ACPI not compatible with Window7/8, so disable by default
|
#ACPI not compatible with Window7/8, so disable by default
|
||||||
set VTOY_PARAM_NO_ACPI=1
|
set VTOY_PARAM_NO_ACPI=1
|
||||||
|
19
INSTALL/grub/help/it_IT.txt
Normal file
19
INSTALL/grub/help/it_IT.txt
Normal file
@@ -0,0 +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
|
||||||
|
F5 - Utilità
|
||||||
|
F6 - Carica il menu Grub2 personalizzato
|
||||||
|
F7 - Passa tra 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)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Premi ESC per ritornare ......
|
19
INSTALL/grub/help/pt_BR.txt
Normal file
19
INSTALL/grub/help/pt_BR.txt
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
L - Sele<6C><65>o de Idiomas
|
||||||
|
F1 - Exibir informa<6D><61>es de ajuda
|
||||||
|
F2 - Explorar e inicializar os arquivos no disco local
|
||||||
|
F3 - Trocar o modo do menu entre Visualiza<7A><61>o em <20>rvore <-> Visualiza<7A><61>o em Lista
|
||||||
|
F4 - Inicializar o Windows/Linux no disco local
|
||||||
|
F5 - Utilit<69>rios
|
||||||
|
F6 - Carregar o Menu Personalizado do Grub2
|
||||||
|
F7 - Trocar entre o Modo GUI <-> Modo TEXTO
|
||||||
|
|
||||||
|
m/Ctrl+m - Checksum dos arquivos de imagem (md5/sha1/sha256/sha512)
|
||||||
|
d/Ctrl+d - Modo Memdisk (S<> pros pequenos WinPE/LiveCD ISO/IMG)
|
||||||
|
w/Ctrl+w - Modo WIMBOOT (S<> pra arquivos ISO do Windows/WinPE)
|
||||||
|
r/Ctrl+r - Modo Grub2 (S<> pra algumas distros do Linux)
|
||||||
|
i/Ctrl+i - Modo Compat<61>vel (S<> pra debugging)
|
||||||
|
u/Ctrl+u - Carregar o driver EFI da ISO (S<> pra debugging, n<>o pode ser usado oficialmente)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Pressione ESC pra retornar...
|
@@ -201,7 +201,7 @@ cbmemc: cbtable normal terminfo
|
|||||||
hfsplus: fshelp
|
hfsplus: fshelp
|
||||||
gcry_cast5: crypto
|
gcry_cast5: crypto
|
||||||
extcmd:
|
extcmd:
|
||||||
squash4: fshelp lzopio zfs xzio gzio
|
squash4: fshelp zstd lzopio zfs xzio gzio
|
||||||
part_plan:
|
part_plan:
|
||||||
minix_be:
|
minix_be:
|
||||||
gcry_whirlpool: crypto
|
gcry_whirlpool: crypto
|
||||||
|
Binary file not shown.
Binary file not shown.
@@ -83,7 +83,7 @@ gfxterm_background: video_colors bitmap_scale gfxterm extcmd video bitmap
|
|||||||
search_fs_uuid:
|
search_fs_uuid:
|
||||||
gcry_dsa: pgp mpi
|
gcry_dsa: pgp mpi
|
||||||
keystatus: extcmd
|
keystatus: extcmd
|
||||||
linux: ventoy verifiers normal vbe video boot relocator mmap
|
linux: ventoy verifiers vbe normal video boot relocator mmap
|
||||||
geli: cryptodisk crypto gcry_sha512 pbkdf2 gcry_sha256
|
geli: cryptodisk crypto gcry_sha512 pbkdf2 gcry_sha256
|
||||||
cmdline_cat_test: font functional_test normal procfs video_fb
|
cmdline_cat_test: font functional_test normal procfs video_fb
|
||||||
rdmsr: extcmd
|
rdmsr: extcmd
|
||||||
@@ -124,7 +124,7 @@ crypto:
|
|||||||
part_bsd: part_msdos
|
part_bsd: part_msdos
|
||||||
cs5536: pci
|
cs5536: pci
|
||||||
biosdisk:
|
biosdisk:
|
||||||
ventoy: ext2 fshelp elf btrfs crypto font gcry_md5 exfat udf div extcmd datetime normal video gcry_sha1 iso9660 acpi
|
ventoy: ext2 fshelp elf btrfs crypto font gcry_md5 exfat udf div extcmd datetime normal video gcry_sha1 iso9660 reboot acpi
|
||||||
lsapm:
|
lsapm:
|
||||||
gcry_sha512: crypto
|
gcry_sha512: crypto
|
||||||
password: crypto normal
|
password: crypto normal
|
||||||
@@ -208,7 +208,7 @@ cmosdump:
|
|||||||
hfsplus: fshelp
|
hfsplus: fshelp
|
||||||
gcry_cast5: crypto
|
gcry_cast5: crypto
|
||||||
extcmd:
|
extcmd:
|
||||||
squash4: fshelp lzopio zfs xzio gzio
|
squash4: fshelp zstd lzopio zfs xzio gzio
|
||||||
part_plan:
|
part_plan:
|
||||||
minix_be:
|
minix_be:
|
||||||
gcry_whirlpool: crypto
|
gcry_whirlpool: crypto
|
||||||
|
Binary file not shown.
93
INSTALL/grub/menu/it_IT.json
Normal file
93
INSTALL/grub/menu/it_IT.json
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
{
|
||||||
|
"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_MENU_LANG": "Menu selezione lingua",
|
||||||
|
|
||||||
|
"VTLANG_LB_SBOOT_WINDOWS": "Cerca e avvia Windows",
|
||||||
|
"VTLANG_LB_SBOOT_G4D": "Cerca e avvia Grub4dos",
|
||||||
|
"VTLANG_LB_SBOOT_HDD1": "Avvia il 1° disco locale",
|
||||||
|
"VTLANG_LB_SBOOT_HDD2": "Avvia il 2° disco locale",
|
||||||
|
"VTLANG_LB_SBOOT_HDD3": "Avvia il 3° disco locale",
|
||||||
|
"VTLANG_LB_SBOOT_X64EFI": "Cerca e avvia BOOTX64.EFI",
|
||||||
|
"VTLANG_LB_SBOOT_IA32EFI": "Cerca e avvia BOOTIA32.EFI",
|
||||||
|
"VTLANG_LB_SBOOT_AA64EFI": "Cerca e avvia BOOTAA64.EFI",
|
||||||
|
"VTLANG_LB_SBOOT_XORBOOT": "Cerca e avvia xorboot",
|
||||||
|
|
||||||
|
"VTLANG_FILE_CHKSUM": "Checksum file",
|
||||||
|
"VTLANG_CHKSUM_MD5_CALC": "Calcola md5sum",
|
||||||
|
"VTLANG_CHKSUM_SHA1_CALC": "Calcola sha1sum",
|
||||||
|
"VTLANG_CHKSUM_SHA256_CALC": "Calcola sha256sum",
|
||||||
|
"VTLANG_CHKSUM_SHA512_CALC": "Calcola sha512sum",
|
||||||
|
"VTLANG_CHKSUM_MD5_CALC_CHK": "Calcola e controlla md5sum",
|
||||||
|
"VTLANG_CHKSUM_SHA1_CALC_CHK": "Calcola e controlla sha1sum",
|
||||||
|
"VTLANG_CHKSUM_SHA256_CALC_CHK": "Calcola e controlla sha256sum",
|
||||||
|
"VTLANG_CHKSUM_SHA512_CALC_CHK": "Calcola e controlla sha512sum",
|
||||||
|
|
||||||
|
"VTLANG_POWER": "Spegni",
|
||||||
|
"VTLANG_POWER_REBOOT": "Riavvia",
|
||||||
|
"VTLANG_POWER_HALT": "Arresta",
|
||||||
|
"VTLANG_POWER_BOOT_EFIFW": "Riavvia nel setup EFI",
|
||||||
|
|
||||||
|
"VTLANG_KEYBRD_LAYOUT": "Layout di tastiera",
|
||||||
|
"VTLANG_HWINFO": "Informazioni hardware",
|
||||||
|
|
||||||
|
"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_THEME_SELECT": "Seleziona tema",
|
||||||
|
|
||||||
|
"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_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_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_NO_AUTOINS_SCRIPT": "Avvia senza il modello di installazione automatica",
|
||||||
|
"VTLANG_AUTOINS_USE": "Avvia con",
|
||||||
|
|
||||||
|
"VTLANG_NO_PERSIST": "Avvia senza persistenza",
|
||||||
|
"VTLANG_PERSIST_USE": "Avvia con",
|
||||||
|
|
||||||
|
"VTLANG_BROWER_RETURN": "Ritorna",
|
||||||
|
|
||||||
|
"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",
|
||||||
|
|
||||||
|
"MENU_STR_XXX": ""
|
||||||
|
}
|
@@ -78,6 +78,7 @@
|
|||||||
"VTLANG_PERSIST_USE": "부팅 대상",
|
"VTLANG_PERSIST_USE": "부팅 대상",
|
||||||
|
|
||||||
"VTLANG_BROWER_RETURN": "돌아가기",
|
"VTLANG_BROWER_RETURN": "돌아가기",
|
||||||
|
|
||||||
"VTLANG_ENTER_EXIT": "종료하려면 Enter 키를 누르십시오",
|
"VTLANG_ENTER_EXIT": "종료하려면 Enter 키를 누르십시오",
|
||||||
"VTLANG_ENTER_REBOOT": "다시 시작하려면 Enter 키를 누르십시오",
|
"VTLANG_ENTER_REBOOT": "다시 시작하려면 Enter 키를 누르십시오",
|
||||||
"VTLANG_ENTER_CONTINUE": "계속하려면 Enter 키를 누르십시오",
|
"VTLANG_ENTER_CONTINUE": "계속하려면 Enter 키를 누르십시오",
|
||||||
|
93
INSTALL/grub/menu/pt_BR.json
Normal file
93
INSTALL/grub/menu/pt_BR.json
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
{
|
||||||
|
"VTLANG_LANGUAGE_NAME": "Brazilian Portuguese (Português Brasileiro)",
|
||||||
|
|
||||||
|
"VTLANG_STR_HOTKEY_LIST": "L:Idioma F1:Ajuda F2:Explorar F3:Visualização em Lista F4:Inicialização Local F5:Ferramentas F6:Sair",
|
||||||
|
"VTLANG_STR_HOTKEY_TREE": "L:Idioma F1:Ajuda F2:Explorar F3:Visualização em Árvore F4:Inicialização Local F5:Ferramentas F6:Sair",
|
||||||
|
"VTLANG_RETURN_PREVIOUS": "Retornar ao menu anterior [Esc]",
|
||||||
|
"VTLANG_RETURN_PRV_NOESC": "Retornar ao menu anterior",
|
||||||
|
|
||||||
|
"VTLANG_MENU_LANG": "Menu de Seleção dos Idiomas",
|
||||||
|
|
||||||
|
"VTLANG_LB_SBOOT_WINDOWS": "Procurar e iniciar o Windows",
|
||||||
|
"VTLANG_LB_SBOOT_G4D": "Procurar e iniciar o Grub4dos",
|
||||||
|
"VTLANG_LB_SBOOT_HDD1": "Iniciar o 1º disco local",
|
||||||
|
"VTLANG_LB_SBOOT_HDD2": "Iniciar o 2º disco local",
|
||||||
|
"VTLANG_LB_SBOOT_HDD3": "Iniciar o 3º disco local",
|
||||||
|
"VTLANG_LB_SBOOT_X64EFI": "Procurar e iniciar o BOOTX64.EFI",
|
||||||
|
"VTLANG_LB_SBOOT_IA32EFI": "Procurar e iniciar o BOOTIA32.EFI",
|
||||||
|
"VTLANG_LB_SBOOT_AA64EFI": "Procurar e iniciar o BOOTAA64.EFI",
|
||||||
|
"VTLANG_LB_SBOOT_XORBOOT": "Procurar e iniciar o xorboot",
|
||||||
|
|
||||||
|
"VTLANG_FILE_CHKSUM": "Checksum do arquivo",
|
||||||
|
"VTLANG_CHKSUM_MD5_CALC": "Calcular o md5sum",
|
||||||
|
"VTLANG_CHKSUM_SHA1_CALC": "Calcular o sha1sum",
|
||||||
|
"VTLANG_CHKSUM_SHA256_CALC": "Calcular o sha256sum",
|
||||||
|
"VTLANG_CHKSUM_SHA512_CALC": "Calcular o sha512sum",
|
||||||
|
"VTLANG_CHKSUM_MD5_CALC_CHK": "Calcular e verificar o md5sum",
|
||||||
|
"VTLANG_CHKSUM_SHA1_CALC_CHK": "Calcular e verificar o sha1sum",
|
||||||
|
"VTLANG_CHKSUM_SHA256_CALC_CHK": "Calcular e verificar o sha256sum",
|
||||||
|
"VTLANG_CHKSUM_SHA512_CALC_CHK": "Calcular e verificar o sha512sum",
|
||||||
|
|
||||||
|
"VTLANG_POWER": "Energia",
|
||||||
|
"VTLANG_POWER_REBOOT": "Reiniciar",
|
||||||
|
"VTLANG_POWER_HALT": "Desligar",
|
||||||
|
"VTLANG_POWER_BOOT_EFIFW": "Reiniciar com a configuração do EFI",
|
||||||
|
|
||||||
|
"VTLANG_KEYBRD_LAYOUT": "Esquemas do Teclado",
|
||||||
|
"VTLANG_HWINFO": "Informações do Hardware",
|
||||||
|
|
||||||
|
"VTLANG_RESOLUTION_CFG": "Configuração da Resolução",
|
||||||
|
"VTLANG_SCREEN_MODE": "Modo de Exibição da Tela",
|
||||||
|
"VTLANG_SCREEN_TEXT_MODE": "Forçar o Modo Texto",
|
||||||
|
"VTLANG_SCREEN_GUI_MODE": "Forçar o Modo Gráfico",
|
||||||
|
|
||||||
|
"VTLANG_THEME_SELECT": "Seleção de Tema",
|
||||||
|
|
||||||
|
"VTLANG_UEFI_UTIL": "Utilitários UEFI do Ventoy",
|
||||||
|
"VTLANG_UTIL_SHOW_EFI_DRV": "Mostrar os Drivers EFI",
|
||||||
|
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Consertar a Falha BlinitializeLibrary do Windows",
|
||||||
|
|
||||||
|
"VTLANG_JSON_CHK_JSON": "Verificar a configuração do plugin json (ventoy.json)",
|
||||||
|
"VTLANG_JSON_CHK_CONTROL": "Verificar a configuração do plugin de controle global",
|
||||||
|
"VTLANG_JSON_CHK_THEME": "Verificar a configuração do plugin dos temas",
|
||||||
|
"VTLANG_JSON_CHK_AUTOINS": "Verificar a configuração do plugin de instalação automática",
|
||||||
|
"VTLANG_JSON_CHK_PERSIST": "Verificar a configuração do plugin de persistência",
|
||||||
|
"VTLANG_JSON_CHK_MENU_ALIAS": "Verificar a configuração do plugin do menu alias",
|
||||||
|
"VTLANG_JSON_CHK_MENU_TIP": "Verificar a configuração do plugin do menu das dicas",
|
||||||
|
"VTLANG_JSON_CHK_MENU_CLASS": "Verificar a configuração do plugin do menu classe",
|
||||||
|
"VTLANG_JSON_CHK_INJECTION": "Verificar a configuração do plugin de injeção",
|
||||||
|
"VTLANG_JSON_CHK_AUTO_MEMDISK": "Verificar a configuração do plugin automático do memdisk",
|
||||||
|
"VTLANG_JSON_CHK_IMG_LIST": "Verificar a configuração do plugin da lista de imagens",
|
||||||
|
"VTLANG_JSON_CHK_IMG_BLIST": "Verificar a configuração do plugin da lista negra de imagens",
|
||||||
|
"VTLANG_JSON_CHK_CONF_REPLACE": "Verificar a configuração do plugin de substituição da configuração de inicialização",
|
||||||
|
"VTLANG_JSON_CHK_DUD": "Verificar a configuração do plugin dud",
|
||||||
|
"VTLANG_JSON_CHK_PASSWORD": "Verificar a configuração do plugin das senhas",
|
||||||
|
|
||||||
|
"VTLANG_NORMAL_MODE": "Iniciar no modo normal",
|
||||||
|
"VTLANG_WIMBOOT_MODE": "Iniciar no modo wimboot",
|
||||||
|
"VTLANG_GRUB2_MODE": "Iniciar no modo grub2",
|
||||||
|
"VTLANG_MEMDISK_MODE": "Iniciar no modo memdisk",
|
||||||
|
|
||||||
|
"VTLANG_RET_TO_LISTVIEW": "Retornar pra Visualização em Lista",
|
||||||
|
"VTLANG_RET_TO_TREEVIEW": "Retornar para Visualização em Árvore",
|
||||||
|
|
||||||
|
"VTLANG_NO_AUTOINS_SCRIPT": "Iniciar sem modelo de instalação automática",
|
||||||
|
"VTLANG_AUTOINS_USE": "Iniciar com",
|
||||||
|
|
||||||
|
"VTLANG_NO_PERSIST": "Iniciar sem persistência",
|
||||||
|
"VTLANG_PERSIST_USE": "Iniciar com",
|
||||||
|
|
||||||
|
"VTLANG_BROWER_RETURN": "Retornar",
|
||||||
|
|
||||||
|
"VTLANG_ENTER_EXIT": "Pressione a tecla Enter pra sair",
|
||||||
|
"VTLANG_ENTER_REBOOT": "Pressione a tecla Enter pra reiniciar",
|
||||||
|
"VTLANG_ENTER_CONTINUE": "Pressione a tecla Enter pra continuar",
|
||||||
|
|
||||||
|
"VTLANG_CTRL_TEMP_SET": "Configurações do Controle Temporário",
|
||||||
|
"VTLANG_WIN11_BYPASS_CHECK": "Ignorar a verificação da CPU/TPM/SecureBoot quando instalar o Windows 11",
|
||||||
|
"VTLANG_WIN11_BYPASS_NRO": "Ignorar o requerimento de conta online quanto instalar o Windows 11",
|
||||||
|
"VTLANG_LINUX_REMOUNT": "Montar a partição do Ventoy após iniciar o Linux",
|
||||||
|
"VTLANG_SECONDARY_BOOT_MENU": "Mostrar o menu secundário da inicialização",
|
||||||
|
|
||||||
|
"MENU_STR_XXX": ""
|
||||||
|
}
|
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
"VTLANG_POWER": "Питание",
|
"VTLANG_POWER": "Питание",
|
||||||
"VTLANG_POWER_REBOOT": "Перезагрузить",
|
"VTLANG_POWER_REBOOT": "Перезагрузить",
|
||||||
"VTLANG_POWER_HALT": "Завершить роботу",
|
"VTLANG_POWER_HALT": "Завершить работу",
|
||||||
"VTLANG_POWER_BOOT_EFIFW": "Перезагрузиться в настройку EFI",
|
"VTLANG_POWER_BOOT_EFIFW": "Перезагрузиться в настройку EFI",
|
||||||
|
|
||||||
"VTLANG_KEYBRD_LAYOUT": "Раскладки клавиатуры",
|
"VTLANG_KEYBRD_LAYOUT": "Раскладки клавиатуры",
|
||||||
|
93
INSTALL/grub/menu/sl_si.json
Normal file
93
INSTALL/grub/menu/sl_si.json
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
{
|
||||||
|
"VTLANG_LANGUAGE_NAME": "Slovenija (Slovenski)",
|
||||||
|
|
||||||
|
"VTLANG_STR_HOTKEY_LIST": "L:Jezik F1:Pomoč F2:Prebrskaj F3:ListView F4:Localboot F5:Orodja F6:ExMenu",
|
||||||
|
"VTLANG_STR_HOTKEY_TREE": "L:Jezik F1:Pomoč F2:Prebrskaj F3:TreeView F4:Localboot F5:Orodja F6:ExMenu",
|
||||||
|
"VTLANG_RETURN_PREVIOUS": "Vrnitev v prejšnji meni [Esc]",
|
||||||
|
"VTLANG_RETURN_PRV_NOESC": "Vrnitev v prejšnji meni",
|
||||||
|
|
||||||
|
"VTLANG_MENU_LANG": "Izbira jezika menija",
|
||||||
|
|
||||||
|
"VTLANG_LB_SBOOT_WINDOWS": "Iskanje in zagon sistema Windows",
|
||||||
|
"VTLANG_LB_SBOOT_G4D": "Iskanje in zagon Grub4dos",
|
||||||
|
"VTLANG_LB_SBOOT_HDD1": "Zagon 1. lokalnega diska",
|
||||||
|
"VTLANG_LB_SBOOT_HDD2": "Zagon 2. lokalnega diska",
|
||||||
|
"VTLANG_LB_SBOOT_HDD3": "Zagon 3. lokalnega diska",
|
||||||
|
"VTLANG_LB_SBOOT_X64EFI": "Iskanje in zagon BOOTX64.EFI",
|
||||||
|
"VTLANG_LB_SBOOT_IA32EFI": "Iskanje in zagon BOOTIA32.EFI",
|
||||||
|
"VTLANG_LB_SBOOT_AA64EFI": "Iskanje in zagon BOOTAA64.EFI",
|
||||||
|
"VTLANG_LB_SBOOT_XORBOOT": "Iskanje in zagon xorboot",
|
||||||
|
|
||||||
|
"VTLANG_FILE_CHKSUM": "File checksum",
|
||||||
|
"VTLANG_CHKSUM_MD5_CALC": "Izračunaj md5sum",
|
||||||
|
"VTLANG_CHKSUM_SHA1_CALC": "Izračunaj sha1sum",
|
||||||
|
"VTLANG_CHKSUM_SHA256_CALC": "Izračunaj sha256sum",
|
||||||
|
"VTLANG_CHKSUM_SHA512_CALC": "Izračunaj sha512sum",
|
||||||
|
"VTLANG_CHKSUM_MD5_CALC_CHK": "Izračunaj in preveri md5sum",
|
||||||
|
"VTLANG_CHKSUM_SHA1_CALC_CHK": "Izračunaj in preveri sha1sum",
|
||||||
|
"VTLANG_CHKSUM_SHA256_CALC_CHK": "Izračunaj in preveri sha256sum",
|
||||||
|
"VTLANG_CHKSUM_SHA512_CALC_CHK": "Izračunaj in preveri sha512sum",
|
||||||
|
|
||||||
|
"VTLANG_POWER": "Napajanje",
|
||||||
|
"VTLANG_POWER_REBOOT": "Ponovni zagon",
|
||||||
|
"VTLANG_POWER_HALT": "Halt",
|
||||||
|
"VTLANG_POWER_BOOT_EFIFW": "Ponovni zagon v nastavitev EFI",
|
||||||
|
|
||||||
|
"VTLANG_KEYBRD_LAYOUT": "Postavitev tipkovnice",
|
||||||
|
"VTLANG_HWINFO": "Informacije o strojni opremi",
|
||||||
|
|
||||||
|
"VTLANG_RESOLUTION_CFG": "Nastavitev ločljivosti",
|
||||||
|
"VTLANG_SCREEN_MODE": "Način prikaza na zaslonu",
|
||||||
|
"VTLANG_SCREEN_TEXT_MODE": "Vsili besedilni način",
|
||||||
|
"VTLANG_SCREEN_GUI_MODE": "Vsili grafični način",
|
||||||
|
|
||||||
|
"VTLANG_THEME_SELECT": "Izbira teme",
|
||||||
|
|
||||||
|
"VTLANG_UEFI_UTIL": "Pripomočki Ventoy UEFI",
|
||||||
|
"VTLANG_UTIL_SHOW_EFI_DRV": "Prikaži gonilnike EFI",
|
||||||
|
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Popravek napake Windows BlinitializeLibrary",
|
||||||
|
|
||||||
|
"VTLANG_JSON_CHK_JSON": "Preverite konfiguracijo vtičnika json (ventoy.json)",
|
||||||
|
"VTLANG_JSON_CHK_CONTROL": "Preverite konfiguracijo globalnega nadzornega vtičnika",
|
||||||
|
"VTLANG_JSON_CHK_THEME": "Preverite konfiguracijo vtičnika teme",
|
||||||
|
"VTLANG_JSON_CHK_AUTOINS": "Preverite konfiguracijo vtičnika za samodejno namestitev",
|
||||||
|
"VTLANG_JSON_CHK_PERSIST": "Preverite konfiguracijo vtičnika persistence",
|
||||||
|
"VTLANG_JSON_CHK_MENU_ALIAS": "Preverite konfiguracijo vtičnika menija",
|
||||||
|
"VTLANG_JSON_CHK_MENU_TIP": "Preverite konfiguracijo vtičnika za nasvete menija",
|
||||||
|
"VTLANG_JSON_CHK_MENU_CLASS": "Preverite konfiguracijo vtičnika razreda menija",
|
||||||
|
"VTLANG_JSON_CHK_INJECTION": "Check injection plugin configuration",
|
||||||
|
"VTLANG_JSON_CHK_AUTO_MEMDISK": "Preverite konfiguracijo vtičnika Auto Memdisk.",
|
||||||
|
"VTLANG_JSON_CHK_IMG_LIST": "Preverite konfiguracijo vtičnika za seznam slik",
|
||||||
|
"VTLANG_JSON_CHK_IMG_BLIST": "Preverite konfiguracijo vtičnika za črno listo slik",
|
||||||
|
"VTLANG_JSON_CHK_CONF_REPLACE": "Preverite boot conf zamenjajte plugin konfiguracijo",
|
||||||
|
"VTLANG_JSON_CHK_DUD": "Preverite konfiguracijo vtičnika dud",
|
||||||
|
"VTLANG_JSON_CHK_PASSWORD": "Preverite konfiguracijo vtičnika za geslo",
|
||||||
|
|
||||||
|
"VTLANG_NORMAL_MODE": "Zagon v običajnem načinu",
|
||||||
|
"VTLANG_WIMBOOT_MODE": "Zagon v načinu wimboot",
|
||||||
|
"VTLANG_GRUB2_MODE": "Zagon v načinu grub2",
|
||||||
|
"VTLANG_MEMDISK_MODE": "Zagon v načinu memdisk",
|
||||||
|
|
||||||
|
"VTLANG_RET_TO_LISTVIEW": "Vrnitev na ListView",
|
||||||
|
"VTLANG_RET_TO_TREEVIEW": "Vrnitev v TreeView",
|
||||||
|
|
||||||
|
"VTLANG_NO_AUTOINS_SCRIPT": "Zagon brez predloge za samodejno namestitev",
|
||||||
|
"VTLANG_AUTOINS_USE": "Zagon z",
|
||||||
|
|
||||||
|
"VTLANG_NO_PERSIST": "Boot without persistence",
|
||||||
|
"VTLANG_PERSIST_USE": "Zagon z",
|
||||||
|
|
||||||
|
"VTLANG_BROWER_RETURN": "Nazaj",
|
||||||
|
|
||||||
|
"VTLANG_ENTER_EXIT": "za izhod pritisnite tipko Enter",
|
||||||
|
"VTLANG_ENTER_REBOOT": "pritisnite tipko Enter za ponovni zagon",
|
||||||
|
"VTLANG_ENTER_CONTINUE": "za nadaljevanje pritisnite tipko Enter",
|
||||||
|
|
||||||
|
"VTLANG_CTRL_TEMP_SET": "Začasne nadzorne nastavitve",
|
||||||
|
"VTLANG_WIN11_BYPASS_CHECK": "Obid preverjanja CPU/TPM/SecureBoot pri namestitvi sistema Windows 11",
|
||||||
|
"VTLANG_WIN11_BYPASS_NRO": "Obid zahteve po spletnem računu pri namestitvi sistema Windows 11",
|
||||||
|
"VTLANG_LINUX_REMOUNT": "Priklopi Ventoy particijo po zagonu Linuxa",
|
||||||
|
"VTLANG_SECONDARY_BOOT_MENU": "Prikaz sekundarnega zagonskega menija",
|
||||||
|
|
||||||
|
"MENU_STR_XXX": ""
|
||||||
|
}
|
@@ -31,7 +31,7 @@
|
|||||||
"VTLANG_POWER": "Живлення",
|
"VTLANG_POWER": "Живлення",
|
||||||
"VTLANG_POWER_REBOOT": "Перезавантажити",
|
"VTLANG_POWER_REBOOT": "Перезавантажити",
|
||||||
"VTLANG_POWER_HALT": "Завершити роботу",
|
"VTLANG_POWER_HALT": "Завершити роботу",
|
||||||
"VTLANG_POWER_BOOT_EFIFW": "Перезавантажитись до налаштувань EFI",
|
"VTLANG_POWER_BOOT_EFIFW": "Перезавантажитись до налаштувань UEFI/BIOS",
|
||||||
|
|
||||||
"VTLANG_KEYBRD_LAYOUT": "Розкладка клавіатури",
|
"VTLANG_KEYBRD_LAYOUT": "Розкладка клавіатури",
|
||||||
"VTLANG_HWINFO": "Відомості про пристрій",
|
"VTLANG_HWINFO": "Відомості про пристрій",
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
"VTLANG_SCREEN_TEXT_MODE": "Перейти до текстового інтерфейсу",
|
"VTLANG_SCREEN_TEXT_MODE": "Перейти до текстового інтерфейсу",
|
||||||
"VTLANG_SCREEN_GUI_MODE": "Перейти до графічного інтерфейсу",
|
"VTLANG_SCREEN_GUI_MODE": "Перейти до графічного інтерфейсу",
|
||||||
|
|
||||||
"VTLANG_THEME_SELECT": "Обрати тему",
|
"VTLANG_THEME_SELECT": "Теми",
|
||||||
|
|
||||||
"VTLANG_UEFI_UTIL": "Утиліти Ventoy UEFI",
|
"VTLANG_UEFI_UTIL": "Утиліти Ventoy UEFI",
|
||||||
"VTLANG_UTIL_SHOW_EFI_DRV": "Показати драйвери EFI",
|
"VTLANG_UTIL_SHOW_EFI_DRV": "Показати драйвери EFI",
|
||||||
@@ -83,7 +83,7 @@
|
|||||||
"VTLANG_ENTER_REBOOT": "натисніть Enter для перезавантаження",
|
"VTLANG_ENTER_REBOOT": "натисніть Enter для перезавантаження",
|
||||||
"VTLANG_ENTER_CONTINUE": "натисніть Enter для продовження",
|
"VTLANG_ENTER_CONTINUE": "натисніть Enter для продовження",
|
||||||
|
|
||||||
"VTLANG_CTRL_TEMP_SET": "Налаштування тимчасового контролю",
|
"VTLANG_CTRL_TEMP_SET": "Різні налаштування",
|
||||||
"VTLANG_WIN11_BYPASS_CHECK": "Обійти перевірку CPU/TPM/SecureBoot під час інсталяції Windows 11",
|
"VTLANG_WIN11_BYPASS_CHECK": "Обійти перевірку CPU/TPM/SecureBoot під час інсталяції Windows 11",
|
||||||
"VTLANG_WIN11_BYPASS_NRO": "Обійти вимогу онлайн-аккаунту під час інсталяції Windows 11",
|
"VTLANG_WIN11_BYPASS_NRO": "Обійти вимогу онлайн-аккаунту під час інсталяції Windows 11",
|
||||||
"VTLANG_LINUX_REMOUNT": "Монтувати розділ Ventoy після завантаження Linux",
|
"VTLANG_LINUX_REMOUNT": "Монтувати розділ Ventoy після завантаження Linux",
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -26,7 +26,7 @@ sfs: fshelp
|
|||||||
reiserfs: fshelp
|
reiserfs: fshelp
|
||||||
part_sunpc:
|
part_sunpc:
|
||||||
zstd:
|
zstd:
|
||||||
gfxmenu: video_colors trig gfxterm bitmap_scale font normal video bitmap
|
gfxmenu: video_colors trig bitmap_scale gfxterm font normal video bitmap
|
||||||
backtrace:
|
backtrace:
|
||||||
jfs:
|
jfs:
|
||||||
help: extcmd normal
|
help: extcmd normal
|
||||||
@@ -121,7 +121,7 @@ ehci: cs5536 usb boot
|
|||||||
crypto:
|
crypto:
|
||||||
part_bsd: part_msdos
|
part_bsd: part_msdos
|
||||||
cs5536:
|
cs5536:
|
||||||
ventoy: ext2 fshelp elf btrfs font crypto gcry_md5 exfat udf div extcmd datetime normal video gcry_sha1 mmap iso9660
|
ventoy: ext2 fshelp elf btrfs crypto font gcry_md5 exfat udf datetime div extcmd normal video gcry_sha1 mmap iso9660
|
||||||
gcry_sha512: crypto
|
gcry_sha512: crypto
|
||||||
password: crypto normal
|
password: crypto normal
|
||||||
fshelp:
|
fshelp:
|
||||||
@@ -202,7 +202,7 @@ cbmemc: cbtable normal terminfo
|
|||||||
hfsplus: fshelp
|
hfsplus: fshelp
|
||||||
gcry_cast5: crypto
|
gcry_cast5: crypto
|
||||||
extcmd:
|
extcmd:
|
||||||
squash4: fshelp lzopio zfs xzio gzio
|
squash4: fshelp zstd lzopio zfs xzio gzio
|
||||||
part_plan:
|
part_plan:
|
||||||
minix_be:
|
minix_be:
|
||||||
gcry_whirlpool: crypto
|
gcry_whirlpool: crypto
|
||||||
|
Binary file not shown.
Binary file not shown.
@@ -143,7 +143,7 @@ if grep "$DISK" /proc/mounts; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
#check swap partition
|
#check swap partition
|
||||||
if swapon --help 2>&1 | grep -q '^ \-s,'; then
|
if swapon --help 2>&1 | grep -q '^ -s,'; then
|
||||||
if swapon -s | grep -q "^${DISK}[0-9]"; then
|
if swapon -s | grep -q "^${DISK}[0-9]"; then
|
||||||
vterr "$DISK is used as swap, please swapoff it first!"
|
vterr "$DISK is used as swap, please swapoff it first!"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -195,7 +195,7 @@ if [ "$MODE" = "install" -a -z "$NONDESTRUCTIVE" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$PARTTOOL" = "parted" ]; then
|
if [ "$PARTTOOL" = "parted" ]; then
|
||||||
if parted $DISK p | grep -i -q 'sector size.*4096.*4096'; then
|
if parted -s $DISK p 2>&1 | grep -i -q 'sector size.*4096.*4096'; then
|
||||||
vterr "Currently Ventoy does not support 4K native device."
|
vterr "Currently Ventoy does not support 4K native device."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
Binary file not shown.
@@ -585,67 +585,67 @@
|
|||||||
"STRXXX":""
|
"STRXXX":""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name":"Portuguese Brazilian (Português do Brasil)",
|
"name":"Portuguese Brazilian (Português Brasileiro)",
|
||||||
"FontFamily":"Courier New",
|
"FontFamily":"Courier New",
|
||||||
"FontSize":16,
|
"FontSize":16,
|
||||||
"Author":"EstevaoCostaG3, David BrazSan, Hildo Guillardi Júnior, Chrystian Rubio",
|
"Author":"EstevaoCostaG3, David BrazSan, Hildo Guillardi Júnior, Chrystian Rubio, Felipe",
|
||||||
|
|
||||||
"STR_ERROR":"Erro",
|
"STR_ERROR":"Erro",
|
||||||
"STR_WARNING":"Atenção",
|
"STR_WARNING":"Aviso",
|
||||||
"STR_INFO":"Informação",
|
"STR_INFO":"Informações",
|
||||||
"STR_INCORRECT_DIR":"Por favor, execute no diretório correto!",
|
"STR_INCORRECT_DIR":"Por favor execute no diretório correto!",
|
||||||
"STR_INCORRECT_TREE_DIR":"Não me execute aqui, por favor baixe o pacote de instalação lançado, e me execute lá.",
|
"STR_INCORRECT_TREE_DIR":"Não me execute aqui, por favor baixe o pacote de instalação lançado e me execute lá.",
|
||||||
"STR_DEVICE":"Dispositivo",
|
"STR_DEVICE":"Dispositivo",
|
||||||
"STR_LOCAL_VER":"Ventoy em pacote",
|
"STR_LOCAL_VER":"Ventoy no Pacote",
|
||||||
"STR_DISK_VER":"Ventoy em dispositivo",
|
"STR_DISK_VER":"Ventoy no Dispositivo",
|
||||||
"STR_STATUS":"Status - PRONTO",
|
"STR_STATUS":"Status - PRONTO",
|
||||||
"STR_INSTALL":"Instalar",
|
"STR_INSTALL":"Instalar",
|
||||||
"STR_UPDATE":"Atualizar",
|
"STR_UPDATE":"Atualizar",
|
||||||
"STR_UPDATE_TIP":"A operação de atualização é segura, os arquivos ISO não serão alterados.#@Continuar?",
|
"STR_UPDATE_TIP":"A operação de atualização é segura, os arquivos ISO não serão alterados.#@Continuar?",
|
||||||
"STR_INSTALL_TIP":"O disco será formatado e todos os dados serão perdidos.#@Continuar?",
|
"STR_INSTALL_TIP":"O dispositivo será formatado e todos os dados serão perdidos.#@Continuar?",
|
||||||
"STR_INSTALL_TIP2":"O disco será formatado e todos os dados serão perdidos.#@Continuar? (Verificação dupla)",
|
"STR_INSTALL_TIP2":"O dispositivo será formatado e todos os dados serão perdidos.#@Continuar? (Verificação Dupla)",
|
||||||
"STR_INSTALL_SUCCESS":"Parabéns!#@Ventoy foi instalado com sucesso no dispositivo.",
|
"STR_INSTALL_SUCCESS":"Parabéns!#@O Ventoy foi instalado com sucesso no dispositivo.",
|
||||||
"STR_INSTALL_FAILED":"Um erro ocorreu durante a instalação. Você pode reconectar o dispositivo USB e tentar novamente. Verifique o arquivo log.txt para mais detalhes.",
|
"STR_INSTALL_FAILED":"Um erro ocorreu durante a instalação. Você pode re-inserir o dispositivo USB e tentar de novo. Verifique o log.txt para mais detalhes. Se ele sempre falha por favor refira-se ao FAQ no site oficial da web.",
|
||||||
"STR_UPDATE_SUCCESS":"Parabéns!#@Ventoy foi atualizado com sucesso no dispositivo.",
|
"STR_UPDATE_SUCCESS":"Parabéns!#@O Ventoy foi atualizado com sucesso no dispositivo.",
|
||||||
"STR_UPDATE_FAILED":"Um erro ocorreu durante a atualização. Você pode reconectar o dispositivo USB e tentar novamente. Verifique o arquivo log.txt para mais detalhes.",
|
"STR_UPDATE_FAILED":"Um erro ocorreu durante a atualização. Você pode re-inserir o dispositivo USB e tentar de novo. Verifique o log.txt para mais detalhes. Se ele sempre falha por favor refira-se ao FAQ no site oficial da web.",
|
||||||
"STR_WAIT_PROCESS":"Uma tarefa está em execução, por favor espere...",
|
"STR_WAIT_PROCESS":"Um thread está em execução, por favor espere...",
|
||||||
"STR_MENU_OPTION":"Opção",
|
"STR_MENU_OPTION":"Opção",
|
||||||
"STR_MENU_SECURE_BOOT":"Boot seguro",
|
"STR_MENU_SECURE_BOOT":"Suporte ao Boot Seguro",
|
||||||
"STR_MENU_PART_CFG":"Configuração de Partição",
|
"STR_MENU_PART_CFG":"Configuração da Partição",
|
||||||
"STR_BTN_OK":"OK",
|
"STR_BTN_OK":"OK",
|
||||||
"STR_BTN_CANCEL":"Cancelar",
|
"STR_BTN_CANCEL":"Cancelar",
|
||||||
"STR_PRESERVE_SPACE":"Preservar algum espaço no final do disco",
|
"STR_PRESERVE_SPACE":"Preservar algum espaço no fim do disco",
|
||||||
"STR_SPACE_VAL_INVALID":"Valor inválido para o espaço reservado",
|
"STR_SPACE_VAL_INVALID":"Valor inválido para o espaço reservado",
|
||||||
"STR_MENU_CLEAR":"Remover o Ventoy",
|
"STR_MENU_CLEAR":"Limpar o Ventoy",
|
||||||
"STR_CLEAR_SUCCESS":"O Ventoy foi removido deste dispositivo com sucesso.",
|
"STR_CLEAR_SUCCESS":"O Ventoy foi removido do dispositivo com sucesso.",
|
||||||
"STR_CLEAR_FAILED":"Um erro ocorreu ao remover o Ventoy do disco. Você pode reconectar o dispositivo USB e tentar novamente. Verifique o Arquivo log.txt para mais detalhes.",
|
"STR_CLEAR_FAILED":"Um erro ocorreu quando removia o Ventoy do disco. Você pode re-inserir o dispositivo USB e tentar de novo. Verifique o log.txt para mais detalhes.",
|
||||||
"STR_MENU_PART_STYLE":"Estilo de Partição",
|
"STR_MENU_PART_STYLE":"Estilo da Partição",
|
||||||
"STR_DISK_2TB_MBR_ERROR":"Por favor selecione GPT para discos maiores que 2TB",
|
"STR_DISK_2TB_MBR_ERROR":"Por favor selecione o GPT para dispositivos acima de 2 TBs",
|
||||||
"STR_SHOW_ALL_DEV":"Mostrar Todos os Dispositivos",
|
"STR_SHOW_ALL_DEV":"Mostrar Todos os Dispositivos",
|
||||||
"STR_PART_ALIGN_4KB":"Alinhar partições com 4kB",
|
"STR_PART_ALIGN_4KB":"Alinhar as partições com 4 KBs",
|
||||||
"STR_WEB_COMMUNICATION_ERR":"Erro de comunicação:",
|
"STR_WEB_COMMUNICATION_ERR":"Erro de comunicação:",
|
||||||
"STR_WEB_REMOTE_ABNORMAL":"Erro de comunicação: remoto anormal",
|
"STR_WEB_REMOTE_ABNORMAL":"Erro de comunicação: Remoto Anormal",
|
||||||
"STR_WEB_REQUEST_TIMEOUT":"Erro de comunicação: Solicitação cronometrada",
|
"STR_WEB_REQUEST_TIMEOUT":"Erro de comunicação: O Tempo da Requisição se Esgotou",
|
||||||
"STR_WEB_SERVICE_UNAVAILABLE":"Erro de comunicação: Serviço indisponível",
|
"STR_WEB_SERVICE_UNAVAILABLE":"Erro de comunicação: Serviço Indisponível",
|
||||||
"STR_WEB_TOKEN_MISMATCH":"Status daemon atualizado, por favor, tente novamente mais tarde.",
|
"STR_WEB_TOKEN_MISMATCH":"Status do daemon atualizado, por favor tente de novo mais tarde.",
|
||||||
"STR_WEB_SERVICE_BUSY":"O serviço está ocupado, por favor, tente novamente mais tarde.",
|
"STR_WEB_SERVICE_BUSY":"O serviço está ocupado, por favor tente de novo mais tarde.",
|
||||||
"STR_MENU_VTSI_CREATE":"Gerar arquivo VTSI",
|
"STR_MENU_VTSI_CREATE":"Gerar arquivo VTSI",
|
||||||
"STR_VTSI_CREATE_TIP":"Não será gravado no dispositivo, desta vez, apenas gerado um arquivo VTSI.#@Continuar?",
|
"STR_VTSI_CREATE_TIP":"Desta vez não gravará no dispositivo mas vai gerar apenas um arquivo VTSI.#@Continuar?",
|
||||||
"STR_VTSI_CREATE_SUCCESS":"Arquivo VTSI criado com sucesso!#@Você pode usar Rufus(3.15+) para gravá-lo no dispositivo e completar a instalação do Ventoy.",
|
"STR_VTSI_CREATE_SUCCESS":"Arquivo VTSI criado com sucesso!#@Você pode usar o Rufus (3.15+) pra gravá-lo no dispositivo e completar a instalação do Ventoy.",
|
||||||
"STR_VTSI_CREATE_FAILED":"Criação do arquivo VTSI falhada.",
|
"STR_VTSI_CREATE_FAILED":"A criação do arquivo VTSI falhou.",
|
||||||
"STR_MENU_PART_RESIZE":"Instalação não destrutiva",
|
"STR_MENU_PART_RESIZE":"Instalação não destrutiva",
|
||||||
"STR_PART_RESIZE_TIP":"Ventoy tentará uma instalação não destrutiva, se possível.#@Continuar?",
|
"STR_PART_RESIZE_TIP":"O Ventoy tentará uma instalação não destrutiva se possível.#@Continuar?",
|
||||||
"STR_PART_RESIZE_SUCCESS":"Parabéns!#@Instalação não destrutiva do Ventoy concluída com sucesso.",
|
"STR_PART_RESIZE_SUCCESS":"Parabéns!#@Instalação não destrutiva do Ventoy concluída com sucesso.",
|
||||||
"STR_PART_RESIZE_FAILED":"Falha na instalação não destrutiva, cheque o arquivo log.txt para entender.",
|
"STR_PART_RESIZE_FAILED":"A instalação não destrutiva falhou, verifique o log.txt para detalhes.",
|
||||||
"STR_PART_RESIZE_UNSUPPORTED":"Instalação não destrutiva do Ventoy interrompida devido fato desconhecido. Cheque o arquivo log.txt para detalhes.",
|
"STR_PART_RESIZE_UNSUPPORTED":"A instalação não destrutiva do Ventoy parou porque algumas condições não podem ser atendidas. Verifique o log.txt para detalhes.",
|
||||||
"STR_INSTALL_YES_TIP1":"Aviso: Os dados serão perdidos!",
|
"STR_INSTALL_YES_TIP1":"Aviso: Os dados serão perdidos!",
|
||||||
"STR_INSTALL_YES_TIP2":"Por favor, digite YES na caixa de texto abaixo para confirmar que você realmente quer fazer uma nova instalação em vez de atualização.",
|
"STR_INSTALL_YES_TIP2":"Por favor insira YES na caixa de texto abaixo pra confirmar que você de fato quer fazer uma nova instalação ao invés de atualizar.",
|
||||||
"STR_PART_VENTOY_FS":"Sistema de arquivos para partição Ventoy",
|
"STR_PART_VENTOY_FS":"Sistema de Arquivos para a partição do Ventoy",
|
||||||
"STR_PART_FS":"Sistema de arquivo",
|
"STR_PART_FS":"Sistema de Arquivos",
|
||||||
"STR_PART_CLUSTER":"Tamanho do cluster",
|
"STR_PART_CLUSTER":"Tamanho do Cluster",
|
||||||
"STR_PART_CLUSTER_DEFAULT":"Valor padrão do sistema",
|
"STR_PART_CLUSTER_DEFAULT":"Valor Padrão do Sistema",
|
||||||
"STR_DONATE":"Doar",
|
"STR_DONATE":"Doar",
|
||||||
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.",
|
"STR_4KN_UNSUPPORTED":"Atualmente o Ventoy não suporta dispositivos 4K nativos.",
|
||||||
|
|
||||||
"STRXXX":""
|
"STRXXX":""
|
||||||
},
|
},
|
||||||
@@ -735,9 +735,9 @@
|
|||||||
"STR_INSTALL_TIP":"Das Gerät wird formatiert und alle Daten gehen verloren.#@Fortfahren?",
|
"STR_INSTALL_TIP":"Das Gerät wird formatiert und alle Daten gehen verloren.#@Fortfahren?",
|
||||||
"STR_INSTALL_TIP2":"Das Gerät wird formatiert und alle Daten gehen verloren.#@Fortfahren? (erneute Überprüfung)",
|
"STR_INSTALL_TIP2":"Das Gerät wird formatiert und alle Daten gehen verloren.#@Fortfahren? (erneute Überprüfung)",
|
||||||
"STR_INSTALL_SUCCESS":"Herzlichen Glückwunsch!#@Ventoy wurde erfolgreich auf dem Gerät installiert.",
|
"STR_INSTALL_SUCCESS":"Herzlichen Glückwunsch!#@Ventoy wurde erfolgreich auf dem Gerät installiert.",
|
||||||
"STR_INSTALL_FAILED":"Während der Installation ist ein Fehler aufgetreten. Stecken Sie das Gerät neu ein und versuchen Sie es erneut. Überprüfen Sie die log.txt auf Details.",
|
"STR_INSTALL_FAILED":"Während der Installation ist ein Fehler aufgetreten. Stecken Sie das Gerät neu ein und versuchen Sie es erneut. Details finden Sie in log.txt. Falls der Vorgang immer fehlschlägt, lesen Sie bitte das FAQ auf der offiziellen Website.",
|
||||||
"STR_UPDATE_SUCCESS":"Herzlichen Glückwunsch!#@Ventoy wurde erfolgreich auf dem Gerät aktualisiert.",
|
"STR_UPDATE_SUCCESS":"Herzlichen Glückwunsch!#@Ventoy wurde erfolgreich auf dem Gerät aktualisiert.",
|
||||||
"STR_UPDATE_FAILED":"Während der Aktualisierung ist ein Fehler aufgetreten. Stecken Sie das Gerät neu ein und versuchen Sie es erneut. Überprüfen Sie die log.txt auf Details.",
|
"STR_UPDATE_FAILED":"Während der Aktualisierung ist ein Fehler aufgetreten. Stecken Sie das Gerät neu ein und versuchen Sie es erneut. Details finden Sie in log.txt. Falls der Vorgang immer fehlschlägt, lesen Sie bitte das FAQ auf der offiziellen Website.",
|
||||||
"STR_WAIT_PROCESS":"Ein anderer Thread läuft, bitte warten...",
|
"STR_WAIT_PROCESS":"Ein anderer Thread läuft, bitte warten...",
|
||||||
"STR_MENU_OPTION":"Optionen",
|
"STR_MENU_OPTION":"Optionen",
|
||||||
"STR_MENU_SECURE_BOOT":"Secure Boot",
|
"STR_MENU_SECURE_BOOT":"Secure Boot",
|
||||||
@@ -775,7 +775,7 @@
|
|||||||
"STR_PART_CLUSTER":"Clustergröße",
|
"STR_PART_CLUSTER":"Clustergröße",
|
||||||
"STR_PART_CLUSTER_DEFAULT":"Systemstandardwert",
|
"STR_PART_CLUSTER_DEFAULT":"Systemstandardwert",
|
||||||
"STR_DONATE":"Spenden",
|
"STR_DONATE":"Spenden",
|
||||||
"STR_4KN_UNSUPPORTED":"Ventoy unterstützt dereit keine nativen 4K Geräte.",
|
"STR_4KN_UNSUPPORTED":"Ventoy unterstützt derzeit keine nativen 4K Geräte.",
|
||||||
|
|
||||||
"STRXXX":""
|
"STRXXX":""
|
||||||
},
|
},
|
||||||
@@ -905,7 +905,7 @@
|
|||||||
"STR_PART_CLUSTER":"Taille de cluster",
|
"STR_PART_CLUSTER":"Taille de cluster",
|
||||||
"STR_PART_CLUSTER_DEFAULT":"Valeur par défaut du système",
|
"STR_PART_CLUSTER_DEFAULT":"Valeur par défaut du système",
|
||||||
"STR_DONATE":"Faire un don",
|
"STR_DONATE":"Faire un don",
|
||||||
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.",
|
"STR_4KN_UNSUPPORTED":"Actuellement, Ventoy ne prend pas en charge les appareils natifs 4K.",
|
||||||
|
|
||||||
"STRXXX":""
|
"STRXXX":""
|
||||||
},
|
},
|
||||||
@@ -1223,7 +1223,7 @@
|
|||||||
"STR_PART_RESIZE_FAILED":"Не удалось выполнить неразрушающую установку, см. файл log.txt с подробностями.",
|
"STR_PART_RESIZE_FAILED":"Не удалось выполнить неразрушающую установку, см. файл log.txt с подробностями.",
|
||||||
"STR_PART_RESIZE_UNSUPPORTED":"Неразрушающая установка Ventoy остановлена из-за несоответствия некоторым требованиям. См. файл log.txt с подробностями.",
|
"STR_PART_RESIZE_UNSUPPORTED":"Неразрушающая установка Ventoy остановлена из-за несоответствия некоторым требованиям. См. файл log.txt с подробностями.",
|
||||||
"STR_INSTALL_YES_TIP1":"ВНИМАНИЕ: все данные будут потеряны!",
|
"STR_INSTALL_YES_TIP1":"ВНИМАНИЕ: все данные будут потеряны!",
|
||||||
"STR_INSTALL_YES_TIP2":"Введите «YES» в текстовом поле ниже, чтобы подтвердить, что вы действительно хотите выполнить новую установку, а не обновление.",
|
"STR_INSTALL_YES_TIP2":"Введите «YES» в текстовом поле ниже, чтобы подтвердить, что Вы действительно хотите выполнить новую установку, а не обновление.",
|
||||||
"STR_PART_VENTOY_FS":"Файловая система для раздела Ventoy",
|
"STR_PART_VENTOY_FS":"Файловая система для раздела Ventoy",
|
||||||
"STR_PART_FS":"Тип:",
|
"STR_PART_FS":"Тип:",
|
||||||
"STR_PART_CLUSTER":"Размер кластера:",
|
"STR_PART_CLUSTER":"Размер кластера:",
|
||||||
@@ -1489,7 +1489,7 @@
|
|||||||
"STR_PART_CLUSTER":"Dimensiunea clusterului",
|
"STR_PART_CLUSTER":"Dimensiunea clusterului",
|
||||||
"STR_PART_CLUSTER_DEFAULT":"Valoarea implicită a sistemului",
|
"STR_PART_CLUSTER_DEFAULT":"Valoarea implicită a sistemului",
|
||||||
"STR_DONATE":"Donează",
|
"STR_DONATE":"Donează",
|
||||||
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.",
|
"STR_4KN_UNSUPPORTED":"Momentan, Ventoy nu suporta dispozitive native 4k.",
|
||||||
|
|
||||||
"STRXXX":""
|
"STRXXX":""
|
||||||
},
|
},
|
||||||
@@ -1614,11 +1614,11 @@
|
|||||||
"STR_PART_RESIZE_UNSUPPORTED":"L'installazione non distruttiva di Ventoy è stata interrotta perché alcune condizioni non possono essere soddisfatte.#@Controlla il file log.txt per i dettagli.",
|
"STR_PART_RESIZE_UNSUPPORTED":"L'installazione non distruttiva di Ventoy è stata interrotta perché alcune condizioni non possono essere soddisfatte.#@Controlla il file log.txt per i dettagli.",
|
||||||
"STR_INSTALL_YES_TIP1":"Attenzione: i dati verranno persi!",
|
"STR_INSTALL_YES_TIP1":"Attenzione: i dati verranno persi!",
|
||||||
"STR_INSTALL_YES_TIP2":"Digita YES nella casella di testo qui sotto per confermare che vuoi davvero eseguire un'installazione pulita anziché un aggiornamento.",
|
"STR_INSTALL_YES_TIP2":"Digita YES nella casella di testo qui sotto per confermare che vuoi davvero eseguire un'installazione pulita anziché un aggiornamento.",
|
||||||
"STR_PART_VENTOY_FS":"File system per la partizione Ventoy",
|
"STR_PART_VENTOY_FS":"File system partizione Ventoy",
|
||||||
"STR_PART_FS":"File system",
|
"STR_PART_FS":"File system",
|
||||||
"STR_PART_CLUSTER":"Dimensione del cluster",
|
"STR_PART_CLUSTER":"Dimensione cluster",
|
||||||
"STR_PART_CLUSTER_DEFAULT":"Valore predefinito di sistema",
|
"STR_PART_CLUSTER_DEFAULT":"Valore predefinito sistema",
|
||||||
"STR_DONATE":"Donare",
|
"STR_DONATE":"Dona",
|
||||||
"STR_4KN_UNSUPPORTED":"Attualmente Ventoy non supporta dispositivi nativi 4K.",
|
"STR_4KN_UNSUPPORTED":"Attualmente Ventoy non supporta dispositivi nativi 4K.",
|
||||||
|
|
||||||
"STRXXX":""
|
"STRXXX":""
|
||||||
@@ -1822,13 +1822,13 @@
|
|||||||
"name":"Serbian Latin (Srpski)",
|
"name":"Serbian Latin (Srpski)",
|
||||||
"FontFamily":"Courier New",
|
"FontFamily":"Courier New",
|
||||||
"FontSize":16,
|
"FontSize":16,
|
||||||
"Author":"Bojan Maksimović, panickingkernel, Zoran Jankov, Stefan Šućur",
|
"Author":"Bojan Maksimović, panickingkernel, Zoran Jankov, Stefan Šućur, Kosta Stojiljković",
|
||||||
|
|
||||||
"STR_ERROR":"Greška",
|
"STR_ERROR":"Greška",
|
||||||
"STR_WARNING":"Upozorenje",
|
"STR_WARNING":"Upozorenje",
|
||||||
"STR_INFO":"Informacija",
|
"STR_INFO":"Informacija",
|
||||||
"STR_INCORRECT_DIR":"Molim Vas, pokrenite me u pravom direktorijumu!",
|
"STR_INCORRECT_DIR":"Molim Vas, pokrenite me u pravom direktorijumu!",
|
||||||
"STR_INCORRECT_TREE_DIR":"Nemojте me pokretati ovde, molim Vas preuzmite objavljeni instalacioni paket i pokrenite me tamo.",
|
"STR_INCORRECT_TREE_DIR":"Nemojtе me pokretati ovde, molim Vas preuzmite objavljeni instalacioni paket i pokrenite me tamo.",
|
||||||
"STR_DEVICE":"Uređaj",
|
"STR_DEVICE":"Uređaj",
|
||||||
"STR_LOCAL_VER":"Ventoy u paketu",
|
"STR_LOCAL_VER":"Ventoy u paketu",
|
||||||
"STR_DISK_VER":"Ventoy u uređaju",
|
"STR_DISK_VER":"Ventoy u uređaju",
|
||||||
@@ -1879,7 +1879,7 @@
|
|||||||
"STR_PART_CLUSTER":"Veličina klastera",
|
"STR_PART_CLUSTER":"Veličina klastera",
|
||||||
"STR_PART_CLUSTER_DEFAULT":"Podrazumevana sistemska vrednost",
|
"STR_PART_CLUSTER_DEFAULT":"Podrazumevana sistemska vrednost",
|
||||||
"STR_DONATE":"Donirajte",
|
"STR_DONATE":"Donirajte",
|
||||||
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.",
|
"STR_4KN_UNSUPPORTED":"Ventoy trenutno ne podržava 4K izvorne uređaje.",
|
||||||
|
|
||||||
"STRXXX":""
|
"STRXXX":""
|
||||||
},
|
},
|
||||||
@@ -1887,7 +1887,7 @@
|
|||||||
"name":"Serbian Cyrillic (Српски)",
|
"name":"Serbian Cyrillic (Српски)",
|
||||||
"FontFamily":"Courier New",
|
"FontFamily":"Courier New",
|
||||||
"FontSize":16,
|
"FontSize":16,
|
||||||
"Author":"Bojan Maksimović, panickingkernel, Zoran Jankov, Stefan Šućur",
|
"Author":"Bojan Maksimović, panickingkernel, Zoran Jankov, Stefan Šućur, Kosta Stojiljković",
|
||||||
|
|
||||||
"STR_ERROR":"Грешка",
|
"STR_ERROR":"Грешка",
|
||||||
"STR_WARNING":"Упозорење",
|
"STR_WARNING":"Упозорење",
|
||||||
@@ -1923,7 +1923,7 @@
|
|||||||
"STR_SHOW_ALL_DEV":"Прикажи све уређаје",
|
"STR_SHOW_ALL_DEV":"Прикажи све уређаје",
|
||||||
"STR_PART_ALIGN_4KB":"Поравнајте партиције са 4KB",
|
"STR_PART_ALIGN_4KB":"Поравнајте партиције са 4KB",
|
||||||
"STR_WEB_COMMUNICATION_ERR":"Комуникациона грешка:",
|
"STR_WEB_COMMUNICATION_ERR":"Комуникациона грешка:",
|
||||||
"STR_WEB_REMOTE_ABNORMAL":"Комуникациона грешка: ненормално даљинско управљање",
|
"STR_WEB_REMOTE_ABNORMAL":"Комуникациона грешка: Ненормално даљинско управљање",
|
||||||
"STR_WEB_REQUEST_TIMEOUT":"Комуникациона грешка: Захтев је истекао",
|
"STR_WEB_REQUEST_TIMEOUT":"Комуникациона грешка: Захтев је истекао",
|
||||||
"STR_WEB_SERVICE_UNAVAILABLE":"Комуникациона грешка: Сервис је недоступан",
|
"STR_WEB_SERVICE_UNAVAILABLE":"Комуникациона грешка: Сервис је недоступан",
|
||||||
"STR_WEB_TOKEN_MISMATCH":"Статус демона ажуриран, покушајте поново касније.",
|
"STR_WEB_TOKEN_MISMATCH":"Статус демона ажуриран, покушајте поново касније.",
|
||||||
@@ -1944,7 +1944,7 @@
|
|||||||
"STR_PART_CLUSTER":"Величина кластера",
|
"STR_PART_CLUSTER":"Величина кластера",
|
||||||
"STR_PART_CLUSTER_DEFAULT":"Подразумевана системска вредност",
|
"STR_PART_CLUSTER_DEFAULT":"Подразумевана системска вредност",
|
||||||
"STR_DONATE":"Донирајте",
|
"STR_DONATE":"Донирајте",
|
||||||
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.",
|
"STR_4KN_UNSUPPORTED":"Ventoy тренутно не подржава 4К изворне уређаје.",
|
||||||
|
|
||||||
"STRXXX":""
|
"STRXXX":""
|
||||||
},
|
},
|
||||||
@@ -2399,7 +2399,7 @@
|
|||||||
"STR_PART_CLUSTER":"Tamanho do cluster",
|
"STR_PART_CLUSTER":"Tamanho do cluster",
|
||||||
"STR_PART_CLUSTER_DEFAULT":"Valor predefinido do sistema",
|
"STR_PART_CLUSTER_DEFAULT":"Valor predefinido do sistema",
|
||||||
"STR_DONATE":"Doar",
|
"STR_DONATE":"Doar",
|
||||||
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.",
|
"STR_4KN_UNSUPPORTED":"Atualmente, o Ventoy não é compatível com dispositivos nativos 4K.",
|
||||||
|
|
||||||
"STRXXX":""
|
"STRXXX":""
|
||||||
},
|
},
|
||||||
@@ -2622,7 +2622,7 @@
|
|||||||
"STR_INSTALL_FAILED":"Παρουσιάστηκε σφάλμα κατά την εγκατάσταση. Μπορείτε να επανασυνδέσετε το USB και να δοκιμάσετε ξανά. Ελέγξτε το αρχείο log.txt για λεπτομέρειες.",
|
"STR_INSTALL_FAILED":"Παρουσιάστηκε σφάλμα κατά την εγκατάσταση. Μπορείτε να επανασυνδέσετε το USB και να δοκιμάσετε ξανά. Ελέγξτε το αρχείο log.txt για λεπτομέρειες.",
|
||||||
"STR_UPDATE_SUCCESS":"Συγχαρητήρια!#@Ventoy ενημερώθηκε με επιτυχία στη συσκευή.",
|
"STR_UPDATE_SUCCESS":"Συγχαρητήρια!#@Ventoy ενημερώθηκε με επιτυχία στη συσκευή.",
|
||||||
"STR_UPDATE_FAILED":"Παρουσιάστηκε σφάλμα κατά την ενημέρωση. Μπορείτε να επανασυνδέσετε το USB και να δοκιμάσετε ξανά. Ελέγξτε το αρχείο log.txt για λεπτομέρειες.",
|
"STR_UPDATE_FAILED":"Παρουσιάστηκε σφάλμα κατά την ενημέρωση. Μπορείτε να επανασυνδέσετε το USB και να δοκιμάσετε ξανά. Ελέγξτε το αρχείο log.txt για λεπτομέρειες.",
|
||||||
"STR_WAIT_PROCESS":"Ένα νήμα εκτελείται, παρακαλώ περιμένετε...",
|
"STR_WAIT_PROCESS":"Μια εργασία εκτελείται, παρακαλώ περιμένετε...",
|
||||||
"STR_MENU_OPTION":"Επιλογές",
|
"STR_MENU_OPTION":"Επιλογές",
|
||||||
"STR_MENU_SECURE_BOOT":"Υποστήριξη ασφαλούς εκκίνησης (Secure Boot)",
|
"STR_MENU_SECURE_BOOT":"Υποστήριξη ασφαλούς εκκίνησης (Secure Boot)",
|
||||||
"STR_MENU_PART_CFG":"Διαμόρφωση κατατμήσεων",
|
"STR_MENU_PART_CFG":"Διαμόρφωση κατατμήσεων",
|
||||||
@@ -2630,7 +2630,7 @@
|
|||||||
"STR_BTN_CANCEL":"Ακύρωση",
|
"STR_BTN_CANCEL":"Ακύρωση",
|
||||||
"STR_PRESERVE_SPACE":"Διατηρήστε λίγο χώρο στο κάτω μέρος του δίσκου",
|
"STR_PRESERVE_SPACE":"Διατηρήστε λίγο χώρο στο κάτω μέρος του δίσκου",
|
||||||
"STR_SPACE_VAL_INVALID":"Μη έγκυρη τιμή για τον δεσμευμένο χώρο",
|
"STR_SPACE_VAL_INVALID":"Μη έγκυρη τιμή για τον δεσμευμένο χώρο",
|
||||||
"STR_MENU_CLEAR":"Απεγκατάσταση του Ventoy",
|
"STR_MENU_CLEAR":"Κατάργηση του Ventoy",
|
||||||
"STR_CLEAR_SUCCESS":"Το Ventoy καταργήθηκε με επιτυχία από τη συσκευή.",
|
"STR_CLEAR_SUCCESS":"Το Ventoy καταργήθηκε με επιτυχία από τη συσκευή.",
|
||||||
"STR_CLEAR_FAILED":"Παρουσιάστηκε σφάλμα κατά την εκκαθάριση του Ventoy από το δίσκο. Μπορείτε να επανασυνδέσετε το USB και να δοκιμάσετε ξανά. Ελέγξτε το αρχείο log.txt για λεπτομέρειες.",
|
"STR_CLEAR_FAILED":"Παρουσιάστηκε σφάλμα κατά την εκκαθάριση του Ventoy από το δίσκο. Μπορείτε να επανασυνδέσετε το USB και να δοκιμάσετε ξανά. Ελέγξτε το αρχείο log.txt για λεπτομέρειες.",
|
||||||
"STR_MENU_PART_STYLE":"Στυλ κατατμήσεων",
|
"STR_MENU_PART_STYLE":"Στυλ κατατμήσεων",
|
||||||
@@ -2644,7 +2644,7 @@
|
|||||||
"STR_WEB_TOKEN_MISMATCH":"Η κατάσταση του δαίμονα επικαιροποιήθηκε. Παρακαλώ δοκιμάστε αργότερα.",
|
"STR_WEB_TOKEN_MISMATCH":"Η κατάσταση του δαίμονα επικαιροποιήθηκε. Παρακαλώ δοκιμάστε αργότερα.",
|
||||||
"STR_WEB_SERVICE_BUSY":"Η υπηρεσία είναι απασχολημένη. Παρακαλώ δοκιμάστε αργότερα.",
|
"STR_WEB_SERVICE_BUSY":"Η υπηρεσία είναι απασχολημένη. Παρακαλώ δοκιμάστε αργότερα.",
|
||||||
"STR_MENU_VTSI_CREATE":"Δημιουργία αρχείου VTSI",
|
"STR_MENU_VTSI_CREATE":"Δημιουργία αρχείου VTSI",
|
||||||
"STR_VTSI_CREATE_TIP":"Αυτή τη φορά δεν θα γράψει στη συσκευή, αλλά θα δημιουργήσει μόνο ένα αρχείο VTSI#@Συνέχεια;",
|
"STR_VTSI_CREATE_TIP":"Αυτή τη φορά δε θα γράψει στη συσκευή, αλλά θα δημιουργήσει μόνο ένα αρχείο VTSI#@Συνέχεια;",
|
||||||
"STR_VTSI_CREATE_SUCCESS":"Το αρχείο VTSI δημιουργήθηκε με επιτυχία!#@Μπορείτε να χρησιμοποιήσετε το Rufus(3.15+) για να το γράψετε στη συσκευή ώστε να ολοκληρώσετε την εγκατάσταση του Ventoy.",
|
"STR_VTSI_CREATE_SUCCESS":"Το αρχείο VTSI δημιουργήθηκε με επιτυχία!#@Μπορείτε να χρησιμοποιήσετε το Rufus(3.15+) για να το γράψετε στη συσκευή ώστε να ολοκληρώσετε την εγκατάσταση του Ventoy.",
|
||||||
"STR_VTSI_CREATE_FAILED":"Αποτυχία δημιουργίας αρχείου VTSI.",
|
"STR_VTSI_CREATE_FAILED":"Αποτυχία δημιουργίας αρχείου VTSI.",
|
||||||
"STR_MENU_PART_RESIZE":"Μη καταστροφική εγκατάσταση",
|
"STR_MENU_PART_RESIZE":"Μη καταστροφική εγκατάσταση",
|
||||||
@@ -2653,13 +2653,13 @@
|
|||||||
"STR_PART_RESIZE_FAILED":"Η μη καταστροφική εγκατάσταση απέτυχε. Ελέγξτε το log.txt για λεπτομέρειες.",
|
"STR_PART_RESIZE_FAILED":"Η μη καταστροφική εγκατάσταση απέτυχε. Ελέγξτε το log.txt για λεπτομέρειες.",
|
||||||
"STR_PART_RESIZE_UNSUPPORTED":"Η μη καταστρεπτική εγκατάσταση του Ventoy σταμάτησε επειδή δεν μπορούν να τηρηθούν ορισμένες προϋποθέσεις. Ελέγξτε το log.txt για λεπτομέρειες.",
|
"STR_PART_RESIZE_UNSUPPORTED":"Η μη καταστρεπτική εγκατάσταση του Ventoy σταμάτησε επειδή δεν μπορούν να τηρηθούν ορισμένες προϋποθέσεις. Ελέγξτε το log.txt για λεπτομέρειες.",
|
||||||
"STR_INSTALL_YES_TIP1":"Προειδοποίηση: Τα δεδομένα θα χαθούν!",
|
"STR_INSTALL_YES_TIP1":"Προειδοποίηση: Τα δεδομένα θα χαθούν!",
|
||||||
"STR_INSTALL_YES_TIP2":"Εισαγάγετε ΝΑΙ στο παρακάτω πλαίσιο κειμένου για να επιβεβαιώσετε ότι όντως θέλετε να κάνετε μια νέα εγκατάσταση αντί για αναβάθμιση.",
|
"STR_INSTALL_YES_TIP2":"Εισάγετε ΝΑΙ στο παρακάτω πλαίσιο κειμένου για να επιβεβαιώσετε ότι όντως θέλετε να κάνετε μια νέα εγκατάσταση αντί για αναβάθμιση.",
|
||||||
"STR_PART_VENTOY_FS":"Σύστημα αρχείων για το διαμέρισμα Ventoy",
|
"STR_PART_VENTOY_FS":"Σύστημα αρχείων για το διαμέρισμα Ventoy",
|
||||||
"STR_PART_FS":"Σύστημα αρχείων",
|
"STR_PART_FS":"Σύστημα αρχείων",
|
||||||
"STR_PART_CLUSTER":"Μέγεθος συμπλέγματος",
|
"STR_PART_CLUSTER":"Μέγεθος συμπλέγματος",
|
||||||
"STR_PART_CLUSTER_DEFAULT":"Προεπιλεγμένη τιμή συστήματος",
|
"STR_PART_CLUSTER_DEFAULT":"Προεπιλεγμένη τιμή συστήματος",
|
||||||
"STR_DONATE":"Προσφέρω",
|
"STR_DONATE":"Δωρεά",
|
||||||
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.",
|
"STR_4KN_UNSUPPORTED":"Επί του παρόντος, το Ventoy δεν υποστηρίζει εγγενείς συσκευές 4K.",
|
||||||
|
|
||||||
"STRXXX":""
|
"STRXXX":""
|
||||||
},
|
},
|
||||||
@@ -2718,14 +2718,14 @@
|
|||||||
"STR_PART_RESIZE_SUCCESS":"Gratulerar!#@Ventoy lyckades slutföra en icke-förstörande installation.",
|
"STR_PART_RESIZE_SUCCESS":"Gratulerar!#@Ventoy lyckades slutföra en icke-förstörande installation.",
|
||||||
"STR_PART_RESIZE_FAILED":"Ventoy misslyckades slutföra en icke-förstörande installation. Mer information finns i log.txt.",
|
"STR_PART_RESIZE_FAILED":"Ventoy misslyckades slutföra en icke-förstörande installation. Mer information finns i log.txt.",
|
||||||
"STR_PART_RESIZE_UNSUPPORTED":"Icke-förstörande installation stoppades eftersom vissa villkor inte kunde uppfyllas. Mer information finns i log.txt.",
|
"STR_PART_RESIZE_UNSUPPORTED":"Icke-förstörande installation stoppades eftersom vissa villkor inte kunde uppfyllas. Mer information finns i log.txt.",
|
||||||
"STR_INSTALL_YES_TIP1":"Varning: Data kommer att gå förlorade!",
|
"STR_INSTALL_YES_TIP1":"Varning: Data kommer att gå förlorad!",
|
||||||
"STR_INSTALL_YES_TIP2":"Skriv YES i textrutan nedan för att bekräfta att du verkligen vill göra en nyinstallation i stället för att uppgradera.",
|
"STR_INSTALL_YES_TIP2":"Skriv YES i textrutan nedan för att bekräfta att du verkligen vill göra en nyinstallation i stället för att uppgradera.",
|
||||||
"STR_PART_VENTOY_FS":"Filsystem för Ventoy-partition",
|
"STR_PART_VENTOY_FS":"Filsystem för Ventoy-partition",
|
||||||
"STR_PART_FS":"Filsystem",
|
"STR_PART_FS":"Filsystem",
|
||||||
"STR_PART_CLUSTER":"Klusterstorlek",
|
"STR_PART_CLUSTER":"Klusterstorlek",
|
||||||
"STR_PART_CLUSTER_DEFAULT":"Systemets standardvärde",
|
"STR_PART_CLUSTER_DEFAULT":"Systemets standardvärde",
|
||||||
"STR_DONATE":"Donera",
|
"STR_DONATE":"Donera",
|
||||||
"STR_4KN_UNSUPPORTED":"Currently Ventoy does not support 4K native devices.",
|
"STR_4KN_UNSUPPORTED":"För närvarande stöder inte Ventoy 4K-enheter.",
|
||||||
|
|
||||||
"STRXXX":""
|
"STRXXX":""
|
||||||
},
|
},
|
||||||
|
@@ -1 +1 @@
|
|||||||
20221204 15:15:33
|
20231003 23:36:44
|
@@ -1 +1 @@
|
|||||||
ar_ARbn_BNde_DEen_USes_ESfr_FRhi_HIhr_HRhu_HUid_IDja_JPka_GEko_KRpl_PLpt_PTru_RUsr_RSta_INtr_TRzh_CNzh_TW
|
ar_ARbn_BNcs_CZde_DEel_GRen_USes_ESfr_FRhi_HIhr_HRhu_HUid_IDja_JPka_GEko_KRpl_PLpt_BRpt_PTru_RUsr_RSta_INtr_TRuk_UAzh_CNzh_TW
|
@@ -757,7 +757,7 @@
|
|||||||
|
|
||||||
<footer class="main-footer">
|
<footer class="main-footer">
|
||||||
<div class="pull-right hidden-xs">
|
<div class="pull-right hidden-xs">
|
||||||
<b id="plugson_build_date">20221204 15:15:33</b>
|
<b id="plugson_build_date">20231003 23:36:44</b>
|
||||||
</div>
|
</div>
|
||||||
<strong><a href="https://www.ventoy.net" target="_blank">https://www.ventoy.net</a></strong>
|
<strong><a href="https://www.ventoy.net" target="_blank">https://www.ventoy.net</a></strong>
|
||||||
</footer>
|
</footer>
|
||||||
@@ -777,10 +777,10 @@
|
|||||||
<script src="/static/js/jQuery-2.1.4.min.js"></script>
|
<script src="/static/js/jQuery-2.1.4.min.js"></script>
|
||||||
<!-- jquery validate -->
|
<!-- jquery validate -->
|
||||||
<script src="/static/js/jquery.validate.min.js"></script>
|
<script src="/static/js/jquery.validate.min.js"></script>
|
||||||
<script src="/static/js/jquery.validate.vtoymethods.js?v=142"></script>
|
<script src="/static/js/jquery.validate.vtoymethods.js?v=189"></script>
|
||||||
|
|
||||||
<script src="/static/js/jquery.vtoy.alert.js?v=142"></script>
|
<script src="/static/js/jquery.vtoy.alert.js?v=189"></script>
|
||||||
<script src="/static/js/vtoy.js?v=142"></script>
|
<script src="/static/js/vtoy.js?v=189"></script>
|
||||||
<script src="/static/js/md5.min.js"></script>
|
<script src="/static/js/md5.min.js"></script>
|
||||||
|
|
||||||
<!-- Bootstrap 3.3.5 -->
|
<!-- Bootstrap 3.3.5 -->
|
||||||
|
@@ -1 +1 @@
|
|||||||
ar_ARbn_BNde_DEen_USes_ESfr_FRhi_HIhr_HRhu_HUid_IDja_JPka_GEko_KRpl_PLpt_PTru_RUsr_RSta_INtr_TRzh_CNzh_TW
|
ar_ARbn_BNcs_CZde_DEel_GRen_USes_ESfr_FRhi_HIhr_HRhu_HUid_IDja_JPka_GEko_KRpl_PLpt_BRpt_PTru_RUsl_sisr_RSta_INtr_TRuk_UAzh_CNzh_TW
|
@@ -164,7 +164,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function CommonPasswordEntry(tbl, name, cn, en) {
|
function CommonPasswordEntry(tbl, name, cn, en) {
|
||||||
var tr = '<tr><td>'+name+'</td><td><input type="text" class="form-control" id="id_'+name+'" disabled="disabled"/></td>' +
|
var tr = '<tr><td>'+name+'</td><td><input type="password" class="form-control" id="id_'+name+'" disabled="disabled"/></td>' +
|
||||||
'<td><button id="id_btn_set_'+name+'" class="btn btn-primary btn-sm btn-add CommPwdSetBtn"><span class="fa fa-edit"></span><span id="id_span_edit"></span></button> ' +
|
'<td><button id="id_btn_set_'+name+'" class="btn btn-primary btn-sm btn-add CommPwdSetBtn"><span class="fa fa-edit"></span><span id="id_span_edit"></span></button> ' +
|
||||||
'<button id="id_btn_clr_'+name+'" class="btn btn-danger btn-sm btn-del CommPwdClearBtn"><span class="fa fa-trash"></span><span id="id_span_clear"></span></button></td>' +
|
'<button id="id_btn_clr_'+name+'" class="btn btn-danger btn-sm btn-del CommPwdClearBtn"><span class="fa fa-trash"></span><span id="id_span_clear"></span></button></td>' +
|
||||||
'<td><span id="id_span_desc_cn">' + cn + '</span>' +
|
'<td><span id="id_span_desc_cn">' + cn + '</span>' +
|
||||||
@@ -185,13 +185,13 @@
|
|||||||
CommonPasswordEntry($tbl, 'efipwd', '所有 .efi 文件的默认密码。', 'Default password for all .efi files.');
|
CommonPasswordEntry($tbl, 'efipwd', '所有 .efi 文件的默认密码。', 'Default password for all .efi files.');
|
||||||
CommonPasswordEntry($tbl, 'vtoypwd', '所有 .vtoy 文件的默认密码。', 'Default password for all .vtoy files.');
|
CommonPasswordEntry($tbl, 'vtoypwd', '所有 .vtoy 文件的默认密码。', 'Default password for all .vtoy files.');
|
||||||
|
|
||||||
$('input:text[id=id_bootpwd]').val(data.bootpwd);
|
$('input:password[id=id_bootpwd]').val(data.bootpwd);
|
||||||
$('input:text[id=id_isopwd]').val(data.isopwd);
|
$('input:password[id=id_isopwd]').val(data.isopwd);
|
||||||
$('input:text[id=id_wimpwd]').val(data.wimpwd);
|
$('input:password[id=id_wimpwd]').val(data.wimpwd);
|
||||||
$('input:text[id=id_imgpwd]').val(data.imgpwd);
|
$('input:password[id=id_imgpwd]').val(data.imgpwd);
|
||||||
$('input:text[id=id_efipwd]').val(data.efipwd);
|
$('input:password[id=id_efipwd]').val(data.efipwd);
|
||||||
$('input:text[id=id_vhdpwd]').val(data.vhdpwd);
|
$('input:password[id=id_vhdpwd]').val(data.vhdpwd);
|
||||||
$('input:text[id=id_vtoypwd]').val(data.vtoypwd);
|
$('input:password[id=id_vtoypwd]').val(data.vtoypwd);
|
||||||
}
|
}
|
||||||
|
|
||||||
function FillMenuPwdTable(data) {
|
function FillMenuPwdTable(data) {
|
||||||
@@ -240,13 +240,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function VtoyGetCurrentPageItem(data) {
|
function VtoyGetCurrentPageItem(data) {
|
||||||
data.bootpwd = $('input:text[id=id_bootpwd]').val();
|
data.bootpwd = $('input:password[id=id_bootpwd]').val();
|
||||||
data.isopwd = $('input:text[id=id_isopwd]').val();
|
data.isopwd = $('input:password[id=id_isopwd]').val();
|
||||||
data.wimpwd = $('input:text[id=id_wimpwd]').val();
|
data.wimpwd = $('input:password[id=id_wimpwd]').val();
|
||||||
data.imgpwd = $('input:text[id=id_imgpwd]').val();
|
data.imgpwd = $('input:password[id=id_imgpwd]').val();
|
||||||
data.efipwd = $('input:text[id=id_efipwd]').val();
|
data.efipwd = $('input:password[id=id_efipwd]').val();
|
||||||
data.vhdpwd = $('input:text[id=id_vhdpwd]').val();
|
data.vhdpwd = $('input:password[id=id_vhdpwd]').val();
|
||||||
data.vtoypwd = $('input:text[id=id_vtoypwd]').val();
|
data.vtoypwd = $('input:password[id=id_vtoypwd]').val();
|
||||||
}
|
}
|
||||||
|
|
||||||
function VtoySaveCurrentPage() {
|
function VtoySaveCurrentPage() {
|
||||||
@@ -417,7 +417,7 @@ function VtoySetPassword(common, type, cb, data) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
function set_common_pwd_callback(path, pwd, type, data) {
|
function set_common_pwd_callback(path, pwd, type, data) {
|
||||||
var selector = 'input:text[id=id_'+ data +']';
|
var selector = 'input:password[id=id_'+ data +']';
|
||||||
var value = format_password(pwd, type);
|
var value = format_password(pwd, type);
|
||||||
|
|
||||||
$(selector).val(value);
|
$(selector).val(value);
|
||||||
@@ -433,7 +433,7 @@ function VtoySetPassword(common, type, cb, data) {
|
|||||||
var id = $(this).attr('id');
|
var id = $(this).attr('id');
|
||||||
|
|
||||||
//id_btn_clr_
|
//id_btn_clr_
|
||||||
var selector = 'input:text[id=id_'+ id.substr(11) +']';
|
var selector = 'input:password[id=id_'+ id.substr(11) +']';
|
||||||
$(selector).val('');
|
$(selector).val('');
|
||||||
VtoySaveCurrentPage();
|
VtoySaveCurrentPage();
|
||||||
});
|
});
|
||||||
@@ -525,13 +525,13 @@ function VtoySetPassword(common, type, cb, data) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
function VtoySaveCurrentPage() {
|
function VtoySaveCurrentPage() {
|
||||||
var bootpwd = $('input:text[id=id_bootpwd]').val();
|
var bootpwd = $('input:password[id=id_bootpwd]').val();
|
||||||
var isopwd = $('input:text[id=id_isopwd]').val();
|
var isopwd = $('input:password[id=id_isopwd]').val();
|
||||||
var wimpwd = $('input:text[id=id_wimpwd]').val();
|
var wimpwd = $('input:password[id=id_wimpwd]').val();
|
||||||
var imgpwd = $('input:text[id=id_imgpwd]').val();
|
var imgpwd = $('input:password[id=id_imgpwd]').val();
|
||||||
var vhdpwd = $('input:text[id=id_vhdpwd]').val();
|
var vhdpwd = $('input:password[id=id_vhdpwd]').val();
|
||||||
var efipwd = $('input:text[id=id_efipwd]').val();
|
var efipwd = $('input:password[id=id_efipwd]').val();
|
||||||
var vtoypwd = $('input:text[id=id_vtoypwd]').val();
|
var vtoypwd = $('input:password[id=id_vtoypwd]').val();
|
||||||
|
|
||||||
callVtoy({
|
callVtoy({
|
||||||
method : 'save_password',
|
method : 'save_password',
|
||||||
@@ -548,13 +548,13 @@ function VtoySetPassword(common, type, cb, data) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$('input:text[id=id_bootpwd]').change(VtoySaveCurrentPage);
|
$('input:password[id=id_bootpwd]').change(VtoySaveCurrentPage);
|
||||||
$('input:text[id=id_isopwd]').change(VtoySaveCurrentPage);
|
$('input:password[id=id_isopwd]').change(VtoySaveCurrentPage);
|
||||||
$('input:text[id=id_wimpwd]').change(VtoySaveCurrentPage);
|
$('input:password[id=id_wimpwd]').change(VtoySaveCurrentPage);
|
||||||
$('input:text[id=id_imgpwd]').change(VtoySaveCurrentPage);
|
$('input:password[id=id_imgpwd]').change(VtoySaveCurrentPage);
|
||||||
$('input:text[id=id_vhdpwd]').change(VtoySaveCurrentPage);
|
$('input:password[id=id_vhdpwd]').change(VtoySaveCurrentPage);
|
||||||
$('input:text[id=id_efipwd]').change(VtoySaveCurrentPage);
|
$('input:password[id=id_efipwd]').change(VtoySaveCurrentPage);
|
||||||
$('input:text[id=id_vtoypwd]').change(VtoySaveCurrentPage);
|
$('input:password[id=id_vtoypwd]').change(VtoySaveCurrentPage);
|
||||||
|
|
||||||
$('#id_tab_password a[href="#tab_0"]').click(OnClickMultiModeTab);
|
$('#id_tab_password a[href="#tab_0"]').click(OnClickMultiModeTab);
|
||||||
$('#id_tab_password a[href="#tab_1"]').click(OnClickMultiModeTab);
|
$('#id_tab_password a[href="#tab_1"]').click(OnClickMultiModeTab);
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -544,6 +544,199 @@ int GetAllPhysicalDriveInfo(PHY_DRIVE_INFO *pDriveList, DWORD *pDriveCount)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL VentoyPhydriveMatch(PHY_DRIVE_INFO* pPhyDrive)
|
||||||
|
{
|
||||||
|
BOOL bRet = FALSE;
|
||||||
|
DWORD dwBytes;
|
||||||
|
HANDLE Handle = INVALID_HANDLE_VALUE;
|
||||||
|
CHAR PhyDrive[128];
|
||||||
|
GET_LENGTH_INFORMATION LengthInfo;
|
||||||
|
STORAGE_PROPERTY_QUERY Query;
|
||||||
|
STORAGE_DESCRIPTOR_HEADER DevDescHeader;
|
||||||
|
STORAGE_DEVICE_DESCRIPTOR* pDevDesc = NULL;
|
||||||
|
STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR diskAlignment;
|
||||||
|
CHAR VendorId[128] = { 0 };
|
||||||
|
CHAR ProductId[128] = { 0 };
|
||||||
|
CHAR ProductRev[128] = { 0 };
|
||||||
|
CHAR SerialNumber[128] = { 0 };
|
||||||
|
|
||||||
|
|
||||||
|
safe_sprintf(PhyDrive, "\\\\.\\PhysicalDrive%d", pPhyDrive->PhyDrive);
|
||||||
|
Handle = CreateFileA(PhyDrive, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
|
||||||
|
if (Handle == INVALID_HANDLE_VALUE)
|
||||||
|
{
|
||||||
|
Log("Create file Handle:%p %s status:%u", Handle, PhyDrive, LASTERR);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bRet = DeviceIoControl(Handle,
|
||||||
|
IOCTL_DISK_GET_LENGTH_INFO, NULL,
|
||||||
|
0,
|
||||||
|
&LengthInfo,
|
||||||
|
sizeof(LengthInfo),
|
||||||
|
&dwBytes,
|
||||||
|
NULL);
|
||||||
|
if (!bRet)
|
||||||
|
{
|
||||||
|
Log("DeviceIoControl IOCTL_DISK_GET_LENGTH_INFO failed error:%u", LASTERR);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pPhyDrive->SizeInBytes != (ULONGLONG)LengthInfo.Length.QuadPart)
|
||||||
|
{
|
||||||
|
Log("PHYSICALDRIVE%d size not match %llu %llu", pPhyDrive->PhyDrive, (ULONGLONG)LengthInfo.Length.QuadPart,
|
||||||
|
(ULONGLONG)pPhyDrive->SizeInBytes);
|
||||||
|
CHECK_CLOSE_HANDLE(Handle);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Query.PropertyId = StorageDeviceProperty;
|
||||||
|
Query.QueryType = PropertyStandardQuery;
|
||||||
|
|
||||||
|
bRet = DeviceIoControl(Handle,
|
||||||
|
IOCTL_STORAGE_QUERY_PROPERTY,
|
||||||
|
&Query,
|
||||||
|
sizeof(Query),
|
||||||
|
&DevDescHeader,
|
||||||
|
sizeof(STORAGE_DESCRIPTOR_HEADER),
|
||||||
|
&dwBytes,
|
||||||
|
NULL);
|
||||||
|
if (!bRet)
|
||||||
|
{
|
||||||
|
Log("DeviceIoControl1 error:%u dwBytes:%u", LASTERR, dwBytes);
|
||||||
|
CHECK_CLOSE_HANDLE(Handle);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DevDescHeader.Size < sizeof(STORAGE_DEVICE_DESCRIPTOR))
|
||||||
|
{
|
||||||
|
Log("Invalid DevDescHeader.Size:%u", DevDescHeader.Size);
|
||||||
|
CHECK_CLOSE_HANDLE(Handle);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
pDevDesc = (STORAGE_DEVICE_DESCRIPTOR*)malloc(DevDescHeader.Size);
|
||||||
|
if (!pDevDesc)
|
||||||
|
{
|
||||||
|
Log("failed to malloc error:%u len:%u", LASTERR, DevDescHeader.Size);
|
||||||
|
CHECK_CLOSE_HANDLE(Handle);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bRet = DeviceIoControl(Handle,
|
||||||
|
IOCTL_STORAGE_QUERY_PROPERTY,
|
||||||
|
&Query,
|
||||||
|
sizeof(Query),
|
||||||
|
pDevDesc,
|
||||||
|
DevDescHeader.Size,
|
||||||
|
&dwBytes,
|
||||||
|
NULL);
|
||||||
|
if (!bRet)
|
||||||
|
{
|
||||||
|
Log("DeviceIoControl2 error:%u dwBytes:%u", LASTERR, dwBytes);
|
||||||
|
free(pDevDesc);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
memset(&Query, 0, sizeof(STORAGE_PROPERTY_QUERY));
|
||||||
|
Query.PropertyId = StorageAccessAlignmentProperty;
|
||||||
|
Query.QueryType = PropertyStandardQuery;
|
||||||
|
memset(&diskAlignment, 0, sizeof(STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR));
|
||||||
|
|
||||||
|
bRet = DeviceIoControl(Handle,
|
||||||
|
IOCTL_STORAGE_QUERY_PROPERTY,
|
||||||
|
&Query,
|
||||||
|
sizeof(STORAGE_PROPERTY_QUERY),
|
||||||
|
&diskAlignment,
|
||||||
|
sizeof(STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR),
|
||||||
|
&dwBytes,
|
||||||
|
NULL);
|
||||||
|
if (!bRet)
|
||||||
|
{
|
||||||
|
Log("DeviceIoControl3 error:%u dwBytes:%u", LASTERR, dwBytes);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pPhyDrive->DeviceType != pDevDesc->DeviceType ||
|
||||||
|
pPhyDrive->RemovableMedia != pDevDesc->RemovableMedia ||
|
||||||
|
pPhyDrive->BusType != pDevDesc->BusType ||
|
||||||
|
pPhyDrive->BytesPerLogicalSector != diskAlignment.BytesPerLogicalSector ||
|
||||||
|
pPhyDrive->BytesPerPhysicalSector != diskAlignment.BytesPerPhysicalSector
|
||||||
|
)
|
||||||
|
{
|
||||||
|
Log("Some properties not match DeviceType[%u %u] Removable[%u %u] BusType[%u %u] LogSec[%u %u] PhySec[%u %u]",
|
||||||
|
pPhyDrive->DeviceType, pDevDesc->DeviceType,
|
||||||
|
pPhyDrive->RemovableMedia, pDevDesc->RemovableMedia,
|
||||||
|
pPhyDrive->BusType, pDevDesc->BusType,
|
||||||
|
pPhyDrive->BytesPerLogicalSector, diskAlignment.BytesPerLogicalSector,
|
||||||
|
pPhyDrive->BytesPerPhysicalSector, diskAlignment.BytesPerPhysicalSector
|
||||||
|
);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pDevDesc->VendorIdOffset)
|
||||||
|
{
|
||||||
|
safe_strcpy(VendorId, (char*)pDevDesc + pDevDesc->VendorIdOffset);
|
||||||
|
TrimString(VendorId);
|
||||||
|
|
||||||
|
if (strcmp(pPhyDrive->VendorId, VendorId))
|
||||||
|
{
|
||||||
|
Log("VendorId not match <%s %s>", pPhyDrive->VendorId, VendorId);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pDevDesc->ProductIdOffset)
|
||||||
|
{
|
||||||
|
safe_strcpy(ProductId, (char*)pDevDesc + pDevDesc->ProductIdOffset);
|
||||||
|
TrimString(ProductId);
|
||||||
|
|
||||||
|
if (strcmp(pPhyDrive->ProductId, ProductId))
|
||||||
|
{
|
||||||
|
Log("ProductId not match <%s %s>", pPhyDrive->ProductId, ProductId);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pDevDesc->ProductRevisionOffset)
|
||||||
|
{
|
||||||
|
safe_strcpy(ProductRev, (char*)pDevDesc + pDevDesc->ProductRevisionOffset);
|
||||||
|
TrimString(ProductRev);
|
||||||
|
|
||||||
|
if (strcmp(pPhyDrive->ProductRev, ProductRev))
|
||||||
|
{
|
||||||
|
Log("ProductRev not match <%s %s>", pPhyDrive->ProductRev, ProductRev);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pDevDesc->SerialNumberOffset)
|
||||||
|
{
|
||||||
|
safe_strcpy(SerialNumber, (char*)pDevDesc + pDevDesc->SerialNumberOffset);
|
||||||
|
TrimString(SerialNumber);
|
||||||
|
|
||||||
|
if (strcmp(pPhyDrive->SerialNumber, SerialNumber))
|
||||||
|
{
|
||||||
|
Log("ProductRev not match <%s %s>", pPhyDrive->SerialNumber, SerialNumber);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Log("PhyDrive%d ALL match, now continue", pPhyDrive->PhyDrive);
|
||||||
|
|
||||||
|
bRet = TRUE;
|
||||||
|
|
||||||
|
out:
|
||||||
|
if (pDevDesc)
|
||||||
|
{
|
||||||
|
free(pDevDesc);
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECK_CLOSE_HANDLE(Handle);
|
||||||
|
|
||||||
|
return bRet;
|
||||||
|
}
|
||||||
|
|
||||||
static HANDLE g_FatPhyDrive;
|
static HANDLE g_FatPhyDrive;
|
||||||
static UINT64 g_Part2StartSec;
|
static UINT64 g_Part2StartSec;
|
||||||
|
@@ -253,6 +253,7 @@ int VentoyFillGpt(UINT64 DiskSizeBytes, VTOY_GPT_INFO *pInfo);
|
|||||||
BOOL IsVentoyLogicalDrive(CHAR DriveLetter);
|
BOOL IsVentoyLogicalDrive(CHAR DriveLetter);
|
||||||
int GetRegDwordValue(HKEY Key, LPCSTR SubKey, LPCSTR ValueName, DWORD *pValue);
|
int GetRegDwordValue(HKEY Key, LPCSTR SubKey, LPCSTR ValueName, DWORD *pValue);
|
||||||
int GetPhysicalDriveCount(void);
|
int GetPhysicalDriveCount(void);
|
||||||
|
BOOL VentoyPhydriveMatch(PHY_DRIVE_INFO* pPhyDrive);
|
||||||
int GetAllPhysicalDriveInfo(PHY_DRIVE_INFO *pDriveList, DWORD *pDriveCount);
|
int GetAllPhysicalDriveInfo(PHY_DRIVE_INFO *pDriveList, DWORD *pDriveCount);
|
||||||
int GetPhyDriveByLogicalDrive(int DriveLetter, UINT64*Offset);
|
int GetPhyDriveByLogicalDrive(int DriveLetter, UINT64*Offset);
|
||||||
int GetVentoyVerInPhyDrive(const PHY_DRIVE_INFO *pDriveInfo, UINT64 Part2StartSector, CHAR *VerBuf, size_t BufLen, BOOL *pSecureBoot);
|
int GetVentoyVerInPhyDrive(const PHY_DRIVE_INFO *pDriveInfo, UINT64 Part2StartSector, CHAR *VerBuf, size_t BufLen, BOOL *pSecureBoot);
|
||||||
@@ -388,4 +389,11 @@ PHY_DRIVE_INFO* CLI_PhyDrvInfo(void);
|
|||||||
#define VTSI_SUPPORT 1
|
#define VTSI_SUPPORT 1
|
||||||
|
|
||||||
|
|
||||||
|
#define WM_OFFSET (WM_USER + 40)
|
||||||
|
#define WM_WIDTH_CHANGE (WM_OFFSET + 1)
|
||||||
|
|
||||||
|
|
||||||
|
int ExpandDlg(HWND hParent, UINT uiID, int WidthDelta);
|
||||||
|
int MoveDlg(HWND hParent, UINT uiID, int WidthDelta);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -22,6 +22,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <ctype.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
@@ -444,6 +445,29 @@ static int vtoy_vlnk_printf(ventoy_os_param *param, char *diskname)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int vtoy_check_iso_path_alpnum(ventoy_os_param *param)
|
||||||
|
{
|
||||||
|
char c;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
while (param->vtoy_img_path[i])
|
||||||
|
{
|
||||||
|
c = param->vtoy_img_path[i];
|
||||||
|
|
||||||
|
if (isalnum(c) || c == '_' || c == '-')
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int vtoy_check_device(ventoy_os_param *param, const char *device)
|
static int vtoy_check_device(ventoy_os_param *param, const char *device)
|
||||||
{
|
{
|
||||||
unsigned long long size;
|
unsigned long long size;
|
||||||
@@ -560,6 +584,7 @@ int vtoydump_main(int argc, char **argv)
|
|||||||
int rc;
|
int rc;
|
||||||
int ch;
|
int ch;
|
||||||
int print_path = 0;
|
int print_path = 0;
|
||||||
|
int check_ascii = 0;
|
||||||
int print_fs = 0;
|
int print_fs = 0;
|
||||||
int vlnk_print = 0;
|
int vlnk_print = 0;
|
||||||
char filename[256] = {0};
|
char filename[256] = {0};
|
||||||
@@ -567,7 +592,7 @@ int vtoydump_main(int argc, char **argv)
|
|||||||
char device[64] = {0};
|
char device[64] = {0};
|
||||||
ventoy_os_param *param = NULL;
|
ventoy_os_param *param = NULL;
|
||||||
|
|
||||||
while ((ch = getopt(argc, argv, "c:f:p:t:s:v::")) != -1)
|
while ((ch = getopt(argc, argv, "a:c:f:p:t:s:v::")) != -1)
|
||||||
{
|
{
|
||||||
if (ch == 'f')
|
if (ch == 'f')
|
||||||
{
|
{
|
||||||
@@ -586,6 +611,11 @@ int vtoydump_main(int argc, char **argv)
|
|||||||
print_path = 1;
|
print_path = 1;
|
||||||
strncpy(filename, optarg, sizeof(filename) - 1);
|
strncpy(filename, optarg, sizeof(filename) - 1);
|
||||||
}
|
}
|
||||||
|
else if (ch == 'a')
|
||||||
|
{
|
||||||
|
check_ascii = 1;
|
||||||
|
strncpy(filename, optarg, sizeof(filename) - 1);
|
||||||
|
}
|
||||||
else if (ch == 't')
|
else if (ch == 't')
|
||||||
{
|
{
|
||||||
vlnk_print = 1;
|
vlnk_print = 1;
|
||||||
@@ -660,6 +690,10 @@ int vtoydump_main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
rc = vtoy_check_device(param, device);
|
rc = vtoy_check_device(param, device);
|
||||||
}
|
}
|
||||||
|
else if (check_ascii)
|
||||||
|
{
|
||||||
|
rc = vtoy_check_iso_path_alpnum(param);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// print os param, you can change the output format in the function
|
// print os param, you can change the output format in the function
|
||||||
|
@@ -164,6 +164,13 @@ struct modversion_info {
|
|||||||
char name[64 - sizeof(unsigned long)];
|
char name[64 - sizeof(unsigned long)];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct modversion_info2 {
|
||||||
|
/* Offset of the next modversion entry in relation to this one. */
|
||||||
|
uint32_t next;
|
||||||
|
uint32_t crc;
|
||||||
|
char name[0];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
typedef struct ko_param
|
typedef struct ko_param
|
||||||
{
|
{
|
||||||
@@ -294,7 +301,7 @@ static int vtoykmod_find_section32(char *buf, char *section, int *offset, int *l
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vtoykmod_update_modcrc(char *oldmodver, int oldcnt, char *newmodver, int newcnt)
|
static int vtoykmod_update_modcrc1(char *oldmodver, int oldcnt, char *newmodver, int newcnt)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
struct modversion_info *pold, *pnew;
|
struct modversion_info *pold, *pnew;
|
||||||
@@ -302,6 +309,7 @@ static int vtoykmod_update_modcrc(char *oldmodver, int oldcnt, char *newmodver,
|
|||||||
pold = (struct modversion_info *)oldmodver;
|
pold = (struct modversion_info *)oldmodver;
|
||||||
pnew = (struct modversion_info *)newmodver;
|
pnew = (struct modversion_info *)newmodver;
|
||||||
|
|
||||||
|
debug("module update modver format 1\n");
|
||||||
for (i = 0; i < oldcnt; i++)
|
for (i = 0; i < oldcnt; i++)
|
||||||
{
|
{
|
||||||
for (j = 0; j < newcnt; j++)
|
for (j = 0; j < newcnt; j++)
|
||||||
@@ -318,6 +326,51 @@ static int vtoykmod_update_modcrc(char *oldmodver, int oldcnt, char *newmodver,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int vtoykmod_update_modcrc2(char *oldmodver, int oldlen, char *newmodver, int newlen)
|
||||||
|
{
|
||||||
|
struct modversion_info2 *pold, *pnew, *pnewend;
|
||||||
|
|
||||||
|
pold = (struct modversion_info2 *)oldmodver;
|
||||||
|
pnew = (struct modversion_info2 *)newmodver;
|
||||||
|
pnewend = (struct modversion_info2 *)(newmodver + newlen);
|
||||||
|
|
||||||
|
debug("module update modver format 2\n");
|
||||||
|
/* here we think that there is only module_layout in oldmodver */
|
||||||
|
|
||||||
|
for (; pnew < pnewend && pnew->next; pnew = (struct modversion_info2 *)((char *)pnew + pnew->next))
|
||||||
|
{
|
||||||
|
if (strcmp(pnew->name, "module_layout") == 0)
|
||||||
|
{
|
||||||
|
debug("CRC 0x%08x --> 0x%08x %s\n", pold->crc, pnew->crc, pnew->name);
|
||||||
|
memset(pold, 0, oldlen);
|
||||||
|
pold->next = 0x18; /* 8 + module_layout align 8 */
|
||||||
|
pold->crc = pnew->crc;
|
||||||
|
strcpy(pold->name, pnew->name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int vtoykmod_update_modcrc(char *oldmodver, int oldlen, char *newmodver, int newlen)
|
||||||
|
{
|
||||||
|
uint32_t uiCrc = 0;
|
||||||
|
|
||||||
|
memcpy(&uiCrc, newmodver + 4, 4);
|
||||||
|
|
||||||
|
if (uiCrc > 0)
|
||||||
|
{
|
||||||
|
return vtoykmod_update_modcrc2(oldmodver, oldlen, newmodver, newlen);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return vtoykmod_update_modcrc1(oldmodver, oldlen / 64, newmodver, newlen / 64);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int vtoykmod_update_vermagic(char *oldbuf, int oldsize, char *newbuf, int newsize, int *modver)
|
static int vtoykmod_update_vermagic(char *oldbuf, int oldsize, char *newbuf, int newsize, int *modver)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
@@ -393,7 +446,7 @@ int vtoykmod_update(char *oldko, char *newko)
|
|||||||
|
|
||||||
if (rc == 0)
|
if (rc == 0)
|
||||||
{
|
{
|
||||||
vtoykmod_update_modcrc(oldbuf + oldoff, oldlen / 64, newbuf + newoff, newlen / 64);
|
vtoykmod_update_modcrc(oldbuf + oldoff, oldlen, newbuf + newoff, newlen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -4,7 +4,7 @@ Build a static linked, small zstdcat tool
|
|||||||
use an old version of zstd
|
use an old version of zstd
|
||||||
https://codeload.github.com/facebook/zstd/zip/v1.0.0
|
https://codeload.github.com/facebook/zstd/zip/v1.0.0
|
||||||
|
|
||||||
======== Build Envrioment ========
|
======== Build Environment ========
|
||||||
build for 32bit, static linked with dietlibc
|
build for 32bit, static linked with dietlibc
|
||||||
1. install centos 6.10 i386 with CentOS-6.10-i386-bin-DVD1.iso
|
1. install centos 6.10 i386 with CentOS-6.10-i386-bin-DVD1.iso
|
||||||
2. yum install gcc gettext gettext-devel
|
2. yum install gcc gettext gettext-devel
|
||||||
|
@@ -2191,7 +2191,7 @@ static BOOL VentoyIsNeedBypass(const char *isofile, const char MntLetter)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Log("This is not Windows 11, not need to bypass.", Major);
|
Log("This is not Windows 11, not need to bypass %u.", Major);
|
||||||
}
|
}
|
||||||
|
|
||||||
End:
|
End:
|
||||||
|
Reference in New Issue
Block a user