mirror of
https://github.com/ventoy/Ventoy.git
synced 2025-09-16 09:01:15 +00:00
Compare commits
149 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
ff7ee9c10e | ||
|
f43461a16c | ||
|
377e3fb7bc | ||
|
f62bd1be14 | ||
|
b11c38779d | ||
|
f202542c62 | ||
|
279491a36a | ||
|
cb209f9b9e | ||
|
b7b2f6a5c1 | ||
|
3967fb5fb5 | ||
|
a2ad95792d | ||
|
791308d2ce | ||
|
0ffb1b15ef | ||
|
d6e1730ca0 | ||
|
4d55f505f9 | ||
|
30a61ac5c4 | ||
|
9b79831516 | ||
|
af2d6bc247 | ||
|
d8ae740427 | ||
|
b685157ae3 | ||
|
3f6ddb6fb6 | ||
|
b8838b305d | ||
|
00de8b932d | ||
|
1e49dbe957 | ||
|
580416facc | ||
|
75cf728fa9 | ||
|
8723aeb4cc | ||
|
dc9a99bb20 | ||
|
a40456d9d2 | ||
|
bdab55e8aa | ||
|
1b2483ec14 | ||
|
c16e76130b | ||
|
d672af4819 | ||
|
712f10e86a | ||
|
2be340d2e8 | ||
|
b77ef718b4 | ||
|
72f5710b88 | ||
|
ee7da60d88 | ||
|
44fb9f4564 | ||
|
3f65f0ef03 | ||
|
4faa5e4344 | ||
|
c7693d4ecd | ||
|
4527e1db79 | ||
|
757cacf274 | ||
|
39703cabb7 | ||
|
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 | ||
|
0f90149c4e | ||
|
8ef9732931 | ||
|
b32eda4262 | ||
|
e743f7c15f | ||
|
652475f1ef | ||
|
abfc2a6343 | ||
|
e73ac04cb6 | ||
|
8727e63880 | ||
|
2d281d7dee | ||
|
385c806adf | ||
|
e869bc2386 | ||
|
b47aa1abc7 | ||
|
d8698b2194 | ||
|
7fa4724743 | ||
|
2717405a7a | ||
|
d494007df9 | ||
|
bc9e3f641b | ||
|
9f02d37001 | ||
|
fa1461bac7 | ||
|
3d56c3fa17 | ||
|
a7e3d78d14 | ||
|
879a7592bd | ||
|
5a433f49f7 | ||
|
0cce956c54 | ||
|
0b6372857c | ||
|
028663de9a | ||
|
5feb3f7b4b | ||
|
7035787f38 | ||
|
7dd0f509f5 | ||
|
15947caea2 | ||
|
6aeba8f8b4 | ||
|
fd46b2c3c3 | ||
|
e502f4291e | ||
|
9c59c27eff | ||
|
daeb96ce80 | ||
|
b7e878c466 | ||
|
b76ebf5b07 | ||
|
9532776f39 | ||
|
d8e81d41e4 | ||
|
fa3aa3b36f | ||
|
e717d00d53 | ||
|
6bcaf19a1a | ||
|
bcbe8835d4 | ||
|
ed746ce13e | ||
|
07a790fc6a | ||
|
fd393a02fd | ||
|
0501d03dbb | ||
|
c9939a8cfc | ||
|
5067020a61 | ||
|
4f5334026e | ||
|
3e34dd8514 | ||
|
4df793e021 | ||
|
e0132ac4b5 | ||
|
2b3192b098 | ||
|
7ee3a6d9f8 | ||
|
e1d3ca9fc4 | ||
|
8653832551 | ||
|
c308892db0 | ||
|
1300f7f4f1 | ||
|
d9182dbfa4 | ||
|
e988c0dfe2 | ||
|
0714971f8c |
2
.github/ISSUE_TEMPLATE/issue_template.yml
vendored
2
.github/ISSUE_TEMPLATE/issue_template.yml
vendored
@@ -21,7 +21,7 @@ body:
|
||||
attributes:
|
||||
label: Ventoy Version
|
||||
description: What version of ventoy are you running?
|
||||
placeholder: 1.0.87
|
||||
placeholder: 1.0.96
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
|
16
.github/workflows/ci.yml
vendored
16
.github/workflows/ci.yml
vendored
@@ -12,26 +12,26 @@ jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Run docker-compose up
|
||||
run: docker-compose up
|
||||
- uses: actions/upload-artifact@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Run docker compose up
|
||||
run: docker compose up
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ventoy-windows
|
||||
path: INSTALL/ventoy-*windows*
|
||||
- uses: actions/upload-artifact@v2
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ventoy-linux
|
||||
path: INSTALL/ventoy-*linux*
|
||||
- uses: actions/upload-artifact@v2
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ventoy-livecd
|
||||
path: INSTALL/ventoy-*livecd*
|
||||
- uses: actions/upload-artifact@v2
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: SHA256SUM
|
||||
path: INSTALL/sha256.txt
|
||||
- uses: actions/upload-artifact@v2
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: xxx-build-log
|
||||
path: DOC/build.log
|
||||
|
7
DMPATCH/Makefile_IBT
Normal file
7
DMPATCH/Makefile_IBT
Normal file
@@ -0,0 +1,7 @@
|
||||
|
||||
obj-m += dm_patch_ibt.o
|
||||
|
||||
EXTRA_CFLAGS := -Wall -DVTOY_IBT -fcf-protection=branch -mindirect-branch-register
|
||||
|
||||
dm_patch_ibt-objs := dmpatch.o
|
||||
|
@@ -51,7 +51,15 @@ typedef struct ko_param
|
||||
unsigned long sym_get_size;
|
||||
unsigned long sym_put_addr;
|
||||
unsigned long sym_put_size;
|
||||
unsigned long padding[3];
|
||||
unsigned long kv_major;
|
||||
unsigned long ibt;
|
||||
unsigned long kv_minor;
|
||||
unsigned long blkdev_get_addr;
|
||||
unsigned long blkdev_put_addr;
|
||||
unsigned long bdev_open_addr;
|
||||
unsigned long kv_subminor;
|
||||
unsigned long bdev_file_open_addr;
|
||||
unsigned long padding[1];
|
||||
}ko_param;
|
||||
|
||||
#pragma pack()
|
||||
@@ -69,23 +77,110 @@ static volatile ko_param g_ko_param =
|
||||
};
|
||||
|
||||
#if defined(CONFIG_X86_64)
|
||||
#define PATCH_OP_POS 3
|
||||
#define CODE_MATCH(code, i) \
|
||||
#define PATCH_OP_POS1 3
|
||||
#define CODE_MATCH1(code, i) \
|
||||
(code[i] == 0x40 && code[i + 1] == 0x80 && code[i + 2] == 0xce && code[i + 3] == 0x80)
|
||||
|
||||
#define PATCH_OP_POS2 1
|
||||
#define CODE_MATCH2(code, i) \
|
||||
(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)
|
||||
#define PATCH_OP_POS 2
|
||||
#define CODE_MATCH(code, i) \
|
||||
#define PATCH_OP_POS1 2
|
||||
#define CODE_MATCH1(code, i) \
|
||||
(code[i] == 0x80 && code[i + 1] == 0xca && code[i + 2] == 0x80 && code[i + 3] == 0xe8)
|
||||
|
||||
#define PATCH_OP_POS2 PATCH_OP_POS1
|
||||
#define CODE_MATCH2 CODE_MATCH1
|
||||
#define PATCH_OP_POS3 PATCH_OP_POS1
|
||||
#define CODE_MATCH3 CODE_MATCH1
|
||||
|
||||
|
||||
#else
|
||||
#error "unsupported arch"
|
||||
#endif
|
||||
|
||||
#ifdef VTOY_IBT
|
||||
#ifdef CONFIG_X86_64
|
||||
/* Using 64-bit values saves one instruction clearing the high half of low */
|
||||
#define DECLARE_ARGS(val, low, high) unsigned long low, high
|
||||
#define EAX_EDX_VAL(val, low, high) ((low) | (high) << 32)
|
||||
#define EAX_EDX_RET(val, low, high) "=a" (low), "=d" (high)
|
||||
#else
|
||||
#define DECLARE_ARGS(val, low, high) unsigned long long val
|
||||
#define EAX_EDX_VAL(val, low, high) (val)
|
||||
#define EAX_EDX_RET(val, low, high) "=A" (val)
|
||||
#endif
|
||||
|
||||
#define EX_TYPE_WRMSR 8
|
||||
#define EX_TYPE_RDMSR 9
|
||||
#define MSR_IA32_S_CET 0x000006a2 /* kernel mode cet */
|
||||
#define CET_ENDBR_EN (1ULL << 2)
|
||||
|
||||
/* Exception table entry */
|
||||
#ifdef __ASSEMBLY__
|
||||
|
||||
#define _ASM_EXTABLE_TYPE(from, to, type) \
|
||||
.pushsection "__ex_table","a" ; \
|
||||
.balign 4 ; \
|
||||
.long (from) - . ; \
|
||||
.long (to) - . ; \
|
||||
.long type ; \
|
||||
.popsection
|
||||
|
||||
#else /* ! __ASSEMBLY__ */
|
||||
|
||||
#define _ASM_EXTABLE_TYPE(from, to, type) \
|
||||
" .pushsection \"__ex_table\",\"a\"\n" \
|
||||
" .balign 4\n" \
|
||||
" .long (" #from ") - .\n" \
|
||||
" .long (" #to ") - .\n" \
|
||||
" .long " __stringify(type) " \n" \
|
||||
" .popsection\n"
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* VTOY_IBT */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#define vdebug(fmt, args...) if(kprintf) kprintf(KERN_ERR fmt, ##args)
|
||||
|
||||
static unsigned int g_claim_ptr = 0;
|
||||
static unsigned char *g_get_patch[MAX_PATCH] = { NULL };
|
||||
static unsigned char *g_put_patch[MAX_PATCH] = { NULL };
|
||||
|
||||
static void notrace dmpatch_restore_code(unsigned char *opCode)
|
||||
static int notrace dmpatch_kv_above(unsigned long Major, unsigned long Minor, unsigned long SubMinor)
|
||||
{
|
||||
if (g_ko_param.kv_major != Major)
|
||||
{
|
||||
return (g_ko_param.kv_major > Major) ? 1 : 0;
|
||||
}
|
||||
|
||||
if (g_ko_param.kv_minor != Minor)
|
||||
{
|
||||
return (g_ko_param.kv_minor > Minor) ? 1 : 0;
|
||||
}
|
||||
|
||||
if (g_ko_param.kv_subminor != SubMinor)
|
||||
{
|
||||
return (g_ko_param.kv_subminor > SubMinor) ? 1 : 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void notrace dmpatch_restore_code(int bytes, unsigned char *opCode, unsigned int code)
|
||||
{
|
||||
unsigned long align;
|
||||
|
||||
@@ -93,13 +188,21 @@ static void notrace dmpatch_restore_code(unsigned char *opCode)
|
||||
{
|
||||
align = (unsigned long)opCode / g_ko_param.pgsize * g_ko_param.pgsize;
|
||||
set_mem_rw(align, 1);
|
||||
*opCode = 0x80;
|
||||
if (bytes == 1)
|
||||
{
|
||||
*opCode = (unsigned char)code;
|
||||
}
|
||||
else
|
||||
{
|
||||
*(unsigned int *)opCode = code;
|
||||
}
|
||||
set_mem_ro(align, 1);
|
||||
}
|
||||
}
|
||||
|
||||
static int notrace dmpatch_replace_code
|
||||
(
|
||||
int style,
|
||||
unsigned long addr,
|
||||
unsigned long size,
|
||||
int expect,
|
||||
@@ -112,17 +215,40 @@ static int notrace dmpatch_replace_code
|
||||
unsigned long align;
|
||||
unsigned char *opCode = (unsigned char *)addr;
|
||||
|
||||
vdebug("patch for %s 0x%lx %d\n", desc, 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 (CODE_MATCH(opCode, i) && cnt < MAX_PATCH)
|
||||
if (style == 1)
|
||||
{
|
||||
patch[cnt] = opCode + i + PATCH_OP_POS;
|
||||
cnt++;
|
||||
if (CODE_MATCH1(opCode, i) && cnt < MAX_PATCH)
|
||||
{
|
||||
patch[cnt] = opCode + i + PATCH_OP_POS1;
|
||||
cnt++;
|
||||
}
|
||||
}
|
||||
else if (style == 2)
|
||||
{
|
||||
if (CODE_MATCH2(opCode, i) && cnt < MAX_PATCH)
|
||||
{
|
||||
patch[cnt] = opCode + i + PATCH_OP_POS2;
|
||||
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)
|
||||
{
|
||||
vdebug("patch error: cnt=%d expect=%d\n", cnt, expect);
|
||||
@@ -143,14 +269,285 @@ static int notrace dmpatch_replace_code
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int notrace dmpatch_init(void)
|
||||
static unsigned long notrace dmpatch_find_call_offset(unsigned long addr, unsigned long size, unsigned long func)
|
||||
{
|
||||
unsigned long i = 0;
|
||||
unsigned long dest;
|
||||
unsigned char *opCode = NULL;
|
||||
unsigned char aucOffset[8] = { 0, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF };
|
||||
|
||||
opCode = (unsigned char *)addr;
|
||||
|
||||
for (i = 0; i + 4 < size; i++)
|
||||
{
|
||||
if (opCode[i] == 0xE8)
|
||||
{
|
||||
aucOffset[0] = opCode[i + 1];
|
||||
aucOffset[1] = opCode[i + 2];
|
||||
aucOffset[2] = opCode[i + 3];
|
||||
aucOffset[3] = opCode[i + 4];
|
||||
|
||||
dest = addr + i + 5 + *(unsigned long *)aucOffset;
|
||||
if (dest == func)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static unsigned int notrace dmpatch_patch_claim_ptr(void)
|
||||
{
|
||||
unsigned long i = 0;
|
||||
unsigned long t = 0;
|
||||
unsigned long offset1 = 0;
|
||||
unsigned long offset2 = 0;
|
||||
unsigned long align = 0;
|
||||
unsigned char *opCode = NULL;
|
||||
|
||||
opCode = (unsigned char *)g_ko_param.sym_get_addr;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
vdebug("%02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X\n",
|
||||
opCode[i + 0], opCode[i + 1], opCode[i + 2], opCode[i + 3],
|
||||
opCode[i + 4], opCode[i + 5], opCode[i + 6], opCode[i + 7],
|
||||
opCode[i + 8], opCode[i + 9], opCode[i + 10], opCode[i + 11],
|
||||
opCode[i + 12], opCode[i + 13], opCode[i + 14], opCode[i + 15]);
|
||||
}
|
||||
|
||||
if (dmpatch_kv_above(6, 7, 0)) /* >= 6.7 kernel */
|
||||
{
|
||||
vdebug("Get addr: 0x%lx %lu open 0x%lx\n", g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.bdev_open_addr);
|
||||
offset1 = dmpatch_find_call_offset(g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.bdev_open_addr);
|
||||
if (offset1 == 0)
|
||||
{
|
||||
vdebug("call bdev_open_addr Not found\n");
|
||||
|
||||
vdebug("Get addr: 0x%lx %lu file_open 0x%lx\n", g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.bdev_file_open_addr);
|
||||
offset1 = dmpatch_find_call_offset(g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.bdev_file_open_addr);
|
||||
if (offset1 == 0)
|
||||
{
|
||||
vdebug("call bdev_file_open_addr Not found\n");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
vdebug("Get addr: 0x%lx %lu 0x%lx\n", g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.blkdev_get_addr);
|
||||
vdebug("Put addr: 0x%lx %lu 0x%lx\n", g_ko_param.sym_put_addr, g_ko_param.sym_put_size, g_ko_param.blkdev_put_addr);
|
||||
|
||||
offset1 = dmpatch_find_call_offset(g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.blkdev_get_addr);
|
||||
offset2 = dmpatch_find_call_offset(g_ko_param.sym_put_addr, g_ko_param.sym_put_size, g_ko_param.blkdev_put_addr);
|
||||
if (offset1 == 0 || offset2 == 0)
|
||||
{
|
||||
vdebug("call blkdev_get or blkdev_put Not found, %lu %lu\n", offset1, offset2);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
vdebug("call addr1:0x%lx call addr2:0x%lx\n",
|
||||
g_ko_param.sym_get_addr + offset1,
|
||||
g_ko_param.sym_put_addr + offset2);
|
||||
|
||||
opCode = (unsigned char *)g_ko_param.sym_get_addr;
|
||||
for (i = offset1 - 1, t = 0; (i > 0) && (t < 24); i--, t++)
|
||||
{
|
||||
/* rdx */
|
||||
if (opCode[i] == 0x48 && opCode[i + 1] == 0xc7 && opCode[i + 2] == 0xc2)
|
||||
{
|
||||
g_claim_ptr = *(unsigned int *)(opCode + i + 3);
|
||||
g_get_patch[0] = opCode + i + 3;
|
||||
vdebug("claim_ptr(%08X) found at get addr 0x%lx\n", g_claim_ptr, g_ko_param.sym_get_addr + i + 3);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (g_claim_ptr == 0)
|
||||
{
|
||||
vdebug("Claim_ptr not found in get\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
align = (unsigned long)g_get_patch[0] / g_ko_param.pgsize * g_ko_param.pgsize;
|
||||
set_mem_rw(align, 1);
|
||||
*(unsigned int *)(g_get_patch[0]) = 0;
|
||||
set_mem_ro(align, 1);
|
||||
|
||||
|
||||
if (offset2 > 0)
|
||||
{
|
||||
opCode = (unsigned char *)g_ko_param.sym_put_addr;
|
||||
for (i = offset2 - 1, t = 0; (i > 0) && (t < 24); i--, t++)
|
||||
{
|
||||
/* rsi */
|
||||
if (opCode[i] == 0x48 && opCode[i + 1] == 0xc7 && opCode[i + 2] == 0xc6)
|
||||
{
|
||||
if (*(unsigned int *)(opCode + i + 3) == g_claim_ptr)
|
||||
{
|
||||
vdebug("claim_ptr found at put addr 0x%lx\n", g_ko_param.sym_put_addr + i + 3);
|
||||
g_put_patch[0] = opCode + i + 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (g_put_patch[0] == 0)
|
||||
{
|
||||
vdebug("Claim_ptr not found in put\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
align = (unsigned long)g_put_patch[0] / g_ko_param.pgsize * g_ko_param.pgsize;
|
||||
set_mem_rw(align, 1);
|
||||
*(unsigned int *)(g_put_patch[0]) = 0;
|
||||
set_mem_ro(align, 1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef VTOY_IBT
|
||||
static __always_inline unsigned long long dmpatch_rdmsr(unsigned int msr)
|
||||
{
|
||||
DECLARE_ARGS(val, low, high);
|
||||
|
||||
asm volatile("1: rdmsr\n"
|
||||
"2:\n"
|
||||
_ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_RDMSR)
|
||||
: EAX_EDX_RET(val, low, high) : "c" (msr));
|
||||
|
||||
return EAX_EDX_VAL(val, low, high);
|
||||
}
|
||||
|
||||
static __always_inline void dmpatch_wrmsr(unsigned int msr, u32 low, u32 high)
|
||||
{
|
||||
asm volatile("1: wrmsr\n"
|
||||
"2:\n"
|
||||
_ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_WRMSR)
|
||||
: : "c" (msr), "a"(low), "d" (high) : "memory");
|
||||
}
|
||||
|
||||
static u64 notrace dmpatch_ibt_save(void)
|
||||
{
|
||||
u64 msr = 0;
|
||||
u64 val = 0;
|
||||
|
||||
msr = dmpatch_rdmsr(MSR_IA32_S_CET);
|
||||
val = msr & ~CET_ENDBR_EN;
|
||||
dmpatch_wrmsr(MSR_IA32_S_CET, (u32)(val & 0xffffffffULL), (u32)(val >> 32));
|
||||
|
||||
return msr;
|
||||
}
|
||||
|
||||
static void notrace dmpatch_ibt_restore(u64 save)
|
||||
{
|
||||
u64 msr;
|
||||
|
||||
msr = dmpatch_rdmsr(MSR_IA32_S_CET);
|
||||
|
||||
msr &= ~CET_ENDBR_EN;
|
||||
msr |= (save & CET_ENDBR_EN);
|
||||
|
||||
dmpatch_wrmsr(MSR_IA32_S_CET, (u32)(msr & 0xffffffffULL), (u32)(msr >> 32));
|
||||
}
|
||||
#else
|
||||
static u64 notrace dmpatch_ibt_save(void) { return 0; }
|
||||
static void notrace dmpatch_ibt_restore(u64 save) { (void)save; }
|
||||
#endif
|
||||
|
||||
static int notrace dmpatch_process(unsigned long a, unsigned long b, unsigned long c)
|
||||
{
|
||||
int r = 0;
|
||||
int rc = 0;
|
||||
unsigned long kv_major = 0;
|
||||
unsigned long kv_minor = 0;
|
||||
unsigned long kv_subminor = 0;
|
||||
|
||||
vdebug("dmpatch_process as KV %d.%d.%d ...\n", (int)a, (int)b, (int)c);
|
||||
|
||||
kv_major = g_ko_param.kv_major;
|
||||
kv_minor = g_ko_param.kv_minor;
|
||||
kv_subminor = g_ko_param.kv_subminor;
|
||||
|
||||
g_ko_param.kv_major = a;
|
||||
g_ko_param.kv_minor = b;
|
||||
g_ko_param.kv_subminor = c;
|
||||
|
||||
if (dmpatch_kv_above(6, 5, 0)) /* >= kernel 6.5 */
|
||||
{
|
||||
vdebug("new interface patch dm_get_table_device...\n");
|
||||
r = dmpatch_patch_claim_ptr();
|
||||
}
|
||||
else
|
||||
{
|
||||
r = dmpatch_replace_code(1, g_ko_param.sym_get_addr, g_ko_param.sym_get_size, 2, "dm_get_table_device", g_get_patch);
|
||||
if (r && g_ko_param.kv_major >= 5)
|
||||
{
|
||||
vdebug("new2 patch dm_get_table_device...\n");
|
||||
r = dmpatch_replace_code(2, g_ko_param.sym_get_addr, g_ko_param.sym_get_size, 1, "dm_get_table_device", g_get_patch);
|
||||
}
|
||||
|
||||
if (r && g_ko_param.kv_major >= 5)
|
||||
{
|
||||
vdebug("new3 patch dm_get_table_device...\n");
|
||||
r = dmpatch_replace_code(3, g_ko_param.sym_get_addr, g_ko_param.sym_get_size, 1, "dm_get_table_device", g_get_patch);
|
||||
}
|
||||
}
|
||||
|
||||
if (r)
|
||||
{
|
||||
rc = -EFAULT;
|
||||
goto out;
|
||||
}
|
||||
vdebug("patch dm_get_table_device success\n");
|
||||
|
||||
if (dmpatch_kv_above(6, 5, 0))
|
||||
{
|
||||
r = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
r = dmpatch_replace_code(1, g_ko_param.sym_put_addr, g_ko_param.sym_put_size, 1, "dm_put_table_device", g_put_patch);
|
||||
if (r)
|
||||
{
|
||||
rc = -EFAULT;
|
||||
goto out;
|
||||
}
|
||||
vdebug("patch dm_put_table_device success\n");
|
||||
}
|
||||
|
||||
vdebug("#####################################\n");
|
||||
vdebug("######## dm patch success ###########\n");
|
||||
vdebug("#####################################\n");
|
||||
|
||||
out:
|
||||
|
||||
g_ko_param.kv_major = kv_major;
|
||||
g_ko_param.kv_minor = kv_minor;
|
||||
g_ko_param.kv_subminor = kv_subminor;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int notrace dmpatch_init(void)
|
||||
{
|
||||
int rc = 0;
|
||||
u64 msr = 0;
|
||||
|
||||
if (g_ko_param.ibt == 0x8888)
|
||||
{
|
||||
msr = dmpatch_ibt_save();
|
||||
}
|
||||
|
||||
kprintf = (printk_pf)(g_ko_param.printk_addr);
|
||||
|
||||
vdebug("dmpatch_init start pagesize=%lu ...\n", g_ko_param.pgsize);
|
||||
vdebug("dmpatch_init start pagesize=%lu kernel=%lu.%lu.%lu ...\n",
|
||||
g_ko_param.pgsize, g_ko_param.kv_major, g_ko_param.kv_minor, g_ko_param.kv_subminor);
|
||||
|
||||
if (g_ko_param.struct_size != sizeof(ko_param))
|
||||
{
|
||||
@@ -169,42 +566,60 @@ static int notrace dmpatch_init(void)
|
||||
reg_kprobe = (kprobe_reg_pf)g_ko_param.reg_kprobe_addr;
|
||||
unreg_kprobe = (kprobe_unreg_pf)g_ko_param.unreg_kprobe_addr;
|
||||
|
||||
r = dmpatch_replace_code(g_ko_param.sym_get_addr, g_ko_param.sym_get_size, 2, "dm_get_table_device", g_get_patch);
|
||||
if (r)
|
||||
rc = dmpatch_process(g_ko_param.kv_major, g_ko_param.kv_minor, g_ko_param.kv_subminor);
|
||||
if (rc)
|
||||
{
|
||||
rc = -EINVAL;
|
||||
goto out;
|
||||
if (g_ko_param.kv_major >= 5)
|
||||
{
|
||||
rc = dmpatch_process(6, 5, 0);
|
||||
if (rc)
|
||||
{
|
||||
rc = dmpatch_process(6, 7, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
vdebug("patch dm_get_table_device success\n");
|
||||
|
||||
r = dmpatch_replace_code(g_ko_param.sym_put_addr, g_ko_param.sym_put_size, 1, "dm_put_table_device", g_put_patch);
|
||||
if (r)
|
||||
if (g_ko_param.ibt == 0x8888)
|
||||
{
|
||||
rc = -EINVAL;
|
||||
goto out;
|
||||
dmpatch_ibt_restore(msr);
|
||||
}
|
||||
vdebug("patch dm_put_table_device success\n");
|
||||
|
||||
vdebug("#####################################\n");
|
||||
vdebug("######## dm patch success ###########\n");
|
||||
vdebug("#####################################\n");
|
||||
|
||||
out:
|
||||
|
||||
return rc;
|
||||
return rc;
|
||||
}
|
||||
|
||||
static void notrace dmpatch_exit(void)
|
||||
{
|
||||
int i = 0;
|
||||
u64 msr;
|
||||
|
||||
for (i = 0; i < MAX_PATCH; i++)
|
||||
if (g_ko_param.ibt == 0x8888)
|
||||
{
|
||||
dmpatch_restore_code(g_get_patch[i]);
|
||||
dmpatch_restore_code(g_put_patch[i]);
|
||||
msr = dmpatch_ibt_save();
|
||||
}
|
||||
|
||||
if (g_claim_ptr)
|
||||
{
|
||||
dmpatch_restore_code(4, g_get_patch[0], g_claim_ptr);
|
||||
if (g_put_patch[0])
|
||||
{
|
||||
dmpatch_restore_code(4, g_put_patch[0], g_claim_ptr);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < MAX_PATCH; i++)
|
||||
{
|
||||
dmpatch_restore_code(1, g_get_patch[i], 0x80);
|
||||
dmpatch_restore_code(1, g_put_patch[i], 0x80);
|
||||
}
|
||||
}
|
||||
|
||||
vdebug("dmpatch_exit success\n");
|
||||
|
||||
if (g_ko_param.ibt == 0x8888)
|
||||
{
|
||||
dmpatch_ibt_restore(msr);
|
||||
}
|
||||
}
|
||||
|
||||
module_init(dmpatch_init);
|
||||
|
@@ -1,10 +1,12 @@
|
||||
1. install ubuntu 21.10
|
||||
2. apt-get install build-essential flex libncurses-dev linux-headers-generic linux-source libssl-dev ...... and so on
|
||||
3. cp /lib/modules/5.13.0-23-generic/build/Module.symvers ./
|
||||
4. /boot/config-5.13.0-23-generic as .config make oldconfig
|
||||
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 bison yacc vim libelf-dev ...... and so on
|
||||
3. cp /lib/modules/5.15.0-25-generic/build/Module.symvers ./
|
||||
4. /boot/config-5.15.0-25-generic as .config make oldconfig
|
||||
5. make menuconfig
|
||||
1. close CONFIG_STACKPROTECTOR
|
||||
2. close CONFIG_RETPOLINE
|
||||
3. close CONFIG_UBSAN_BOUNDS
|
||||
4. close CONFIG_UBSAN_ENUM
|
||||
|
||||
6. modify ./scripts/mod/modpost.c
|
||||
1. skip add_srcversion (just return)
|
||||
|
65
DMPATCH/ubuntu_build.sh
Normal file
65
DMPATCH/ubuntu_build.sh
Normal file
@@ -0,0 +1,65 @@
|
||||
#!/bin/bash
|
||||
|
||||
FTPIP=192.168.44.1
|
||||
FTPUSR='a:a'
|
||||
|
||||
rm -f dmpatch.c Makefile Makefile_IBT
|
||||
|
||||
for f in dmpatch.c Makefile Makefile_IBT; do
|
||||
curl -s -u $FTPUSR ftp://$FTPIP/$f -o $f
|
||||
if [ -f $f ]; then
|
||||
echo "download $f OK ..."
|
||||
else
|
||||
echo "download $f FAILED ..."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
|
||||
rm -f *.ko
|
||||
|
||||
|
||||
echo "build dm_patch.ko ..."
|
||||
rm -rf ./aa
|
||||
mkdir ./aa
|
||||
|
||||
cp -a *.c aa/
|
||||
cp -a Makefile aa/
|
||||
|
||||
cd /home/panda/linux-source-5.15.0
|
||||
make modules M=/home/panda/build/aa/
|
||||
strip --strip-debug /home/panda/build/aa/dm_patch.ko
|
||||
cd -
|
||||
|
||||
cp -a aa/dm_patch.ko ./
|
||||
|
||||
|
||||
|
||||
echo "build dm_patch_ibt.ko ..."
|
||||
rm -rf ./aa
|
||||
mkdir ./aa
|
||||
|
||||
cp -a *.c aa/
|
||||
cp -a Makefile_IBT aa/Makefile
|
||||
|
||||
cd /home/panda/linux-source-5.15.0
|
||||
make modules M=/home/panda/build/aa/
|
||||
strip --strip-debug /home/panda/build/aa/dm_patch_ibt.ko
|
||||
cd -
|
||||
|
||||
cp -a aa/dm_patch_ibt.ko ./
|
||||
|
||||
rm -rf ./aa
|
||||
|
||||
|
||||
curl -s -T dm_patch.ko -u $FTPUSR ftp://$FTPIP/dm_patch_64.ko || exit 1
|
||||
curl -s -T dm_patch_ibt.ko -u $FTPUSR ftp://$FTPIP/dm_patch_ibt_64.ko || exit 1
|
||||
|
||||
|
||||
if [ -f ./dm_patch.ko -a -f ./dm_patch_ibt.ko ]; then
|
||||
echo -e "\n\n=============== SUCCESS =============\n\n"
|
||||
else
|
||||
echo -e "\n\n=============== FAILED ==============\n\n"
|
||||
fi
|
||||
|
@@ -5,7 +5,7 @@ use an old version of dmsetup
|
||||
http://vault.centos.org/5.3/os/SRPMS/device-mapper-1.02.28-2.el5.src.rpm
|
||||
https://www.fefe.de/dietlibc/dietlibc-0.34.tar.xz
|
||||
|
||||
======== Build Envrioment ========
|
||||
======== Build Environment ========
|
||||
build for 32bit, static linked with dietlibc
|
||||
1. install centos 6.10 i386 with CentOS-6.10-i386-bin-DVD1.iso
|
||||
2. yum install gcc kernel-devel package
|
||||
|
@@ -1,9 +1,9 @@
|
||||
|
||||
==========================================
|
||||
1. Compile Enviroment
|
||||
1. Compile Environment
|
||||
==========================================
|
||||
My build envrioment is CentOS 7.8 x86_64. So here I first explain how to create the build environment from scratch.
|
||||
Because Ventoy is based on many open source projects, so the environment is important. I suggest you test it on a virtual machine firstly.
|
||||
My build environment is CentOS 7.8 x86_64. So here I first explain how to create the build environment from scratch.
|
||||
Ventoy is based on many open source projects, so the build environment is important. I suggest you first test it on a virtual machine.
|
||||
|
||||
1.1 Install CentOS 7.8
|
||||
I use CentOS-7-x86_64-Everything-2003.iso and select Minimal install
|
||||
@@ -21,10 +21,10 @@
|
||||
==========================================
|
||||
2. Download Source Code
|
||||
==========================================
|
||||
2.1 Download Ventoy source code from github and decompress it.
|
||||
2.1 Download Ventoy source code from GitHub and decompress it.
|
||||
Next I assume that you have unzipped the code into the /home directory (check /home/Ventoy-master/README.md file for the directory layout).
|
||||
|
||||
2.2 Download third-part source code and tool
|
||||
2.2 Download third-party source code and tool
|
||||
|
||||
https://www.fefe.de/dietlibc/dietlibc-0.34.tar.xz ===> /home/Ventoy-master/DOC/dietlibc-0.34.tar.xz
|
||||
https://musl.libc.org/releases/musl-1.2.1.tar.gz ===> /home/Ventoy-master/DOC/musl-1.2.1.tar.gz
|
||||
@@ -34,7 +34,7 @@
|
||||
https://codeload.github.com/libfuse/libfuse/zip/fuse-2.9.9 ===> /home/Ventoy-master/ExFAT/libfuse-fuse-2.9.9.zip
|
||||
https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/aarch64-linux-gnu/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz ===> /opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz
|
||||
https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--uclibc--stable-2020.08-1.tar.bz2 ===> /opt/aarch64--uclibc--stable-2020.08-1.tar.bz2
|
||||
http://ftp.loongnix.cn/toolchain/gcc/release/mips/gcc7/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz ===> /opt/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz
|
||||
https://github.com/ventoy/vtoytoolchain/releases/download/1.0/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz ===> /opt/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz
|
||||
https://github.com/ventoy/musl-cross-make/releases/download/latest/output.tar.bz2 ===> /opt/output.tar.bz2
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
http://www.tinycorelinux.net/11.x/x86_64/release/distribution_files/corepure64.gz ===> /home/Ventoy-master/LiveCD/ISO/EFI/boot/corepure64.gz
|
||||
http://www.tinycorelinux.net/11.x/x86_64/release/distribution_files/modules64.gz ===> /home/Ventoy-master/LiveCD/ISO/EFI/boot/modules64.gz
|
||||
|
||||
2.3 Prepare third-part tools
|
||||
2.3 Prepare third-party tools
|
||||
cd /home/Ventoy-master/DOC/
|
||||
tar xf musl-1.2.1.tar.gz
|
||||
cd musl-1.2.1
|
||||
@@ -54,7 +54,7 @@
|
||||
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
|
||||
better to add this line to /root/.bashrc and relogin as root
|
||||
|
||||
@@ -62,21 +62,21 @@
|
||||
==========================================
|
||||
3. All in one script
|
||||
==========================================
|
||||
I have made a all_in_one.sh, you can run this script to build and pack ventoy.
|
||||
I have made an all-in-one script `all_in_one.sh`. You can run this script to build and pack ventoy.
|
||||
If you want to compile a certain part separately, you can continue to refer to the later chapters of this text.
|
||||
|
||||
cd /home/Ventoy-master/INSTALL
|
||||
sh all_in_one.sh
|
||||
|
||||
It should be noted that:
|
||||
1. Only grub2/EDK2/IPXE will be recompiled in all_in_one.sh. Other part contains the binaries and are few modified, so will no be recompiled everytime.
|
||||
1. Only grub2/EDK2/IPXE will be recompiled in all_in_one.sh. Other parts contain binaries and are rarely modified, so will not be recompiled everytime.
|
||||
You can rebuild these parts separately if you want.
|
||||
|
||||
2. some part of Ventoy has 32bit&64bit version (like 4.9 4.10 4.11 follows)
|
||||
all_in_one.sh only build 64bit version of them, if you want to rebuild the 32bit verison. You should create a 32bit CentOS environment and build them.
|
||||
Fortunately these parts are few modified, you only need to build once or you can directly use the binary I have built.
|
||||
2. Some parts of Ventoy have a 32-bit and 64-bit version (like 4.9, 4.10, 4.11 follows)
|
||||
all_in_one.sh only builds the 64bit version of them. If you want to rebuild the 32bit verison, you should create a 32-bit CentOS environment and build them.
|
||||
Fortunately these parts are rarely modified, so you only need to build once or you can directly use the binaries I have built.
|
||||
|
||||
Besides, after a fully compile and pack, you can only build the part you modified (for example grub2) and run ventoy_pack.sh to generate the package.
|
||||
Besides, after a full compile and packaging, you can only build the part you modified (for example grub2) and run ventoy_pack.sh to generate the package.
|
||||
|
||||
==========================================
|
||||
4. Build every part of Ventoy
|
||||
@@ -122,14 +122,14 @@
|
||||
After that, copy EXFAT/shared/mkexfatfs ===> /home/Ventoy-master/INSTALL/tool/mkexfatfs_64
|
||||
After that, copy EXFAT/shared/mount.exfat-fuse ===> /home/Ventoy-master/INSTALL/tool/mount.exfat-fuse_64
|
||||
|
||||
Use the same build step to build exfat-util 32bit in a 32bit CentOS system and get mkexfatfs_32 and mount.exfat-fuse_32
|
||||
Use the same build step to build exfat-util 32-bit in a 32-bit CentOS system and get mkexfatfs_32 and mount.exfat-fuse_32
|
||||
|
||||
4.10 == Build vtoy_fuse_iso_64/vtoy_fuse_iso_32 ==
|
||||
cd /home/Ventoy-master/FUSEISO
|
||||
sh build_libfuse.sh
|
||||
sh build.sh
|
||||
|
||||
Use the same build step to build in a 32bit CentOS system and get vtoy_fuse_iso_32
|
||||
Use the same build step to build in a 32-bit CentOS system and get vtoy_fuse_iso_32
|
||||
|
||||
4.11 == Build unsquashfs_64/unsquashfs_32 ==
|
||||
cd /home/Ventoy-master/SQUASHFS/SRC
|
||||
@@ -141,7 +141,7 @@
|
||||
cd /home/Ventoy-master/SQUASHFS/squashfs-tools-4.4/squashfs-tools
|
||||
sh build.sh
|
||||
|
||||
Use the same build step to build in a 32bit CentOS system and get unsquashfs_32
|
||||
Use the same build step to build in a 32-bit CentOS system and get unsquashfs_32
|
||||
|
||||
4.12 == Build vblade_64/vblade_32 ==
|
||||
cd /home/Ventoy-master/VBLADE/vblade-master
|
||||
|
@@ -1,6 +1,11 @@
|
||||
FROM centos:7
|
||||
|
||||
RUN yum -y -q install \
|
||||
RUN sed -i \
|
||||
-e 's/^mirrorlist/#mirrorlist/' \
|
||||
-e 's/^#baseurl/baseurl/' \
|
||||
-e 's/mirror\.centos\.org/vault.centos.org/' \
|
||||
/etc/yum.repos.d/*.repo && \
|
||||
yum -y -q install \
|
||||
libXpm net-tools bzip2 wget vim gcc gcc-c++ samba dos2unix glibc-devel glibc.i686 glibc-devel.i686 \
|
||||
mpfr.i686 mpfr-devel.i686 rsync autogen autoconf automake libtool gettext* bison binutils \
|
||||
flex device-mapper-devel SDL libpciaccess libusb freetype freetype-devel gnu-free-* qemu-* virt-* \
|
||||
|
@@ -1533,7 +1533,7 @@ module = {
|
||||
name = squash4;
|
||||
common = fs/squash4.c;
|
||||
cflags = '$(CFLAGS_POSIX) -Wno-undef';
|
||||
cppflags = '-I$(srcdir)/lib/posix_wrap -I$(srcdir)/lib/xzembed -I$(srcdir)/lib/minilzo -DMINILZO_HAVE_CONFIG_H';
|
||||
cppflags = '-I$(srcdir)/lib/posix_wrap -I$(srcdir)/lib/xzembed -I$(srcdir)/lib/minilzo -I$(srcdir)/lib/zstd -DMINILZO_HAVE_CONFIG_H';
|
||||
};
|
||||
|
||||
module = {
|
||||
|
@@ -103,6 +103,7 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080
|
||||
#define EXT4_FEATURE_INCOMPAT_MMP 0x0100
|
||||
#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200
|
||||
#define EXT4_FEATURE_INCOMPAT_CSUM_SEED 0x2000
|
||||
#define EXT4_FEATURE_INCOMPAT_ENCRYPT 0x10000
|
||||
|
||||
/* The set of back-incompatible features this driver DOES support. Add (OR)
|
||||
@@ -123,9 +124,16 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
* mmp: Not really back-incompatible - was added as such to
|
||||
* avoid multiple read-write mounts. Safe to ignore for this
|
||||
* RO driver.
|
||||
* checksum seed: Not really back-incompatible - was added to allow tools
|
||||
* such as tune2fs to change the UUID on a mounted metadata
|
||||
* checksummed filesystem. Safe to ignore for now since the
|
||||
* driver doesn't support checksum verification. But it must
|
||||
* be removed from this list if that support is added later.
|
||||
*
|
||||
*/
|
||||
#define EXT2_DRIVER_IGNORED_INCOMPAT ( EXT3_FEATURE_INCOMPAT_RECOVER \
|
||||
| EXT4_FEATURE_INCOMPAT_MMP)
|
||||
| EXT4_FEATURE_INCOMPAT_MMP \
|
||||
| EXT4_FEATURE_INCOMPAT_CSUM_SEED)
|
||||
|
||||
|
||||
#define EXT3_JOURNAL_MAGIC_NUMBER 0xc03b3998U
|
||||
@@ -723,10 +731,11 @@ grub_ext2_read_symlink (grub_fshelp_node_t node)
|
||||
if (! symlink)
|
||||
return 0;
|
||||
|
||||
/* If the filesize of the symlink is bigger than
|
||||
60 the symlink is stored in a separate block,
|
||||
otherwise it is stored in the inode. */
|
||||
if (grub_le_to_cpu32 (diro->inode.size) <= sizeof (diro->inode.symlink))
|
||||
/*
|
||||
* If the filesize of the symlink is equal to or bigger than 60 the symlink
|
||||
* is stored in a separate block, otherwise it is stored in the inode.
|
||||
*/
|
||||
if (grub_le_to_cpu32 (diro->inode.size) < sizeof (diro->inode.symlink))
|
||||
grub_memcpy (symlink,
|
||||
diro->inode.symlink,
|
||||
grub_le_to_cpu32 (diro->inode.size));
|
||||
|
@@ -889,6 +889,7 @@ grub_ntfs_mount (grub_disk_t disk)
|
||||
struct grub_ntfs_bpb bpb;
|
||||
struct grub_ntfs_data *data = 0;
|
||||
grub_uint32_t spc;
|
||||
grub_uint32_t sectors_per_cluster;
|
||||
|
||||
if (!disk)
|
||||
goto fail;
|
||||
@@ -903,14 +904,18 @@ grub_ntfs_mount (grub_disk_t disk)
|
||||
if (grub_disk_read (disk, 0, 0, sizeof (bpb), &bpb))
|
||||
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
|
||||
|| bpb.sectors_per_cluster == 0
|
||||
|| (bpb.sectors_per_cluster & (bpb.sectors_per_cluster - 1)) != 0
|
||||
|| sectors_per_cluster == 0
|
||||
|| (sectors_per_cluster & (sectors_per_cluster - 1)) != 0
|
||||
|| bpb.bytes_per_sector == 0
|
||||
|| (bpb.bytes_per_sector & (bpb.bytes_per_sector - 1)) != 0)
|
||||
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_NTFS_BLK_SHR);
|
||||
if (spc == 0)
|
||||
|
@@ -27,6 +27,7 @@
|
||||
#include <grub/fshelp.h>
|
||||
#include <grub/deflate.h>
|
||||
#include <minilzo.h>
|
||||
#include <zstd.h>
|
||||
|
||||
#include "xz.h"
|
||||
#include "xz_stream.h"
|
||||
@@ -184,6 +185,7 @@ enum
|
||||
COMPRESSION_LZO = 3,
|
||||
COMPRESSION_XZ = 4,
|
||||
COMPRESSION_LZ4 = 5,
|
||||
COMPRESSION_ZSTD = 6,
|
||||
};
|
||||
|
||||
|
||||
@@ -398,6 +400,25 @@ static grub_ssize_t lz4_decompress_wrap(char *inbuf, grub_size_t insize, grub_of
|
||||
return len;
|
||||
}
|
||||
|
||||
static grub_ssize_t zstd_decompress_wrap(char *inbuf, grub_size_t insize, grub_off_t off,
|
||||
char *outbuf, grub_size_t len, struct grub_squash_data *data)
|
||||
{
|
||||
char *udata = NULL;
|
||||
int usize = data->blksz;
|
||||
if (usize < 8192)
|
||||
usize = 8192;
|
||||
|
||||
udata = grub_malloc (usize);
|
||||
if (!udata)
|
||||
return -1;
|
||||
|
||||
ZSTD_decompress(udata, usize, inbuf, insize);
|
||||
grub_memcpy(outbuf, udata + off, len);
|
||||
grub_free(udata);
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
static struct grub_squash_data *
|
||||
squash_mount (grub_disk_t disk)
|
||||
{
|
||||
@@ -447,6 +468,9 @@ squash_mount (grub_disk_t disk)
|
||||
case grub_cpu_to_le16_compile_time (COMPRESSION_LZ4):
|
||||
data->decompress = lz4_decompress_wrap;
|
||||
break;
|
||||
case grub_cpu_to_le16_compile_time (COMPRESSION_ZSTD):
|
||||
data->decompress = zstd_decompress_wrap;
|
||||
break;
|
||||
case grub_cpu_to_le16_compile_time (COMPRESSION_XZ):
|
||||
data->decompress = xz_decompress;
|
||||
data->xzbuf = grub_malloc (XZBUFSIZ);
|
||||
@@ -519,7 +543,7 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,
|
||||
break;
|
||||
case grub_cpu_to_le16_compile_time (SQUASH_TYPE_LONG_DIR):
|
||||
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);
|
||||
break;
|
||||
default:
|
||||
|
@@ -734,6 +734,11 @@ read_property (struct parsebuf *p)
|
||||
"%s:%d:%d property value invalid; "
|
||||
"enclose literal values in quotes (\")",
|
||||
p->filename, p->line_num, p->col_num);
|
||||
|
||||
grub_printf("File: %s\nLine:%d Column:%d\n"
|
||||
"property value invalid; enclose literal values in quotes (\")\n\n",
|
||||
p->filename, p->line_num, p->col_num);
|
||||
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
@@ -342,10 +342,12 @@ grub_file_read (grub_file_t file, void *buf, grub_size_t len)
|
||||
if (len == 0)
|
||||
return 0;
|
||||
|
||||
if (grub_strncmp(file->name, GRUB_MEMFILE_MEM, grub_strlen(GRUB_MEMFILE_MEM)) == 0) {
|
||||
if (file->name) {
|
||||
if (grub_strncmp(file->name, GRUB_MEMFILE_MEM, grub_strlen(GRUB_MEMFILE_MEM)) == 0) {
|
||||
grub_memcpy(buf, (grub_uint8_t *)(file->data) + file->offset, len);
|
||||
file->offset += len;
|
||||
return len;
|
||||
}
|
||||
}
|
||||
|
||||
read_hook = file->read_hook;
|
||||
|
@@ -229,10 +229,7 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
if (! file)
|
||||
goto fail;
|
||||
|
||||
/* Get the root device's device path. */
|
||||
dev = grub_device_open (0);
|
||||
if (! dev)
|
||||
goto fail;
|
||||
dev = file->device;
|
||||
|
||||
if (dev->disk)
|
||||
dev_handle = grub_efidisk_get_device_handle (dev->disk);
|
||||
@@ -257,16 +254,13 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
if (dev_handle)
|
||||
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);
|
||||
if (! file_path)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
file_path = make_file_path (dp, filename);
|
||||
if (! file_path)
|
||||
goto fail;
|
||||
|
||||
//grub_printf ("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_device_close (dev);
|
||||
|
||||
grub_loader_set (grub_chainloader_boot, grub_chainloader_unload, 0);
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
|
||||
if (dev)
|
||||
grub_device_close (dev);
|
||||
|
||||
if (file)
|
||||
grub_file_close (file);
|
||||
|
||||
|
@@ -88,6 +88,8 @@ static int ventoy_linux_argc = 0;
|
||||
static char **ventoy_linux_args = NULL;
|
||||
static int ventoy_extra_initrd_num = 0;
|
||||
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
|
||||
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;
|
||||
}
|
||||
|
||||
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
|
||||
grub_cmd_extra_initrd_append (grub_command_t cmd __attribute__ ((unused)),
|
||||
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);
|
||||
}
|
||||
|
||||
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_set_bootopt, cmd_unset_bootopt, cmd_extra_initrd_append, cmd_extra_initrd_reset;
|
||||
|
@@ -128,11 +128,22 @@ insert_dir (const char *name, struct dir **root,
|
||||
n->name = grub_strndup (cb, ce - cb);
|
||||
if (ptr)
|
||||
{
|
||||
/*
|
||||
* Create the substring with the trailing NUL byte
|
||||
* to be included in the cpio header.
|
||||
*/
|
||||
char *tmp_name = grub_strndup (name, ce - name);
|
||||
if (!tmp_name) {
|
||||
grub_free (n->name);
|
||||
grub_free (n);
|
||||
return grub_errno;
|
||||
}
|
||||
grub_dprintf ("linux", "Creating directory %s, %s\n", name, ce);
|
||||
ptr = make_header (ptr, name, ce - name,
|
||||
ptr = make_header (ptr, tmp_name, ce - name + 1,
|
||||
040777, 0);
|
||||
grub_free (tmp_name);
|
||||
}
|
||||
size += ALIGN_UP ((ce - (char *) name)
|
||||
size += ALIGN_UP ((ce - (char *) name + 1)
|
||||
+ sizeof (struct newc_head), 4);
|
||||
*head = n;
|
||||
cur = n;
|
||||
@@ -183,7 +194,7 @@ grub_initrd_init (int argc, char *argv[],
|
||||
}
|
||||
initrd_ctx->size
|
||||
+= ALIGN_UP (sizeof (struct newc_head)
|
||||
+ grub_strlen (initrd_ctx->components[i].newc_name),
|
||||
+ grub_strlen (initrd_ctx->components[i].newc_name) + 1,
|
||||
4);
|
||||
initrd_ctx->size += insert_dir (initrd_ctx->components[i].newc_name,
|
||||
&root, 0);
|
||||
@@ -194,7 +205,7 @@ grub_initrd_init (int argc, char *argv[],
|
||||
else if (newc)
|
||||
{
|
||||
initrd_ctx->size += ALIGN_UP (sizeof (struct newc_head)
|
||||
+ sizeof ("TRAILER!!!") - 1, 4);
|
||||
+ sizeof ("TRAILER!!!"), 4);
|
||||
free_dir (root);
|
||||
root = 0;
|
||||
newc = 0;
|
||||
@@ -217,7 +228,7 @@ grub_initrd_init (int argc, char *argv[],
|
||||
{
|
||||
initrd_ctx->size = ALIGN_UP (initrd_ctx->size, 4);
|
||||
initrd_ctx->size += ALIGN_UP (sizeof (struct newc_head)
|
||||
+ sizeof ("TRAILER!!!") - 1, 4);
|
||||
+ sizeof ("TRAILER!!!"), 4);
|
||||
free_dir (root);
|
||||
root = 0;
|
||||
}
|
||||
@@ -269,14 +280,14 @@ grub_initrd_load (struct grub_linux_initrd_context *initrd_ctx,
|
||||
ptr += insert_dir (initrd_ctx->components[i].newc_name,
|
||||
&root, ptr);
|
||||
ptr = make_header (ptr, initrd_ctx->components[i].newc_name,
|
||||
grub_strlen (initrd_ctx->components[i].newc_name),
|
||||
grub_strlen (initrd_ctx->components[i].newc_name) + 1,
|
||||
0100777,
|
||||
initrd_ctx->components[i].size);
|
||||
newc = 1;
|
||||
}
|
||||
else if (newc)
|
||||
{
|
||||
ptr = make_header (ptr, "TRAILER!!!", sizeof ("TRAILER!!!") - 1,
|
||||
ptr = make_header (ptr, "TRAILER!!!", sizeof ("TRAILER!!!"),
|
||||
0, 0);
|
||||
free_dir (root);
|
||||
root = 0;
|
||||
@@ -308,7 +319,7 @@ grub_initrd_load (struct grub_linux_initrd_context *initrd_ctx,
|
||||
{
|
||||
grub_memset (ptr, 0, ALIGN_UP_OVERHEAD (cursize, 4));
|
||||
ptr += ALIGN_UP_OVERHEAD (cursize, 4);
|
||||
ptr = make_header (ptr, "TRAILER!!!", sizeof ("TRAILER!!!") - 1, 0, 0);
|
||||
ptr = make_header (ptr, "TRAILER!!!", sizeof ("TRAILER!!!"), 0, 0);
|
||||
}
|
||||
free_dir (root);
|
||||
root = 0;
|
||||
|
@@ -951,12 +951,12 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot)
|
||||
menu_fini ();
|
||||
if (g_ventoy_terminal_output == 0)
|
||||
{
|
||||
grub_script_execute_sourcecode("terminal_output console");
|
||||
grub_script_execute_sourcecode("vt_push_menu_lang en_US\nterminal_output console");
|
||||
g_ventoy_terminal_output = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
grub_script_execute_sourcecode("terminal_output gfxterm");
|
||||
grub_script_execute_sourcecode("terminal_output gfxterm\nvt_pop_menu_lang");
|
||||
g_ventoy_terminal_output = 0;
|
||||
}
|
||||
goto refresh;
|
||||
|
@@ -244,6 +244,15 @@ static int ventoy_browser_valid_dirname(const char *name, int len)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (g_filt_trash_dir)
|
||||
{
|
||||
if (0 == grub_strncmp(name, ".trash-", 7) ||
|
||||
0 == grub_strcmp(name, ".Trashes"))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (name[0] == '$')
|
||||
{
|
||||
if (0 == grub_strncmp(name, "$RECYCLE.BIN", 12) ||
|
||||
@@ -392,6 +401,11 @@ static int ventoy_browser_iterate_dir(const char *filename, const struct grub_di
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (grub_file_is_vlnk_suffix(filename, len))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
node = grub_zalloc(sizeof(browser_node));
|
||||
if (!node)
|
||||
{
|
||||
|
@@ -65,6 +65,7 @@ int g_initrd_img_count = 0;
|
||||
int g_valid_initrd_count = 0;
|
||||
int g_default_menu_mode = 0;
|
||||
int g_filt_dot_underscore_file = 0;
|
||||
int g_filt_trash_dir = 1;
|
||||
int g_sort_case_sensitive = 0;
|
||||
int g_tree_view_menu_style = 0;
|
||||
static grub_file_t g_old_file;
|
||||
@@ -158,7 +159,9 @@ const char *g_menu_prefix[img_type_max] =
|
||||
"iso", "wim", "efi", "img", "vhd", "vtoy"
|
||||
};
|
||||
|
||||
static const char *g_lower_chksum_name[] = { "md5", "sha1", "sha256", "sha512" };
|
||||
static const char *g_lower_chksum_name[VTOY_CHKSUM_NUM] = { "md5", "sha1", "sha256", "sha512" };
|
||||
static int g_lower_chksum_namelen[VTOY_CHKSUM_NUM] = { 3, 4, 6, 6 };
|
||||
static int g_chksum_retlen[VTOY_CHKSUM_NUM] = { 32, 40, 64, 128 };
|
||||
|
||||
static int g_vtoy_secondary_need_recover = 0;
|
||||
|
||||
@@ -1765,6 +1768,10 @@ static int ventoy_check_vlnk_data(ventoy_vlnk *vlnk, int print, char *dst, int s
|
||||
cur->fs->fs_close(&file);
|
||||
grub_snprintf(dst, size - 1, "(%s)%s", cur->device, vlnk->filepath);
|
||||
}
|
||||
else
|
||||
{
|
||||
grub_errno = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1894,9 +1901,14 @@ static int ventoy_collect_img_files(const char *filename, const struct grub_dirh
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (filename[0] == '$' && 0 == grub_strncmp(filename, "$RECYCLE.BIN", 12))
|
||||
if (g_filt_trash_dir)
|
||||
{
|
||||
return 0;
|
||||
if (0 == grub_strncmp(filename, ".trash-", 7) ||
|
||||
0 == grub_strcmp(filename, ".Trashes") ||
|
||||
0 == grub_strncmp(filename, "$RECYCLE.BIN", 12))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (g_plugin_image_list == VENTOY_IMG_WHITE_LIST)
|
||||
@@ -2825,6 +2837,12 @@ static grub_err_t ventoy_cmd_list_img(grub_extcmd_context_t ctxt, int argc, char
|
||||
{
|
||||
g_filt_dot_underscore_file = 1;
|
||||
}
|
||||
|
||||
strdata = ventoy_get_env("VTOY_FILT_TRASH_DIR");
|
||||
if (strdata && strdata[0] == '0' && strdata[1] == 0)
|
||||
{
|
||||
g_filt_trash_dir = 0;
|
||||
}
|
||||
|
||||
strdata = ventoy_get_env("VTOY_SORT_CASE_SENSITIVE");
|
||||
if (strdata && strdata[0] == '1' && strdata[1] == 0)
|
||||
@@ -6305,36 +6323,6 @@ static grub_err_t ventoy_cmd_load_menu_lang(grub_extcmd_context_t ctxt, int argc
|
||||
VENTOY_CMD_RETURN(0);
|
||||
}
|
||||
|
||||
static grub_err_t ventoy_cmd_vtoychksum_exist(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
{
|
||||
int cnt;
|
||||
char c;
|
||||
char *pos = NULL;
|
||||
|
||||
(void)ctxt;
|
||||
(void)argc;
|
||||
|
||||
cnt = ventoy_str_chrcnt(args[1], '/');
|
||||
if (cnt > 1)
|
||||
{
|
||||
pos = grub_strrchr(args[1], '/');
|
||||
c = *pos;
|
||||
*pos = 0;
|
||||
if (ventoy_check_file_exist("%s%s/VENTOY_CHECKSUM", args[0], args[1]))
|
||||
{
|
||||
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||
}
|
||||
*pos = c;
|
||||
}
|
||||
|
||||
if (ventoy_check_file_exist("%s/VENTOY_CHECKSUM", args[0]))
|
||||
{
|
||||
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int ventoy_chksum_pathcmp(int chktype, char *rlpath, char *rdpath)
|
||||
{
|
||||
char *pos1 = NULL;
|
||||
@@ -6485,13 +6473,12 @@ static grub_err_t ventoy_cmd_cmp_checksum(grub_extcmd_context_t ctxt, int argc,
|
||||
char fchksum[64];
|
||||
char readchk[256] = {0};
|
||||
char filebuf[512] = {0};
|
||||
int retlen[] = { 32, 40, 64, 128 };
|
||||
char uchkname[16];
|
||||
|
||||
(void)ctxt;
|
||||
|
||||
index = (int)grub_strtol(args[0], NULL, 10);
|
||||
if (argc != 2 || index < 0 || index >= (int)ARRAY_SIZE(retlen))
|
||||
if (argc != 2 || index < 0 || index >= VTOY_CHKSUM_NUM)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
@@ -6519,17 +6506,17 @@ static grub_err_t ventoy_cmd_cmp_checksum(grub_extcmd_context_t ctxt, int argc,
|
||||
if (pos)
|
||||
{
|
||||
VTOY_SKIP_SPACE_NEXT(pos, 1);
|
||||
grub_memcpy(readchk, pos, retlen[index]);
|
||||
grub_memcpy(readchk, pos, g_chksum_retlen[index]);
|
||||
}
|
||||
else
|
||||
{
|
||||
grub_memcpy(readchk, filebuf, retlen[index]);
|
||||
grub_memcpy(readchk, filebuf, g_chksum_retlen[index]);
|
||||
}
|
||||
}
|
||||
else if (chktype == 3 || chktype == 4)
|
||||
{
|
||||
grub_snprintf(fchksum, sizeof(fchksum), "global VENTOY_CHECKSUM");
|
||||
ventoy_find_checksum(file, uchkname, retlen[index], args[1], chktype, readchk);
|
||||
ventoy_find_checksum(file, uchkname, g_chksum_retlen[index], args[1], chktype, readchk);
|
||||
if (readchk[0] == 0)
|
||||
{
|
||||
grub_printf("\n\n%s value not found in %s.\n", uchkname, fchksum);
|
||||
@@ -6539,7 +6526,7 @@ static grub_err_t ventoy_cmd_cmp_checksum(grub_extcmd_context_t ctxt, int argc,
|
||||
else
|
||||
{
|
||||
grub_snprintf(fchksum, sizeof(fchksum), "local VENTOY_CHECKSUM");
|
||||
ventoy_find_checksum(file, uchkname, retlen[index], args[1], chktype, readchk);
|
||||
ventoy_find_checksum(file, uchkname, g_chksum_retlen[index], args[1], chktype, readchk);
|
||||
if (readchk[0] == 0)
|
||||
{
|
||||
grub_file_close(file);
|
||||
@@ -6547,7 +6534,7 @@ static grub_err_t ventoy_cmd_cmp_checksum(grub_extcmd_context_t ctxt, int argc,
|
||||
if (file)
|
||||
{
|
||||
grub_snprintf(fchksum, sizeof(fchksum), "global VENTOY_CHECKSUM");
|
||||
ventoy_find_checksum(file, uchkname, retlen[index], args[1], 3, readchk);
|
||||
ventoy_find_checksum(file, uchkname, g_chksum_retlen[index], args[1], 3, readchk);
|
||||
if (readchk[0] == 0)
|
||||
{
|
||||
grub_printf("\n\n%s value not found in both local and global VENTOY_CHECKSUM.\n", uchkname);
|
||||
@@ -6573,6 +6560,181 @@ end:
|
||||
VENTOY_CMD_RETURN(0);
|
||||
}
|
||||
|
||||
static int ventoy_find_all_checksum
|
||||
(
|
||||
grub_file_t file,
|
||||
char *path,
|
||||
int chktype,
|
||||
int exists[VTOY_CHKSUM_NUM],
|
||||
int *ptotexist
|
||||
)
|
||||
{
|
||||
int i;
|
||||
int ulen;
|
||||
int tot = 0;
|
||||
char c = 0;
|
||||
char *pos = NULL;
|
||||
char *pos1 = NULL;
|
||||
char *pos2 = NULL;
|
||||
char *buf = NULL;
|
||||
char *currline = NULL;
|
||||
char *nextline = NULL;
|
||||
const char *uname = NULL;
|
||||
|
||||
tot = *ptotexist;
|
||||
|
||||
/* read file to buffer */
|
||||
buf = grub_malloc(file->size + 4);
|
||||
if (!buf)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
grub_file_read(file, buf, file->size);
|
||||
buf[file->size] = 0;
|
||||
|
||||
/* parse each line */
|
||||
for (currline = buf; currline; currline = nextline)
|
||||
{
|
||||
nextline = ventoy_get_line(currline);
|
||||
VTOY_SKIP_SPACE(currline);
|
||||
|
||||
for (i = 0; i < VTOY_CHKSUM_NUM; i++)
|
||||
{
|
||||
if (exists[i])
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
uname = g_lower_chksum_name[i];
|
||||
ulen = g_lower_chksum_namelen[i];
|
||||
|
||||
if (grub_strncasecmp(currline, uname, ulen) == 0)
|
||||
{
|
||||
pos = grub_strchr(currline, '=');
|
||||
pos1 = grub_strchr(currline, '(');
|
||||
pos2 = grub_strchr(currline, ')');
|
||||
|
||||
if (pos && pos1 && pos2)
|
||||
{
|
||||
c = *pos2;
|
||||
*pos2 = 0;
|
||||
if (ventoy_chksum_pathcmp(chktype, path, pos1 + 1) == 0)
|
||||
{
|
||||
exists[i] = 1;
|
||||
tot++;
|
||||
}
|
||||
*pos2 = c;
|
||||
}
|
||||
}
|
||||
else if (ventoy_str_len_alnum(currline, g_chksum_retlen[i]))
|
||||
{
|
||||
VTOY_SKIP_SPACE_NEXT_EX(pos, currline, g_chksum_retlen[i]);
|
||||
if (ventoy_chksum_pathcmp(chktype, path, pos) == 0)
|
||||
{
|
||||
exists[i] = 1;
|
||||
tot++;
|
||||
}
|
||||
}
|
||||
|
||||
if (tot >= VTOY_CHKSUM_NUM)
|
||||
{
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
end:
|
||||
|
||||
*ptotexist = tot;
|
||||
grub_free(buf);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static grub_err_t ventoy_cmd_vtoychksum_exist(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
{
|
||||
int i = 0;
|
||||
int cnt = 0;
|
||||
char c = 0;
|
||||
int tip = 0;
|
||||
char *pos = NULL;
|
||||
grub_file_t file = NULL;
|
||||
const char *isopart = NULL;
|
||||
int exists[VTOY_CHKSUM_NUM] = { 0, 0, 0, 0 };
|
||||
int totexist = 0;
|
||||
|
||||
(void)argc;
|
||||
(void)ctxt;
|
||||
|
||||
isopart = grub_env_get("vtoy_iso_part");
|
||||
|
||||
for (i = 0; i < VTOY_CHKSUM_NUM; i++)
|
||||
{
|
||||
if (ventoy_check_file_exist("%s%s.%s", isopart, args[0], g_lower_chksum_name[i]))
|
||||
{
|
||||
exists[i] = 1;
|
||||
totexist++;
|
||||
}
|
||||
}
|
||||
|
||||
if (totexist == VTOY_CHKSUM_NUM)
|
||||
{
|
||||
goto end;
|
||||
}
|
||||
|
||||
cnt = ventoy_str_chrcnt(args[0], '/');
|
||||
if (cnt > 1)
|
||||
{
|
||||
pos = grub_strrchr(args[0], '/');
|
||||
c = *pos;
|
||||
*pos = 0;
|
||||
file = ventoy_grub_file_open(VENTOY_FILE_TYPE, "%s%s/VENTOY_CHECKSUM", isopart, args[0]);
|
||||
*pos = c;
|
||||
|
||||
if (file)
|
||||
{
|
||||
if (tip == 0 && file->size > (32 * VTOY_SIZE_1KB))
|
||||
{
|
||||
tip = 1;
|
||||
grub_printf("Reading checksum file...\n");
|
||||
grub_refresh();
|
||||
}
|
||||
|
||||
debug("parse local VENTOY_CHECKSUM\n");
|
||||
ventoy_find_all_checksum(file, args[0], 2, exists, &totexist);
|
||||
grub_file_close(file);
|
||||
}
|
||||
}
|
||||
|
||||
if (totexist == VTOY_CHKSUM_NUM)
|
||||
{
|
||||
goto end;
|
||||
}
|
||||
|
||||
file = ventoy_grub_file_open(VENTOY_FILE_TYPE, "%s/VENTOY_CHECKSUM", isopart);
|
||||
if (file)
|
||||
{
|
||||
if (tip == 0 && file->size > (32 * VTOY_SIZE_1KB))
|
||||
{
|
||||
tip = 1;
|
||||
grub_printf("Reading checksum file...\n");
|
||||
grub_refresh();
|
||||
}
|
||||
|
||||
debug("parse global VENTOY_CHECKSUM\n");
|
||||
ventoy_find_all_checksum(file, args[0], (cnt > 1) ? 3 : 4, exists, &totexist);
|
||||
grub_file_close(file);
|
||||
}
|
||||
|
||||
end:
|
||||
|
||||
ventoy_env_int_set("VT_EXIST_MD5", exists[0]);
|
||||
ventoy_env_int_set("VT_EXIST_SHA1", exists[1]);
|
||||
ventoy_env_int_set("VT_EXIST_SHA256", exists[2]);
|
||||
ventoy_env_int_set("VT_EXIST_SHA512", exists[3]);
|
||||
|
||||
VENTOY_CMD_RETURN(0);
|
||||
}
|
||||
|
||||
|
||||
static const char * ventoy_menu_lang_read_hook(struct grub_env_var *var, const char *val)
|
||||
{
|
||||
@@ -6805,6 +6967,8 @@ static cmd_para ventoy_cmds[] =
|
||||
{ "vt_cur_menu_lang", ventoy_cmd_cur_menu_lang, 0, NULL, "", "", NULL },
|
||||
{ "vt_vtoychksum_exist", ventoy_cmd_vtoychksum_exist, 0, NULL, "", "", NULL },
|
||||
{ "vt_cmp_checksum", ventoy_cmd_cmp_checksum, 0, NULL, "", "", NULL },
|
||||
{ "vt_push_menu_lang", ventoy_cmd_push_menulang, 0, NULL, "", "", NULL },
|
||||
{ "vt_pop_menu_lang", ventoy_cmd_pop_menulang, 0, NULL, "", "", NULL },
|
||||
|
||||
};
|
||||
|
||||
|
@@ -62,6 +62,8 @@
|
||||
|
||||
#define VTOY_WARNING "!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!"
|
||||
|
||||
#define VTOY_CHKSUM_NUM 4
|
||||
|
||||
#define VTOY_PLAT_I386_UEFI 0x49413332
|
||||
#define VTOY_PLAT_ARM64_UEFI 0x41413634
|
||||
#define VTOY_PLAT_X86_64_UEFI 0x55454649
|
||||
@@ -1296,6 +1298,7 @@ extern int g_tree_view_menu_style;
|
||||
extern int g_sort_case_sensitive;
|
||||
extern int g_wimboot_enable;
|
||||
extern int g_filt_dot_underscore_file;
|
||||
extern int g_filt_trash_dir;
|
||||
extern int g_vtoy_file_flt[VTOY_FILE_FLT_BUTT];
|
||||
extern const char *g_menu_class[img_type_max];
|
||||
extern char g_iso_path[256];
|
||||
@@ -1311,6 +1314,8 @@ grub_err_t ventoy_cmd_cur_menu_lang(grub_extcmd_context_t ctxt, int argc, char *
|
||||
extern int ventoy_menu_push_key(int code);
|
||||
int ventoy_ctrl_var_init(void);
|
||||
int ventoy_global_var_init(void);
|
||||
grub_err_t ventoy_cmd_push_menulang(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
grub_err_t ventoy_cmd_pop_menulang(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
|
||||
#endif /* __VENTOY_DEF_H__ */
|
||||
|
||||
|
@@ -1099,6 +1099,7 @@ static grub_err_t ventoy_linux_locate_initrd(int filt, int *filtcnt)
|
||||
if (filtbysize
|
||||
&& (NULL == grub_strstr(node->name, "minirt.gz"))
|
||||
&& (NULL == grub_strstr(node->name, "initrd.xz"))
|
||||
&& (NULL == grub_strstr(node->name, "initrd.gz"))
|
||||
)
|
||||
{
|
||||
if (filt > 0 && file->size <= g_ventoy_cpio_size + 2048)
|
||||
|
@@ -66,6 +66,7 @@ static theme_list *g_theme_head = NULL;
|
||||
static int g_theme_random = vtoy_theme_random_boot_second;
|
||||
static char g_theme_single_file[256];
|
||||
static char g_cur_menu_language[32] = {0};
|
||||
static char g_push_menu_language[32] = {0};
|
||||
|
||||
static int ventoy_plugin_is_parent(const char *pat, int patlen, const char *isopath)
|
||||
{
|
||||
@@ -3624,3 +3625,33 @@ grub_err_t ventoy_cmd_cur_menu_lang(grub_extcmd_context_t ctxt, int argc, char *
|
||||
VENTOY_CMD_RETURN(0);
|
||||
}
|
||||
|
||||
grub_err_t ventoy_cmd_push_menulang(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
{
|
||||
(void)argc;
|
||||
(void)ctxt;
|
||||
|
||||
if (g_push_menu_language[0] == 0)
|
||||
{
|
||||
grub_memcpy(g_push_menu_language, g_cur_menu_language, sizeof(g_push_menu_language));
|
||||
ventoy_plugin_load_menu_lang(0, args[0]);
|
||||
}
|
||||
|
||||
VENTOY_CMD_RETURN(0);
|
||||
}
|
||||
|
||||
grub_err_t ventoy_cmd_pop_menulang(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
{
|
||||
(void)argc;
|
||||
(void)ctxt;
|
||||
(void)args;
|
||||
|
||||
if (g_push_menu_language[0])
|
||||
{
|
||||
ventoy_plugin_load_menu_lang(0, g_push_menu_language);
|
||||
g_push_menu_language[0] = 0;
|
||||
}
|
||||
|
||||
VENTOY_CMD_RETURN(0);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -262,6 +262,10 @@ static int ventoy_vhd_patch_disk(const char *vhdpath, ventoy_patch_vhd *patch1,
|
||||
}
|
||||
else
|
||||
{
|
||||
if (offset == 0)
|
||||
{
|
||||
offset = gpt->MBR.PartTbl[partIndex].StartSectorId;
|
||||
}
|
||||
offset *= 512;
|
||||
debug("MBR disk signature: %02x%02x%02x%02x Part(%d) offset:%llu\n",
|
||||
gpt->MBR.BootCode[0x1b8 + 0], gpt->MBR.BootCode[0x1b8 + 1],
|
||||
@@ -500,7 +504,7 @@ grub_err_t ventoy_cmd_get_vtoy_type(grub_extcmd_context_t ctxt, int argc, char *
|
||||
vhd_footer_t vhdfoot;
|
||||
VDIPREHEADER vdihdr;
|
||||
char type[16] = {0};
|
||||
ventoy_gpt_info *gpt;
|
||||
ventoy_gpt_info *gpt = NULL;
|
||||
|
||||
(void)ctxt;
|
||||
|
||||
|
BIN
ICON/filechecksum.gif
Normal file
BIN
ICON/filechecksum.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 437 KiB |
@@ -20,7 +20,7 @@
|
||||
. $VTOY_PATH/hook/ventoy-os-lib.sh
|
||||
|
||||
$BUSYBOX_PATH/mkdir /dev
|
||||
$BUSYBOX_PATH/mknod -m 660 /dev/console b 5 1
|
||||
$BUSYBOX_PATH/mknod -m 660 /dev/console c 5 1
|
||||
|
||||
$SED "/for device in/i $BUSYBOX_PATH/sh $VTOY_PATH/hook/aryalinux/disk_hook.sh" -i /init
|
||||
#$SED "/for device in/i exec $BUSYBOX_PATH/sh" -i /init
|
||||
|
32
IMG/cpio/ventoy/hook/chimera/disk_hook.sh
Normal file
32
IMG/cpio/ventoy/hook/chimera/disk_hook.sh
Normal file
@@ -0,0 +1,32 @@
|
||||
#!/ventoy/busybox/sh
|
||||
#************************************************************************************
|
||||
# Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#************************************************************************************
|
||||
|
||||
. /ventoy/hook/ventoy-hook-lib.sh
|
||||
|
||||
for i in 0 1 2 3 4 5 6 7 8 9; do
|
||||
vtdiskname=$(get_ventoy_disk_name)
|
||||
if [ "$vtdiskname" = "unknown" ]; then
|
||||
vtlog "wait for disk ..."
|
||||
$SLEEP 3
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2"
|
22
IMG/cpio/ventoy/hook/chimera/ventoy-hook.sh
Normal file
22
IMG/cpio/ventoy/hook/chimera/ventoy-hook.sh
Normal file
@@ -0,0 +1,22 @@
|
||||
#!/ventoy/busybox/sh
|
||||
#************************************************************************************
|
||||
# Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#************************************************************************************
|
||||
|
||||
. $VTOY_PATH/hook/ventoy-os-lib.sh
|
||||
|
||||
$SED "/maybe_break *premount/a\ $BUSYBOX_PATH/sh $VTOY_PATH/hook/chimera/disk_hook.sh" -i /init
|
@@ -40,13 +40,13 @@ ventoy_os_install_dmsetup_by_unsquashfs() {
|
||||
|
||||
dmModPath="/usr/lib/modules/$vtKerVer/kernel/drivers/md/dm-mod.$vtKoPo"
|
||||
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
|
||||
rm -rf $VTOY_PATH/sqfs
|
||||
dmModPath="/lib/modules/$vtKerVer/kernel/drivers/md/dm-mod.$vtKoPo"
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
sfsfile=$(ls $VTOY_PATH/mnt/iso/*.sfs)
|
||||
if ls $VTOY_PATH/mnt/iso/zdrv_*.sfs 2>/dev/null; then
|
||||
sfsfile=$(ls $VTOY_PATH/mnt/iso/zdrv_*.sfs)
|
||||
else
|
||||
sfsfile=$(ls $VTOY_PATH/mnt/iso/*.sfs)
|
||||
fi
|
||||
|
||||
mount -t squashfs $sfsfile $VTOY_PATH/mnt/squashfs
|
||||
|
||||
kVer=$(uname -r)
|
||||
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"
|
||||
insmod $KoName
|
||||
|
||||
|
@@ -28,6 +28,7 @@ vtlog "####### $0 $* ########"
|
||||
VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
|
||||
|
||||
ventoy_os_install_dmsetup_by_fuse() {
|
||||
local drvdir=""
|
||||
vtlog "ventoy_os_install_dmsetup_by_fuse $*"
|
||||
|
||||
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
|
||||
|
||||
|
||||
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/lib/modules ]; then
|
||||
KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$2/kernel/drivers/md/dm-mod.ko*)
|
||||
if [ -n "$KoName" -a -f $KoName ]; then
|
||||
drvdir=$VTOY_PATH/mnt/squashfs/lib/modules/$2
|
||||
break
|
||||
fi
|
||||
fi
|
||||
@@ -49,11 +52,29 @@ ventoy_os_install_dmsetup_by_fuse() {
|
||||
umount $VTOY_PATH/mnt/squashfs
|
||||
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"
|
||||
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"
|
||||
insmod $KoName
|
||||
|
||||
|
@@ -26,6 +26,10 @@ ventoy_get_debian_distro() {
|
||||
if $EGREP -q "ID=.*antix|ID=.*mx" /etc/initrd-release; then
|
||||
echo 'antix'; return
|
||||
fi
|
||||
elif [ -e /etc/initrd_release ]; then
|
||||
if $EGREP -q "ID=.*antix|ID=.*mx" /etc/initrd_release; then
|
||||
echo 'antix'; return
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -e /DISTRO_SPECS ]; then
|
||||
@@ -45,6 +49,8 @@ ventoy_get_debian_distro() {
|
||||
echo 'mll'; return
|
||||
elif $GREP -m1 -q 'stratodesk.com' /init; then
|
||||
echo 'stratodesk'; return
|
||||
elif $GREP -q "\bPVE\b" /init; then
|
||||
echo 'pve'; return
|
||||
fi
|
||||
fi
|
||||
|
||||
|
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
|
||||
|
||||
|
||||
|
75
IMG/cpio/ventoy/hook/ewe/ventoy-disk.sh
Normal file
75
IMG/cpio/ventoy/hook/ewe/ventoy-disk.sh
Normal file
@@ -0,0 +1,75 @@
|
||||
#!/ventoy/busybox/sh
|
||||
#************************************************************************************
|
||||
# Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#************************************************************************************
|
||||
|
||||
. /ventoy/hook/ventoy-hook-lib.sh
|
||||
|
||||
vtlog "######### $0 $* ############"
|
||||
|
||||
if is_ventoy_hook_finished; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
wait_for_usb_disk_ready
|
||||
|
||||
vtdiskname=$(get_ventoy_disk_name)
|
||||
if [ "$vtdiskname" = "unknown" ]; then
|
||||
vtlog "ventoy disk not found"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2" "noreplace"
|
||||
|
||||
blkdev_num=$($VTOY_PATH/tool/dmsetup ls | $GREP ventoy | $SED 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/')
|
||||
vtDM=$(ventoy_find_dm_id ${blkdev_num})
|
||||
vtlog "blkdev_num=$blkdev_num vtDM=$vtDM ..."
|
||||
|
||||
while [ -n "Y" ]; do
|
||||
if [ -b /dev/$vtDM ]; then
|
||||
break
|
||||
else
|
||||
sleep 0.3
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -n "$1" ]; then
|
||||
vtlog "ln -s /dev/$vtDM $1"
|
||||
|
||||
if [ -e "$1" ]; then
|
||||
vtlog "$1 already exist"
|
||||
else
|
||||
ln -s /dev/$vtDM "$1"
|
||||
fi
|
||||
else
|
||||
vtLABEL=$($BUSYBOX_PATH/blkid /dev/$vtDM | $SED 's/.*LABEL="\([^"]*\)".*/\1/')
|
||||
vtlog "vtLABEL is $vtLABEL"
|
||||
|
||||
if [ -z "$vtLABEL" ]; then
|
||||
vtLABEL=$($SED "s/.*label=\([^ ]*\)/\1/" /proc/cmdline)
|
||||
vtlog "vtLABEL is $vtLABEL from cmdline"
|
||||
fi
|
||||
|
||||
if [ -e "/dev/disk/by-label/$vtLABEL" ]; then
|
||||
vtlog "$1 already exist"
|
||||
else
|
||||
ln -s /dev/$vtDM "/dev/disk/by-label/$vtLABEL"
|
||||
fi
|
||||
fi
|
||||
|
||||
# OK finish
|
||||
set_ventoy_hook_finish
|
25
IMG/cpio/ventoy/hook/ewe/ventoy-hook.sh
Normal file
25
IMG/cpio/ventoy/hook/ewe/ventoy-hook.sh
Normal file
@@ -0,0 +1,25 @@
|
||||
#!/ventoy/busybox/sh
|
||||
#************************************************************************************
|
||||
# Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#************************************************************************************
|
||||
|
||||
. $VTOY_PATH/hook/ventoy-os-lib.sh
|
||||
|
||||
echo "hook live.init" >> $VTLOG
|
||||
|
||||
$SED "1i $BUSYBOX_PATH/sh $VTOY_PATH/hook/ewe/ventoy-disk.sh" -i /lib/tinyramfs/hook.d/live/live.init
|
||||
|
@@ -24,6 +24,7 @@
|
||||
|
||||
if [ -f $VTOY_PATH/autoinstall ]; then
|
||||
VTKS="inst.ks=file:$VTOY_PATH/autoinstall"
|
||||
cp -a $VTOY_PATH/hook/rhel7/ventoy-autoexp.sh /lib/dracut/hooks/pre-mount/99-ventoy-autoexp.sh
|
||||
else
|
||||
for vtParam in $($CAT /proc/cmdline); do
|
||||
if echo $vtParam | $GREP -q 'ks=file:/'; then
|
||||
@@ -90,23 +91,7 @@ if ls $VTOY_PATH | $GREP -q 'ventoy_dud[0-9]'; then
|
||||
fi
|
||||
echo "vtInstDD=$vtInstDD" >> $VTLOG
|
||||
|
||||
if $GREP -q 'root=live' /proc/cmdline; then
|
||||
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE root=live:/dev/ventoy $VTKS $VTOVERLAY $vtInstDD#" -i /lib/dracut-lib.sh
|
||||
else
|
||||
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE inst.stage2=hd:/dev/ventoy $VTKS $VTOVERLAY $vtInstDD#" -i /lib/dracut-lib.sh
|
||||
fi
|
||||
|
||||
ventoy_set_inotify_script rhel7/ventoy-inotifyd-hook.sh
|
||||
|
||||
#Fedora
|
||||
if $BUSYBOX_PATH/which dmsquash-live-root > /dev/null; then
|
||||
vtPriority=99
|
||||
else
|
||||
vtPriority=01
|
||||
fi
|
||||
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/rhel7/ventoy-inotifyd-start.sh /lib/dracut/hooks/pre-udev/${vtPriority}-ventoy-inotifyd-start.sh
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/rhel7/ventoy-timeout.sh /lib/dracut/hooks/initqueue/timeout/${vtPriority}-ventoy-timeout.sh
|
||||
|
||||
vtNeedRepo=
|
||||
if [ -f /etc/system-release ]; then
|
||||
@@ -125,12 +110,61 @@ if $GREP -i -q Fedora /proc/version; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if $GREP -i -q Fedora /etc/os-release; then
|
||||
if $GREP -q 'Server Edition' /etc/os-release; then
|
||||
vtNeedRepo="yes"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "vtNeedRepo=$vtNeedRepo" >> $VTLOG
|
||||
|
||||
if [ "$vtNeedRepo" = "yes" ]; then
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/rhel7/ventoy-repo.sh /lib/dracut/hooks/pre-pivot/99-ventoy-repo.sh
|
||||
fi
|
||||
|
||||
|
||||
#iso-scan (currently only for Fedora)
|
||||
if $GREP -q Fedora /etc/os-release; then
|
||||
if /ventoy/tool/vtoydump -a /ventoy/ventoy_os_param; then
|
||||
if ventoy_iso_scan_check; then
|
||||
echo "iso_scan process ..." >> $VTLOG
|
||||
|
||||
vtIsoPath=$(/ventoy/tool/vtoydump -p /ventoy/ventoy_os_param)
|
||||
VTISO_SCAN="iso-scan/filename=$vtIsoPath"
|
||||
echo -n $vtIsoPath > /ventoy/vtoy_iso_scan
|
||||
|
||||
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE $VTISO_SCAN $VTKS $VTOVERLAY $vtInstDD#" -i /lib/dracut-lib.sh
|
||||
if [ "$VTOY_LINUX_REMOUNT" = "01" -a "$vtNeedRepo" != "yes" ]; then
|
||||
ventoy_rw_iso_scan
|
||||
fi
|
||||
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
echo "common process ..." >> $VTLOG
|
||||
if $GREP -q 'root=live' /proc/cmdline; then
|
||||
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE root=live:/dev/ventoy $VTKS $VTOVERLAY $VTISO_SCAN $vtInstDD#" -i /lib/dracut-lib.sh
|
||||
else
|
||||
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE inst.stage2=hd:/dev/ventoy $VTKS $VTOVERLAY $VTISO_SCAN $vtInstDD#" -i /lib/dracut-lib.sh
|
||||
fi
|
||||
|
||||
|
||||
ventoy_set_inotify_script rhel7/ventoy-inotifyd-hook.sh
|
||||
|
||||
#Fedora
|
||||
if $BUSYBOX_PATH/which dmsquash-live-root > /dev/null; then
|
||||
vtPriority=99
|
||||
else
|
||||
vtPriority=01
|
||||
fi
|
||||
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/rhel7/ventoy-inotifyd-start.sh /lib/dracut/hooks/pre-udev/${vtPriority}-ventoy-inotifyd-start.sh
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/rhel7/ventoy-timeout.sh /lib/dracut/hooks/initqueue/timeout/${vtPriority}-ventoy-timeout.sh
|
||||
|
||||
|
||||
if [ -e /sbin/dmsquash-live-root ]; then
|
||||
echo "patch /sbin/dmsquash-live-root ..." >> $VTLOG
|
||||
$SED "1 a $BUSYBOX_PATH/sh $VTOY_PATH/hook/rhel7/ventoy-make-link.sh" -i /sbin/dmsquash-live-root
|
||||
@@ -147,10 +181,6 @@ if $GREP -i -q 'fedora.*coreos' /etc/os-release; then
|
||||
cp -a $VTOY_PATH/hook/rhel7/ventoy-make-link.sh /lib/dracut/hooks/pre-mount/99-ventoy-premount-mklink.sh
|
||||
fi
|
||||
|
||||
if [ -f $VTOY_PATH/autoinstall ]; then
|
||||
cp -a $VTOY_PATH/hook/rhel7/ventoy-autoexp.sh /lib/dracut/hooks/pre-mount/99-ventoy-autoexp.sh
|
||||
fi
|
||||
|
||||
|
||||
#special distro magic
|
||||
$BUSYBOX_PATH/mkdir -p $VTOY_PATH/distmagic
|
||||
|
26
IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-call.sh
Normal file
26
IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-call.sh
Normal file
@@ -0,0 +1,26 @@
|
||||
#!/ventoy/busybox/sh
|
||||
#************************************************************************************
|
||||
# Copyright (c) 2023, 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
|
||||
|
||||
vtHook=$($CAT $VTOY_PATH/inotifyd-hook-script.txt)
|
||||
|
||||
vtdisk=$(get_ventoy_disk_name)
|
||||
vtlog "... $vtdisk already exist ..."
|
||||
$BUSYBOX_PATH/sh $vtHook n /dev "${vtdisk#/dev/}2"
|
@@ -27,5 +27,8 @@ if [ "$vtdisk" = "unknown" ]; then
|
||||
$BUSYBOX_PATH/nohup $VTOY_PATH/tool/inotifyd $vtHook /dev:n 2>&- &
|
||||
else
|
||||
vtlog "... $vtdisk already exist ..."
|
||||
$BUSYBOX_PATH/sh $vtHook n /dev "${vtdisk#/dev/}2"
|
||||
|
||||
#don't call it too early issue 2225
|
||||
#$BUSYBOX_PATH/sh $vtHook n /dev "${vtdisk#/dev/}2"
|
||||
cp -a $VTOY_PATH/hook/rhel7/ventoy-inotifyd-call.sh /lib/dracut/hooks/initqueue/settled/90-ventoy-inotifyd-call.sh
|
||||
fi
|
||||
|
@@ -23,7 +23,18 @@ vtlog "##### $0 $* ..."
|
||||
|
||||
VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
|
||||
|
||||
repodev=$(ls $VTOY_PATH/dev_backup*)
|
||||
echo "inst.repo=hd:/dev/${repodev#*dev_backup_}" >> /sysroot/etc/cmdline
|
||||
if [ -f /ventoy/vtoy_iso_scan ]; then
|
||||
repopath=$(cat /ventoy/vtoy_iso_scan)
|
||||
repodev=$(vtoydump -f /ventoy/ventoy_os_param | awk -F'#' '{print $1}')
|
||||
if echo $repodev | egrep -q "nvme|mmc|nbd"; then
|
||||
vtpart1=${repodev}p1
|
||||
else
|
||||
vtpart1=${repodev}1
|
||||
fi
|
||||
echo "inst.repo=hd:${vtpart1}:${repopath}" >> /sysroot/etc/cmdline
|
||||
else
|
||||
repodev=$(ls $VTOY_PATH/dev_backup*)
|
||||
echo "inst.repo=hd:/dev/${repodev#*dev_backup_}" >> /sysroot/etc/cmdline
|
||||
fi
|
||||
|
||||
PATH=$VTPATH_OLD
|
||||
|
@@ -54,6 +54,21 @@ if [ -z "$dmsetup_path" ]; then
|
||||
ventoy_os_install_dmsetup "/dev/${1:0:-1}"
|
||||
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 $*
|
||||
|
||||
# OK finish
|
||||
|
@@ -60,7 +60,7 @@ fi
|
||||
if [ -e /etc/initrd.functions ] && $GREP -q 'HPIP' /etc/initrd.functions; then
|
||||
echo "HPIP" >> $VTLOG
|
||||
$BUSYBOX_PATH/mkdir /dev
|
||||
$BUSYBOX_PATH/mknod -m 660 /dev/console b 5 1
|
||||
$BUSYBOX_PATH/mknod -m 660 /dev/console c 5 1
|
||||
$SED "/CD_DEVICES=/a $BUSYBOX_PATH/sh $VTOY_PATH/hook/suse/disk_hook.sh" -i /etc/initrd.functions
|
||||
$SED "/CD_DEVICES=/a CD_DEVICES=\"/dev/ventoy \$CD_DEVICES\"" -i /etc/initrd.functions
|
||||
elif [ -f /scripts/udev_setup ]; then
|
||||
|
@@ -209,11 +209,20 @@ ventoy_check_dm_module() {
|
||||
vtlog "modprobe failed, now try to insmod ko..."
|
||||
|
||||
$FIND /lib/modules/ -name "dm-mod.ko*" | while read vtline; do
|
||||
vtlog "insmode $vtline "
|
||||
vtlog "insmod $vtline "
|
||||
$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
|
||||
fi
|
||||
|
||||
|
||||
if $GREP -q 'device-mapper' /proc/devices; then
|
||||
vtlog "device-mapper found in /proc/devices after retry"
|
||||
$BUSYBOX_PATH/true; return
|
||||
@@ -223,6 +232,42 @@ ventoy_check_dm_module() {
|
||||
fi
|
||||
}
|
||||
|
||||
ventoy_need_proc_ibt() {
|
||||
vtKv=$($BUSYBOX_PATH/uname -r)
|
||||
vtMajor=$(echo $vtKv | $AWK -F. '{print $1}')
|
||||
vtMinor=$(echo $vtKv | $AWK -F. '{print $2}')
|
||||
|
||||
#ibt was supported since linux kernel 5.18
|
||||
if [ $vtMajor -lt 5 ]; then
|
||||
$BUSYBOX_PATH/false; return
|
||||
elif [ $vtMajor -eq 5 ]; then
|
||||
if [ $vtMajor -lt 18 ]; then
|
||||
$BUSYBOX_PATH/false; return
|
||||
fi
|
||||
fi
|
||||
|
||||
if $GREP -q ' ibt=off' /proc/cmdline; then
|
||||
$BUSYBOX_PATH/false; return
|
||||
fi
|
||||
|
||||
#hardware CPU doesn't support IBT
|
||||
if $VTOY_PATH/tool/vtoykmod -I; then
|
||||
:
|
||||
else
|
||||
$BUSYBOX_PATH/false; return
|
||||
fi
|
||||
|
||||
#dot.CONFIG not enabled
|
||||
if $GREP -q ' ibt_restore$' /proc/kallsyms; then
|
||||
:
|
||||
else
|
||||
$BUSYBOX_PATH/false; return
|
||||
fi
|
||||
|
||||
$BUSYBOX_PATH/true
|
||||
}
|
||||
|
||||
|
||||
ventoy_need_dm_patch() {
|
||||
if [ "$VTOY_LINUX_REMOUNT" != "01" ]; then
|
||||
if $GREP -q 'VTOY_LINUX_REMOUNT=1' /proc/cmdline; then
|
||||
@@ -256,6 +301,7 @@ ventoy_need_dm_patch() {
|
||||
}
|
||||
|
||||
ventoy_dm_patch() {
|
||||
vtDmPatchDebug=0
|
||||
vtMType=$($BUSYBOX_PATH/uname -m)
|
||||
|
||||
vtlog "######### ventoy_dm_patch ############"
|
||||
@@ -269,6 +315,16 @@ ventoy_dm_patch() {
|
||||
return
|
||||
fi
|
||||
|
||||
if ventoy_need_proc_ibt; then
|
||||
vtlog "need to proc IBT"
|
||||
vtKoName=dm_patch_ibt_64.ko
|
||||
vtIBT='0x8888'
|
||||
else
|
||||
vtlog "NO need to proc IBT"
|
||||
vtIBT='0'
|
||||
fi
|
||||
|
||||
|
||||
if [ -f $VTOY_PATH/tool/$vtKoName ]; then
|
||||
vtlog "/ventoy/tool/$vtKoName exist OK"
|
||||
else
|
||||
@@ -279,8 +335,9 @@ ventoy_dm_patch() {
|
||||
$CAT /proc/kallsyms | $BUSYBOX_PATH/sort > $VTOY_PATH/kallsyms
|
||||
|
||||
if $GREP -m1 -q 'open_table_device.isra' $VTOY_PATH/kallsyms; then
|
||||
vtLine=$($VTOY_PATH/tool/vtoyksym open_table_device.isra $VTOY_PATH/kallsyms)
|
||||
vtlog "get open_table_device.isra address $vtLine"
|
||||
vtISRA=$($GREP -m1 'open_table_device.isra' $VTOY_PATH/kallsyms | $AWK '{print $3}')
|
||||
vtLine=$($VTOY_PATH/tool/vtoyksym $vtISRA $VTOY_PATH/kallsyms)
|
||||
vtlog "get $vtISRA address $vtLine"
|
||||
else
|
||||
vtLine=$($VTOY_PATH/tool/vtoyksym dm_get_table_device $VTOY_PATH/kallsyms)
|
||||
vtlog "get dm_get_table_device address $vtLine"
|
||||
@@ -288,6 +345,23 @@ ventoy_dm_patch() {
|
||||
get_addr=$(echo $vtLine | $AWK '{print $1}')
|
||||
get_size=$(echo $vtLine | $AWK '{print $2}')
|
||||
|
||||
vtLine=$($VTOY_PATH/tool/vtoyksym blkdev_get_by_dev $VTOY_PATH/kallsyms)
|
||||
vtlog "get blkdev_get_by_dev address $vtLine"
|
||||
blkdev_get_addr=$(echo $vtLine | $AWK '{print $1}')
|
||||
|
||||
vtLine=$($VTOY_PATH/tool/vtoyksym blkdev_put $VTOY_PATH/kallsyms)
|
||||
vtlog "get blkdev_put address $vtLine"
|
||||
blkdev_put_addr=$(echo $vtLine | $AWK '{print $1}')
|
||||
|
||||
vtLine=$($VTOY_PATH/tool/vtoyksym bdev_open_by_dev $VTOY_PATH/kallsyms)
|
||||
vtlog "get bdev_open_by_dev address $vtLine"
|
||||
bdev_open_addr=$(echo $vtLine | $AWK '{print $1}')
|
||||
|
||||
vtLine=$($VTOY_PATH/tool/vtoyksym bdev_file_open_by_dev $VTOY_PATH/kallsyms)
|
||||
vtlog "get bdev_file_open_by_dev address $vtLine"
|
||||
bdev_file_open_addr=$(echo $vtLine | $AWK '{print $1}')
|
||||
|
||||
|
||||
if $GREP -m1 -q 'close_table_device.isra' $VTOY_PATH/kallsyms; then
|
||||
vtLine=$($VTOY_PATH/tool/vtoyksym close_table_device.isra $VTOY_PATH/kallsyms)
|
||||
vtlog "get close_table_device.isra address $vtLine"
|
||||
@@ -304,7 +378,19 @@ ventoy_dm_patch() {
|
||||
kprobe_unreg_addr=$($GREP ' unregister_kprobe$' /proc/kallsyms | $AWK '{print $1}')
|
||||
|
||||
if [ "$VTOY_DEBUG_LEVEL" = "01" ]; then
|
||||
vtDmPatchDebug=1
|
||||
fi
|
||||
|
||||
if $GREP -q 'dmpatch_debug' /proc/cmdline; then
|
||||
vtDmPatchDebug=1
|
||||
fi
|
||||
|
||||
|
||||
if [ $vtDmPatchDebug -eq 1 ]; then
|
||||
printk_addr=$($GREP ' printk$' /proc/kallsyms | $AWK '{print $1}')
|
||||
if [ -z "$printk_addr" ]; then
|
||||
printk_addr=$($GREP ' _printk$' /proc/kallsyms | $AWK '{print $1}')
|
||||
fi
|
||||
vtDebug="-v"
|
||||
else
|
||||
printk_addr=0
|
||||
@@ -315,8 +401,9 @@ ventoy_dm_patch() {
|
||||
|
||||
vtlog get_addr=$get_addr get_size=$get_size
|
||||
vtlog put_addr=$put_addr put_size=$put_size
|
||||
vtlog blkdev_get_addr=$blkdev_get_addr blkdev_put_addr=$blkdev_put_addr
|
||||
vtlog kprobe_reg_addr=$kprobe_reg_addr kprobe_unreg_addr=$kprobe_unreg_addr
|
||||
vtlog ro_addr=$ro_addr rw_addr=$rw_addr printk_addr=$printk_addr
|
||||
vtlog ro_addr=$ro_addr rw_addr=$rw_addr printk_addr=$printk_addr bdev_open_addr=$bdev_open_addr bdev_file_open_addr=$bdev_file_open_addr
|
||||
|
||||
if [ "$get_addr" = "0" -o "$put_addr" = "0" ]; then
|
||||
vtlog "Invalid symbol address"
|
||||
@@ -329,20 +416,26 @@ ventoy_dm_patch() {
|
||||
|
||||
|
||||
vtKv=$($BUSYBOX_PATH/uname -r)
|
||||
vtKVMajor=$(echo $vtKv | $AWK -F. '{print $1}')
|
||||
vtKVMinor=$(echo $vtKv | $AWK -F. '{print $2}')
|
||||
vtKVSubMinor=$(echo $vtKv | $AWK -F. '{print $3}')
|
||||
|
||||
if [ ! -d /lib/modules/$vtKv ]; then
|
||||
vtlog "No modules directory found"
|
||||
return
|
||||
elif [ -d /lib/modules/$vtKv/kernel/fs ]; then
|
||||
vtModPath=$($FIND /lib/modules/$vtKv/kernel/fs/ -name "*.ko*" | $HEAD -n1)
|
||||
else
|
||||
elif [ -d /lib/modules/$vtKv/kernel ]; then
|
||||
vtModPath=$($FIND /lib/modules/$vtKv/kernel/ -name "xfs.ko*" | $HEAD -n1)
|
||||
elif [ -d /lib/modules/$vtKv/initrd ]; then
|
||||
vtModPath=$($FIND /lib/modules/$vtKv/initrd/ -name "xfs.ko*" | $HEAD -n1)
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if [ -z "$vtModPath" ]; then
|
||||
vtModPath=$($FIND /lib/modules/$vtKv/kernel/ -name "*.ko*" | $HEAD -n1)
|
||||
vtModPath=$($FIND /lib/modules/$vtKv/ -name "*.ko*" | $HEAD -n1)
|
||||
fi
|
||||
|
||||
|
||||
vtModName=$($BUSYBOX_PATH/basename $vtModPath)
|
||||
|
||||
vtlog "template module is $vtModPath $vtModName"
|
||||
@@ -356,24 +449,37 @@ ventoy_dm_patch() {
|
||||
$BUSYBOX_PATH/xzcat $vtModPath > $VTOY_PATH/$vtModName
|
||||
elif echo $vtModPath | $GREP -q "[.]ko[.]gz$"; then
|
||||
$BUSYBOX_PATH/zcat $vtModPath > $VTOY_PATH/$vtModName
|
||||
elif echo $vtModPath | $GREP -q "[.]ko[.]zst$"; then
|
||||
$VTOY_PATH/tool/zstdcat $vtModPath > $VTOY_PATH/$vtModName
|
||||
else
|
||||
vtlog "unsupport module type"
|
||||
return
|
||||
fi
|
||||
|
||||
|
||||
|
||||
#step1: modify vermagic/mod crc/relocation
|
||||
vtlog "$VTOY_PATH/tool/vtoykmod -u $VTOY_PATH/tool/$vtKoName $VTOY_PATH/$vtModName $vtDebug"
|
||||
$VTOY_PATH/tool/vtoykmod -u $VTOY_PATH/tool/$vtKoName $VTOY_PATH/$vtModName $vtDebug
|
||||
vtlog "$VTOY_PATH/tool/vtoykmod -u $vtKVMajor $vtKVMinor $VTOY_PATH/tool/$vtKoName $VTOY_PATH/$vtModName $vtDebug"
|
||||
$VTOY_PATH/tool/vtoykmod -u $vtKVMajor $vtKVMinor $VTOY_PATH/tool/$vtKoName $VTOY_PATH/$vtModName $vtDebug >>$VTLOG 2>&1
|
||||
|
||||
#step2: fill parameters
|
||||
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 $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 $vtDebug
|
||||
|
||||
vtPrams="$VTOY_PATH/tool/$vtKoName $vtPgsize 0x$printk_addr 0x$ro_addr 0x$rw_addr $get_addr $get_size $put_addr $put_size 0x$kprobe_reg_addr 0x$kprobe_unreg_addr $vtKVMajor $vtIBT $vtKVMinor $blkdev_get_addr $blkdev_put_addr $vtKVSubMinor $bdev_open_addr $bdev_file_open_addr $vtDebug"
|
||||
|
||||
|
||||
vtlog "$VTOY_PATH/tool/vtoykmod -f $vtPrams"
|
||||
$VTOY_PATH/tool/vtoykmod -f $vtPrams >>$VTLOG 2>&1
|
||||
|
||||
$BUSYBOX_PATH/insmod $VTOY_PATH/tool/$vtKoName
|
||||
|
||||
vtlog "insmod $VTOY_PATH/tool/$vtKoName"
|
||||
$BUSYBOX_PATH/insmod $VTOY_PATH/tool/$vtKoName >>$VTLOG 2>&1
|
||||
|
||||
if $GREP -q 'dm_patch' /proc/modules; then
|
||||
vtlog "dm_patch module OK"
|
||||
echo "done" > $VTOY_PATH/dm_patch_done
|
||||
else
|
||||
vtlog "dm_patch module FAILED"
|
||||
fi
|
||||
|
||||
}
|
||||
|
@@ -121,3 +121,53 @@ ventoy_check_mount() {
|
||||
$BUSYBOX_PATH/mount $1 $2
|
||||
fi
|
||||
}
|
||||
|
||||
ventoy_has_exfat_ko() {
|
||||
vtExfat=''
|
||||
vtKerVer=$($BUSYBOX_PATH/uname -r)
|
||||
if [ -d /lib/modules/$vtKerVer/kernel/fs/exfat ]; then
|
||||
vtExfat=$(ls /lib/modules/$vtKerVer/kernel/fs/exfat/)
|
||||
fi
|
||||
[ -n "$vtExfat" ]
|
||||
}
|
||||
|
||||
ventoy_is_exfat_part() {
|
||||
$VTOY_PATH/tool/vtoydump -s /ventoy/ventoy_os_param | $GREP -q exfat
|
||||
}
|
||||
|
||||
ventoy_iso_scan_path() {
|
||||
if [ -f /sbin/iso-scan ]; then
|
||||
echo -n '/sbin/iso-scan'
|
||||
elif [ -f /bin/iso-scan ]; then
|
||||
echo -n '/bin/iso-scan'
|
||||
else
|
||||
echo -n ''
|
||||
fi
|
||||
}
|
||||
|
||||
ventoy_has_iso_scan() {
|
||||
vtScanPath=$(ventoy_iso_scan_path)
|
||||
[ -n "$vtScanPath" ]
|
||||
}
|
||||
|
||||
ventoy_rw_iso_scan() {
|
||||
vtScanPath=$(ventoy_iso_scan_path)
|
||||
if [ -n "$vtScanPath" ]; then
|
||||
if $GREP -q 'mount.* ro .*isoscan' $vtScanPath; then
|
||||
$SED -i 's/\(mount.*-o.*\) ro /\1 rw /' $vtScanPath
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
ventoy_iso_scan_check() {
|
||||
vtCheckOk=0
|
||||
if ventoy_is_exfat_part; then
|
||||
if ventoy_has_exfat_ko; then
|
||||
if ventoy_has_iso_scan; then
|
||||
vtCheckOk=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
[ $vtCheckOk -eq 1 ]
|
||||
}
|
||||
|
@@ -72,27 +72,29 @@ ventoy_unpack_initramfs() {
|
||||
|
||||
for vtx in '1F8B zcat' '1F9E zcat' '425A bzcat' '5D00 lzcat' 'FD37 xzcat' '894C lzopcat' '0221 lz4cat' '28B5 zstdcat' '3037 cat' '4C5A lunzip -c'; do
|
||||
if [ "${vtx:0:4}" = "${vtmagic:0:4}" ]; then
|
||||
echo "vtx=$vtx" >> $VTLOG
|
||||
if [ $vtskip -eq 0 ]; then
|
||||
if [ "${vtx:5}" = "xzcat" ]; then
|
||||
rm -f $VTOY_PATH/xzlog
|
||||
${vtx:5} $vtfile 2> $VTOY_PATH/xzlog | (cpio -idmu 2>>$VTLOG; cat > $vttmp)
|
||||
if grep -q 'corrupted data' $VTOY_PATH/xzlog; then
|
||||
echo 'xzcat failed, now try xzminidec...' >> $VTLOG
|
||||
rm -f $VTOY_PATH/xzlog
|
||||
cat $vtfile | xzminidec 2> $VTOY_PATH/xzlog | (cpio -idmu 2>>$VTLOG; cat > $vttmp)
|
||||
echo "vtx=$vtx" >> $VTLOG
|
||||
if [ $vtskip -ne 0 ]; then
|
||||
dd if=$vtfile skip=$vtskip iflag=skip_bytes status=none > ${vtfile}.skip
|
||||
rm -f $vtfile
|
||||
mv ${vtfile}.skip $vtfile
|
||||
fi
|
||||
|
||||
if grep -q 'limit' $VTOY_PATH/xzlog; then
|
||||
echo 'xzminidec failed, now try xzcat_musl ...' >> $VTLOG
|
||||
xzcat_musl $vtfile | (cpio -idmu 2>>$VTLOG; cat > $vttmp)
|
||||
fi
|
||||
if [ "${vtx:5}" = "xzcat" ]; then
|
||||
rm -f $VTOY_PATH/xzlog
|
||||
${vtx:5} $vtfile 2> $VTOY_PATH/xzlog | (cpio -idmu 2>>$VTLOG; cat > $vttmp)
|
||||
if grep -q 'corrupted data' $VTOY_PATH/xzlog; then
|
||||
echo 'xzcat failed, now try xzminidec...' >> $VTLOG
|
||||
rm -f $VTOY_PATH/xzlog
|
||||
cat $vtfile | xzminidec 2> $VTOY_PATH/xzlog | (cpio -idmu 2>>$VTLOG; cat > $vttmp)
|
||||
|
||||
if grep -q 'limit' $VTOY_PATH/xzlog; then
|
||||
echo 'xzminidec failed, now try xzcat_musl ...' >> $VTLOG
|
||||
xzcat_musl $vtfile | (cpio -idmu 2>>$VTLOG; cat > $vttmp)
|
||||
fi
|
||||
else
|
||||
${vtx:5} $vtfile | (cpio -idmu 2>>$VTLOG; cat > $vttmp)
|
||||
fi
|
||||
else
|
||||
dd if=$vtfile skip=$vtskip iflag=skip_bytes status=none | ${vtx:5} | (cpio -idmu 2>>$VTLOG; cat > $vttmp)
|
||||
fi
|
||||
${vtx:5} $vtfile | (cpio -idmu 2>>$VTLOG; cat > $vttmp)
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
@@ -112,6 +114,28 @@ ventoy_unpack_initrd() {
|
||||
done
|
||||
}
|
||||
|
||||
vtfile_head_zero() {
|
||||
local vsize
|
||||
local voffset
|
||||
local vfile
|
||||
local vzero
|
||||
local vdump
|
||||
|
||||
voffset=0
|
||||
vfile=$1
|
||||
vsize=$(stat -c '%s' ${vfile})
|
||||
vzero=$(hexdump -n 512 -e '512/1 "%02X"' $vfile)
|
||||
|
||||
while [ $voffset -lt $vsize ]; do
|
||||
vdump=$(hexdump -s $voffset -n 512 -e '512/1 "%02X"' $vfile)
|
||||
if [ "$vdump" != "$vzero" ]; then
|
||||
echo $voffset
|
||||
return
|
||||
fi
|
||||
voffset=$($BUSYBOX_PATH/expr $voffset + 512)
|
||||
done
|
||||
echo 0
|
||||
}
|
||||
|
||||
# This export is for busybox cpio command
|
||||
export EXTRACT_UNSAFE_SYMLINKS=1
|
||||
@@ -131,13 +155,22 @@ for vtfile in $(ls /initrd*); do
|
||||
#only for cpio,cpio,...,initrd sequence, initrd,cpio or initrd,initrd sequence is not supported
|
||||
while [ -e ${vtfile}_tmp ] && [ $(stat -c '%s' ${vtfile}_tmp) -gt 512 ]; do
|
||||
mv ${vtfile}_tmp $vtfile
|
||||
|
||||
vtdump=$(hexdump -n 512 -e '512/1 "%02X"' $vtfile)
|
||||
vtmagic=$(echo $vtdump | sed 's/^\(00\)*//')
|
||||
let vtoffset="(${#vtdump}-${#vtmagic})/2"
|
||||
|
||||
if [ -z "$vtmagic" ]; then
|
||||
echo "terminate with all zero data file" >> $VTLOG
|
||||
break
|
||||
vtHeadZero=$(vtfile_head_zero $vtfile)
|
||||
if [ $vtHeadZero -gt 0 ]; then
|
||||
vtdump=$(hexdump -s $vtHeadZero -n 512 -e '512/1 "%02X"' $vtfile)
|
||||
vtmagic=$(echo $vtdump | sed 's/^\(00\)*//')
|
||||
let vtoffset="(${#vtdump}-${#vtmagic})/2+$vtHeadZero"
|
||||
echo "skip head $vtHeadZero zeros with magic ${vtmagic:0:4}" >> $VTLOG
|
||||
else
|
||||
echo "terminate with all zero data file" >> $VTLOG
|
||||
break
|
||||
fi
|
||||
fi
|
||||
|
||||
ventoy_unpack_initramfs $vtfile $vtoffset ${vtmagic:0:4} ${vtfile}_tmp
|
||||
|
@@ -34,9 +34,12 @@ else
|
||||
vtBit=32
|
||||
fi
|
||||
|
||||
xz -d $VTOY_PATH/vtloopex/dm-mod/$vtKerVer/$vtBit/dm-mod.ko.xz
|
||||
insmod $VTOY_PATH/vtloopex/dm-mod/$vtKerVer/$vtBit/dm-mod.ko
|
||||
|
||||
if [ -f $VTOY_PATH/vtloopex/dm-mod/$vtKerVer/$vtBit/dm-mod.ko.xz ]; then
|
||||
xz -d $VTOY_PATH/vtloopex/dm-mod/$vtKerVer/$vtBit/dm-mod.ko.xz
|
||||
insmod $VTOY_PATH/vtloopex/dm-mod/$vtKerVer/$vtBit/dm-mod.ko
|
||||
elif [ -f $VTOY_PATH/modules/dm-mod.ko ]; then
|
||||
insmod $VTOY_PATH/modules/dm-mod.ko
|
||||
fi
|
||||
|
||||
wait_for_usb_disk_ready
|
||||
|
||||
|
46
IMG/cpio/ventoy/loop/fwts/ventoy-disk.sh
Normal file
46
IMG/cpio/ventoy/loop/fwts/ventoy-disk.sh
Normal file
@@ -0,0 +1,46 @@
|
||||
#!/ventoy/busybox/sh
|
||||
#************************************************************************************
|
||||
# Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#************************************************************************************
|
||||
|
||||
. /ventoy/hook/ventoy-hook-lib.sh
|
||||
|
||||
if is_ventoy_hook_finished; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
vtlog "####### $0 $* ########"
|
||||
|
||||
VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
|
||||
|
||||
wait_for_usb_disk_ready
|
||||
|
||||
vtdiskname=$(get_ventoy_disk_name)
|
||||
if [ "$vtdiskname" = "unknown" ]; then
|
||||
vtlog "ventoy disk not found"
|
||||
PATH=$VTPATH_OLD
|
||||
exit 0
|
||||
fi
|
||||
|
||||
ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2" "noreplace"
|
||||
|
||||
ventoy_create_dev_ventoy_part
|
||||
mdev -s
|
||||
|
||||
PATH=$VTPATH_OLD
|
||||
|
||||
set_ventoy_hook_finish
|
23
IMG/cpio/ventoy/loop/fwts/ventoy-hook.sh
Normal file
23
IMG/cpio/ventoy/loop/fwts/ventoy-hook.sh
Normal file
@@ -0,0 +1,23 @@
|
||||
#!/ventoy/busybox/sh
|
||||
#************************************************************************************
|
||||
# Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#************************************************************************************
|
||||
|
||||
. $VTOY_PATH/hook/ventoy-os-lib.sh
|
||||
|
||||
$SED "/^mountroot$/i\\$BUSYBOX_PATH/sh $VTOY_PATH/loop/fwts/ventoy-disk.sh" -i /init
|
||||
#$SED "/^mountroot$/i\\export ROOT=/dev/mapper/ventoy" -i /init
|
@@ -64,9 +64,9 @@ ventoy_get_os_type() {
|
||||
elif $GREP -q '[Uu]buntu' /proc/version; then
|
||||
echo 'debian'; return
|
||||
|
||||
# Deepin : do the same process with debian
|
||||
# Deepin :
|
||||
elif $GREP -q '[Dd]eepin' /proc/version; then
|
||||
echo 'debian'; return
|
||||
echo 'deepin'; return
|
||||
|
||||
# rhel5/CentOS5 and all other distributions based on them
|
||||
elif $GREP -q 'el5' /proc/version; then
|
||||
@@ -169,9 +169,9 @@ ventoy_get_os_type() {
|
||||
elif $GREP -q 'fuyu' /etc/os-release; then
|
||||
echo 'openEuler'; return
|
||||
elif $GREP -q 'deepin' /etc/os-release; then
|
||||
echo 'debian'; return
|
||||
echo 'deepin'; return
|
||||
elif $GREP -q 'chinauos' /etc/os-release; then
|
||||
echo 'debian'; return
|
||||
echo 'deepin'; return
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -229,6 +229,10 @@ ventoy_get_os_type() {
|
||||
echo 'android'; return
|
||||
fi
|
||||
|
||||
if $GREP -q 'android.google' /proc/version; then
|
||||
echo 'android'; return
|
||||
fi
|
||||
|
||||
if $GREP -q 'adelielinux' /proc/version; then
|
||||
echo 'adelie'; return
|
||||
fi
|
||||
@@ -369,6 +373,23 @@ ventoy_get_os_type() {
|
||||
fi
|
||||
fi
|
||||
|
||||
if $GREP -q 'chimera' /proc/version; then
|
||||
echo 'chimera'; return
|
||||
fi
|
||||
|
||||
|
||||
if $GREP -q '4.19.' /proc/version; then
|
||||
if [ -d /lib/dracut/hooks ]; then
|
||||
echo 'openEuler'; return
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -f /etc/tinyramfs/config ]; then
|
||||
if $GREP -q 'EWE_ISO' /etc/tinyramfs/config; then
|
||||
echo "ewe"; return
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
echo "default"
|
||||
}
|
||||
|
Binary file not shown.
BIN
IMG/cpio_x86/ventoy/tool/dm_patch_ibt_64.ko
Normal file
BIN
IMG/cpio_x86/ventoy/tool/dm_patch_ibt_64.ko
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -4,8 +4,9 @@ print_usage() {
|
||||
echo 'Usage: ExtendPersistentImg.sh file size'
|
||||
echo ' file persistent dat file'
|
||||
echo ' size extend size in MB'
|
||||
echo 'Example:'
|
||||
echo ' sh ExtendPersistentImg.sh ubuntu.dat 2048'
|
||||
echo 'Examples:'
|
||||
echo ' sh ExtendPersistentImg.sh ubuntu.dat 2048 - This command would extend ubuntu.dat by 2048MB (2GB)'
|
||||
echo ' sh ExtendPersistentImg.sh ubuntu.dat -2048 - This command reduces ubuntu.dat by 2048MB (-2GB)'
|
||||
echo ''
|
||||
}
|
||||
|
||||
@@ -19,6 +20,11 @@ if [ -z "$2" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
uid=$(id -u)
|
||||
if [ $uid -ne 0 ]; then
|
||||
print_err "Please use sudo or run the script as root."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "__vbash__" ]; then
|
||||
shift
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -196,7 +196,7 @@ fi
|
||||
|
||||
#change current directory to Ventoy disk
|
||||
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=$!
|
||||
sleep 1
|
||||
|
||||
|
@@ -3,7 +3,7 @@
|
||||
VTOY_PATH=$PWD/..
|
||||
|
||||
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/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
|
||||
|
||||
date +"%Y/%m/%d %H:%M:%S"
|
||||
echo downloading envrionment finish...
|
||||
echo downloading environment finish...
|
||||
|
||||
sh all_in_one.sh CI
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,9 +1,8 @@
|
||||
|
||||
unset vtchkdef
|
||||
vt_vtoychksum_exist "${vtoy_iso_part}" "${VTOY_CHKSUM_FILE_PATH}"
|
||||
set vtchksumfile=$?
|
||||
vt_vtoychksum_exist "${VTOY_CHKSUM_FILE_PATH}"
|
||||
|
||||
if [ -f "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.md5" -o $vtchksumfile -eq 0 ]; then
|
||||
if [ "$VT_EXIST_MD5" = "1" ]; then
|
||||
if [ -z "$vtchkdef" ]; then
|
||||
set default=0
|
||||
set vtchkdef=1
|
||||
@@ -24,7 +23,7 @@ else
|
||||
}
|
||||
fi
|
||||
|
||||
if [ -f "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha1" -o $vtchksumfile -eq 0 ]; then
|
||||
if [ "$VT_EXIST_SHA1" = "1" ]; then
|
||||
if [ -z "$vtchkdef" ]; then
|
||||
set default=1
|
||||
set vtchkdef=1
|
||||
@@ -47,7 +46,7 @@ fi
|
||||
|
||||
|
||||
|
||||
if [ -f "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha256" -o $vtchksumfile -eq 0 ]; then
|
||||
if [ "$VT_EXIST_SHA256" = "1" ]; then
|
||||
if [ -z "$vtchkdef" ]; then
|
||||
set default=2
|
||||
set vtchkdef=1
|
||||
@@ -70,7 +69,7 @@ fi
|
||||
|
||||
|
||||
|
||||
if [ -f "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha512" -o $vtchksumfile -eq 0 ]; then
|
||||
if [ "$VT_EXIST_SHA512" = "1" ]; then
|
||||
if [ -z "$vtchkdef" ]; then
|
||||
set default=3
|
||||
set vtchkdef=1
|
||||
|
@@ -83,10 +83,12 @@ submenu "$VTLANG_RESOLUTION_CFG" --class=debug_resolution --class=F5tool {
|
||||
|
||||
submenu "$VTLANG_SCREEN_MODE" --class=debug_screen_mode --class=F5tool {
|
||||
menuentry "$VTLANG_SCREEN_TEXT_MODE" --class=debug_text_mode --class=debug_screen_mode --class=F5tool {
|
||||
vt_push_menu_lang en_US
|
||||
terminal_output console
|
||||
}
|
||||
menuentry "$VTLANG_SCREEN_GUI_MODE" --class=debug_gui_mode --class=debug_screen_mode --class=F5tool {
|
||||
terminal_output gfxterm
|
||||
vt_pop_menu_lang
|
||||
}
|
||||
menuentry "$VTLANG_RETURN_PREVIOUS" --class=vtoyret VTOY_RET {
|
||||
echo "Return ..."
|
||||
|
15
INSTALL/grub/distro/fwts.cfg
Normal file
15
INSTALL/grub/distro/fwts.cfg
Normal file
@@ -0,0 +1,15 @@
|
||||
set label="writable"
|
||||
|
||||
menuentry 'Firmware Test Suite' --class ubuntu --class gnu-linux --class gnu --class os {
|
||||
set root='vtimghd,4'
|
||||
linux /boot/vmlinuz root=LABEL=$label ro console=tty1 console=ttyS0 quiet
|
||||
initrd /boot/initrd.img
|
||||
}
|
||||
|
||||
menuentry 'Firmware Test Suite (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
|
||||
set root='vtimghd,4'
|
||||
echo 'Loading Linux ...'
|
||||
linux /boot/vmlinuz root=LABEL=$label ro recovery nomodeset
|
||||
echo 'Loading initial ramdisk ...'
|
||||
initrd /boot/initrd.img
|
||||
}
|
@@ -119,7 +119,7 @@ function ventoy_show_help {
|
||||
}
|
||||
|
||||
function ventoy_load_menu_lang_file {
|
||||
vt_load_file_to_mem "auto" $vtoy_efi_part/grub/menu.tar.gz vtoy_menu_lang_mem
|
||||
vt_load_file_to_mem "auto" $prefix/menu.tar.gz vtoy_menu_lang_mem
|
||||
loopback vt_menu_tarfs mem:${vtoy_menu_lang_mem_addr}:size:${vtoy_menu_lang_mem_size}
|
||||
}
|
||||
|
||||
@@ -401,20 +401,23 @@ function distro_specify_initrd_file_phase2 {
|
||||
vt_linux_specify_initrd_file /boot/full.cz
|
||||
elif [ -f (loop)/images/pxeboot/initrd.img ]; then
|
||||
vt_linux_specify_initrd_file /images/pxeboot/initrd.img
|
||||
|
||||
elif [ -f (loop)/live/initrd ]; then
|
||||
vt_linux_specify_initrd_file /live/initrd
|
||||
elif [ -f (loop)/initramfs-linux.img ]; then
|
||||
vt_linux_specify_initrd_file /initramfs-linux.img
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
function ventoy_get_ghostbsd_ver {
|
||||
# fallback to parse version from elf /boot/kernel/kernel
|
||||
set vt_freebsd_ver=xx
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
@@ -423,12 +426,8 @@ function ventoy_get_freenas_ver {
|
||||
|
||||
if [ -e (loop)/FreeNAS-MANIFEST ]; then
|
||||
vt_parse_freenas_ver (loop)/FreeNAS-MANIFEST vt_freenas_ver
|
||||
if regexp "^13\.[0-9]" "$vt_freenas_ver"; then
|
||||
set vt_freebsd_ver=13.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
|
||||
if regexp --set 1:vtNasVer "^(14|13|12|11)\.[0-9]" "$vt_freenas_ver"; then
|
||||
set vt_freebsd_ver=${vtNasVer}.x
|
||||
fi
|
||||
fi
|
||||
}
|
||||
@@ -438,12 +437,8 @@ function ventoy_get_truenas_ver {
|
||||
|
||||
if [ -e (loop)/TrueNAS-MANIFEST ]; then
|
||||
vt_parse_freenas_ver (loop)/TrueNAS-MANIFEST vt_truenas_ver
|
||||
if regexp "^13\.[0-9]" "$vt_truenas_ver"; then
|
||||
set vt_freebsd_ver=13.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
|
||||
if regexp --set 1:vtTNasVer "^(14|13|12|11)\.[0-9]" "$vt_truenas_ver"; then
|
||||
set vt_freebsd_ver=${vtTNasVer}.x
|
||||
fi
|
||||
fi
|
||||
}
|
||||
@@ -475,49 +470,25 @@ function ventoy_freebsd_proc {
|
||||
ventoy_get_truenas_ver "$1" "${chosen_path}"
|
||||
elif vt_strstr "$vt_volume_id" "FURYBSD"; then
|
||||
ventoy_get_furybsd_ver "$1" "${chosen_path}"
|
||||
elif regexp "^13_[0-9]" "$vt_volume_id"; then
|
||||
set vt_freebsd_ver=13.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 regexp --set 1:vtBsdVerNum "^(14|13|12|11|10|9)_[0-9]" "$vt_volume_id"; then
|
||||
set vt_freebsd_ver=${vtBsdVerNum}.x
|
||||
elif [ -d (loop)/usr/midnightbsd-dist ]; then
|
||||
ventoy_get_midnightbsd_ver "$1" "${chosen_path}"
|
||||
set vtFreeBsdDistro=MidnightBSD
|
||||
elif [ -e (loop)/bin/freebsd-version ]; then
|
||||
vt_unix_parse_freebsd_ver (loop)/bin/freebsd-version vt_userland_ver
|
||||
if regexp "\"13\.[0-9]-" "$vt_userland_ver"; then
|
||||
set vt_freebsd_ver=13.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
|
||||
vt_unix_parse_freebsd_ver (loop)/bin/freebsd-version vt_userland_ver
|
||||
if regexp --set 1:vtBsdVerNum "\"(14|13|12|11|10|9)\.[0-9]-" "$vt_userland_ver"; then
|
||||
set vt_freebsd_ver=${vtBsdVerNum}.x
|
||||
fi
|
||||
elif [ -e (loop)/README.TXT ]; then
|
||||
vt_1st_line (loop)/README.TXT vt_freebsd_line1
|
||||
if regexp "FreeBSD 13\.[0-9]-" "$vt_freebsd_line1"; then
|
||||
set vt_freebsd_ver=13.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
|
||||
if regexp --set 1:vtBsdVerNum "FreeBSD (14|13|12|11|10|9)\.[0-9]-" "$vt_freebsd_line1"; then
|
||||
set vt_freebsd_ver=${vtBsdVerNum}.x
|
||||
fi
|
||||
elif vt_strstr "${chosen_path}" "MidnightBSD"; then
|
||||
set vt_freebsd_ver=9.x
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if [ -e (loop)/usr/freebsd-dist/cloninst.sh ]; then
|
||||
set vtFreeBsdDistro=ClonOS
|
||||
@@ -541,7 +512,7 @@ function ventoy_freebsd_proc {
|
||||
fi
|
||||
|
||||
if [ "$vt_freebsd_ver" = "xx" ]; then
|
||||
set vt_freebsd_ver=13.x
|
||||
set vt_freebsd_ver=14.x
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -1442,6 +1413,8 @@ function ventoy_iso_busybox_ver {
|
||||
set ventoy_busybox_ver=64
|
||||
elif vt_str_begin "$vt_volume_id" "LDiagBootable"; then
|
||||
set ventoy_busybox_ver=64
|
||||
elif vt_str_begin "$vt_volume_id" "KAOS_"; then
|
||||
set ventoy_busybox_ver=64
|
||||
|
||||
fi
|
||||
fi
|
||||
@@ -1926,6 +1899,20 @@ function ventoy_img_openelec {
|
||||
loopback vtloopex $vtoy_efi_part/ventoy/vtloopex.cpio
|
||||
vt_img_extra_initrd_append (vtloopex)/$elec_ver/vtloopex.tar.xz
|
||||
|
||||
if [ "$elec_ver" = "LibreELEC" ]; then
|
||||
if [ -f (vtimghd,1)/system ]; then
|
||||
loopback elecsfs (vtimghd,1)/system
|
||||
vt_get_lib_module_ver (elecsfs) /usr/lib/kernel-overlays/base/lib/modules/ vt_module_ver
|
||||
if [ -n "$vt_module_ver" ]; then
|
||||
for mod in "kernel/drivers/md/dm-mod.ko"; do
|
||||
if [ -e (elecsfs)/usr/lib/kernel-overlays/base/lib/modules/$vt_module_ver/$mod ]; then
|
||||
vt_img_extra_initrd_append (elecsfs)/usr/lib/kernel-overlays/base/lib/modules/$vt_module_ver/$mod
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
ventoy_debug_pause
|
||||
|
||||
#boot image file
|
||||
@@ -1938,6 +1925,7 @@ function ventoy_img_openelec {
|
||||
vt_img_unhook_root
|
||||
vt_unset_boot_opt
|
||||
loopback -d vtloopex
|
||||
loopback -d elecsfs
|
||||
}
|
||||
|
||||
|
||||
@@ -2216,6 +2204,23 @@ function ventoy_img_cloudready {
|
||||
unset linuxpartB
|
||||
}
|
||||
|
||||
|
||||
function ventoy_img_fwts {
|
||||
vt_load_cpio $vtoy_path "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver"
|
||||
vt_trailer_cpio ${vtoy_iso_part} "${vt_chosen_path}" noinit
|
||||
|
||||
ventoy_debug_pause
|
||||
|
||||
#boot image file
|
||||
vt_set_boot_opt rdinit=/vtoy/vtoy ventoyos=fwts
|
||||
vt_img_hook_root
|
||||
|
||||
configfile $prefix/distro/fwts.cfg
|
||||
|
||||
vt_img_unhook_root
|
||||
vt_unset_boot_opt
|
||||
}
|
||||
|
||||
function ventoy_img_memtest86 {
|
||||
chainloader (vtimghd,1)/efi/boot/BOOTX64.efi
|
||||
boot
|
||||
@@ -2281,6 +2286,14 @@ function img_common_menuentry {
|
||||
vt_get_fs_label (vtimghd,2) vtImgHd2Label
|
||||
fi
|
||||
|
||||
if [ -z "$vtImgHd1Label" ]; then
|
||||
if [ -d (vtimghd,2)/efi ]; then
|
||||
vt_get_fs_label (vtimghd,3) vtImgHd3Label
|
||||
elif [ -d (vtimghd,12)/efi ]; then
|
||||
vt_get_fs_label (vtimghd,3) vtImgHd3Label
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -e (vtimghd,1)/etc/hostname ]; then
|
||||
vt_1st_line (vtimghd,1)/etc/hostname vtImgHostname
|
||||
fi
|
||||
@@ -2298,6 +2311,8 @@ function img_common_menuentry {
|
||||
elif [ -f (vtimghd,3)/etc/chrome_dev.conf ]; then
|
||||
ventoy_img_cloudready
|
||||
fi
|
||||
elif vt_str_begin "$vtImgHd3Label" "fwts-result"; then
|
||||
ventoy_img_fwts
|
||||
elif vt_str_begin "$vtImgHd1Label" "LAKKA"; then
|
||||
ventoy_img_openelec lakka
|
||||
elif vt_str_begin "$vtImgHd1Label" "LIBREELEC"; then
|
||||
@@ -2386,7 +2401,7 @@ function mimg_common_menuentry {
|
||||
#############################################################
|
||||
#############################################################
|
||||
|
||||
set VENTOY_VERSION="1.0.87"
|
||||
set VENTOY_VERSION="1.1.00"
|
||||
|
||||
#ACPI not compatible with Window7/8, so disable by default
|
||||
set VTOY_PARAM_NO_ACPI=1
|
||||
|
19
INSTALL/grub/help/cs_CZ.txt
Normal file
19
INSTALL/grub/help/cs_CZ.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
L - Výběr jazyka
|
||||
F1 - Zobrazení nápovědy
|
||||
F2 - Procházet spouštět soubory na disku
|
||||
F3 - Přepínat mezi zobrazením stromu a seznamu
|
||||
F4 - Spustit Windows/Linux na disku
|
||||
F5 - Nástroje
|
||||
F6 - Nahrát vlastní Grub2 nabídku
|
||||
F7 - Přepínat mezi grafickým a textovým režimem
|
||||
|
||||
m/Ctrl+m - Kontrolní součky obrazů (md5/sha1/sha256/sha512)
|
||||
d/Ctrl+d - Memdisk režim (pouze pro malé WinPE/LiveCD ISO/IMG)
|
||||
w/Ctrl+w - WIMBOOT režim (pouze pro Windows/WinPE ISO soubory)
|
||||
r/Ctrl+r - Grub2 režim (pouze pro některé linuxové distribuce)
|
||||
i/Ctrl+i - Režim kompatibility (pouze pro ladění)
|
||||
u/Ctrl+u - Nahrát ISO EFI ovladač (pouze pro ladění, oficiálně nejde použít)
|
||||
|
||||
|
||||
|
||||
Stiskněte ESC pro návrat ......
|
19
INSTALL/grub/help/el_GR.txt
Normal file
19
INSTALL/grub/help/el_GR.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
L - Επιλογή Γλώσσας
|
||||
F1 - Εμφάνιση πληροφοριών βοήθειας
|
||||
F2 - Περιήγηση και εκκίνηση αρχείων στον τοπικό δίσκο
|
||||
F3 - Εναλλαγή λειτουργίας μενού μεταξύ Προβολής Δένδρου <-> Προβολή Λίστας
|
||||
F4 - Εκκίνηση Windows/Linux στον τοπικό δίσκο
|
||||
F5 - Εργαλεία
|
||||
F6 - Φόρτωση προσαρμοσμένου μενού Grub2
|
||||
F7 - Εναλλαγή μεταξύ Λειτουργίας GUI <-> Λειτουργίας ΚΕΙΜΕΝΟΥ
|
||||
|
||||
m/Ctrl+m - Αρχεία εικόνας Checksum (md5/sha1/sha256/sha512)
|
||||
d/Ctrl+d - Λειτουργία Memdisk (Μόνο για μικρά WinPE/LiveCD ISO/IMG)
|
||||
w/Ctrl+w - Λειτουργία WIMBOOT (Μόνο για αρχεία ISO Windows/WinPE)
|
||||
r/Ctrl+r - Λειτουργία Grub2 (Μόνο για ορισμένες διανομές Linux)
|
||||
i/Ctrl+i - Λειτουργία Συμβατότητας (Μόνο για εντοπισμό σφαλμάτων - debugging)
|
||||
u/Ctrl+u - Φόρτωση προγράμματος οδήγησης ISO EFI (Μόνο για εντοπισμό σφαλμάτων - debugging, δεν μπορεί να χρησιμοποιηθεί επίσημα)
|
||||
|
||||
|
||||
|
||||
Πατήστε ESC για επιστροφή ......
|
@@ -1,19 +1,19 @@
|
||||
L - Nyelv kiválasztása
|
||||
F1 - Jelenítse meg ezt a súgóinformációt
|
||||
F2 - A helyi lemezen lévő fájlok böngészése és indítása
|
||||
F3 - Menü mód váltása Fanézet <-> Listanézet között
|
||||
F4 - Windows/Linux indítása helyi lemezről
|
||||
F1 - Súgóinformációk megjelenítése
|
||||
F2 - Helyi lemezen lévő fájlok tallózása és indítása
|
||||
F3 - Menü mód váltása fanézet <-> listanézet között
|
||||
F4 - Windows/Linux indítása a helyi lemezről
|
||||
F5 - Segédprogramok
|
||||
F6 - Egyéni Grub2 menü betöltése
|
||||
F7 - Váltás Grafikus mód <-> Szövege mód között
|
||||
F7 - Váltás grafikus mód <-> szöveges mód között
|
||||
|
||||
m/Ctrl+m - Image fájlok ell.összege (md5/sha1/sha256/sha512)
|
||||
d/Ctrl+d - Memdisk mód (Csak kis WinPE/LiveCD ISO/IMG esetén)
|
||||
w/Ctrl+w - WIMBOOT mód (Csak Windows/WinPE ISO esetében)
|
||||
r/Ctrl+r - Grub2 mód (Csak néhány Linux disztró esetében)
|
||||
i/Ctrl+i - Kompatibilis mód (Csak hibakeresésre)
|
||||
u/Ctrl+u - ISO efi driver betöltés (Csak hibakeresésre, hivatalosan nem használható.)
|
||||
m/Ctrl+m - Lemezképfájlok ellenőrzőösszege (md5/sha1/sha256/sha512)
|
||||
d/Ctrl+d - Memórialemez mód (csak kis WinPE/LiveCD ISO/IMG esetén)
|
||||
w/Ctrl+w - WIMBOOT mód (csak Windows/WinPE ISO esetén)
|
||||
r/Ctrl+r - Grub2 mód (csak néhány Linux disztribúció esetén)
|
||||
i/Ctrl+i - Kompatibilis mód (csak hibakereséshez)
|
||||
u/Ctrl+u - ISO EFI illesztőprogram betöltés (csak hibakereséshez, hivatalosan nem használható)
|
||||
|
||||
|
||||
|
||||
Nyomjon ESC-et a visszatéréshez ......
|
||||
Nyomja meg az ESC billentyűt a visszalépéshez ......
|
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 interfaccia
|
||||
F1 - Visualizza informazioni Aiuto (questa guida)
|
||||
F2 - Sfoglia e avvia file nel disco locale
|
||||
F3 - Cambia modalità menu tra VistaStruttura <-> VistaElenco
|
||||
F4 - Avvia Windows/Linux dal disco locale
|
||||
F5 - Utilità
|
||||
F6 - Carica il menu Grub2 personalizzato
|
||||
F7 - Cambia modalità GUI <-> modalità TESTO
|
||||
|
||||
m/Ctrl+m - Checksum file immagine (md5/sha1/sha256/sha512)
|
||||
d/Ctrl+d - Modalità Memdisk (solo per i file ISO/IMG WinPE/LiveCD piccoli)
|
||||
w/Ctrl+w - Modalità WIMBOOT (solo per i file ISO Windows/WinPE)
|
||||
r/Ctrl+r - Modalità Grub2 (solo per alcune distro Linux)
|
||||
i/Ctrl+i - Modalità Compatibile (solo per debugging)
|
||||
u/Ctrl+u - Carica driver EFI ISO (solo per debugging, non usato ufficialmente)
|
||||
|
||||
|
||||
|
||||
Premi 'ESC' per continuare...
|
@@ -1,17 +1,17 @@
|
||||
L - 언어 선택
|
||||
F1 - 이 도움말 정보 표시
|
||||
F2 - 로컬 디스크에서 파일 찾아보기 및 부트
|
||||
F2 - 로컬 디스크에서 파일 찾아보기 및 부팅
|
||||
F3 - 트리보기 <-> 목록보기 간에 메뉴 모드 전환
|
||||
F4 - 로컬 디스크에서 Windows/Linux 부트
|
||||
F4 - 로컬 디스크에서 Windows/Linux 부팅
|
||||
F5 - 유틸리티
|
||||
F6 - 사용자 지정 Grub2 메뉴 불러오기
|
||||
F7 - GUI 모드 <-> TEXT 모드 간에 전환
|
||||
F7 - 그래픽 모드 <-> 텍스트 모드 간에 전환
|
||||
|
||||
m/Ctrl+m - 체크섬 이미지 파일 (md5/sha1/sha256/sha512)
|
||||
d/Ctrl+d - Memdisk 모드 (작은 WinPE/LiveCD ISO/IMG 전용)
|
||||
w/Ctrl+w - WIMBOOT 모드 (표준 Windows/WinPE ISO 전용)
|
||||
r/Ctrl+r - Grub2 모드 (일부 Linux 배포판에만 해당)
|
||||
i/Ctrl+i - 호환 모드 (디버그 전용)
|
||||
i/Ctrl+i - 호환 모드 (디버그 전용, 공식적으로 사용할 수 없음)
|
||||
u/Ctrl+u - ISO EFI 드라이버 불러오기 (디버그 전용, 공식적으로 사용할 수 없음)
|
||||
|
||||
|
||||
|
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...
|
@@ -1,8 +1,8 @@
|
||||
L - Выбор языка
|
||||
F1 - Показать эти справочные сведения
|
||||
F2 - Просмотр и загрузка файлов на локальном диске
|
||||
F3 - Переключить режим меню между «ВидДревом» <-> «ВидСписком»
|
||||
F4 - Загрузка винды/линукса с локального диска
|
||||
F3 - Переключить режим меню между «Вид древом» <-> «Вид списком»
|
||||
F4 - Загрузка Windows/Linux с локального диска
|
||||
F5 - Утилиты
|
||||
F6 - Загрузить пользовательское меню Grub2
|
||||
F7 - Переключиться между графическим режимом <-> текстовым режимом
|
||||
@@ -10,7 +10,7 @@ F7 - Переключиться между графическим режимом
|
||||
m/Ctrl+m - Проверить контрольную сумму файлов образа диска (md5/sha1/sha256/sha512)
|
||||
d/Ctrl+d - Режим Memdisk (только для небольших WinPE/LiveCD ISO/IMG)
|
||||
w/Ctrl+w - Режим WIMBOOT (только для Windows/WinPE ISO)
|
||||
r/Ctrl+r - Режим Grub2 (только для некоторых сборок линукса)
|
||||
r/Ctrl+r - Режим Grub2 (только для некоторых дистрибутивов Linux)
|
||||
i/Ctrl+i - Совместимый режим (только для отладки)
|
||||
u/Ctrl+u - Загрузить драйвер ISO EFI (только для отладки, нельзя использовать официально)
|
||||
|
||||
|
@@ -1,19 +1,19 @@
|
||||
L - Dil Seçimi
|
||||
F1 - Yardım bilgilerini göster
|
||||
F2 - Yerel diskteki önyükleme dosyalarına GÖZAT ve yerel diskten Önyükleme yap
|
||||
F3 - Ventoy Menü modu olarak,Klasör görünümü(Treeview) ile Liste görünümü(ListView) arasında geçiş yapmayı sağlar.
|
||||
F4 - Bilgisayarınızda yüklü olan Windows yada Linux işletim sistemini, sabit diskten başlatır.
|
||||
F5 - Ventoy Araçlar menüsü
|
||||
F6 - Özelleştirilmiş Grub2 menüsünü yükler
|
||||
F7 - Grafik Modu(GUI Mode) <--> Metin Modu(Text Mode) arasında geçiş yapmayı sağlar
|
||||
F2 - Yerel diskteki önyükleme dosyalarına göz at ve önyükleme yap
|
||||
F3 - Menü modunu Ağaç Görünümü <-> Liste Görünümü arasında değiştir
|
||||
F4 - Windows & Linux'u yerel diskten önyükle
|
||||
F5 - Ventoy araçlar menüsü
|
||||
F6 - Özelleştirilmiş Grub2 menüsünü yükle
|
||||
F7 - Grafik(GUI) <--> Metin(Text) modları arasında geçiş yap
|
||||
|
||||
m/Ctrl+m - İndirilen imaj dosyalarının hatasız indirildiğini teyit etmek için "md5/sha1/sha256/sha512" değerlerini kontrol etmeyi sağlar
|
||||
d/Ctrl+d - Memdisk Modu başlatır(Yalnızca küçük WinPE/LiveCD ISO/IMG ler için bu modu kullanabilirsiniz)
|
||||
w/Ctrl+w - WIMBOOT Modu çalıştırmayı sağlar(Sadece normal Windows/WinPE ISO ları için)
|
||||
r/Ctrl+r - Grub2 Modu çalıştırmayı sağlar (Sadece bazı Linux dağıtımları için)
|
||||
i/Ctrl+i - Uyumluluk Modu'nu (Compatible Mode) çalıştırmayı sağlar (Sadece hata ayıklama için bu modu kullanabilirsiniz)
|
||||
u/Ctrl+u - ISO efi sürücüsünü yükler(Sadece hata ayıklama için bu mod kullanılabilir, resmi olarak kullanılamaz)
|
||||
m/Ctrl+m - Görüntü dosyalarının sağlama toplamını al (md5/sha1/sha256/sha512)
|
||||
d/Ctrl+d - Memdisk Modunu başlat(Yalnızca küçük WinPE/LiveCD ISO/IMG'ler için)
|
||||
w/Ctrl+w - WIMBOOT Modunu başlat(Yalnızca normal Windows/WinPE ISO'ları için)
|
||||
r/Ctrl+r - Grub2 Modunu başlat (Yalnızca bazı Linux dağıtımları için)
|
||||
i/Ctrl+i - Uyumluluk Modu (Yalnızca hata ayıklama için)
|
||||
u/Ctrl+u - ISO EFI sürücüsünü yükle (Sadece hata ayıklama için, resmi olarak kullanılamaz)
|
||||
|
||||
|
||||
|
||||
Geriye dönmek için ESC tuşuna basınız......
|
||||
Geri dönmek için ESC tuşuna basınız ......
|
||||
|
19
INSTALL/grub/help/uk_UA.txt
Normal file
19
INSTALL/grub/help/uk_UA.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
L - Обрати мову
|
||||
F1 - Показати довідку
|
||||
F2 - Переглянути та завантажити файли з локального диску
|
||||
F3 - Переключитись між видами деревом <-> списком
|
||||
F4 - Завантажити Windows/Linux з локального диску
|
||||
F5 - Інструменти
|
||||
F6 - Завантажити Custom Grub2 меню
|
||||
F7 - Переключитись між графічним інтерфейсом <-> текстовим інтерфейсом
|
||||
|
||||
m/Ctrl + m - Контрольна сума образу диску (md5/sha1/sha256/sha512)
|
||||
d/Ctrl + d - Режим Memdisk (Тільки для невеликих образів WinPE/LiveCD ISO/IMG)
|
||||
w/Ctrl + w - Режим WIMBOOT (Тільки для ISO-файлів Windows/WinPE)
|
||||
r/Ctrl + r - Режим Grub2 (Тільки для деяких дистрибутивів Linux)
|
||||
i/Ctrl + i - Сумісний режим (Тільки для зневадження)
|
||||
u/Ctrl + u - Завантажити драйвер ISO EFI (Тільки для зневадження, не офіційно)
|
||||
|
||||
|
||||
|
||||
Натисність ESC для того, щоб повернутися ......
|
19
INSTALL/grub/help/vi_VN.txt
Normal file
19
INSTALL/grub/help/vi_VN.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
L - Lựa chọn ngôn ngữ
|
||||
F1 - Hiển thị thông tin trợ giúp
|
||||
F2 - Duyệt tìm và khởi động tệp từ ổ đĩa trên máy
|
||||
F3 - Chuyển đổi chế độ bảng chọn giữa dạng cây <-> dạng danh sách.
|
||||
F4 - Khởi động Windows hoặc GNU/Linux trên đĩa cục bộ
|
||||
F5 - Các tiện ích
|
||||
F6 - Tải menu GRUB2 tuỳ chọn
|
||||
F7 - Chuyển giữa giao diện đồ hoạ <-> giao diện văn bản
|
||||
|
||||
m/Ctrl+m - Checksum các tệp ảnh đĩa (md5/sha1/sha256/sha512)
|
||||
d/Ctrl+d - Chế độ Memdisk (Chỉ dùng cho các tệp ISO/IMG WinPE/LiveCD có kích thước nhỏ)
|
||||
w/Ctrl+w - Chế độ WIMBOOT (Chỉ dùng cho các tệp ISO Windows/WinPE)
|
||||
r/Ctrl+r - Chế độ Grub2 (Chỉ dùng cho một vài bản phân phối của GNU/Linux)
|
||||
i/Ctrl+i - Chế độ tương thích (Chỉ dùng cho việc sửa lỗi)
|
||||
u/Ctrl+u - Tải ISO của một driver EFI (Chỉ dùng cho việc sửa lỗi, không thể dùng chính thức)
|
||||
|
||||
|
||||
|
||||
Nhấn ESC để quay lại ......
|
@@ -201,7 +201,7 @@ cbmemc: cbtable normal terminfo
|
||||
hfsplus: fshelp
|
||||
gcry_cast5: crypto
|
||||
extcmd:
|
||||
squash4: fshelp lzopio zfs xzio gzio
|
||||
squash4: fshelp zstd lzopio zfs xzio gzio
|
||||
part_plan:
|
||||
minix_be:
|
||||
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:
|
||||
gcry_dsa: pgp mpi
|
||||
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
|
||||
cmdline_cat_test: font functional_test normal procfs video_fb
|
||||
rdmsr: extcmd
|
||||
@@ -124,7 +124,7 @@ crypto:
|
||||
part_bsd: part_msdos
|
||||
cs5536: pci
|
||||
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:
|
||||
gcry_sha512: crypto
|
||||
password: crypto normal
|
||||
@@ -208,7 +208,7 @@ cmosdump:
|
||||
hfsplus: fshelp
|
||||
gcry_cast5: crypto
|
||||
extcmd:
|
||||
squash4: fshelp lzopio zfs xzio gzio
|
||||
squash4: fshelp zstd lzopio zfs xzio gzio
|
||||
part_plan:
|
||||
minix_be:
|
||||
gcry_whirlpool: crypto
|
||||
|
Binary file not shown.
@@ -163,7 +163,6 @@ else
|
||||
terminal_output console
|
||||
chainloader /vtefi/boot/bootaa64.efi
|
||||
boot
|
||||
else
|
||||
else
|
||||
unset VTOY_SEARCH_NO_VTOYEFI
|
||||
echo "BOOTAA64.EFI NOT found ..."
|
||||
|
@@ -1,12 +1,14 @@
|
||||
{
|
||||
"VTLANG_LANGUAGE_NAME": "Arabic (العربية)",
|
||||
|
||||
"VTLANG_STR_HOTKEY_LIST": "L: لغه F1: مساعدة F2: تصفح F3: عرض قائمه F4: اقلا محلي F5: أدوات F6: عوده",
|
||||
"VTLANG_STR_HOTKEY_TREE": "L: لغه F1: مساعدة F2: تصفح F3: عرض تصنيف F4: اقلاع محلي F5: أدوات F6: عوده",
|
||||
"VTLANG_STR_HOTKEY_LIST": "L: لغة F1: مساعدة F2: تصفح F3: عرض لائحي F4: إقلاع محلي F5: أدوات F6: عوده",
|
||||
"VTLANG_STR_HOTKEY_TREE": "L: لغة F1: مساعدة F2: تصفح F3: عرض شجري F4: إقلاع محلي F5: أدوات F6: عوده",
|
||||
"VTLANG_RETURN_PREVIOUS": "عودة إلى القائمة السابقة [Esc]",
|
||||
"VTLANG_RETURN_PRV_NOESC": "عودة إلى القائمة السابقة",
|
||||
|
||||
"VTLANG_MENU_LANG": "اختيار اللغة في القائمة",
|
||||
"VTLANG_LB_SBOOT_WINDOWS": "البحث والإقلاع على ويندوز",
|
||||
|
||||
"VTLANG_LB_SBOOT_WINDOWS": "البحث والإقلاع على Windows",
|
||||
"VTLANG_LB_SBOOT_G4D": "البحث والإقلاع على Grub4dos",
|
||||
"VTLANG_LB_SBOOT_HDD1": "الإقلاع على القرص المحلي الأول",
|
||||
"VTLANG_LB_SBOOT_HDD2": "الإقلاع على القرص المحلي الثاني",
|
||||
@@ -15,32 +17,39 @@
|
||||
"VTLANG_LB_SBOOT_IA32EFI": "البحث والإقلاع على BOOTIA32.EFI",
|
||||
"VTLANG_LB_SBOOT_AA64EFI": "البحث والإقلاع على BOOTAA64.EFI",
|
||||
"VTLANG_LB_SBOOT_XORBOOT": "البحث والإقلاع على xorboot",
|
||||
"VTLANG_FILE_CHKSUM": "مجموعة التحقق من الملفات",
|
||||
"VTLANG_CHKSUM_MD5_CALC": "حساب md5sum",
|
||||
"VTLANG_CHKSUM_SHA1_CALC": "حساب sha1sum",
|
||||
"VTLANG_CHKSUM_SHA256_CALC": "حساب sha256sum",
|
||||
"VTLANG_CHKSUM_SHA512_CALC": "حساب sha512sum",
|
||||
"VTLANG_CHKSUM_MD5_CALC_CHK": "حساب وتحقق md5sum",
|
||||
"VTLANG_CHKSUM_SHA1_CALC_CHK": "حساب وتحقق sha1sum",
|
||||
"VTLANG_CHKSUM_SHA256_CALC_CHK": "حساب وتحقق sha256sum",
|
||||
"VTLANG_CHKSUM_SHA512_CALC_CHK": "حساب وتحقق sha512sum",
|
||||
|
||||
"VTLANG_FILE_CHKSUM": "تدقيق المجموع للملف",
|
||||
"VTLANG_CHKSUM_MD5_CALC": "احسب md5sum",
|
||||
"VTLANG_CHKSUM_SHA1_CALC": "احسب sha1sum",
|
||||
"VTLANG_CHKSUM_SHA256_CALC": "احسب sha256sum",
|
||||
"VTLANG_CHKSUM_SHA512_CALC": "احسب sha512sum",
|
||||
"VTLANG_CHKSUM_MD5_CALC_CHK": "احسب وتحقق md5sum",
|
||||
"VTLANG_CHKSUM_SHA1_CALC_CHK": "احسب وتحقق sha1sum",
|
||||
"VTLANG_CHKSUM_SHA256_CALC_CHK": "احسب وتحقق sha256sum",
|
||||
"VTLANG_CHKSUM_SHA512_CALC_CHK": "احسب وتحقق sha512sum",
|
||||
|
||||
"VTLANG_POWER": "الطاقة",
|
||||
"VTLANG_POWER_REBOOT": "إعادة التشغيل",
|
||||
"VTLANG_POWER_HALT": "إيقاف",
|
||||
"VTLANG_POWER_BOOT_EFIFW": "إعادة التشغيل إلى إعداد EFI",
|
||||
|
||||
"VTLANG_KEYBRD_LAYOUT": "تخطيطات لوحة المفاتيح",
|
||||
"VTLANG_HWINFO": "معلومات الأجهزة الأساسية",
|
||||
"VTLANG_HWINFO": "معلومات حول العتاد",
|
||||
|
||||
"VTLANG_RESOLUTION_CFG": "تكوين الدقة",
|
||||
"VTLANG_SCREEN_MODE": "وضع عرض الشاشة",
|
||||
"VTLANG_SCREEN_TEXT_MODE": "القيام بتحديد وضع النص",
|
||||
"VTLANG_SCREEN_GUI_MODE": "القيام بتحديد وضع الرسومات",
|
||||
"VTLANG_THEME_SELECT": "اختيار الموضوع",
|
||||
"VTLANG_UEFI_UTIL": "Ventoy UEFI Utilities",
|
||||
"VTLANG_SCREEN_TEXT_MODE": "فرض تحديد وضع النص",
|
||||
"VTLANG_SCREEN_GUI_MODE": "فرض تحديد وضع الرسومات",
|
||||
|
||||
"VTLANG_THEME_SELECT": "اختر السمة",
|
||||
|
||||
"VTLANG_UEFI_UTIL": "أدوات Ventoy UEFI المساعدة",
|
||||
"VTLANG_UTIL_SHOW_EFI_DRV": "عرض برامج تشغيل EFI",
|
||||
"VTLANG_UTIL_FIX_BLINIT_FAIL": "إصلاح فشل تهيئة Windows BlinitializeLibrary",
|
||||
|
||||
"VTLANG_JSON_CHK_JSON": "التحقق من تكوين json للبرنامج الإضافي (ventoy.json)",
|
||||
"VTLANG_JSON_CHK_CONTROL": "التحقق من تكوين برنامج الإضافي العام للتحكم",
|
||||
"VTLANG_JSON_CHK_THEME": "التحقق من تكوين برنامج الإضافي الخاص بالموضوع",
|
||||
"VTLANG_JSON_CHK_THEME": "التحقق من تكوين برنامج الإضافي الخاص بالسمة",
|
||||
"VTLANG_JSON_CHK_AUTOINS": "التحقق من تكوين برنامج الإضافي للتثبيت التلقائي",
|
||||
"VTLANG_JSON_CHK_PERSIST": "التحقق من تكوين برنامج الإضافي المستمر",
|
||||
"VTLANG_JSON_CHK_MENU_ALIAS": "التحقق من تكوين برنامج الإضافي الخاص بالقائمة المستعارة",
|
||||
@@ -53,27 +62,32 @@
|
||||
"VTLANG_JSON_CHK_CONF_REPLACE": "التحقق من تكوين برنامج الإضافي الخاص باستبدال ملف التكوين للإقلاع",
|
||||
"VTLANG_JSON_CHK_DUD": "التحقق من تكوين برنامج الإضافي الخاص بـ dud",
|
||||
"VTLANG_JSON_CHK_PASSWORD": "التحقق من تكوين برنامج الإضافي الخاص بكلمة المرور",
|
||||
|
||||
"VTLANG_NORMAL_MODE": "الإقلاع في الوضع العادي",
|
||||
"VTLANG_WIMBOOT_MODE": "الإقلاع في وضع wimboot",
|
||||
"VTLANG_GRUB2_MODE": "الإقلاع في وضع grub2",
|
||||
"VTLANG_MEMDISK_MODE": "الإقلاع في وضع memdisk",
|
||||
|
||||
"VTLANG_RET_TO_LISTVIEW": "العودة إلى ListView",
|
||||
"VTLANG_RET_TO_TREEVIEW": "العودة إلى TreeView",
|
||||
|
||||
"VTLANG_NO_AUTOINS_SCRIPT": "الإقلاع بدون قالب التثبيت التلقائي",
|
||||
"VTLANG_AUTOINS_USE": "الإقلاع مع",
|
||||
|
||||
"VTLANG_NO_PERSIST": "الإقلاع بدون الاستمرارية",
|
||||
"VTLANG_PERSIST_USE": "الإقلاع مع",
|
||||
|
||||
"VTLANG_BROWER_RETURN": "العودة",
|
||||
|
||||
"VTLANG_ENTER_EXIT": "اضغط على مفتاح Enter للخروج",
|
||||
"VTLANG_ENTER_REBOOT": "اضغط على مفتاح Enter لإعادة التشغيل",
|
||||
"VTLANG_ENTER_CONTINUE": "اضغط على مفتاح Enter للمتابعة",
|
||||
|
||||
"VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
|
||||
"VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11",
|
||||
"VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11",
|
||||
"VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
|
||||
"VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
|
||||
"VTLANG_CTRL_TEMP_SET": "إعدادات التحكم المؤقتة",
|
||||
"VTLANG_WIN11_BYPASS_CHECK": "تجاوز فحص CPU/TPM/SecureBoot عند تثبيت Windows 11",
|
||||
"VTLANG_WIN11_BYPASS_NRO": "تجاوز متطلبات الحساب عبر الإنترنت عند تثبيت Windows 11",
|
||||
"VTLANG_LINUX_REMOUNT": "ضم قسم Ventoy بعد إقلاع Linux",
|
||||
"VTLANG_SECONDARY_BOOT_MENU": "اظهر قائمة الإقلاع الثانوية",
|
||||
|
||||
"MENU_STR_XXX": ""
|
||||
}
|
||||
|
93
INSTALL/grub/menu/cs_CZ.json
Normal file
93
INSTALL/grub/menu/cs_CZ.json
Normal file
@@ -0,0 +1,93 @@
|
||||
{
|
||||
"VTLANG_LANGUAGE_NAME": "Czech (Čeština)",
|
||||
|
||||
"VTLANG_STR_HOTKEY_LIST": "L:Jazyk F1:Nápověda F2:Procházet F3:Seznam F4:Místní boot F5:Nástroje F6:Rozšířená nabídka",
|
||||
"VTLANG_STR_HOTKEY_TREE": "L:Jazyk F1:Nápověda F2:Procházet F3:Strom F4:Místní boot F5:Nástroje F6:Rozšířená nabídka",
|
||||
"VTLANG_RETURN_PREVIOUS": "Vrátit do předchozí nabídky [Esc]",
|
||||
"VTLANG_RETURN_PRV_NOESC": "Vrátit do předchozí nabídky",
|
||||
|
||||
"VTLANG_MENU_LANG": "Výběrt jazyka nabídel",
|
||||
|
||||
"VTLANG_LB_SBOOT_WINDOWS": "Najít a spustit Windows",
|
||||
"VTLANG_LB_SBOOT_G4D": "Najít a spustit Grub4dos",
|
||||
"VTLANG_LB_SBOOT_HDD1": "Spustit 1. místní disk",
|
||||
"VTLANG_LB_SBOOT_HDD2": "Spustit 2. místní disk",
|
||||
"VTLANG_LB_SBOOT_HDD3": "Spustit 3. místní disk",
|
||||
"VTLANG_LB_SBOOT_X64EFI": "Najít a spustit BOOTX64.EFI",
|
||||
"VTLANG_LB_SBOOT_IA32EFI": "Najít a spustit BOOTIA32.EFI",
|
||||
"VTLANG_LB_SBOOT_AA64EFI": "Najít a spustit BOOTAA64.EFI",
|
||||
"VTLANG_LB_SBOOT_XORBOOT": "Najít a spustit xorboot",
|
||||
|
||||
"VTLANG_FILE_CHKSUM": "Kontrolní součet souboru",
|
||||
"VTLANG_CHKSUM_MD5_CALC": "Spočítat md5sum",
|
||||
"VTLANG_CHKSUM_SHA1_CALC": "Spočítat sha1sum",
|
||||
"VTLANG_CHKSUM_SHA256_CALC": "Spočítat sha256sum",
|
||||
"VTLANG_CHKSUM_SHA512_CALC": "Spočítat sha512sum",
|
||||
"VTLANG_CHKSUM_MD5_CALC_CHK": "Spočítat a ověřit md5sum",
|
||||
"VTLANG_CHKSUM_SHA1_CALC_CHK": "Spočítat a ověřit sha1sum",
|
||||
"VTLANG_CHKSUM_SHA256_CALC_CHK": "Spočítat a ověřit sha256sum",
|
||||
"VTLANG_CHKSUM_SHA512_CALC_CHK": "Spočítat a ověřit sha512sum",
|
||||
|
||||
"VTLANG_POWER": "Napájení",
|
||||
"VTLANG_POWER_REBOOT": "Restartovat",
|
||||
"VTLANG_POWER_HALT": "Vypnout",
|
||||
"VTLANG_POWER_BOOT_EFIFW": "Restartovat do EFI nastavení",
|
||||
|
||||
"VTLANG_KEYBRD_LAYOUT": "Rozložení klávesnice",
|
||||
"VTLANG_HWINFO": "Informace o hardwaru",
|
||||
|
||||
"VTLANG_RESOLUTION_CFG": "Nastavení rolišení",
|
||||
"VTLANG_SCREEN_MODE": "Nastavení režimu zobrazení",
|
||||
"VTLANG_SCREEN_TEXT_MODE": "Vynutit textový režim",
|
||||
"VTLANG_SCREEN_GUI_MODE": "Vynutit grafický režim",
|
||||
|
||||
"VTLANG_THEME_SELECT": "Výběr motivu",
|
||||
|
||||
"VTLANG_UEFI_UTIL": "Ventoy UEFI nástroje",
|
||||
"VTLANG_UTIL_SHOW_EFI_DRV": "Zobrazit EFI ovladače",
|
||||
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Opravit chybu Windows BlinitializeLibrary",
|
||||
|
||||
"VTLANG_JSON_CHK_JSON": "Zkontrolovat json konfiguraci zásuvných modulů (ventoy.json)",
|
||||
"VTLANG_JSON_CHK_CONTROL": "Zkontrolovat konfiguraci hlavního zásuvného modulu",
|
||||
"VTLANG_JSON_CHK_THEME": "Zkontrolovat konfiguraci zásuvného modulu motivů",
|
||||
"VTLANG_JSON_CHK_AUTOINS": "Zkontrolovat konfiguraci zásuvného modulu automatické instalace",
|
||||
"VTLANG_JSON_CHK_PERSIST": "Zkontrolovat konfiguraci zásuvného modulu perzistence",
|
||||
"VTLANG_JSON_CHK_MENU_ALIAS": "Zkontrolovat konfiguraci zásuvného modulu aliasů",
|
||||
"VTLANG_JSON_CHK_MENU_TIP": "Zkontrolovat konfiguraci zásuvného modulu tip",
|
||||
"VTLANG_JSON_CHK_MENU_CLASS": "Zkontrolovat konfiguraci zásuvného modulu tříd",
|
||||
"VTLANG_JSON_CHK_INJECTION": "Zkontrolovat konfiguraci zásuvného modulu injekcí",
|
||||
"VTLANG_JSON_CHK_AUTO_MEMDISK": "Zkontrolovat konfiguraci zásuvného modulu automatického memdisku",
|
||||
"VTLANG_JSON_CHK_IMG_LIST": "Zkontrolovat konfiguraci zásuvného modulu seznamu obrazů",
|
||||
"VTLANG_JSON_CHK_IMG_BLIST": "Zkontrolovat konfiguraci zásuvného modulu černé listiny obrazů",
|
||||
"VTLANG_JSON_CHK_CONF_REPLACE": "Zkontrolovat konfiguraci zásuvného modulu nahrazení konfigurace spouštění",
|
||||
"VTLANG_JSON_CHK_DUD": "Zkontrolovat konfiguraci zásuvného modulu dud",
|
||||
"VTLANG_JSON_CHK_PASSWORD": "Zkontrolovat konfiguraci zásuvného modulu hesla",
|
||||
|
||||
"VTLANG_NORMAL_MODE": "Spustit normálně",
|
||||
"VTLANG_WIMBOOT_MODE": "Spustit v režimu wimboot",
|
||||
"VTLANG_GRUB2_MODE": "Spustit v režimu grub2",
|
||||
"VTLANG_MEMDISK_MODE": "Spustit v režimu memdisk",
|
||||
|
||||
"VTLANG_RET_TO_LISTVIEW": "Vrátis do zobrazení seznamu",
|
||||
"VTLANG_RET_TO_TREEVIEW": "Vrátit do zobrazení stromu",
|
||||
|
||||
"VTLANG_NO_AUTOINS_SCRIPT": "Spustit bez šablony automatické instalace",
|
||||
"VTLANG_AUTOINS_USE": "Spustit s",
|
||||
|
||||
"VTLANG_NO_PERSIST": "Spustit bez perzistence",
|
||||
"VTLANG_PERSIST_USE": "Spustit s",
|
||||
|
||||
"VTLANG_BROWER_RETURN": "Vrátit",
|
||||
|
||||
"VTLANG_ENTER_EXIT": "zmáčkněte Enter pro ukončení",
|
||||
"VTLANG_ENTER_REBOOT": "zmáčkněte Enter pro restart",
|
||||
"VTLANG_ENTER_CONTINUE": "zmáčkněte enter pro pokračování",
|
||||
|
||||
"VTLANG_CTRL_TEMP_SET": "Dočasné řídící nastavení",
|
||||
"VTLANG_WIN11_BYPASS_CHECK": "Obejít CPU/TPM/SecureBoot kontrolu při instalaci Windows 11",
|
||||
"VTLANG_WIN11_BYPASS_NRO": "Obejít požadování online účtu při instalaci Windows 11",
|
||||
"VTLANG_LINUX_REMOUNT": "Připojit Ventoy oddíl po spuštění Linuxu",
|
||||
"VTLANG_SECONDARY_BOOT_MENU": "Zobrazit druhou spouštěcí nabídku",
|
||||
|
||||
"MENU_STR_XXX": ""
|
||||
}
|
93
INSTALL/grub/menu/el_GR.json
Normal file
93
INSTALL/grub/menu/el_GR.json
Normal file
@@ -0,0 +1,93 @@
|
||||
{
|
||||
"VTLANG_LANGUAGE_NAME": "Greek (Ελληνικά)",
|
||||
|
||||
"VTLANG_STR_HOTKEY_LIST": "L:Γλώσσα F1:Βοήθεια F2:Περιήγηση F3:Προβολή Λίστας F4:Εκκίνηση από τοπικό δίσκο F5:Εργαλεία F6:Προσ. Μενού",
|
||||
"VTLANG_STR_HOTKEY_TREE": "L:Γλώσσα F1:Βοήθεια F2:Περιήγηση F3:Προβολή Δένδρου F4:Εκκίνηση από τοπικό δίσκο F5:Εργαλεία F6:Προσ. Μενού",
|
||||
"VTLANG_RETURN_PREVIOUS": "Επιστροφή στο προηγούμενο μενού [Esc]",
|
||||
"VTLANG_RETURN_PRV_NOESC": "Επιστροφή στο προηγούμενο μενού",
|
||||
|
||||
"VTLANG_MENU_LANG": "Επιλογή Γλώσσας Μενού",
|
||||
|
||||
"VTLANG_LB_SBOOT_WINDOWS": "Αναζήτηση και εκκίνηση των Windows",
|
||||
"VTLANG_LB_SBOOT_G4D": "Αναζήτηση και εκκίνηση του Grub4dos",
|
||||
"VTLANG_LB_SBOOT_HDD1": "Εκκίνηση του 1ου τοπικού δίσκου",
|
||||
"VTLANG_LB_SBOOT_HDD2": "Εκκίνηση του 2ου τοπικού δίσκου",
|
||||
"VTLANG_LB_SBOOT_HDD3": "Εκκίνηση του 3ου τοπικού δίσκου",
|
||||
"VTLANG_LB_SBOOT_X64EFI": "Αναζήτηση και εκκίνηση του BOOTX64.EFI",
|
||||
"VTLANG_LB_SBOOT_IA32EFI": "Αναζήτηση και εκκίνηση του BOOTIA32.EFI",
|
||||
"VTLANG_LB_SBOOT_AA64EFI": "Αναζήτηση και εκκίνηση του BOOTAA64.EFI",
|
||||
"VTLANG_LB_SBOOT_XORBOOT": "Αναζήτηση και εκκίνηση του xorboot",
|
||||
|
||||
"VTLANG_FILE_CHKSUM": "Αρχείο checksum",
|
||||
"VTLANG_CHKSUM_MD5_CALC": "Υπολογισμός md5sum",
|
||||
"VTLANG_CHKSUM_SHA1_CALC": "Υπολογισμός sha1sum",
|
||||
"VTLANG_CHKSUM_SHA256_CALC": "Υπολογισμός sha256sum",
|
||||
"VTLANG_CHKSUM_SHA512_CALC": "Υπολογισμός sha512sum",
|
||||
"VTLANG_CHKSUM_MD5_CALC_CHK": "Υπολογισμός και έλεγχος md5sum",
|
||||
"VTLANG_CHKSUM_SHA1_CALC_CHK": "Υπολογισμός και έλεγχος sha1sum",
|
||||
"VTLANG_CHKSUM_SHA256_CALC_CHK": "Υπολογισμός και έλεγχος sha256sum",
|
||||
"VTLANG_CHKSUM_SHA512_CALC_CHK": "Υπολογισμός και έλεγχος sha512sum",
|
||||
|
||||
"VTLANG_POWER": "Λειτουργία",
|
||||
"VTLANG_POWER_REBOOT": "Επανεκκίνηση",
|
||||
"VTLANG_POWER_HALT": "Απενεργοποίηση",
|
||||
"VTLANG_POWER_BOOT_EFIFW": "Επανεκκίνηση σε EFI setup",
|
||||
|
||||
"VTLANG_KEYBRD_LAYOUT": "Διατάξεις Πληκτρολογίου",
|
||||
"VTLANG_HWINFO": "Πληροφορίες υλικού",
|
||||
|
||||
"VTLANG_RESOLUTION_CFG": "Διαμόρφωση ανάλυσης",
|
||||
"VTLANG_SCREEN_MODE": "Λειτουργία Προβολής Οθόνης",
|
||||
"VTLANG_SCREEN_TEXT_MODE": "Επιβολή λειτουργίας κειμένου",
|
||||
"VTLANG_SCREEN_GUI_MODE": "Επιβολή λειτουργίας Γραφικών (GUI)",
|
||||
|
||||
"VTLANG_THEME_SELECT": "Επιλογή Θέματος",
|
||||
|
||||
"VTLANG_UEFI_UTIL": "Εργαλεία Ventoy UEFI",
|
||||
"VTLANG_UTIL_SHOW_EFI_DRV": "Προβολή EFI Drivers",
|
||||
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Διόρθωση αποτυχίας Windows BlinitializeLibrary",
|
||||
|
||||
"VTLANG_JSON_CHK_JSON": "Ελεγχος διαμόρφωσης json πρόσθετων (ventoy.json)",
|
||||
"VTLANG_JSON_CHK_CONTROL": "Ελεγχος διαμόρφωσης του πρόσθετου καθολικού ελέγχου",
|
||||
"VTLANG_JSON_CHK_THEME": "Ελεγχος διαμόρφωσης του πρόσθετου θέματος",
|
||||
"VTLANG_JSON_CHK_AUTOINS": "Ελεγχος διαμόρφωσης του πρόσθετου αυτόματης εγκατάστασης",
|
||||
"VTLANG_JSON_CHK_PERSIST": "Ελεγχος διαμόρφωσης του πρόσθετου επιμονής",
|
||||
"VTLANG_JSON_CHK_MENU_ALIAS": "Ελεγχος διαμόρφωσης του πρόσθετου ψευδώνυμου μενού",
|
||||
"VTLANG_JSON_CHK_MENU_TIP": "Ελεγχος διαμόρφωσης του πρόσθετου συμβουλών μενού",
|
||||
"VTLANG_JSON_CHK_MENU_CLASS": "Ελεγχος διαμόρφωσης του πρόσθετου κατηγορίας μενού",
|
||||
"VTLANG_JSON_CHK_INJECTION": "Ελεγχος διαμόρφωσης του πρόσθετου injection",
|
||||
"VTLANG_JSON_CHK_AUTO_MEMDISK": "Ελεγχος διαμόρφωσης του πρόσθετου auto memdisk",
|
||||
"VTLANG_JSON_CHK_IMG_LIST": "Ελεγχος διαμόρφωσης του πρόσθετου Λίστα images",
|
||||
"VTLANG_JSON_CHK_IMG_BLIST": "Ελεγχος διαμόρφωσης του πρόσθετου Μαύρη λίστα images",
|
||||
"VTLANG_JSON_CHK_CONF_REPLACE": "Ελεγχος διαμόρφωσης του πρόσθετου Αντικατάσταση διαμόρφ. εκκίνησης",
|
||||
"VTLANG_JSON_CHK_DUD": "Ελεγχος διαμόρφωσης του πρόσθετου dud",
|
||||
"VTLANG_JSON_CHK_PASSWORD": "Ελεγχος διαμόρφωσης του πρόσθετου Κωδικός πρόσβασης",
|
||||
|
||||
"VTLANG_NORMAL_MODE": "Κανονική εκκίνηση",
|
||||
"VTLANG_WIMBOOT_MODE": "Εκκίνηση σε λειτουργία wimboot",
|
||||
"VTLANG_GRUB2_MODE": "Εκκίνηση σε λειτουργία grub2",
|
||||
"VTLANG_MEMDISK_MODE": "Εκκίνηση σε λειτουργία memdisk",
|
||||
|
||||
"VTLANG_RET_TO_LISTVIEW": "Επιστροφή σε Προβολή Λίστας",
|
||||
"VTLANG_RET_TO_TREEVIEW": "Επιστροφή σε Προβολή Δένδρου",
|
||||
|
||||
"VTLANG_NO_AUTOINS_SCRIPT": "Εκκίνηση χωρίς πρότυπο αυτόματης εγκατάστασης",
|
||||
"VTLANG_AUTOINS_USE": "Εκκίνηση",
|
||||
|
||||
"VTLANG_NO_PERSIST": "Εκκίνηση χωρίς επιμονή",
|
||||
"VTLANG_PERSIST_USE": "Εκκίνηση",
|
||||
|
||||
"VTLANG_BROWER_RETURN": "Επιστροφή",
|
||||
|
||||
"VTLANG_ENTER_EXIT": "πατήστε το πλήκτρο Enter για έξοδο",
|
||||
"VTLANG_ENTER_REBOOT": "πατήστε το πλήκτρο Enter για επανεκκίνηση",
|
||||
"VTLANG_ENTER_CONTINUE": "πατήστε το πλήκτρο Enter για να συνεχίσετε",
|
||||
|
||||
"VTLANG_CTRL_TEMP_SET": "Προσωρινές ρυθμίσεις ελέγχου",
|
||||
"VTLANG_WIN11_BYPASS_CHECK": "Παράκαμψη ελέγχου CPU/TPM/SecureBoot κατά την εγκατάσταση των Windows 11",
|
||||
"VTLANG_WIN11_BYPASS_NRO": "Παράκαμψη της απαίτησης online λογαριασμού κατά την εγκατάσταση των Windows 11",
|
||||
"VTLANG_LINUX_REMOUNT": "Προσάρτηση διαμερίσματος Ventoy μετά την εκκίνηση του Linux",
|
||||
"VTLANG_SECONDARY_BOOT_MENU": "Εμφάνιση δευτερεύοντος μενού εκκίνησης",
|
||||
|
||||
"MENU_STR_XXX": ""
|
||||
}
|
@@ -47,7 +47,7 @@
|
||||
"VTLANG_UTIL_SHOW_EFI_DRV": "Afficher les pilotes EFI",
|
||||
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Contourner l’échec de Windows BlinitializeLibrary",
|
||||
|
||||
"VTLANG_JSON_CHK_JSON": "Afficher le fichiers de configuration (ventoy.json)",
|
||||
"VTLANG_JSON_CHK_JSON": "Afficher le fichier de configuration (ventoy.json)",
|
||||
"VTLANG_JSON_CHK_CONTROL": "Afficher la configuration du plugin de contrôle global",
|
||||
"VTLANG_JSON_CHK_THEME": "Afficher la configuration du plugin de thème",
|
||||
"VTLANG_JSON_CHK_AUTOINS": "Afficher la configuration du plugin d’installation automatique",
|
||||
|
@@ -1,93 +1,93 @@
|
||||
|
||||
"VTLANG_LANGUAGE_NAME": "Hungarian (Magyar)",
|
||||
{
|
||||
"VTLANG_LANGUAGE_NAME": "Magyar (Hungarian)",
|
||||
|
||||
"VTLANG_STR_HOTKEY_LIST": "L:Nyelv F1:Súgó F2:Tallóz F3:Listanézet F4:Helyi indítás F5:Eszközök F6:Bővített menü",
|
||||
"VTLANG_STR_HOTKEY_TREE": "L:Nyelv F1:Súgó F2:Tallóz F3:Fanézet F4:Helyi indítás F5:Eszközök F6:Bővített menü",
|
||||
"VTLANG_STR_HOTKEY_LIST": "L:Nyelv F1:Súgó F2:Tallózás F3:Listanézet F4:Helyi indítás F5:Eszközök F6:Bővített menü",
|
||||
"VTLANG_STR_HOTKEY_TREE": "L:Nyelv F1:Súgó F2:Tallózás F3:Fanézet F4:Helyi indítás F5:Eszközök F6:Bővített menü",
|
||||
"VTLANG_RETURN_PREVIOUS": "Vissza az előző menübe [Esc]",
|
||||
"VTLANG_RETURN_PRV_NOESC": "Vissza az előző menübe",
|
||||
|
||||
"VTLANG_MENU_LANG": "Menü nyelv kiválasztás",
|
||||
"VTLANG_MENU_LANG": "Menü nyelvének kiválasztása",
|
||||
|
||||
"VTLANG_LB_SBOOT_WINDOWS": "Keresés és indítás - Windows",
|
||||
"VTLANG_LB_SBOOT_G4D": "Keresés és indítás - Grub4dos",
|
||||
"VTLANG_LB_SBOOT_WINDOWS": "Windows keresése és indítása",
|
||||
"VTLANG_LB_SBOOT_G4D": "Grub4dos keresése és indítása",
|
||||
"VTLANG_LB_SBOOT_HDD1": "Indítás az 1. helyi lemezről",
|
||||
"VTLANG_LB_SBOOT_HDD2": "Indítás az 2. helyi lemezről",
|
||||
"VTLANG_LB_SBOOT_HDD3": "Indítás az 3. helyi lemezről",
|
||||
"VTLANG_LB_SBOOT_X64EFI": "Keresés és indítás - BOOTX64.EFI",
|
||||
"VTLANG_LB_SBOOT_IA32EFI": "Keresés és indítás - BOOTIA32.EFI",
|
||||
"VTLANG_LB_SBOOT_AA64EFI": "Keresés és indítás - BOOTAA64.EFI",
|
||||
"VTLANG_LB_SBOOT_XORBOOT": "Keresés és indítás - xorboot",
|
||||
"VTLANG_LB_SBOOT_HDD2": "Indítás a 2. helyi lemezről",
|
||||
"VTLANG_LB_SBOOT_HDD3": "Indítás a 3. helyi lemezről",
|
||||
"VTLANG_LB_SBOOT_X64EFI": "BOOTX64.EFI keresése és indítása",
|
||||
"VTLANG_LB_SBOOT_IA32EFI": "BOOTIA32.EFI keresése és indítása",
|
||||
"VTLANG_LB_SBOOT_AA64EFI": "BOOTAA64.EFI keresése és indítása",
|
||||
"VTLANG_LB_SBOOT_XORBOOT": "xorboot keresése és indítása",
|
||||
|
||||
"VTLANG_FILE_CHKSUM": "Fájl ell.összeg",
|
||||
"VTLANG_CHKSUM_MD5_CALC": "Számítás - md5sum",
|
||||
"VTLANG_CHKSUM_SHA1_CALC": "Számítás - sha1sum",
|
||||
"VTLANG_CHKSUM_SHA256_CALC": "Számítás - sha256sum",
|
||||
"VTLANG_CHKSUM_SHA512_CALC": "Számítás - sha512sum",
|
||||
"VTLANG_CHKSUM_MD5_CALC_CHK": "Számítás és ellenőrzés - md5sum",
|
||||
"VTLANG_CHKSUM_SHA1_CALC_CHK": "Számítás és ellenőrzés - sha1sum",
|
||||
"VTLANG_CHKSUM_SHA256_CALC_CHK": "Számítás és ellenőrzés - sha256sum",
|
||||
"VTLANG_CHKSUM_SHA512_CALC_CHK": "Számítás és ellenőrzés - sha512sum",
|
||||
"VTLANG_FILE_CHKSUM": "Fájl ellenőrzőösszege",
|
||||
"VTLANG_CHKSUM_MD5_CALC": "md5sum kiszámítása",
|
||||
"VTLANG_CHKSUM_SHA1_CALC": "sha1sum kiszámítása",
|
||||
"VTLANG_CHKSUM_SHA256_CALC": "sha256sum kiszámítása",
|
||||
"VTLANG_CHKSUM_SHA512_CALC": "sha512sum kiszámítása",
|
||||
"VTLANG_CHKSUM_MD5_CALC_CHK": "md5sum kiszámítása és ellenőrzése",
|
||||
"VTLANG_CHKSUM_SHA1_CALC_CHK": "sha1sum kiszámítása és ellenőrzése",
|
||||
"VTLANG_CHKSUM_SHA256_CALC_CHK": "sha256sum kiszámítása és ellenőrzése",
|
||||
"VTLANG_CHKSUM_SHA512_CALC_CHK": "sha512sum kiszámítása és ellenőrzése",
|
||||
|
||||
"VTLANG_POWER": "Energia",
|
||||
"VTLANG_POWER": "Főkapcsoló",
|
||||
"VTLANG_POWER_REBOOT": "Újraindítás",
|
||||
"VTLANG_POWER_HALT": "Leállítás",
|
||||
"VTLANG_POWER_BOOT_EFIFW": "Újraindítás - EFI setup",
|
||||
"VTLANG_POWER_BOOT_EFIFW": "Újraindítás EFI beállításba",
|
||||
|
||||
"VTLANG_KEYBRD_LAYOUT": "Billentyű kiosztások",
|
||||
"VTLANG_HWINFO": "Hardver információ",
|
||||
"VTLANG_KEYBRD_LAYOUT": "Billentyűzetkiosztások",
|
||||
"VTLANG_HWINFO": "Hardverinformációk",
|
||||
|
||||
"VTLANG_RESOLUTION_CFG": "Felbontás konfigurációja",
|
||||
"VTLANG_SCREEN_MODE": "Képernyő megjelenítési mód",
|
||||
"VTLANG_SCREEN_TEXT_MODE": "Kénysz. szöveges mód",
|
||||
"VTLANG_SCREEN_GUI_MODE": "Kénysz. grafikus mód",
|
||||
"VTLANG_RESOLUTION_CFG": "Felbontás beállítása",
|
||||
"VTLANG_SCREEN_MODE": "Képernyő megjelenítési módja",
|
||||
"VTLANG_SCREEN_TEXT_MODE": "Szöveges mód kényszerítése",
|
||||
"VTLANG_SCREEN_GUI_MODE": "Grafikus mód kényszerítése",
|
||||
|
||||
"VTLANG_THEME_SELECT": "Téma kiválasztása",
|
||||
|
||||
"VTLANG_UEFI_UTIL": "Ventoy UEFI Utilities",
|
||||
"VTLANG_UTIL_SHOW_EFI_DRV": "EFI driverek megjelenítése",
|
||||
"VTLANG_UEFI_UTIL": "Ventoy UEFI-segédprogramok",
|
||||
"VTLANG_UTIL_SHOW_EFI_DRV": "EFI-illesztőprogramok megjelenítése",
|
||||
"VTLANG_UTIL_FIX_BLINIT_FAIL": "A Windows BlinitializeLibrary hibájának javítása",
|
||||
|
||||
"VTLANG_JSON_CHK_JSON": "Ellenőrizze a plugin json konfigurációt (ventoy.json)",
|
||||
"VTLANG_JSON_CHK_CONTROL": "Ellenőrizze a globális vezérlő plugin konfigurációt",
|
||||
"VTLANG_JSON_CHK_THEME": "Ellenőrizze a téma plugin konfigurációt",
|
||||
"VTLANG_JSON_CHK_AUTOINS": "Ellenőrizze az auto. telepítő plugin konfigurációt",
|
||||
"VTLANG_JSON_CHK_PERSIST": "A persistence plugin konfigurációjának ellenőrzése",
|
||||
"VTLANG_JSON_CHK_MENU_ALIAS": "Ellenőrizze a menü alias plugin konfigurációt",
|
||||
"VTLANG_JSON_CHK_MENU_TIP": "Ellenőrizze a menü tipp plugin konfigurációt",
|
||||
"VTLANG_JSON_CHK_MENU_CLASS": "Ellenőrizze a menü osztály plugin konfigurációt",
|
||||
"VTLANG_JSON_CHK_INJECTION": "Injekciós plugin konfiguráció ellenőrzése",
|
||||
"VTLANG_JSON_CHK_AUTO_MEMDISK": "Auto. memdisk plugin konfiguráció ellenőrzése",
|
||||
"VTLANG_JSON_CHK_IMG_LIST": "Ellenőrizze a képlista plugin beállításait",
|
||||
"VTLANG_JSON_CHK_IMG_BLIST": "Ellenőrizze a kép feketelista plugin konfigurációt",
|
||||
"VTLANG_JSON_CHK_CONF_REPLACE": "Check boot conf cserélje ki a plugin konfigurációt",
|
||||
"VTLANG_JSON_CHK_DUD": "Ellenőrizze a dud plugin konfigurációt",
|
||||
"VTLANG_JSON_CHK_PASSWORD": "Ellenőrizze a jelszó plugin konfigurációját",
|
||||
"VTLANG_JSON_CHK_JSON": "A bővítmény JSON-beállításának (ventoy.json) ellenőrzése",
|
||||
"VTLANG_JSON_CHK_CONTROL": "A globális vezérlőbővítmény beállításának ellenőrzése",
|
||||
"VTLANG_JSON_CHK_THEME": "A téma bővítmény beállításnak ellenőrzése",
|
||||
"VTLANG_JSON_CHK_AUTOINS": "Az automatikus telepítés bővítmény beállításának ellenőrzése",
|
||||
"VTLANG_JSON_CHK_PERSIST": "Az állandóság bővítmény beállításának ellenőrzése",
|
||||
"VTLANG_JSON_CHK_MENU_ALIAS": "A menüálnév bővítmény beállításának ellenőrzése",
|
||||
"VTLANG_JSON_CHK_MENU_TIP": "A menütipp bővítmény beállításának ellenőrzése",
|
||||
"VTLANG_JSON_CHK_MENU_CLASS": "A menüosztály bővítmény beállításának ellenőrzése",
|
||||
"VTLANG_JSON_CHK_INJECTION": "A befecskendezés bővítmény beállításnak ellenőrzése",
|
||||
"VTLANG_JSON_CHK_AUTO_MEMDISK": "Az automatikus memórialemez bővítmény beállításának ellenőrzése",
|
||||
"VTLANG_JSON_CHK_IMG_LIST": "A lemezképlista bővítmény beállításnak ellenőrzése",
|
||||
"VTLANG_JSON_CHK_IMG_BLIST": "A lemezkép-tiltólista bővítmény beállításnak ellenőrzése",
|
||||
"VTLANG_JSON_CHK_CONF_REPLACE": "Az indítási beállítás csere bővítmény beállításnak ellenőrzése",
|
||||
"VTLANG_JSON_CHK_DUD": "A dud bővítmény beállításnak ellenőrzése",
|
||||
"VTLANG_JSON_CHK_PASSWORD": "A jelszó bővítmény beállításnak ellenőrzése",
|
||||
|
||||
"VTLANG_NORMAL_MODE": "Indítás normál módban",
|
||||
"VTLANG_WIMBOOT_MODE": "Indítás wimboot módban",
|
||||
"VTLANG_GRUB2_MODE": "Indítás grub2 módban",
|
||||
"VTLANG_MEMDISK_MODE": "Indítás memdisk módban",
|
||||
"VTLANG_MEMDISK_MODE": "Indítás memórialemez módban",
|
||||
|
||||
"VTLANG_RET_TO_LISTVIEW": "Vissza a Listanézethez",
|
||||
"VTLANG_RET_TO_TREEVIEW": "Vissza a Fanézethez",
|
||||
"VTLANG_RET_TO_LISTVIEW": "Vissza a listanézethez",
|
||||
"VTLANG_RET_TO_TREEVIEW": "Vissza a fanézethez",
|
||||
|
||||
"VTLANG_NO_AUTOINS_SCRIPT": "Indítás auto. telepítési sablon nélkül",
|
||||
"VTLANG_AUTOINS_USE": "Indítás ezzel",
|
||||
"VTLANG_NO_AUTOINS_SCRIPT": "Indítás automatikus telepítési sablon nélkül",
|
||||
"VTLANG_AUTOINS_USE": "Indítás ezzel:",
|
||||
|
||||
"VTLANG_NO_PERSIST": "Indítás perzisztencia nélkül",
|
||||
"VTLANG_PERSIST_USE": "Indítás ezzel",
|
||||
"VTLANG_NO_PERSIST": "Indítás állandóság nélkül",
|
||||
"VTLANG_PERSIST_USE": "Indítás ezzel:",
|
||||
|
||||
"VTLANG_BROWER_RETURN": "Vissza",
|
||||
|
||||
"VTLANG_ENTER_EXIT": "nyomja meg az Enter billentyűt a kilépéshez",
|
||||
"VTLANG_ENTER_REBOOT": "nyomja meg az Enter billentyűt az újraindításhoz",
|
||||
"VTLANG_ENTER_CONTINUE": "a folytatáshoz nyomja meg az Enter billentyűt",
|
||||
"VTLANG_ENTER_CONTINUE": "nyomja meg az Enter billentyűt a folytatáshoz",
|
||||
|
||||
"VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
|
||||
"VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11",
|
||||
"VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11",
|
||||
"VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
|
||||
"VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
|
||||
"VTLANG_CTRL_TEMP_SET": "Ideiglenes vezérlési beállítások",
|
||||
"VTLANG_WIN11_BYPASS_CHECK": "CPU/TPM/SecureBoot ellenőrzés megkerülése Windows 11 telepítésekor",
|
||||
"VTLANG_WIN11_BYPASS_NRO": "Internetes fiók követelményének megkerülése Windows 11 telepítésekor",
|
||||
"VTLANG_LINUX_REMOUNT": "Ventoy partíció csatolása a Linux indítása után",
|
||||
"VTLANG_SECONDARY_BOOT_MENU": "Másodlagos indítási menü megjelenítése",
|
||||
|
||||
"MENU_STR_XXX": ""
|
||||
}
|
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:VistaElenco F4:BootLocale F5:Strumenti F6:MenuEx",
|
||||
"VTLANG_STR_HOTKEY_TREE": "L:Lingua F1:Aiuto F2:Sfoglia F3:VistaStruttura F4:BootLocale F5:Strumenti F6:MenuEx",
|
||||
"VTLANG_RETURN_PREVIOUS": "Torna al menu precedente [Esc]",
|
||||
"VTLANG_RETURN_PRV_NOESC": "Torna al menu precedente",
|
||||
|
||||
"VTLANG_MENU_LANG": "Selezione lingua interfaccia",
|
||||
|
||||
"VTLANG_LB_SBOOT_WINDOWS": "Cerca e avvia Windows",
|
||||
"VTLANG_LB_SBOOT_G4D": "Cerca e avvia Grub4dos",
|
||||
"VTLANG_LB_SBOOT_HDD1": "Avvia il 1° disco locale",
|
||||
"VTLANG_LB_SBOOT_HDD2": "Avvia il 2° disco locale",
|
||||
"VTLANG_LB_SBOOT_HDD3": "Avvia il 3° disco locale",
|
||||
"VTLANG_LB_SBOOT_X64EFI": "Cerca e avvia BOOTX64.EFI",
|
||||
"VTLANG_LB_SBOOT_IA32EFI": "Cerca e avvia BOOTIA32.EFI",
|
||||
"VTLANG_LB_SBOOT_AA64EFI": "Cerca e avvia BOOTAA64.EFI",
|
||||
"VTLANG_LB_SBOOT_XORBOOT": "Cerca e avvia xorboot",
|
||||
|
||||
"VTLANG_FILE_CHKSUM": "File checksum",
|
||||
"VTLANG_CHKSUM_MD5_CALC": "Calcola md5sum",
|
||||
"VTLANG_CHKSUM_SHA1_CALC": "Calcola sha1sum",
|
||||
"VTLANG_CHKSUM_SHA256_CALC": "Calcola sha256sum",
|
||||
"VTLANG_CHKSUM_SHA512_CALC": "Calcola sha512sum",
|
||||
"VTLANG_CHKSUM_MD5_CALC_CHK": "Calcola e controlla md5sum",
|
||||
"VTLANG_CHKSUM_SHA1_CALC_CHK": "Calcola e controlla sha1sum",
|
||||
"VTLANG_CHKSUM_SHA256_CALC_CHK": "Calcola e controlla sha256sum",
|
||||
"VTLANG_CHKSUM_SHA512_CALC_CHK": "Calcola e controlla sha512sum",
|
||||
|
||||
"VTLANG_POWER": "Spegni il computer",
|
||||
"VTLANG_POWER_REBOOT": "Riavvia il computer",
|
||||
"VTLANG_POWER_HALT": "Arresta il computer",
|
||||
"VTLANG_POWER_BOOT_EFIFW": "Riavvia il computer nell'impostazione EFI",
|
||||
|
||||
"VTLANG_KEYBRD_LAYOUT": "Layout tastiera",
|
||||
"VTLANG_HWINFO": "Informazioni hardware computer",
|
||||
|
||||
"VTLANG_RESOLUTION_CFG": "Imposta risoluzione schermo",
|
||||
"VTLANG_SCREEN_MODE": "Modalità schermo (testo/grafica)",
|
||||
"VTLANG_SCREEN_TEXT_MODE": "Forza modalità testo schermo",
|
||||
"VTLANG_SCREEN_GUI_MODE": "Forza modalità grafica schermo",
|
||||
|
||||
"VTLANG_THEME_SELECT": "Seleziona tema interfaccia",
|
||||
|
||||
"VTLANG_UEFI_UTIL": "Utilità UEFI Ventoy",
|
||||
"VTLANG_UTIL_SHOW_EFI_DRV": "Visualizza driver EFI",
|
||||
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Correzione fallimento BlinitializeLibrary di Windows",
|
||||
|
||||
"VTLANG_JSON_CHK_JSON": "Modifica file .json plugin (ventoy.json)",
|
||||
"VTLANG_JSON_CHK_CONTROL": "Modifica controllo globale della configurazione dei plugin",
|
||||
"VTLANG_JSON_CHK_THEME": "Modifica tema configurazione dei plugin",
|
||||
"VTLANG_JSON_CHK_AUTOINS": "Modifica installazione automatica della configurazione dei plugin",
|
||||
"VTLANG_JSON_CHK_PERSIST": "Modifica persistenza della configurazione dei plugin",
|
||||
"VTLANG_JSON_CHK_MENU_ALIAS": "Modifica l'alias del menu della configurazione dei plugin",
|
||||
"VTLANG_JSON_CHK_MENU_TIP": "Modifica suggerimento del menu della configurazione dei plugin",
|
||||
"VTLANG_JSON_CHK_MENU_CLASS": "Modifica classe menu configurazione plugin",
|
||||
"VTLANG_JSON_CHK_INJECTION": "Modifica injection della configurazione plugin",
|
||||
"VTLANG_JSON_CHK_AUTO_MEMDISK": "Modifica memdisk automatico della configurazione dei plugin",
|
||||
"VTLANG_JSON_CHK_IMG_LIST": "Modifica elenco immagini configurazione plugin",
|
||||
"VTLANG_JSON_CHK_IMG_BLIST": "Modifica elenco immagini vietate configurazione plugin",
|
||||
"VTLANG_JSON_CHK_CONF_REPLACE": "Modifica sostituzione configurazione di avvio configurazione dei plugin",
|
||||
"VTLANG_JSON_CHK_DUD": "Modifica dud configurazione plugin",
|
||||
"VTLANG_JSON_CHK_PASSWORD": "Modifica password configurazione plugin",
|
||||
|
||||
"VTLANG_NORMAL_MODE": "Avvia in modalità normale",
|
||||
"VTLANG_WIMBOOT_MODE": "Avvia in modalità wimboot",
|
||||
"VTLANG_GRUB2_MODE": "Avvia in modalità grub2",
|
||||
"VTLANG_MEMDISK_MODE": "Avvia in modalità memdisk",
|
||||
|
||||
"VTLANG_RET_TO_LISTVIEW": "Torna alla VistaElenco",
|
||||
"VTLANG_RET_TO_TREEVIEW": "Torna alla VistaStruttura",
|
||||
|
||||
"VTLANG_NO_AUTOINS_SCRIPT": "Avvia senza il modello installazione automatica",
|
||||
"VTLANG_AUTOINS_USE": "Avvia con",
|
||||
|
||||
"VTLANG_NO_PERSIST": "Avvia senza persistenza",
|
||||
"VTLANG_PERSIST_USE": "Avvia con",
|
||||
|
||||
"VTLANG_BROWER_RETURN": "Indietro",
|
||||
|
||||
"VTLANG_ENTER_EXIT": "Premi il tasto 'Invio' per uscire",
|
||||
"VTLANG_ENTER_REBOOT": "Premi il tasto 'Invio' per riavviare",
|
||||
"VTLANG_ENTER_CONTINUE": "Premi il tasto 'Invio' per continuare",
|
||||
|
||||
"VTLANG_CTRL_TEMP_SET": "Impostazioni controllo temporaneo",
|
||||
"VTLANG_WIN11_BYPASS_CHECK": "Durante l'installazione di Windows 11 bypassa il controllo CPU/TPM/SecureBoot ",
|
||||
"VTLANG_WIN11_BYPASS_NRO": "Durante l'installazione di Windows 11 bypassa il requisito di un account online ",
|
||||
"VTLANG_LINUX_REMOUNT": "Dopo l'avvio di Linux monta la partizione Ventoy ",
|
||||
"VTLANG_SECONDARY_BOOT_MENU": "Visualizza menu di avvio secondario",
|
||||
|
||||
"MENU_STR_XXX": ""
|
||||
}
|
@@ -1,37 +1,37 @@
|
||||
{
|
||||
"VTLANG_LANGUAGE_NAME": "Korean (한국어)",
|
||||
|
||||
"VTLANG_STR_HOTKEY_LIST": "번역: 비너스걸 L:언어 F1:도움말 F2:찾아보기 F3:목록보기 F4:로컬부트 F5:도구 F6:확장메뉴",
|
||||
"VTLANG_STR_HOTKEY_TREE": "번역: 비너스걸 L:언어 F1:도움말 F2:찾아보기 F3:목록보기 F4:로컬부트 F5:도구 F6:확장메뉴",
|
||||
"VTLANG_STR_HOTKEY_LIST": " L:언어 F1:도움말 F2:찾아보기 F3:목록 보기 F4:로컬 부팅 F5:도구 F6:확장 메뉴",
|
||||
"VTLANG_STR_HOTKEY_TREE": " L:언어 F1:도움말 F2:찾아보기 F3:트리 보기 F4:로컬 부팅 F5:도구 F6:확장 메뉴",
|
||||
"VTLANG_RETURN_PREVIOUS": "이전 메뉴로 돌아가기 [Esc]",
|
||||
"VTLANG_RETURN_PRV_NOESC": "이전 메뉴로 돌아가기",
|
||||
|
||||
"VTLANG_MENU_LANG": "메뉴 언어 선택",
|
||||
|
||||
"VTLANG_LB_SBOOT_WINDOWS": "Windows 검색 및 부트",
|
||||
"VTLANG_LB_SBOOT_G4D": "Grub4dos 검색 및 부트",
|
||||
"VTLANG_LB_SBOOT_HDD1": "첫 번째 로컬 디스크 부트",
|
||||
"VTLANG_LB_SBOOT_HDD2": "두 번째 로컬 디스크 부트",
|
||||
"VTLANG_LB_SBOOT_HDD3": "세 번째 로컬 디스크 부트",
|
||||
"VTLANG_LB_SBOOT_X64EFI": "BOOTX64.EFI 검색 및 부트",
|
||||
"VTLANG_LB_SBOOT_IA32EFI": "BOOTIA32.EFI 검색 및 부트",
|
||||
"VTLANG_LB_SBOOT_AA64EFI": "BOOTAA64.EFI 검색 및 부트",
|
||||
"VTLANG_LB_SBOOT_XORBOOT": "xorboot 검색 및 부트",
|
||||
"VTLANG_LB_SBOOT_WINDOWS": "Windows 검색 및 부팅",
|
||||
"VTLANG_LB_SBOOT_G4D": "Grub4dos 검색 및 부팅",
|
||||
"VTLANG_LB_SBOOT_HDD1": "첫 번째 로컬 디스크 부팅",
|
||||
"VTLANG_LB_SBOOT_HDD2": "두 번째 로컬 디스크 부팅",
|
||||
"VTLANG_LB_SBOOT_HDD3": "세 번째 로컬 디스크 부팅",
|
||||
"VTLANG_LB_SBOOT_X64EFI": "BOOTX64.EFI 검색 및 부팅",
|
||||
"VTLANG_LB_SBOOT_IA32EFI": "BOOTIA32.EFI 검색 및 부팅",
|
||||
"VTLANG_LB_SBOOT_AA64EFI": "BOOTAA64.EFI 검색 및 부팅",
|
||||
"VTLANG_LB_SBOOT_XORBOOT": "xorboot 검색 및 부팅",
|
||||
|
||||
"VTLANG_FILE_CHKSUM": "파일 체크섬",
|
||||
"VTLANG_CHKSUM_MD5_CALC": "md5sum 계산",
|
||||
"VTLANG_CHKSUM_SHA1_CALC": "sha1sum 계산",
|
||||
"VTLANG_CHKSUM_SHA256_CALC": "sha256sum 계산",
|
||||
"VTLANG_CHKSUM_SHA512_CALC": "sha512sum 계산",
|
||||
"VTLANG_CHKSUM_MD5_CALC_CHK": "md5sum 계산 및 확인",
|
||||
"VTLANG_CHKSUM_SHA1_CALC_CHK": "sha1sum 계산 및 확인",
|
||||
"VTLANG_CHKSUM_SHA256_CALC_CHK": "sha256sum 계산 및 확인",
|
||||
"VTLANG_CHKSUM_SHA512_CALC_CHK": "sha512sum 계산 및 확인",
|
||||
"VTLANG_CHKSUM_MD5_CALC": "md5 검사값 계산",
|
||||
"VTLANG_CHKSUM_SHA1_CALC": "sha1 검사값 계산",
|
||||
"VTLANG_CHKSUM_SHA256_CALC": "sha256 검사값 계산",
|
||||
"VTLANG_CHKSUM_SHA512_CALC": "sha512 검사값 계산",
|
||||
"VTLANG_CHKSUM_MD5_CALC_CHK": "md5 검사값 계산 및 확인",
|
||||
"VTLANG_CHKSUM_SHA1_CALC_CHK": "sha1 검사값 계산 및 확인",
|
||||
"VTLANG_CHKSUM_SHA256_CALC_CHK": "sha256 검사값 계산 및 확인",
|
||||
"VTLANG_CHKSUM_SHA512_CALC_CHK": "sha512 검사값 계산 및 확인",
|
||||
|
||||
"VTLANG_POWER": "전원",
|
||||
"VTLANG_POWER_REBOOT": "다시 부트",
|
||||
"VTLANG_POWER_HALT": "끄기",
|
||||
"VTLANG_POWER_BOOT_EFIFW": "EFI 설정으로 재부트",
|
||||
"VTLANG_POWER_REBOOT": "다시 시작",
|
||||
"VTLANG_POWER_HALT": "전원 끄기",
|
||||
"VTLANG_POWER_BOOT_EFIFW": "UEFI 설정으로 다시 시작",
|
||||
|
||||
"VTLANG_KEYBRD_LAYOUT": "키보드 레이아웃",
|
||||
"VTLANG_HWINFO": "하드웨어 정보",
|
||||
@@ -44,14 +44,14 @@
|
||||
"VTLANG_THEME_SELECT": "테마 선택",
|
||||
|
||||
"VTLANG_UEFI_UTIL": "Ventoy UEFI 유틸리티",
|
||||
"VTLANG_UTIL_SHOW_EFI_DRV": "EFI 드라이버 표시",
|
||||
"VTLANG_UTIL_SHOW_EFI_DRV": "UEFI 드라이버 표시",
|
||||
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Windows 초기화 라이브러리 오류 복구",
|
||||
|
||||
"VTLANG_JSON_CHK_JSON": "플러그인 json 구성 확인 (ventoy.json)",
|
||||
"VTLANG_JSON_CHK_JSON": "플러그인 파일 구성 확인 (ventoy.json)",
|
||||
"VTLANG_JSON_CHK_CONTROL": "전역 제어 플러그인 구성 확인",
|
||||
"VTLANG_JSON_CHK_THEME": "테마 플러그인 구성 확인",
|
||||
"VTLANG_JSON_CHK_AUTOINS": "자동 설치 플러그인 구성 확인",
|
||||
"VTLANG_JSON_CHK_PERSIST": "지속성 플러그인 구성 확인",
|
||||
"VTLANG_JSON_CHK_PERSIST": "영구화 플러그인 구성 확인",
|
||||
"VTLANG_JSON_CHK_MENU_ALIAS": "메뉴 별칭 플러그인 구성 확인",
|
||||
"VTLANG_JSON_CHK_MENU_TIP": "메뉴 팁 플러그인 구성 확인",
|
||||
"VTLANG_JSON_CHK_MENU_CLASS": "메뉴 클래스 플러그인 구성 확인",
|
||||
@@ -60,34 +60,34 @@
|
||||
"VTLANG_JSON_CHK_IMG_LIST": "이미지 목록 플러그인 구성 확인",
|
||||
"VTLANG_JSON_CHK_IMG_BLIST": "이미지 블랙리스트 플러그인 구성 확인",
|
||||
"VTLANG_JSON_CHK_CONF_REPLACE": "부팅 구성 대체 플러그인 구성 확인",
|
||||
"VTLANG_JSON_CHK_DUD": "드라이버 디스크 업데이트 플러그인 구성 확인",
|
||||
"VTLANG_JSON_CHK_DUD": "드라이버 업데이트 디스크 플러그인 구성 확인",
|
||||
"VTLANG_JSON_CHK_PASSWORD": "암호 플러그인 구성 확인",
|
||||
|
||||
"VTLANG_NORMAL_MODE": "정상 모드로 부트",
|
||||
"VTLANG_WIMBOOT_MODE": "wimboot 모드로 부트",
|
||||
"VTLANG_NORMAL_MODE": "일반 모드로 부팅",
|
||||
"VTLANG_WIMBOOT_MODE": "wimboot 모드로 부팅",
|
||||
"VTLANG_GRUB2_MODE": "grub2 모드로 부팅",
|
||||
"VTLANG_MEMDISK_MODE": "memdisk 모드로 부트",
|
||||
"VTLANG_MEMDISK_MODE": "메모리 디스크 모드로 부팅",
|
||||
|
||||
"VTLANG_RET_TO_LISTVIEW": "목록 보기로 돌아가기",
|
||||
"VTLANG_RET_TO_TREEVIEW": "트리 보기로 돌아가기",
|
||||
"VTLANG_RET_TO_LISTVIEW": "목록보기로 돌아가기",
|
||||
"VTLANG_RET_TO_TREEVIEW": "트리보기로 돌아가기",
|
||||
|
||||
"VTLANG_NO_AUTOINS_SCRIPT": "자동 설치 템플릿 없이 부트",
|
||||
"VTLANG_NO_AUTOINS_SCRIPT": "자동 설치 스크립트 사용 안 함",
|
||||
"VTLANG_AUTOINS_USE": "부팅 대상",
|
||||
|
||||
"VTLANG_NO_PERSIST": "지속성 없는 부트",
|
||||
"VTLANG_PERSIST_USE": "부트 대상",
|
||||
"VTLANG_NO_PERSIST": "영구화된 데이터 파일 사용 안 함",
|
||||
"VTLANG_PERSIST_USE": "부팅 대상",
|
||||
|
||||
"VTLANG_BROWER_RETURN": "돌아가기",
|
||||
|
||||
"VTLANG_ENTER_EXIT": "Enter 키를 눌러 종료",
|
||||
"VTLANG_ENTER_REBOOT": "Enter 키를 눌러 재부팅",
|
||||
"VTLANG_ENTER_EXIT": "종료하려면 Enter 키를 누르십시오",
|
||||
"VTLANG_ENTER_REBOOT": "다시 시작하려면 Enter 키를 누르십시오",
|
||||
"VTLANG_ENTER_CONTINUE": "계속하려면 Enter 키를 누르십시오",
|
||||
|
||||
"VTLANG_CTRL_TEMP_SET": "임시 제어 설정",
|
||||
"VTLANG_WIN11_BYPASS_CHECK": "Windows 11을 설치할 때 우회 점검",
|
||||
"VTLANG_WIN11_BYPASS_NRO": "Windows 11 설치 시 온라인 계정 요구 사항 우회",
|
||||
"VTLANG_LINUX_REMOUNT": "Linux 부트 후 Ventoy 파티션 마운트",
|
||||
"VTLANG_SECONDARY_BOOT_MENU": "보조 부트 메뉴 표시",
|
||||
"VTLANG_WIN11_BYPASS_CHECK": "Windows 11 설치 시 CPU/TPM/SecureBoot 검사 회피",
|
||||
"VTLANG_WIN11_BYPASS_NRO": "Windows 11 설치 시 온라인 계정 요구 사항 무시",
|
||||
"VTLANG_LINUX_REMOUNT": "Linux 부팅 후 Ventoy 파티션 마운트",
|
||||
"VTLANG_SECONDARY_BOOT_MENU": "보조 부팅 메뉴 표시",
|
||||
|
||||
"MENU_STR_XXX": ""
|
||||
}
|
||||
|
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"VTLANG_LANGUAGE_NAME": "Polish (Poland)",
|
||||
|
||||
"VTLANG_STR_HOTKEY_LIST": "L:Język F1:Pomoc F2:Przeglądaj F3:ListView F4:Localboot F5:Narzędzia F6:ExMenu",
|
||||
"VTLANG_STR_HOTKEY_LIST": "L:Język F1:Pomoc F2:Przeglądaj F3:Widok listy F4:Localboot F5:Narzędzia F6:ExMenu",
|
||||
"VTLANG_STR_HOTKEY_TREE": "L:Język F1:Pomoc F2:Przeglądaj F3:Widok drzewa F4:Localboot F5:Narzędzia F6:ExMenu",
|
||||
"VTLANG_RETURN_PREVIOUS": "Powrót do poprzedniego menu [Esc]",
|
||||
"VTLANG_RETURN_PRV_NOESC": "Powrót do poprzedniego menu",
|
||||
|
||||
"VTLANG_MENU_LANG": "Wybór języka menu",
|
||||
"VTLANG_MENU_LANG": "Wybierz język menu",
|
||||
|
||||
"VTLANG_LB_SBOOT_WINDOWS": "Wyszukaj i uruchom system Windows",
|
||||
"VTLANG_LB_SBOOT_WINDOWS": "Wyszukaj i uruchom Windows",
|
||||
"VTLANG_LB_SBOOT_G4D": "Wyszukaj i uruchom Grub4dos",
|
||||
"VTLANG_LB_SBOOT_HDD1": "Uruchom pierwszy dysk lokalny",
|
||||
"VTLANG_LB_SBOOT_HDD2": "Uruchom drugi dysk lokalny",
|
||||
@@ -28,10 +28,10 @@
|
||||
"VTLANG_CHKSUM_SHA256_CALC_CHK": "Oblicz i sprawdź sumę sha256",
|
||||
"VTLANG_CHKSUM_SHA512_CALC_CHK": "Oblicz i sprawdź sumę sha512",
|
||||
|
||||
"VTLANG_POWER": "Moc",
|
||||
"VTLANG_POWER": "Zasilanie",
|
||||
"VTLANG_POWER_REBOOT": "Uruchom ponownie",
|
||||
"VTLANG_POWER_HALT": "Zatrzymanie",
|
||||
"VTLANG_POWER_BOOT_EFIFW": "Uruchom ponownie do konfiguracji EFI",
|
||||
"VTLANG_POWER_HALT": "Zakończ",
|
||||
"VTLANG_POWER_BOOT_EFIFW": "Uruchom ponownie i przejdź do konfiguracji EFI",
|
||||
|
||||
"VTLANG_KEYBRD_LAYOUT": "Układy klawiatury",
|
||||
"VTLANG_HWINFO": "Informacje o sprzęcie",
|
||||
@@ -43,23 +43,23 @@
|
||||
|
||||
"VTLANG_THEME_SELECT": "Wybór motywu",
|
||||
|
||||
"VTLANG_UEFI_UTIL": "Ventoy UEFI Utilities",
|
||||
"VTLANG_UEFI_UTIL": "Narzędzia UEFI Ventoy",
|
||||
"VTLANG_UTIL_SHOW_EFI_DRV": "Pokaż sterowniki EFI",
|
||||
"VTLANG_UTIL_FIX_BLINIT_FAIL": "Napraw błąd BlinitializeLibrary systemu Windows",
|
||||
|
||||
"VTLANG_JSON_CHK_JSON": "Sprawdź konfigurację wtyczki json (ventoy.json)",
|
||||
"VTLANG_JSON_CHK_CONTROL": "Sprawdź konfigurację wtyczki globalnej kontroli",
|
||||
"VTLANG_JSON_CHK_THEME": "Sprawdź konfigurację wtyczki motywu",
|
||||
"VTLANG_JSON_CHK_AUTOINS": "Sprawdź konfigurację automatycznej instalacji wtyczki",
|
||||
"VTLANG_JSON_CHK_AUTOINS": "Sprawdź konfigurację wtyczki automatycznej instalacji",
|
||||
"VTLANG_JSON_CHK_PERSIST": "Sprawdź konfigurację wtyczki trwałości",
|
||||
"VTLANG_JSON_CHK_MENU_ALIAS": "Sprawdź konfigurację wtyczek aliasów menu",
|
||||
"VTLANG_JSON_CHK_MENU_TIP": "Sprawdź konfigurację wtyczki podpowiedzi menu",
|
||||
"VTLANG_JSON_CHK_MENU_CLASS": "Sprawdź konfigurację wtyczki klasy menu",
|
||||
"VTLANG_JSON_CHK_INJECTION": "Sprawdź konfigurację wtyczki wtrysku",
|
||||
"VTLANG_JSON_CHK_INJECTION": "Sprawdź konfigurację wtyczki wstrzykiwania",
|
||||
"VTLANG_JSON_CHK_AUTO_MEMDISK": "Sprawdź automatyczną konfigurację wtyczki memdisk",
|
||||
"VTLANG_JSON_CHK_IMG_LIST": "Sprawdź konfigurację wtyczki listy obrazów",
|
||||
"VTLANG_JSON_CHK_IMG_BLIST": "Sprawdź konfigurację wtyczki czarnej listy obrazów",
|
||||
"VTLANG_JSON_CHK_CONF_REPLACE": "Sprawdź konfigurację bootowania zamień konfigurację wtyczki",
|
||||
"VTLANG_JSON_CHK_CONF_REPLACE": "Sprawdź konfigurację wtyczki zastępującej konfigurację bootowania",
|
||||
"VTLANG_JSON_CHK_DUD": "Sprawdź konfigurację wtyczki dud",
|
||||
"VTLANG_JSON_CHK_PASSWORD": "Sprawdź konfigurację wtyczki hasła",
|
||||
|
||||
@@ -69,12 +69,12 @@
|
||||
"VTLANG_MEMDISK_MODE": "Uruchom w trybie memdisk",
|
||||
|
||||
"VTLANG_RET_TO_LISTVIEW": "Powrót do widoku listy",
|
||||
"VTLANG_RET_TO_TREEVIEW": "Powrót do TreeView",
|
||||
"VTLANG_RET_TO_TREEVIEW": "Powrót do widoku drzewa",
|
||||
|
||||
"VTLANG_NO_AUTOINS_SCRIPT": "Uruchom bez szablonu automatycznej instalacji",
|
||||
"VTLANG_AUTOINS_USE": "Uruchom z",
|
||||
|
||||
"VTLANG_NO_PERSIST": "Uruchom bez trwałości",
|
||||
"VTLANG_NO_PERSIST": "Uruchom bez zachowania",
|
||||
"VTLANG_PERSIST_USE": "Uruchom z",
|
||||
|
||||
"VTLANG_BROWER_RETURN": "Powrót",
|
||||
@@ -83,11 +83,11 @@
|
||||
"VTLANG_ENTER_REBOOT": "naciśnij klawisz Enter, aby ponownie uruchomić",
|
||||
"VTLANG_ENTER_CONTINUE": "naciśnij klawisz Enter, aby kontynuować",
|
||||
|
||||
"VTLANG_CTRL_TEMP_SET": "Temporary Control Settings",
|
||||
"VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11",
|
||||
"VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11",
|
||||
"VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux",
|
||||
"VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu",
|
||||
"VTLANG_CTRL_TEMP_SET": "Tymczasowe ustawienia kontroli",
|
||||
"VTLANG_WIN11_BYPASS_CHECK": "Pominięcie kontroli CPU/TPM/SecureBoot podczas instalacji Windows 11",
|
||||
"VTLANG_WIN11_BYPASS_NRO": "Pominięcie wymogu posiadania konta online podczas instalacji systemu Windows 11",
|
||||
"VTLANG_LINUX_REMOUNT": "Zamontuj partycję Ventoy po starcie Linuksa",
|
||||
"VTLANG_SECONDARY_BOOT_MENU": "Pokaż dodatkowe menu startowe",
|
||||
|
||||
"MENU_STR_XXX": ""
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user