mirror of
https://github.com/ventoy/Ventoy.git
synced 2025-09-20 10:51:13 +00:00
Compare commits
37 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
7715bd705c | ||
|
042ca4b5e3 | ||
|
e1099e1e5b | ||
|
c6be35f2c0 | ||
|
b15a96b747 | ||
|
6bd0463d34 | ||
|
1ce568d971 | ||
|
f82475d950 | ||
|
aad154616c | ||
|
83c3a932d3 | ||
|
0aff8f5109 | ||
|
2750f0c5a7 | ||
|
f71a1fcce9 | ||
|
e252fab9a4 | ||
|
37212a8ea4 | ||
|
e71221cdba | ||
|
65a2cb1685 | ||
|
e23e76f54e | ||
|
8ded032c92 | ||
|
fc5cd0a00a | ||
|
6cc400b8d4 | ||
|
ffc915ca53 | ||
|
8ebe972f6e | ||
|
39975dd1c3 | ||
|
1a648d8689 | ||
|
8234961228 | ||
|
e1ffbad431 | ||
|
4a66104c6e | ||
|
32bcd8f87b | ||
|
26c1756e8d | ||
|
f4bbec65ba | ||
|
58d387f732 | ||
|
2e10aabe94 | ||
|
a63a41f79d | ||
|
64748308a3 | ||
|
33cc1e271a | ||
|
291e0a3a38 |
@@ -438,6 +438,8 @@ EFI_STATUS EFIAPI ventoy_block_io_read
|
|||||||
UINT32 j = 0;
|
UINT32 j = 0;
|
||||||
UINT32 lbacount = 0;
|
UINT32 lbacount = 0;
|
||||||
UINT32 secNum = 0;
|
UINT32 secNum = 0;
|
||||||
|
UINT32 TmpNum = 0;
|
||||||
|
UINT64 VirtSec = 0;
|
||||||
UINT64 offset = 0;
|
UINT64 offset = 0;
|
||||||
EFI_LBA curlba = 0;
|
EFI_LBA curlba = 0;
|
||||||
EFI_LBA lastlba = 0;
|
EFI_LBA lastlba = 0;
|
||||||
@@ -461,6 +463,26 @@ EFI_STATUS EFIAPI ventoy_block_io_read
|
|||||||
{
|
{
|
||||||
return ventoy_read_iso_sector(Lba, secNum, Buffer);
|
return ventoy_read_iso_sector(Lba, secNum, Buffer);
|
||||||
}
|
}
|
||||||
|
else if (offset < g_chain->real_img_size_in_bytes)
|
||||||
|
{
|
||||||
|
TmpNum = (g_chain->real_img_size_in_bytes - offset) / 2048;
|
||||||
|
ventoy_read_iso_sector(Lba, TmpNum, Buffer);
|
||||||
|
|
||||||
|
Lba += TmpNum;
|
||||||
|
secNum -= TmpNum;
|
||||||
|
Buffer = (UINT8 *)Buffer + (g_chain->real_img_size_in_bytes - offset);
|
||||||
|
offset = Lba * 2048;
|
||||||
|
}
|
||||||
|
|
||||||
|
VirtSec = g_chain->virt_img_size_in_bytes / 2048;
|
||||||
|
if (Lba >= VirtSec)
|
||||||
|
{
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
else if (Lba + secNum > VirtSec)
|
||||||
|
{
|
||||||
|
secNum = VirtSec - Lba;
|
||||||
|
}
|
||||||
|
|
||||||
if (secNum > g_sector_flag_num)
|
if (secNum > g_sector_flag_num)
|
||||||
{
|
{
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
extern int g_ventoy_memdisk_mode;
|
extern int g_ventoy_memdisk_mode;
|
||||||
extern int g_ventoy_iso_raw;
|
extern int g_ventoy_iso_raw;
|
||||||
|
extern int g_ventoy_grub2_mode;
|
||||||
extern int g_ventoy_iso_uefi_drv;
|
extern int g_ventoy_iso_uefi_drv;
|
||||||
|
|
||||||
static const char *align_options[] =
|
static const char *align_options[] =
|
||||||
@@ -205,6 +206,9 @@ label_set_property (void *vself, const char *name, const char *value)
|
|||||||
else if (grub_strcmp (value, "@VTOY_ISO_RAW@") == 0) {
|
else if (grub_strcmp (value, "@VTOY_ISO_RAW@") == 0) {
|
||||||
value = g_ventoy_iso_raw ? grub_env_get("VTOY_ISO_RAW_STR") : " ";
|
value = g_ventoy_iso_raw ? grub_env_get("VTOY_ISO_RAW_STR") : " ";
|
||||||
}
|
}
|
||||||
|
else if (grub_strcmp (value, "@VTOY_GRUB2_MODE@") == 0) {
|
||||||
|
value = g_ventoy_grub2_mode ? grub_env_get("VTOY_GRUB2_MODE_STR") : " ";
|
||||||
|
}
|
||||||
else if (grub_strcmp (value, "@VTOY_ISO_UEFI_DRV@") == 0) {
|
else if (grub_strcmp (value, "@VTOY_ISO_UEFI_DRV@") == 0) {
|
||||||
value = g_ventoy_iso_uefi_drv ? grub_env_get("VTOY_ISO_UEFI_DRV_STR") : " ";
|
value = g_ventoy_iso_uefi_drv ? grub_env_get("VTOY_ISO_UEFI_DRV_STR") : " ";
|
||||||
}
|
}
|
||||||
|
@@ -37,11 +37,13 @@
|
|||||||
int g_ventoy_menu_refresh = 0;
|
int g_ventoy_menu_refresh = 0;
|
||||||
int g_ventoy_memdisk_mode = 0;
|
int g_ventoy_memdisk_mode = 0;
|
||||||
int g_ventoy_iso_raw = 0;
|
int g_ventoy_iso_raw = 0;
|
||||||
|
int g_ventoy_grub2_mode = 0;
|
||||||
int g_ventoy_iso_uefi_drv = 0;
|
int g_ventoy_iso_uefi_drv = 0;
|
||||||
int g_ventoy_last_entry = -1;
|
int g_ventoy_last_entry = -1;
|
||||||
int g_ventoy_suppress_esc = 0;
|
int g_ventoy_suppress_esc = 0;
|
||||||
int g_ventoy_menu_esc = 0;
|
int g_ventoy_menu_esc = 0;
|
||||||
int g_ventoy_fn_mutex = 0;
|
int g_ventoy_fn_mutex = 0;
|
||||||
|
int g_ventoy_terminal_output = 0;
|
||||||
|
|
||||||
/* Time to delay after displaying an error message about a default/fallback
|
/* Time to delay after displaying an error message about a default/fallback
|
||||||
entry failing to boot. */
|
entry failing to boot. */
|
||||||
@@ -871,15 +873,18 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GRUB_TERM_KEY_F7:
|
case GRUB_TERM_KEY_F7:
|
||||||
case '7':
|
menu_fini ();
|
||||||
cmdstr = grub_env_get("VTOY_F7_CMD");
|
if (g_ventoy_terminal_output == 0)
|
||||||
if (cmdstr)
|
|
||||||
{
|
{
|
||||||
menu_fini ();
|
grub_script_execute_sourcecode("terminal_output console");
|
||||||
grub_script_execute_sourcecode(cmdstr);
|
g_ventoy_terminal_output = 1;
|
||||||
goto refresh;
|
|
||||||
}
|
}
|
||||||
break;
|
else
|
||||||
|
{
|
||||||
|
grub_script_execute_sourcecode("terminal_output gfxterm");
|
||||||
|
g_ventoy_terminal_output = 0;
|
||||||
|
}
|
||||||
|
goto refresh;
|
||||||
case GRUB_TERM_KEY_F1:
|
case GRUB_TERM_KEY_F1:
|
||||||
case '1':
|
case '1':
|
||||||
menu_fini ();
|
menu_fini ();
|
||||||
@@ -893,6 +898,12 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot)
|
|||||||
g_ventoy_menu_refresh = 1;
|
g_ventoy_menu_refresh = 1;
|
||||||
goto refresh;
|
goto refresh;
|
||||||
|
|
||||||
|
case (GRUB_TERM_CTRL | 'r'):
|
||||||
|
menu_fini ();
|
||||||
|
g_ventoy_grub2_mode = 1 - g_ventoy_grub2_mode;
|
||||||
|
g_ventoy_menu_refresh = 1;
|
||||||
|
goto refresh;
|
||||||
|
|
||||||
case (GRUB_TERM_CTRL | 'u'):
|
case (GRUB_TERM_CTRL | 'u'):
|
||||||
menu_fini ();
|
menu_fini ();
|
||||||
g_ventoy_iso_uefi_drv = 1 - g_ventoy_iso_uefi_drv;
|
g_ventoy_iso_uefi_drv = 1 - g_ventoy_iso_uefi_drv;
|
||||||
|
795
GRUB2/MOD_SRC/grub-2.04/grub-core/term/keyboard_layout.c
Normal file
795
GRUB2/MOD_SRC/grub-2.04/grub-core/term/keyboard_layout.c
Normal file
@@ -0,0 +1,795 @@
|
|||||||
|
|
||||||
|
#define ventoy_keyboard_set_layout(name) if (grub_strcmp(layout, #name) == 0) return ventoy_keyboard_layout_##name()
|
||||||
|
|
||||||
|
static void ventoy_keyboard_layout_QWERTY_USA(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_disable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_AZERTY(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("a", "q");
|
||||||
|
grub_keymap_add_by_string("A", "Q");
|
||||||
|
grub_keymap_add_by_string("z", "w");
|
||||||
|
grub_keymap_add_by_string("Z", "W");
|
||||||
|
grub_keymap_add_by_string("q", "a");
|
||||||
|
grub_keymap_add_by_string("Q", "A");
|
||||||
|
grub_keymap_add_by_string("m", "semicolon");
|
||||||
|
grub_keymap_add_by_string("M", "colon");
|
||||||
|
grub_keymap_add_by_string("w", "z");
|
||||||
|
grub_keymap_add_by_string("W", "Z");
|
||||||
|
grub_keymap_add_by_string("comma", "m");
|
||||||
|
grub_keymap_add_by_string("question", "M");
|
||||||
|
grub_keymap_add_by_string("semicolon", "comma");
|
||||||
|
grub_keymap_add_by_string("period", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "period");
|
||||||
|
grub_keymap_add_by_string("slash", "greater");
|
||||||
|
grub_keymap_add_by_string("exclam", "slash");
|
||||||
|
grub_keymap_add_by_string("dollar", "bracketright");
|
||||||
|
grub_keymap_add_by_string("asterisk", "backslash");
|
||||||
|
grub_keymap_add_by_string("percent", "doublequote");
|
||||||
|
grub_keymap_add_by_string("ampersand", "1");
|
||||||
|
grub_keymap_add_by_string("1", "exclam");
|
||||||
|
grub_keymap_add_by_string("tilde", "2");
|
||||||
|
grub_keymap_add_by_string("2", "at");
|
||||||
|
grub_keymap_add_by_string("doublequote", "3");
|
||||||
|
grub_keymap_add_by_string("3", "numbersign");
|
||||||
|
grub_keymap_add_by_string("quote", "4");
|
||||||
|
grub_keymap_add_by_string("4", "dollar");
|
||||||
|
grub_keymap_add_by_string("parenleft", "5");
|
||||||
|
grub_keymap_add_by_string("5", "percent");
|
||||||
|
grub_keymap_add_by_string("minus", "6");
|
||||||
|
grub_keymap_add_by_string("6", "caret");
|
||||||
|
grub_keymap_add_by_string("backquote", "7");
|
||||||
|
grub_keymap_add_by_string("7", "ampersand");
|
||||||
|
grub_keymap_add_by_string("underscore", "8");
|
||||||
|
grub_keymap_add_by_string("8", "asterisk");
|
||||||
|
grub_keymap_add_by_string("caret", "9");
|
||||||
|
grub_keymap_add_by_string("9", "parenleft");
|
||||||
|
grub_keymap_add_by_string("at", "0");
|
||||||
|
grub_keymap_add_by_string("0", "parenright");
|
||||||
|
grub_keymap_add_by_string("parenright", "minus");
|
||||||
|
grub_keymap_add_by_string("less", "backquote");
|
||||||
|
grub_keymap_add_by_string("greater", "tilde");
|
||||||
|
grub_keymap_add_by_string("numbersign", "braceright");
|
||||||
|
grub_keymap_add_by_string("backslash", "question");
|
||||||
|
grub_keymap_add_by_string("bracketright", "braceleft");
|
||||||
|
grub_keymap_add_by_string("braceleft", "quote");
|
||||||
|
grub_keymap_add_by_string("braceright", "underscore");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_CZECH_QWERTY(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("semicolon", "backquote");
|
||||||
|
grub_keymap_add_by_string("plus", "1");
|
||||||
|
grub_keymap_add_by_string("equal", "minus");
|
||||||
|
grub_keymap_add_by_string("quote", "equal");
|
||||||
|
grub_keymap_add_by_string("parenright", "bracketright");
|
||||||
|
grub_keymap_add_by_string("doublequote", "backslash");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("1", "exclam");
|
||||||
|
grub_keymap_add_by_string("2", "at");
|
||||||
|
grub_keymap_add_by_string("3", "numbersign");
|
||||||
|
grub_keymap_add_by_string("4", "dollar");
|
||||||
|
grub_keymap_add_by_string("5", "percent");
|
||||||
|
grub_keymap_add_by_string("6", "caret");
|
||||||
|
grub_keymap_add_by_string("7", "ampersand");
|
||||||
|
grub_keymap_add_by_string("8", "asterisk");
|
||||||
|
grub_keymap_add_by_string("9", "parenleft");
|
||||||
|
grub_keymap_add_by_string("0", "parenright");
|
||||||
|
grub_keymap_add_by_string("percent", "underscore");
|
||||||
|
grub_keymap_add_by_string("slash", "braceleft");
|
||||||
|
grub_keymap_add_by_string("parenleft", "braceright");
|
||||||
|
grub_keymap_add_by_string("doublequote", "colon");
|
||||||
|
grub_keymap_add_by_string("exclam", "doublequote");
|
||||||
|
grub_keymap_add_by_string("quote", "bar");
|
||||||
|
grub_keymap_add_by_string("question", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("backquote", "Abackquote");
|
||||||
|
grub_keymap_add_by_string("exclam", "A1");
|
||||||
|
grub_keymap_add_by_string("at", "A2");
|
||||||
|
grub_keymap_add_by_string("numbersign", "A3");
|
||||||
|
grub_keymap_add_by_string("dollar", "A4");
|
||||||
|
grub_keymap_add_by_string("percent", "A5");
|
||||||
|
grub_keymap_add_by_string("caret", "A6");
|
||||||
|
grub_keymap_add_by_string("ampersand", "A7");
|
||||||
|
grub_keymap_add_by_string("asterisk", "A8");
|
||||||
|
grub_keymap_add_by_string("parenleft", "A9");
|
||||||
|
grub_keymap_add_by_string("parenright", "A0");
|
||||||
|
grub_keymap_add_by_string("minus", "Aminus");
|
||||||
|
grub_keymap_add_by_string("equal", "Aequal");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "Abracketleft");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Abracketright");
|
||||||
|
grub_keymap_add_by_string("semicolon", "Asemicolon");
|
||||||
|
grub_keymap_add_by_string("backslash", "Abackslash");
|
||||||
|
grub_keymap_add_by_string("less", "Acomma");
|
||||||
|
grub_keymap_add_by_string("greater", "Aperiod");
|
||||||
|
grub_keymap_add_by_string("slash", "Aslash");
|
||||||
|
grub_keymap_add_by_string("tilde", "Atilde");
|
||||||
|
grub_keymap_add_by_string("underscore", "Aunderscore");
|
||||||
|
grub_keymap_add_by_string("plus", "Aplus");
|
||||||
|
grub_keymap_add_by_string("braceleft", "Abraceleft");
|
||||||
|
grub_keymap_add_by_string("braceright", "Abraceright");
|
||||||
|
grub_keymap_add_by_string("caret", "Adoublequote");
|
||||||
|
grub_keymap_add_by_string("colon", "Acolon");
|
||||||
|
grub_keymap_add_by_string("question", "Aquestion");
|
||||||
|
grub_keymap_add_by_string("bar", "Abar");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_CZECH_QWERTZ(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("y", "z");
|
||||||
|
grub_keymap_add_by_string("z", "y");
|
||||||
|
grub_keymap_add_by_string("Y", "Z");
|
||||||
|
grub_keymap_add_by_string("Z", "Y");
|
||||||
|
grub_keymap_add_by_string("semicolon", "backquote");
|
||||||
|
grub_keymap_add_by_string("plus", "1");
|
||||||
|
grub_keymap_add_by_string("equal", "minus");
|
||||||
|
grub_keymap_add_by_string("quote", "equal");
|
||||||
|
grub_keymap_add_by_string("parenright", "bracketright");
|
||||||
|
grub_keymap_add_by_string("doublequote", "backslash");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("1", "exclam");
|
||||||
|
grub_keymap_add_by_string("2", "at");
|
||||||
|
grub_keymap_add_by_string("3", "numbersign");
|
||||||
|
grub_keymap_add_by_string("4", "dollar");
|
||||||
|
grub_keymap_add_by_string("5", "percent");
|
||||||
|
grub_keymap_add_by_string("6", "caret");
|
||||||
|
grub_keymap_add_by_string("7", "ampersand");
|
||||||
|
grub_keymap_add_by_string("8", "asterisk");
|
||||||
|
grub_keymap_add_by_string("9", "parenleft");
|
||||||
|
grub_keymap_add_by_string("0", "parenright");
|
||||||
|
grub_keymap_add_by_string("percent", "underscore");
|
||||||
|
grub_keymap_add_by_string("slash", "braceleft");
|
||||||
|
grub_keymap_add_by_string("parenleft", "braceright");
|
||||||
|
grub_keymap_add_by_string("doublequote", "colon");
|
||||||
|
grub_keymap_add_by_string("exclam", "doublequote");
|
||||||
|
grub_keymap_add_by_string("quote", "bar");
|
||||||
|
grub_keymap_add_by_string("question", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("tilde", "A1");
|
||||||
|
grub_keymap_add_by_string("caret", "A3");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aq");
|
||||||
|
grub_keymap_add_by_string("bar", "Aw");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "Af");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Ag");
|
||||||
|
grub_keymap_add_by_string("dollar", "Asemicolon");
|
||||||
|
grub_keymap_add_by_string("numbersign", "Ax");
|
||||||
|
grub_keymap_add_by_string("ampersand", "Ac");
|
||||||
|
grub_keymap_add_by_string("at", "Av");
|
||||||
|
grub_keymap_add_by_string("braceleft", "Ab");
|
||||||
|
grub_keymap_add_by_string("braceright", "An");
|
||||||
|
grub_keymap_add_by_string("less", "Acomma");
|
||||||
|
grub_keymap_add_by_string("greater", "Aperiod");
|
||||||
|
grub_keymap_add_by_string("asterisk", "Aslash");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_DANISH(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("plus", "minus");
|
||||||
|
grub_keymap_add_by_string("quote", "equal");
|
||||||
|
grub_keymap_add_by_string("doublequote", "bracketright");
|
||||||
|
grub_keymap_add_by_string("quote", "backslash");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("caret", "braceright");
|
||||||
|
grub_keymap_add_by_string("asterisk", "bar");
|
||||||
|
grub_keymap_add_by_string("backquote", "plus");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("bar", "Atilde");
|
||||||
|
grub_keymap_add_by_string("backslash", "Abackquote");
|
||||||
|
grub_keymap_add_by_string("greater", "tilde");
|
||||||
|
grub_keymap_add_by_string("at", "A2");
|
||||||
|
grub_keymap_add_by_string("dollar", "A4");
|
||||||
|
grub_keymap_add_by_string("braceleft", "A7");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "A8");
|
||||||
|
grub_keymap_add_by_string("bracketright", "A9");
|
||||||
|
grub_keymap_add_by_string("braceright", "A0");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aminus");
|
||||||
|
grub_keymap_add_by_string("less", "quote");
|
||||||
|
grub_keymap_add_by_string("greater", "doublequote");
|
||||||
|
grub_keymap_add_by_string("tilde", "Abracketright");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_DVORAK_USA(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("[", "minus");
|
||||||
|
grub_keymap_add_by_string("braceleft", "underscore");
|
||||||
|
grub_keymap_add_by_string("quote", "q");
|
||||||
|
grub_keymap_add_by_string("doublequote", "Q");
|
||||||
|
grub_keymap_add_by_string("comma", "w");
|
||||||
|
grub_keymap_add_by_string("less", "W");
|
||||||
|
grub_keymap_add_by_string("s", "semicolon");
|
||||||
|
grub_keymap_add_by_string("S", "colon");
|
||||||
|
grub_keymap_add_by_string("semicolon", "z");
|
||||||
|
grub_keymap_add_by_string("colon", "Z");
|
||||||
|
grub_keymap_add_by_string("w", "comma");
|
||||||
|
grub_keymap_add_by_string("W", "less");
|
||||||
|
grub_keymap_add_by_string("v", "period");
|
||||||
|
grub_keymap_add_by_string("z", "greater");
|
||||||
|
grub_keymap_add_by_string("z", "slash");
|
||||||
|
grub_keymap_add_by_string("equal", "bracketright");
|
||||||
|
grub_keymap_add_by_string("backslash", "backslash");
|
||||||
|
grub_keymap_add_by_string("underscore", "doublequote");
|
||||||
|
grub_keymap_add_by_string("quote", "q");
|
||||||
|
grub_keymap_add_by_string("doublequote", "Q");
|
||||||
|
grub_keymap_add_by_string("comma", "w");
|
||||||
|
grub_keymap_add_by_string("less", "W");
|
||||||
|
grub_keymap_add_by_string("period", "e");
|
||||||
|
grub_keymap_add_by_string("greater", "E");
|
||||||
|
grub_keymap_add_by_string("p", "r");
|
||||||
|
grub_keymap_add_by_string("P", "R");
|
||||||
|
grub_keymap_add_by_string("y", "t");
|
||||||
|
grub_keymap_add_by_string("Y", "T");
|
||||||
|
grub_keymap_add_by_string("f", "y");
|
||||||
|
grub_keymap_add_by_string("F", "Y");
|
||||||
|
grub_keymap_add_by_string("g", "u");
|
||||||
|
grub_keymap_add_by_string("G", "U");
|
||||||
|
grub_keymap_add_by_string("c", "c");
|
||||||
|
grub_keymap_add_by_string("C", "I");
|
||||||
|
grub_keymap_add_by_string("r", "o");
|
||||||
|
grub_keymap_add_by_string("R", "O");
|
||||||
|
grub_keymap_add_by_string("l", "p");
|
||||||
|
grub_keymap_add_by_string("L", "P");
|
||||||
|
grub_keymap_add_by_string("bracketright", "equal");
|
||||||
|
grub_keymap_add_by_string("braceright", "plus");
|
||||||
|
grub_keymap_add_by_string("a", "a");
|
||||||
|
grub_keymap_add_by_string("A", "A");
|
||||||
|
grub_keymap_add_by_string("o", "s");
|
||||||
|
grub_keymap_add_by_string("O", "S");
|
||||||
|
grub_keymap_add_by_string("e", "d");
|
||||||
|
grub_keymap_add_by_string("E", "D");
|
||||||
|
grub_keymap_add_by_string("u", "f");
|
||||||
|
grub_keymap_add_by_string("U", "F");
|
||||||
|
grub_keymap_add_by_string("i", "g");
|
||||||
|
grub_keymap_add_by_string("I", "G");
|
||||||
|
grub_keymap_add_by_string("d", "h");
|
||||||
|
grub_keymap_add_by_string("D", "H");
|
||||||
|
grub_keymap_add_by_string("h", "j");
|
||||||
|
grub_keymap_add_by_string("H", "J");
|
||||||
|
grub_keymap_add_by_string("t", "k");
|
||||||
|
grub_keymap_add_by_string("T", "K");
|
||||||
|
grub_keymap_add_by_string("n", "l");
|
||||||
|
grub_keymap_add_by_string("N", "L");
|
||||||
|
grub_keymap_add_by_string("s", "semicolon");
|
||||||
|
grub_keymap_add_by_string("S", "colon");
|
||||||
|
grub_keymap_add_by_string("minus", "quote");
|
||||||
|
grub_keymap_add_by_string("underscore", "doublequote");
|
||||||
|
grub_keymap_add_by_string("semicolon", "z");
|
||||||
|
grub_keymap_add_by_string("colon", "Z");
|
||||||
|
grub_keymap_add_by_string("q", "x");
|
||||||
|
grub_keymap_add_by_string("Q", "X");
|
||||||
|
grub_keymap_add_by_string("j", "c");
|
||||||
|
grub_keymap_add_by_string("J", "C");
|
||||||
|
grub_keymap_add_by_string("k", "v");
|
||||||
|
grub_keymap_add_by_string("K", "V");
|
||||||
|
grub_keymap_add_by_string("x", "b");
|
||||||
|
grub_keymap_add_by_string("X", "B");
|
||||||
|
grub_keymap_add_by_string("b", "n");
|
||||||
|
grub_keymap_add_by_string("B", "N");
|
||||||
|
grub_keymap_add_by_string("w", "comma");
|
||||||
|
grub_keymap_add_by_string("W", "less");
|
||||||
|
grub_keymap_add_by_string("v", "period");
|
||||||
|
grub_keymap_add_by_string("V", "greater");
|
||||||
|
grub_keymap_add_by_string("z", "slash");
|
||||||
|
grub_keymap_add_by_string("Z", "question");
|
||||||
|
grub_keymap_add_by_string("slash", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("question", "braceleft");
|
||||||
|
grub_keymap_add_by_string("equal", "bracketright");
|
||||||
|
grub_keymap_add_by_string("plus", "braceright");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_FRENCH(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("less", "backquote");
|
||||||
|
grub_keymap_add_by_string("greater", "tilde");
|
||||||
|
grub_keymap_add_by_string("ampersand", "1");
|
||||||
|
grub_keymap_add_by_string("1", "exclam");
|
||||||
|
grub_keymap_add_by_string("tilde", "2");
|
||||||
|
grub_keymap_add_by_string("2", "at");
|
||||||
|
grub_keymap_add_by_string("doublequote", "3");
|
||||||
|
grub_keymap_add_by_string("3", "numbersign");
|
||||||
|
grub_keymap_add_by_string("quote", "4");
|
||||||
|
grub_keymap_add_by_string("4", "dollar");
|
||||||
|
grub_keymap_add_by_string("parenleft", "5");
|
||||||
|
grub_keymap_add_by_string("5", "percent");
|
||||||
|
grub_keymap_add_by_string("minus", "6");
|
||||||
|
grub_keymap_add_by_string("6", "caret");
|
||||||
|
grub_keymap_add_by_string("backquote", "7");
|
||||||
|
grub_keymap_add_by_string("7", "ampersand");
|
||||||
|
grub_keymap_add_by_string("underscore", "8");
|
||||||
|
grub_keymap_add_by_string("8", "asterisk");
|
||||||
|
grub_keymap_add_by_string("backslash", "9");
|
||||||
|
grub_keymap_add_by_string("9", "parenleft");
|
||||||
|
grub_keymap_add_by_string("at", "0");
|
||||||
|
grub_keymap_add_by_string("0", "parenright");
|
||||||
|
grub_keymap_add_by_string("parenright", "minus");
|
||||||
|
grub_keymap_add_by_string("numbersign", "underscore");
|
||||||
|
grub_keymap_add_by_string("a", "q");
|
||||||
|
grub_keymap_add_by_string("A", "Q");
|
||||||
|
grub_keymap_add_by_string("z", "w");
|
||||||
|
grub_keymap_add_by_string("Z", "W");
|
||||||
|
grub_keymap_add_by_string("caret", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("dollar", "bracketright");
|
||||||
|
grub_keymap_add_by_string("q", "a");
|
||||||
|
grub_keymap_add_by_string("Q", "A");
|
||||||
|
grub_keymap_add_by_string("m", "semicolon");
|
||||||
|
grub_keymap_add_by_string("M", "colon");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "quote");
|
||||||
|
grub_keymap_add_by_string("percent", "doublequote");
|
||||||
|
grub_keymap_add_by_string("asterisk", "backslash");
|
||||||
|
grub_keymap_add_by_string("bracketright", "bar");
|
||||||
|
grub_keymap_add_by_string("w", "z");
|
||||||
|
grub_keymap_add_by_string("W", "Z");
|
||||||
|
grub_keymap_add_by_string("comma", "m");
|
||||||
|
grub_keymap_add_by_string("question", "M");
|
||||||
|
grub_keymap_add_by_string("semicolon", "comma");
|
||||||
|
grub_keymap_add_by_string("period", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "period");
|
||||||
|
grub_keymap_add_by_string("slash", "greater");
|
||||||
|
grub_keymap_add_by_string("exclam", "slash");
|
||||||
|
grub_keymap_add_by_string("bar", "question");
|
||||||
|
grub_keymap_add_by_string("tilde", "A2");
|
||||||
|
grub_keymap_add_by_string("numbersign", "A3");
|
||||||
|
grub_keymap_add_by_string("braceleft", "A4");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "A5");
|
||||||
|
grub_keymap_add_by_string("bar", "A6");
|
||||||
|
grub_keymap_add_by_string("quote", "A7");
|
||||||
|
grub_keymap_add_by_string("backslash", "A8");
|
||||||
|
grub_keymap_add_by_string("caret", "A9");
|
||||||
|
grub_keymap_add_by_string("at", "A0");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Aminus");
|
||||||
|
grub_keymap_add_by_string("braceright", "Aequal");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_GERMAN(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("backslash", "minus");
|
||||||
|
grub_keymap_add_by_string("z", "y");
|
||||||
|
grub_keymap_add_by_string("Z", "Y");
|
||||||
|
grub_keymap_add_by_string("y", "z");
|
||||||
|
grub_keymap_add_by_string("Y", "Z");
|
||||||
|
grub_keymap_add_by_string("plus", "bracketright");
|
||||||
|
grub_keymap_add_by_string("asterisk", "braceright");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aminus");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("caret", "backquote");
|
||||||
|
grub_keymap_add_by_string("quote", "equal");
|
||||||
|
grub_keymap_add_by_string("backquote", "plus");
|
||||||
|
grub_keymap_add_by_string("braceright", "doublequote");
|
||||||
|
grub_keymap_add_by_string("bar", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("at", "braceleft");
|
||||||
|
grub_keymap_add_by_string("numbersign", "backslash");
|
||||||
|
grub_keymap_add_by_string("at", "Aq");
|
||||||
|
grub_keymap_add_by_string("less", "backquote");
|
||||||
|
grub_keymap_add_by_string("greater", "tilde");
|
||||||
|
grub_keymap_add_by_string("braceleft", "A7");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "A8");
|
||||||
|
grub_keymap_add_by_string("bracketright", "A9");
|
||||||
|
grub_keymap_add_by_string("braceright", "A0");
|
||||||
|
grub_keymap_add_by_string("tilde", "Abracketright");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aminus");
|
||||||
|
grub_keymap_add_by_string("quote", "bar");
|
||||||
|
grub_keymap_add_by_string("greater", "semicolon");
|
||||||
|
grub_keymap_add_by_string("less", "colon");
|
||||||
|
grub_keymap_add_by_string("bar", "quote");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_ITALIANO(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("backslash", "backquote");
|
||||||
|
grub_keymap_add_by_string("bar", "tilde");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("tilde", "numbersign");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("quote", "minus");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("caret", "plus");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("bracketright", "braceleft");
|
||||||
|
grub_keymap_add_by_string("plus", "bracketright");
|
||||||
|
grub_keymap_add_by_string("asterisk", "braceright");
|
||||||
|
grub_keymap_add_by_string("at", "semicolon");
|
||||||
|
grub_keymap_add_by_string("braceleft", "colon");
|
||||||
|
grub_keymap_add_by_string("numbersign", "quote");
|
||||||
|
grub_keymap_add_by_string("braceright", "doublequote");
|
||||||
|
grub_keymap_add_by_string("less", "backslash");
|
||||||
|
grub_keymap_add_by_string("greater", "bar");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "Abracketleft");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Abracketright");
|
||||||
|
grub_keymap_add_by_string("at", "Asemicolon");
|
||||||
|
grub_keymap_add_by_string("numbersign", "Aquote");
|
||||||
|
grub_keymap_add_by_string("braceright", "Abraceright");
|
||||||
|
grub_keymap_add_by_string("braceleft", "Abraceleft");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_JAPAN_106(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("at", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("quote", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("underscore", "parenright");
|
||||||
|
grub_keymap_add_by_string("equal", "underscore");
|
||||||
|
grub_keymap_add_by_string("plus", "colon");
|
||||||
|
grub_keymap_add_by_string("colon", "quote");
|
||||||
|
grub_keymap_add_by_string("asterisk", "doublequote");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "bracketright");
|
||||||
|
grub_keymap_add_by_string("braceleft", "braceright");
|
||||||
|
grub_keymap_add_by_string("bracketright", "backslash");
|
||||||
|
grub_keymap_add_by_string("braceright", "bar");
|
||||||
|
grub_keymap_add_by_string("backslash", "backquote");
|
||||||
|
grub_keymap_add_by_string("tilde", "plus");
|
||||||
|
grub_keymap_add_by_string("caret", "equal");
|
||||||
|
grub_keymap_add_by_string("backquote", "braceleft");
|
||||||
|
grub_keymap_add_by_string("bar", "tilde");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_LATIN_USA(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("bar", "backquote");
|
||||||
|
grub_keymap_add_by_string("quote", "minus");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("backquote", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("plus", "bracketright");
|
||||||
|
grub_keymap_add_by_string("braceleft", "quote");
|
||||||
|
grub_keymap_add_by_string("braceright", "backslash");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("asterisk", "braceright");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "doublequote");
|
||||||
|
grub_keymap_add_by_string("bracketright", "bar");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("caret", "Aquote");
|
||||||
|
grub_keymap_add_by_string("doublequote", "braceleft");
|
||||||
|
grub_keymap_add_by_string("at", "Aq");
|
||||||
|
grub_keymap_add_by_string("backquote", "Abackslash");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aminus");
|
||||||
|
grub_keymap_add_by_string("greater", "plus");
|
||||||
|
grub_keymap_add_by_string("less", "equal");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aminus");
|
||||||
|
grub_keymap_add_by_string("backquote", "Abackslash");
|
||||||
|
grub_keymap_add_by_string("tilde", "Abracketright");
|
||||||
|
grub_keymap_add_by_string("caret", "Aquote");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_PORTU_BRAZIL(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("quote", "backquote");
|
||||||
|
grub_keymap_add_by_string("quote", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "bracketright");
|
||||||
|
grub_keymap_add_by_string("tilde", "quote");
|
||||||
|
grub_keymap_add_by_string("bracketright", "backslash");
|
||||||
|
grub_keymap_add_by_string("semicolon", "slash");
|
||||||
|
grub_keymap_add_by_string("bar", "colon");
|
||||||
|
grub_keymap_add_by_string("doublequote", "tilde");
|
||||||
|
grub_keymap_add_by_string("backquote", "braceleft");
|
||||||
|
grub_keymap_add_by_string("braceleft", "braceright");
|
||||||
|
grub_keymap_add_by_string("caret", "doublequote");
|
||||||
|
grub_keymap_add_by_string("braceright", "bar");
|
||||||
|
grub_keymap_add_by_string("colon", "question");
|
||||||
|
grub_keymap_add_by_string("backslash", "semicolon");
|
||||||
|
grub_keymap_add_by_string("bar", "Atilde");
|
||||||
|
grub_keymap_add_by_string("backslash", "Abackquote");
|
||||||
|
grub_keymap_add_by_string("slash", "Aq");
|
||||||
|
grub_keymap_add_by_string("question", "Aw");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_QWERTY_UK(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("at", "doublequote");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("tilde", "bar");
|
||||||
|
grub_keymap_add_by_string("numbersign", "backslash");
|
||||||
|
grub_keymap_add_by_string("backslash", "numbersign");
|
||||||
|
grub_keymap_add_by_string("bar", "tilde");
|
||||||
|
grub_keymap_add_by_string("backslash", "Atilde");
|
||||||
|
grub_keymap_add_by_string("backslash", "Abackquote");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_QWERTZ(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("ampersand", "percent");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("backslash", "minus");
|
||||||
|
grub_keymap_add_by_string("z", "y");
|
||||||
|
grub_keymap_add_by_string("Z", "Y");
|
||||||
|
grub_keymap_add_by_string("y", "z");
|
||||||
|
grub_keymap_add_by_string("Y", "Z");
|
||||||
|
grub_keymap_add_by_string("plus", "bracketright");
|
||||||
|
grub_keymap_add_by_string("asterisk", "braceright");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("caret", "backquote");
|
||||||
|
grub_keymap_add_by_string("backquote", "equal");
|
||||||
|
grub_keymap_add_by_string("numbersign", "backslash");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("percent", "caret");
|
||||||
|
grub_keymap_add_by_string("less", "numbersign");
|
||||||
|
grub_keymap_add_by_string("greater", "bar");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_QWERTZ_HUN(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("y", "z");
|
||||||
|
grub_keymap_add_by_string("z", "y");
|
||||||
|
grub_keymap_add_by_string("Y", "Z");
|
||||||
|
grub_keymap_add_by_string("Z", "Y");
|
||||||
|
grub_keymap_add_by_string("0", "backquote");
|
||||||
|
grub_keymap_add_by_string("quote", "exclam");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("plus", "numbersign");
|
||||||
|
grub_keymap_add_by_string("exclam", "dollar");
|
||||||
|
grub_keymap_add_by_string("slash", "caret");
|
||||||
|
grub_keymap_add_by_string("equal", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aq");
|
||||||
|
grub_keymap_add_by_string("bar", "Aw");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "Af");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Ag");
|
||||||
|
grub_keymap_add_by_string("greater", "Az");
|
||||||
|
grub_keymap_add_by_string("numbersign", "Ax");
|
||||||
|
grub_keymap_add_by_string("ampersand", "Ac");
|
||||||
|
grub_keymap_add_by_string("at", "Av");
|
||||||
|
grub_keymap_add_by_string("braceleft", "Ab");
|
||||||
|
grub_keymap_add_by_string("braceright", "An");
|
||||||
|
grub_keymap_add_by_string("less", "Am");
|
||||||
|
grub_keymap_add_by_string("dollar", "colon");
|
||||||
|
grub_keymap_add_by_string("question", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("at", "doublequote");
|
||||||
|
grub_keymap_add_by_string("tilde", "A1");
|
||||||
|
grub_keymap_add_by_string("caret", "A3");
|
||||||
|
grub_keymap_add_by_string("backquote", "A7");
|
||||||
|
grub_keymap_add_by_string("asterisk", "0");
|
||||||
|
grub_keymap_add_by_string("dollar", "Asemicolon");
|
||||||
|
grub_keymap_add_by_string("semicolon", "Acomma");
|
||||||
|
grub_keymap_add_by_string("greater", "Aperiod");
|
||||||
|
grub_keymap_add_by_string("asterisk", "Aslash");
|
||||||
|
grub_keymap_add_by_string("backquote", "A9");
|
||||||
|
grub_keymap_add_by_string("doublequote", "A0");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_QWERTZ_SLOV_CROAT(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("quote", "minus");
|
||||||
|
grub_keymap_add_by_string("plus", "equal");
|
||||||
|
grub_keymap_add_by_string("y", "z");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("doublequote", "tilde");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("asterisk", "plus");
|
||||||
|
grub_keymap_add_by_string("Y", "Z");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("tilde", "A1");
|
||||||
|
grub_keymap_add_by_string("caret", "A3");
|
||||||
|
grub_keymap_add_by_string("backquote", "A7");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aq");
|
||||||
|
grub_keymap_add_by_string("bar", "Aw");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "Af");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Ag");
|
||||||
|
grub_keymap_add_by_string("at", "Av");
|
||||||
|
grub_keymap_add_by_string("braceleft", "Ab");
|
||||||
|
grub_keymap_add_by_string("braceright", "An");
|
||||||
|
grub_keymap_add_by_string("less", "Acomma");
|
||||||
|
grub_keymap_add_by_string("greater", "Aperiod");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_SPANISH(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("caret", "braceleft");
|
||||||
|
grub_keymap_add_by_string("asterisk", "braceright");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("quote", "minus");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("greater", "bar");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("backslash", "backquote");
|
||||||
|
grub_keymap_add_by_string("less", "backslash");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("backquote", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("plus", "bracketright");
|
||||||
|
grub_keymap_add_by_string("plus", "colon");
|
||||||
|
grub_keymap_add_by_string("at", "semicolon");
|
||||||
|
grub_keymap_add_by_string("bar", "A1");
|
||||||
|
grub_keymap_add_by_string("at", "A2");
|
||||||
|
grub_keymap_add_by_string("numbersign", "A3");
|
||||||
|
grub_keymap_add_by_string("tilde", "A4");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "Abracketleft");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Abracketright");
|
||||||
|
grub_keymap_add_by_string("braceleft", "Aquote");
|
||||||
|
grub_keymap_add_by_string("braceright", "Abackslash");
|
||||||
|
grub_keymap_add_by_string("greater", "bar");
|
||||||
|
grub_keymap_add_by_string("less", "backslash");
|
||||||
|
grub_keymap_add_by_string("backslash", "Abackquote");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_SWEDISH(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("plus", "minus");
|
||||||
|
grub_keymap_add_by_string("quote", "equal");
|
||||||
|
grub_keymap_add_by_string("doublequote", "bracketright");
|
||||||
|
grub_keymap_add_by_string("quote", "backslash");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("caret", "braceright");
|
||||||
|
grub_keymap_add_by_string("asterisk", "bar");
|
||||||
|
grub_keymap_add_by_string("backquote", "plus");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("bar", "Atilde");
|
||||||
|
grub_keymap_add_by_string("backslash", "Abackquote");
|
||||||
|
grub_keymap_add_by_string("greater", "tilde");
|
||||||
|
grub_keymap_add_by_string("at", "A2");
|
||||||
|
grub_keymap_add_by_string("dollar", "A4");
|
||||||
|
grub_keymap_add_by_string("braceleft", "A7");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "A8");
|
||||||
|
grub_keymap_add_by_string("bracketright", "A9");
|
||||||
|
grub_keymap_add_by_string("braceright", "A0");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aminus");
|
||||||
|
grub_keymap_add_by_string("less", "quote");
|
||||||
|
grub_keymap_add_by_string("greater", "doublequote");
|
||||||
|
grub_keymap_add_by_string("tilde", "Abracketright");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_TURKISH_Q(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("doublequote", "backquote");
|
||||||
|
grub_keymap_add_by_string("asterisk", "minus");
|
||||||
|
grub_keymap_add_by_string("minus", "equal");
|
||||||
|
grub_keymap_add_by_string("comma", "backslash");
|
||||||
|
grub_keymap_add_by_string("period", "slash");
|
||||||
|
grub_keymap_add_by_string("quote", "at");
|
||||||
|
grub_keymap_add_by_string("caret", "numbersign");
|
||||||
|
grub_keymap_add_by_string("plus", "dollar");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("underscore", "plus");
|
||||||
|
grub_keymap_add_by_string("semicolon", "bar");
|
||||||
|
grub_keymap_add_by_string("colon", "question");
|
||||||
|
grub_keymap_add_by_string("less", "Abackquote");
|
||||||
|
grub_keymap_add_by_string("greater", "A1");
|
||||||
|
grub_keymap_add_by_string("numbersign", "A3");
|
||||||
|
grub_keymap_add_by_string("dollar", "A4");
|
||||||
|
grub_keymap_add_by_string("braceleft", "A7");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "A8");
|
||||||
|
grub_keymap_add_by_string("bracketright", "A9");
|
||||||
|
grub_keymap_add_by_string("braceright", "A0");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aminus");
|
||||||
|
grub_keymap_add_by_string("bar", "Aequal");
|
||||||
|
grub_keymap_add_by_string("at", "Aq");
|
||||||
|
grub_keymap_add_by_string("doublequote", "Abracketleft");
|
||||||
|
grub_keymap_add_by_string("tilde", "Abracketright");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_VIETNAMESE(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("exclam", "A1");
|
||||||
|
grub_keymap_add_by_string("at", "A2");
|
||||||
|
grub_keymap_add_by_string("numbersign", "A3");
|
||||||
|
grub_keymap_add_by_string("dollar", "A4");
|
||||||
|
grub_keymap_add_by_string("percent", "A5");
|
||||||
|
grub_keymap_add_by_string("caret", "A6");
|
||||||
|
grub_keymap_add_by_string("ampersand", "A7");
|
||||||
|
grub_keymap_add_by_string("asterisk", "A8");
|
||||||
|
grub_keymap_add_by_string("parenleft", "A9");
|
||||||
|
grub_keymap_add_by_string("parenright", "A0");
|
||||||
|
grub_keymap_add_by_string("plus", "Aplus");
|
||||||
|
grub_keymap_add_by_string("equal", "Aequal");
|
||||||
|
grub_keymap_add_by_string("braceleft", "Abraceleft");
|
||||||
|
grub_keymap_add_by_string("braceright", "Abraceright");
|
||||||
|
grub_keymap_add_by_string("colon", "Acolon");
|
||||||
|
grub_keymap_add_by_string("semicolon", "Asemicolon");
|
||||||
|
grub_keymap_add_by_string("quote", "Aquote");
|
||||||
|
grub_keymap_add_by_string("backslash", "Abackslash");
|
||||||
|
grub_keymap_add_by_string("less", "Aless");
|
||||||
|
grub_keymap_add_by_string("greater", "Agreater");
|
||||||
|
grub_keymap_add_by_string("comma", "Acomma");
|
||||||
|
grub_keymap_add_by_string("period", "Aperiod");
|
||||||
|
grub_keymap_add_by_string("question", "Aquestion");
|
||||||
|
grub_keymap_add_by_string("slash", "Aslash");
|
||||||
|
grub_keymap_add_by_string("tilde", "Atilde");
|
||||||
|
grub_keymap_add_by_string("backquote", "Abackquote");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Abracketright");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "Abracketleft");
|
||||||
|
grub_keymap_add_by_string("bar", "Abar");
|
||||||
|
grub_keymap_add_by_string("doublequote", "Adoublequote");
|
||||||
|
grub_keymap_add_by_string("colon", "Acolon");
|
||||||
|
grub_keymap_add_by_string("minus", "Aminus");
|
||||||
|
grub_keymap_add_by_string("underscore", "Aunderscore");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
void ventoy_set_keyboard_layout(const char *layout);
|
||||||
|
void ventoy_set_keyboard_layout(const char *layout) {
|
||||||
|
ventoy_keyboard_set_layout(QWERTY_USA);
|
||||||
|
ventoy_keyboard_set_layout(AZERTY);
|
||||||
|
ventoy_keyboard_set_layout(CZECH_QWERTY);
|
||||||
|
ventoy_keyboard_set_layout(CZECH_QWERTZ);
|
||||||
|
ventoy_keyboard_set_layout(DANISH);
|
||||||
|
ventoy_keyboard_set_layout(DVORAK_USA);
|
||||||
|
ventoy_keyboard_set_layout(FRENCH);
|
||||||
|
ventoy_keyboard_set_layout(GERMAN);
|
||||||
|
ventoy_keyboard_set_layout(ITALIANO);
|
||||||
|
ventoy_keyboard_set_layout(JAPAN_106);
|
||||||
|
ventoy_keyboard_set_layout(LATIN_USA);
|
||||||
|
ventoy_keyboard_set_layout(PORTU_BRAZIL);
|
||||||
|
ventoy_keyboard_set_layout(QWERTY_UK);
|
||||||
|
ventoy_keyboard_set_layout(QWERTZ);
|
||||||
|
ventoy_keyboard_set_layout(QWERTZ_HUN);
|
||||||
|
ventoy_keyboard_set_layout(QWERTZ_SLOV_CROAT);
|
||||||
|
ventoy_keyboard_set_layout(SPANISH);
|
||||||
|
ventoy_keyboard_set_layout(SWEDISH);
|
||||||
|
ventoy_keyboard_set_layout(TURKISH_Q);
|
||||||
|
ventoy_keyboard_set_layout(VIETNAMESE);
|
||||||
|
}
|
@@ -348,12 +348,38 @@ out:
|
|||||||
return grub_errno;
|
return grub_errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
static grub_extcmd_t cmd;
|
static void grub_keymap_add_by_string(const char *src, const char *dst)
|
||||||
|
{
|
||||||
|
int in = 0;
|
||||||
|
int out = 0;
|
||||||
|
|
||||||
|
in = parse_key(dst);
|
||||||
|
out = parse_key(src);
|
||||||
|
|
||||||
|
if (in && out)
|
||||||
|
{
|
||||||
|
grub_keymap_add (in, out);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "keyboard_layout.c"
|
||||||
|
|
||||||
|
static grub_err_t grub_cmd_set_keylayout (grub_extcmd_context_t ctxt, int argc, char **args)
|
||||||
|
{
|
||||||
|
(void)ctxt;
|
||||||
|
(void)argc;
|
||||||
|
ventoy_set_keyboard_layout(args[0]);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_extcmd_t cmd, setcmd;
|
||||||
|
|
||||||
GRUB_MOD_INIT(setkey)
|
GRUB_MOD_INIT(setkey)
|
||||||
{
|
{
|
||||||
cmd = grub_register_extcmd ("setkey", grub_cmd_setkey, 0, N_("NEW_KEY USA_KEY"),
|
cmd = grub_register_extcmd ("setkey", grub_cmd_setkey, 0, N_("NEW_KEY USA_KEY"),
|
||||||
N_("Map default USA_KEY to NEW_KEY."), options);
|
N_("Map default USA_KEY to NEW_KEY."), options);
|
||||||
|
setcmd = grub_register_extcmd ("set_keyboard_layout", grub_cmd_set_keylayout, 0, N_("layout"),
|
||||||
|
N_("Set keyboard layout."), NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
GRUB_MOD_FINI(setkey)
|
GRUB_MOD_FINI(setkey)
|
||||||
|
@@ -148,6 +148,38 @@ void ventoy_debug(const char *fmt, ...)
|
|||||||
va_end (args);
|
va_end (args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ventoy_strcmp(const char *pattern, const char *str)
|
||||||
|
{
|
||||||
|
while (*pattern && *str)
|
||||||
|
{
|
||||||
|
if ((*pattern != *str) && (*pattern != '*'))
|
||||||
|
break;
|
||||||
|
|
||||||
|
pattern++;
|
||||||
|
str++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (int)(grub_uint8_t)*pattern - (int)(grub_uint8_t)*str;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ventoy_strncmp (const char *pattern, const char *str, grub_size_t n)
|
||||||
|
{
|
||||||
|
if (n == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
while (*pattern && *str && --n)
|
||||||
|
{
|
||||||
|
if ((*pattern != *str) && (*pattern != '*'))
|
||||||
|
break;
|
||||||
|
|
||||||
|
pattern++;
|
||||||
|
str++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (int)(grub_uint8_t)*pattern - (int)(grub_uint8_t)*str;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void ventoy_debug_dump_guid(const char *prefix, grub_uint8_t *guid)
|
void ventoy_debug_dump_guid(const char *prefix, grub_uint8_t *guid)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@@ -1404,7 +1436,7 @@ static int ventoy_collect_img_files(const char *filename, const struct grub_dirh
|
|||||||
g_ventoy_img_count++;
|
g_ventoy_img_count++;
|
||||||
|
|
||||||
img->alias = ventoy_plugin_get_menu_alias(vtoy_alias_image_file, img->path);
|
img->alias = ventoy_plugin_get_menu_alias(vtoy_alias_image_file, img->path);
|
||||||
img->class = ventoy_plugin_get_menu_class(vtoy_class_image_file, img->name);
|
img->class = ventoy_plugin_get_menu_class(vtoy_class_image_file, img->name, img->path);
|
||||||
if (!img->class)
|
if (!img->class)
|
||||||
{
|
{
|
||||||
img->class = g_menu_class[type];
|
img->class = g_menu_class[type];
|
||||||
@@ -1663,7 +1695,7 @@ static int ventoy_dynamic_tree_menu(img_iterator_node *node)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
node->dir[node->dirlen - 1] = 0;
|
node->dir[node->dirlen - 1] = 0;
|
||||||
dir_class = ventoy_plugin_get_menu_class(vtoy_class_directory, node->dir);
|
dir_class = ventoy_plugin_get_menu_class(vtoy_class_directory, node->dir, node->dir);
|
||||||
if (!dir_class)
|
if (!dir_class)
|
||||||
{
|
{
|
||||||
dir_class = "vtoydir";
|
dir_class = "vtoydir";
|
||||||
@@ -1774,7 +1806,7 @@ int ventoy_check_device_result(int ret)
|
|||||||
grub_printf(VTOY_WARNING"\n");
|
grub_printf(VTOY_WARNING"\n");
|
||||||
grub_printf(VTOY_WARNING"\n\n\n");
|
grub_printf(VTOY_WARNING"\n\n\n");
|
||||||
|
|
||||||
grub_printf("This is NOT a standard Ventoy device and is NOT supported.\n\n");
|
grub_printf("This is NOT a standard Ventoy device and is NOT supported (0x%x).\n\n", ret);
|
||||||
grub_printf("You should follow the instructions in https://www.ventoy.net to use Ventoy.\n");
|
grub_printf("You should follow the instructions in https://www.ventoy.net to use Ventoy.\n");
|
||||||
|
|
||||||
grub_printf("\n\nWill exit after 10 seconds ...... ");
|
grub_printf("\n\nWill exit after 10 seconds ...... ");
|
||||||
@@ -2229,6 +2261,42 @@ static grub_err_t ventoy_cmd_img_name(grub_extcmd_context_t ctxt, int argc, char
|
|||||||
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static grub_err_t ventoy_cmd_ext_select_img_path(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||||
|
{
|
||||||
|
int len = 0;
|
||||||
|
char id[32] = {0};
|
||||||
|
img_info *cur = g_ventoy_img_list;
|
||||||
|
|
||||||
|
(void)ctxt;
|
||||||
|
|
||||||
|
if (argc != 1)
|
||||||
|
{
|
||||||
|
return grub_error(GRUB_ERR_BAD_ARGUMENT, "Usage: %s {var}", cmd_raw_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
len = (int)grub_strlen(args[0]);
|
||||||
|
|
||||||
|
while (cur)
|
||||||
|
{
|
||||||
|
if (len == cur->pathlen && 0 == grub_strcmp(args[0], cur->path))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
cur = cur->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!cur)
|
||||||
|
{
|
||||||
|
return grub_error(GRUB_ERR_BAD_ARGUMENT, "No such image");
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_snprintf(id, sizeof(id), "VID_%d", cur->id);
|
||||||
|
grub_env_set("chosen", id);
|
||||||
|
grub_env_export("chosen");
|
||||||
|
|
||||||
|
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||||
|
}
|
||||||
|
|
||||||
static grub_err_t ventoy_cmd_chosen_img_path(grub_extcmd_context_t ctxt, int argc, char **args)
|
static grub_err_t ventoy_cmd_chosen_img_path(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||||
{
|
{
|
||||||
int img_id = 0;
|
int img_id = 0;
|
||||||
@@ -2467,6 +2535,7 @@ int ventoy_check_block_list(grub_file_t file, ventoy_img_chunk_list *chunklist,
|
|||||||
{
|
{
|
||||||
grub_uint32_t i = 0;
|
grub_uint32_t i = 0;
|
||||||
grub_uint64_t total = 0;
|
grub_uint64_t total = 0;
|
||||||
|
grub_uint64_t fileblk = 0;
|
||||||
ventoy_img_chunk *chunk = NULL;
|
ventoy_img_chunk *chunk = NULL;
|
||||||
|
|
||||||
for (i = 0; i < chunklist->cur_chunk; i++)
|
for (i = 0; i < chunklist->cur_chunk; i++)
|
||||||
@@ -2482,9 +2551,17 @@ int ventoy_check_block_list(grub_file_t file, ventoy_img_chunk_list *chunklist,
|
|||||||
total += chunk->disk_end_sector + 1 - chunk->disk_start_sector;
|
total += chunk->disk_end_sector + 1 - chunk->disk_start_sector;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (total != ((file->size + 511) / 512))
|
fileblk = (file->size + 511) / 512;
|
||||||
|
|
||||||
|
if (total != fileblk)
|
||||||
{
|
{
|
||||||
debug("Invalid total: %llu %llu\n", (ulonglong)total, (ulonglong)((file->size + 511) / 512));
|
debug("Invalid total: %llu %llu\n", (ulonglong)total, (ulonglong)fileblk);
|
||||||
|
if ((file->size % 512) && (total + 1 == fileblk))
|
||||||
|
{
|
||||||
|
debug("maybe img file to be processed.\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3023,6 +3100,10 @@ static grub_err_t ventoy_cmd_check_mode(grub_extcmd_context_t ctxt, int argc, ch
|
|||||||
{
|
{
|
||||||
return g_ventoy_iso_uefi_drv ? 0 : 1;
|
return g_ventoy_iso_uefi_drv ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
else if (args[0][0] == '3')
|
||||||
|
{
|
||||||
|
return g_ventoy_grub2_mode ? 0 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -3461,6 +3542,113 @@ static grub_err_t ventoy_cmd_check_secureboot_var(grub_extcmd_context_t ctxt, in
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static grub_err_t ventoy_cmd_img_check_range(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int ret = 1;
|
||||||
|
grub_file_t file;
|
||||||
|
grub_uint64_t FileSectors = 0;
|
||||||
|
ventoy_gpt_info *gpt = NULL;
|
||||||
|
ventoy_part_table *pt = NULL;
|
||||||
|
grub_uint8_t zeroguid[16] = {0};
|
||||||
|
|
||||||
|
(void)ctxt;
|
||||||
|
(void)argc;
|
||||||
|
|
||||||
|
file = ventoy_grub_file_open(VENTOY_FILE_TYPE, "%s", args[0]);
|
||||||
|
if (!file)
|
||||||
|
{
|
||||||
|
debug("failed to open file %s\n", args[0]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (file->size % 512)
|
||||||
|
{
|
||||||
|
debug("unaligned file size: %llu\n", (ulonglong)file->size);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
gpt = grub_zalloc(sizeof(ventoy_gpt_info));
|
||||||
|
if (!gpt)
|
||||||
|
{
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
FileSectors = file->size / 512;
|
||||||
|
|
||||||
|
grub_file_read(file, gpt, sizeof(ventoy_gpt_info));
|
||||||
|
if (grub_strncmp(gpt->Head.Signature, "EFI PART", 8) == 0)
|
||||||
|
{
|
||||||
|
debug("This is EFI partition table\n");
|
||||||
|
|
||||||
|
for (i = 0; i < 128; i++)
|
||||||
|
{
|
||||||
|
if (grub_memcmp(gpt->PartTbl[i].PartGuid, zeroguid, 16))
|
||||||
|
{
|
||||||
|
if (FileSectors < gpt->PartTbl[i].LastLBA)
|
||||||
|
{
|
||||||
|
debug("out of range: part[%d] LastLBA:%llu FileSectors:%llu\n", i,
|
||||||
|
(ulonglong)gpt->PartTbl[i].LastLBA, (ulonglong)FileSectors);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
debug("This is MBR partition table\n");
|
||||||
|
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
pt = gpt->MBR.PartTbl + i;
|
||||||
|
if (FileSectors < pt->StartSectorId + pt->SectorCount)
|
||||||
|
{
|
||||||
|
debug("out of range: part[%d] LastLBA:%llu FileSectors:%llu\n", i,
|
||||||
|
(ulonglong)(pt->StartSectorId + pt->SectorCount),
|
||||||
|
(ulonglong)FileSectors);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
out:
|
||||||
|
grub_file_close(file);
|
||||||
|
grub_check_free(gpt);
|
||||||
|
grub_errno = GRUB_ERR_NONE;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t ventoy_cmd_clear_key(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
(void)ctxt;
|
||||||
|
(void)argc;
|
||||||
|
(void)args;
|
||||||
|
|
||||||
|
for (i = 0; i < 500; i++)
|
||||||
|
{
|
||||||
|
ret = grub_getkey_noblock();
|
||||||
|
if (ret == GRUB_TERM_NO_KEY)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i >= 500)
|
||||||
|
{
|
||||||
|
grub_cls();
|
||||||
|
grub_printf("\n\n Still have key input after clear.\n");
|
||||||
|
grub_refresh();
|
||||||
|
grub_sleep(5);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static grub_err_t ventoy_cmd_acpi_param(grub_extcmd_context_t ctxt, int argc, char **args)
|
static grub_err_t ventoy_cmd_acpi_param(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@@ -3807,6 +3995,8 @@ static grub_err_t ventoy_cmd_get_fs_label(grub_extcmd_context_t ctxt, int argc,
|
|||||||
|
|
||||||
(void)ctxt;
|
(void)ctxt;
|
||||||
|
|
||||||
|
debug("get fs label for %s\n", args[0]);
|
||||||
|
|
||||||
if (argc != 2)
|
if (argc != 2)
|
||||||
{
|
{
|
||||||
debug("ventoy_cmd_get_fs_label, invalid param num %d\n", argc);
|
debug("ventoy_cmd_get_fs_label, invalid param num %d\n", argc);
|
||||||
@@ -3828,19 +4018,20 @@ static grub_err_t ventoy_cmd_get_fs_label(grub_extcmd_context_t ctxt, int argc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
fs = grub_fs_probe(dev);
|
fs = grub_fs_probe(dev);
|
||||||
if (!fs)
|
if (NULL == fs || NULL == fs->fs_label)
|
||||||
{
|
{
|
||||||
debug("grub_fs_probe failed, %s\n", device_name);
|
debug("grub_fs_probe failed, %s %p %p\n", device_name, fs, fs->fs_label);
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
fs->fs_label(dev, &label);
|
fs->fs_label(dev, &label);
|
||||||
if (label)
|
if (label)
|
||||||
{
|
{
|
||||||
|
debug("label=<%s>\n", label);
|
||||||
ventoy_set_env(args[1], label);
|
ventoy_set_env(args[1], label);
|
||||||
grub_free(label);
|
grub_free(label);
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = 0;
|
rc = 0;
|
||||||
|
|
||||||
end:
|
end:
|
||||||
@@ -4222,6 +4413,8 @@ static int ventoy_env_init(void)
|
|||||||
grub_snprintf(buf, sizeof(buf), "%p", g_grub_param);
|
grub_snprintf(buf, sizeof(buf), "%p", g_grub_param);
|
||||||
grub_env_set("env_param", buf);
|
grub_env_set("env_param", buf);
|
||||||
grub_env_set("ventoy_env_param", buf);
|
grub_env_set("ventoy_env_param", buf);
|
||||||
|
|
||||||
|
grub_env_export("env_param");
|
||||||
grub_env_export("ventoy_env_param");
|
grub_env_export("ventoy_env_param");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4244,6 +4437,7 @@ static cmd_para ventoy_cmds[] =
|
|||||||
{ "vt_clear_img", ventoy_cmd_clear_img, 0, NULL, "", "clear image list", NULL },
|
{ "vt_clear_img", ventoy_cmd_clear_img, 0, NULL, "", "clear image list", NULL },
|
||||||
{ "vt_img_name", ventoy_cmd_img_name, 0, NULL, "{imageID} {var}", "get image name", NULL },
|
{ "vt_img_name", ventoy_cmd_img_name, 0, NULL, "{imageID} {var}", "get image name", NULL },
|
||||||
{ "vt_chosen_img_path", ventoy_cmd_chosen_img_path, 0, NULL, "{var}", "get chosen img path", NULL },
|
{ "vt_chosen_img_path", ventoy_cmd_chosen_img_path, 0, NULL, "{var}", "get chosen img path", NULL },
|
||||||
|
{ "vt_ext_select_img_path", ventoy_cmd_ext_select_img_path, 0, NULL, "{var}", "select chosen img path", NULL },
|
||||||
{ "vt_img_sector", ventoy_cmd_img_sector, 0, NULL, "{imageName}", "", NULL },
|
{ "vt_img_sector", ventoy_cmd_img_sector, 0, NULL, "{imageName}", "", NULL },
|
||||||
{ "vt_dump_img_sector", ventoy_cmd_dump_img_sector, 0, NULL, "", "", NULL },
|
{ "vt_dump_img_sector", ventoy_cmd_dump_img_sector, 0, NULL, "", "", NULL },
|
||||||
{ "vt_load_wimboot", ventoy_cmd_load_wimboot, 0, NULL, "", "", NULL },
|
{ "vt_load_wimboot", ventoy_cmd_load_wimboot, 0, NULL, "", "", NULL },
|
||||||
@@ -4330,6 +4524,7 @@ static cmd_para ventoy_cmds[] =
|
|||||||
{ "vt_parse_iso_create_date", ventoy_cmd_parse_create_date, 0, NULL, "", "", NULL },
|
{ "vt_parse_iso_create_date", ventoy_cmd_parse_create_date, 0, NULL, "", "", NULL },
|
||||||
{ "vt_parse_freenas_ver", ventoy_cmd_parse_freenas_ver, 0, NULL, "", "", NULL },
|
{ "vt_parse_freenas_ver", ventoy_cmd_parse_freenas_ver, 0, NULL, "", "", NULL },
|
||||||
{ "vt_unix_parse_freebsd_ver", ventoy_cmd_unix_freebsd_ver, 0, NULL, "", "", NULL },
|
{ "vt_unix_parse_freebsd_ver", ventoy_cmd_unix_freebsd_ver, 0, NULL, "", "", NULL },
|
||||||
|
{ "vt_unix_parse_freebsd_ver_elf", ventoy_cmd_unix_freebsd_ver_elf, 0, NULL, "", "", NULL },
|
||||||
{ "vt_unix_reset", ventoy_cmd_unix_reset, 0, NULL, "", "", NULL },
|
{ "vt_unix_reset", ventoy_cmd_unix_reset, 0, NULL, "", "", NULL },
|
||||||
{ "vt_unix_replace_conf", ventoy_cmd_unix_replace_conf, 0, NULL, "", "", NULL },
|
{ "vt_unix_replace_conf", ventoy_cmd_unix_replace_conf, 0, NULL, "", "", NULL },
|
||||||
{ "vt_unix_replace_ko", ventoy_cmd_unix_replace_ko, 0, NULL, "", "", NULL },
|
{ "vt_unix_replace_ko", ventoy_cmd_unix_replace_ko, 0, NULL, "", "", NULL },
|
||||||
@@ -4341,6 +4536,8 @@ static cmd_para ventoy_cmds[] =
|
|||||||
{ "vt_img_unhook_root", ventoy_cmd_img_unhook_root, 0, NULL, "", "", NULL },
|
{ "vt_img_unhook_root", ventoy_cmd_img_unhook_root, 0, NULL, "", "", NULL },
|
||||||
{ "vt_acpi_param", ventoy_cmd_acpi_param, 0, NULL, "", "", NULL },
|
{ "vt_acpi_param", ventoy_cmd_acpi_param, 0, NULL, "", "", NULL },
|
||||||
{ "vt_check_secureboot_var", ventoy_cmd_check_secureboot_var, 0, NULL, "", "", NULL },
|
{ "vt_check_secureboot_var", ventoy_cmd_check_secureboot_var, 0, NULL, "", "", NULL },
|
||||||
|
{ "vt_clear_key", ventoy_cmd_clear_key, 0, NULL, "", "", NULL },
|
||||||
|
{ "vt_img_check_range", ventoy_cmd_img_check_range, 0, NULL, "", "", NULL },
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -284,7 +284,7 @@ extern char g_arch_mode_suffix[64];
|
|||||||
|
|
||||||
extern int g_ventoy_debug;
|
extern int g_ventoy_debug;
|
||||||
void ventoy_debug(const char *fmt, ...);
|
void ventoy_debug(const char *fmt, ...);
|
||||||
#define debug(fmt, ...) if (g_ventoy_debug) ventoy_debug("[VTOY]: "fmt, __VA_ARGS__)
|
#define debug(fmt, args...) if (g_ventoy_debug) ventoy_debug("[VTOY]: "fmt, ##args)
|
||||||
|
|
||||||
#define vtoy_ssprintf(buf, pos, fmt, ...) \
|
#define vtoy_ssprintf(buf, pos, fmt, ...) \
|
||||||
pos += grub_snprintf(buf + pos, VTOY_MAX_SCRIPT_BUF - pos, fmt, __VA_ARGS__)
|
pos += grub_snprintf(buf + pos, VTOY_MAX_SCRIPT_BUF - pos, fmt, __VA_ARGS__)
|
||||||
@@ -390,6 +390,15 @@ typedef struct wim_security_header
|
|||||||
grub_uint32_t count; /* Number of entries */
|
grub_uint32_t count; /* Number of entries */
|
||||||
}wim_security_header;
|
}wim_security_header;
|
||||||
|
|
||||||
|
typedef struct wim_stream_entry
|
||||||
|
{
|
||||||
|
grub_uint64_t len;
|
||||||
|
grub_uint64_t unused1;
|
||||||
|
wim_hash hash;
|
||||||
|
grub_uint16_t name_len;
|
||||||
|
/* name */
|
||||||
|
}wim_stream_entry;
|
||||||
|
|
||||||
/* Directory entry */
|
/* Directory entry */
|
||||||
typedef struct wim_directory_entry
|
typedef struct wim_directory_entry
|
||||||
{
|
{
|
||||||
@@ -518,7 +527,8 @@ typedef struct plugin_entry
|
|||||||
ventoy_plugin_check_pf checkfunc;
|
ventoy_plugin_check_pf checkfunc;
|
||||||
}plugin_entry;
|
}plugin_entry;
|
||||||
|
|
||||||
|
int ventoy_strcmp(const char *pattern, const char *str);
|
||||||
|
int ventoy_strncmp (const char *pattern, const char *str, grub_size_t n);
|
||||||
void ventoy_fill_os_param(grub_file_t file, ventoy_os_param *param);
|
void ventoy_fill_os_param(grub_file_t file, ventoy_os_param *param);
|
||||||
grub_err_t ventoy_cmd_isolinux_initrd_collect(grub_extcmd_context_t ctxt, int argc, char **args);
|
grub_err_t ventoy_cmd_isolinux_initrd_collect(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||||
grub_err_t ventoy_cmd_grub_initrd_collect(grub_extcmd_context_t ctxt, int argc, char **args);
|
grub_err_t ventoy_cmd_grub_initrd_collect(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||||
@@ -820,6 +830,7 @@ typedef struct menu_class
|
|||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
int patlen;
|
int patlen;
|
||||||
|
int parent;
|
||||||
char pattern[256];
|
char pattern[256];
|
||||||
char class[64];
|
char class[64];
|
||||||
|
|
||||||
@@ -903,6 +914,7 @@ extern int g_ventoy_suppress_esc;
|
|||||||
extern int g_ventoy_last_entry;
|
extern int g_ventoy_last_entry;
|
||||||
extern int g_ventoy_memdisk_mode;
|
extern int g_ventoy_memdisk_mode;
|
||||||
extern int g_ventoy_iso_raw;
|
extern int g_ventoy_iso_raw;
|
||||||
|
extern int g_ventoy_grub2_mode;
|
||||||
extern int g_ventoy_iso_uefi_drv;
|
extern int g_ventoy_iso_uefi_drv;
|
||||||
extern int g_ventoy_case_insensitive;
|
extern int g_ventoy_case_insensitive;
|
||||||
extern grub_uint8_t g_ventoy_chain_type;
|
extern grub_uint8_t g_ventoy_chain_type;
|
||||||
@@ -949,7 +961,7 @@ int ventoy_fill_windows_rtdata(void *buf, char *isopath);
|
|||||||
int ventoy_plugin_get_persistent_chunklist(const char *isopath, int index, ventoy_img_chunk_list *chunk_list);
|
int ventoy_plugin_get_persistent_chunklist(const char *isopath, int index, ventoy_img_chunk_list *chunk_list);
|
||||||
const char * ventoy_plugin_get_injection(const char *isopath);
|
const char * ventoy_plugin_get_injection(const char *isopath);
|
||||||
const char * ventoy_plugin_get_menu_alias(int type, const char *isopath);
|
const char * ventoy_plugin_get_menu_alias(int type, const char *isopath);
|
||||||
const char * ventoy_plugin_get_menu_class(int type, const char *name);
|
const char * ventoy_plugin_get_menu_class(int type, const char *name, const char *path);
|
||||||
int ventoy_plugin_check_memdisk(const char *isopath);
|
int ventoy_plugin_check_memdisk(const char *isopath);
|
||||||
int ventoy_plugin_get_image_list_index(int type, const char *name);
|
int ventoy_plugin_get_image_list_index(int type, const char *name);
|
||||||
conf_replace * ventoy_plugin_find_conf_replace(const char *iso);
|
conf_replace * ventoy_plugin_find_conf_replace(const char *iso);
|
||||||
@@ -973,6 +985,7 @@ grub_err_t ventoy_cmd_unix_fill_image_desc(grub_extcmd_context_t ctxt, int argc,
|
|||||||
grub_err_t ventoy_cmd_unix_gzip_newko(grub_extcmd_context_t ctxt, int argc, char **args);
|
grub_err_t ventoy_cmd_unix_gzip_newko(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||||
grub_err_t ventoy_cmd_unix_freebsd_ver(grub_extcmd_context_t ctxt, int argc, char **args);
|
grub_err_t ventoy_cmd_unix_freebsd_ver(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||||
grub_err_t ventoy_cmd_parse_freenas_ver(grub_extcmd_context_t ctxt, int argc, char **args);
|
grub_err_t ventoy_cmd_parse_freenas_ver(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||||
|
grub_err_t ventoy_cmd_unix_freebsd_ver_elf(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||||
int ventoy_check_device_result(int ret);
|
int ventoy_check_device_result(int ret);
|
||||||
int ventoy_check_device(grub_device_t dev);
|
int ventoy_check_device(grub_device_t dev);
|
||||||
void ventoy_debug_dump_guid(const char *prefix, grub_uint8_t *guid);
|
void ventoy_debug_dump_guid(const char *prefix, grub_uint8_t *guid);
|
||||||
|
@@ -481,6 +481,7 @@ static int ventoy_plugin_auto_install_check(VTOY_JSON *json, const char *isodisk
|
|||||||
{
|
{
|
||||||
int pathnum = 0;
|
int pathnum = 0;
|
||||||
int autosel = 0;
|
int autosel = 0;
|
||||||
|
char *pos = NULL;
|
||||||
const char *iso = NULL;
|
const char *iso = NULL;
|
||||||
VTOY_JSON *pNode = NULL;
|
VTOY_JSON *pNode = NULL;
|
||||||
|
|
||||||
@@ -500,9 +501,10 @@ static int ventoy_plugin_auto_install_check(VTOY_JSON *json, const char *isodisk
|
|||||||
iso = vtoy_json_get_string_ex(pNode->pstChild, "image");
|
iso = vtoy_json_get_string_ex(pNode->pstChild, "image");
|
||||||
if (iso)
|
if (iso)
|
||||||
{
|
{
|
||||||
if (0 == ventoy_plugin_check_path(isodisk, iso))
|
pos = grub_strchr(iso, '*');
|
||||||
|
if (pos || 0 == ventoy_plugin_check_path(isodisk, iso))
|
||||||
{
|
{
|
||||||
grub_printf("image: %s [OK]\n", iso);
|
grub_printf("image: %s [%s]\n", iso, (pos ? "*" : "OK"));
|
||||||
ventoy_plugin_check_fullpath(pNode->pstChild, isodisk, "template", &pathnum);
|
ventoy_plugin_check_fullpath(pNode->pstChild, isodisk, "template", &pathnum);
|
||||||
|
|
||||||
if (JSON_SUCCESS == vtoy_json_get_int(pNode->pstChild, "autosel", &autosel))
|
if (JSON_SUCCESS == vtoy_json_get_int(pNode->pstChild, "autosel", &autosel))
|
||||||
@@ -599,6 +601,7 @@ static int ventoy_plugin_auto_install_entry(VTOY_JSON *json, const char *isodisk
|
|||||||
static int ventoy_plugin_dud_check(VTOY_JSON *json, const char *isodisk)
|
static int ventoy_plugin_dud_check(VTOY_JSON *json, const char *isodisk)
|
||||||
{
|
{
|
||||||
int pathnum = 0;
|
int pathnum = 0;
|
||||||
|
char *pos = NULL;
|
||||||
const char *iso = NULL;
|
const char *iso = NULL;
|
||||||
VTOY_JSON *pNode = NULL;
|
VTOY_JSON *pNode = NULL;
|
||||||
|
|
||||||
@@ -618,9 +621,10 @@ static int ventoy_plugin_dud_check(VTOY_JSON *json, const char *isodisk)
|
|||||||
iso = vtoy_json_get_string_ex(pNode->pstChild, "image");
|
iso = vtoy_json_get_string_ex(pNode->pstChild, "image");
|
||||||
if (iso)
|
if (iso)
|
||||||
{
|
{
|
||||||
if (0 == ventoy_plugin_check_path(isodisk, iso))
|
pos = grub_strchr(iso, '*');
|
||||||
|
if (pos || 0 == ventoy_plugin_check_path(isodisk, iso))
|
||||||
{
|
{
|
||||||
grub_printf("image: %s [OK]\n", iso);
|
grub_printf("image: %s [%s]\n", iso, (pos ? "*" : "OK"));
|
||||||
ventoy_plugin_check_fullpath(pNode->pstChild, isodisk, "dud", &pathnum);
|
ventoy_plugin_check_fullpath(pNode->pstChild, isodisk, "dud", &pathnum);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -884,6 +888,7 @@ static int ventoy_plugin_pwd_entry(VTOY_JSON *json, const char *isodisk)
|
|||||||
|
|
||||||
static int ventoy_plugin_pwd_check(VTOY_JSON *json, const char *isodisk)
|
static int ventoy_plugin_pwd_check(VTOY_JSON *json, const char *isodisk)
|
||||||
{
|
{
|
||||||
|
char *pos = NULL;
|
||||||
const char *iso = NULL;
|
const char *iso = NULL;
|
||||||
const char *pwd = NULL;
|
const char *pwd = NULL;
|
||||||
VTOY_JSON *pNode = NULL;
|
VTOY_JSON *pNode = NULL;
|
||||||
@@ -922,13 +927,14 @@ static int ventoy_plugin_pwd_check(VTOY_JSON *json, const char *isodisk)
|
|||||||
iso = vtoy_json_get_string_ex(pCNode->pstChild, "file");
|
iso = vtoy_json_get_string_ex(pCNode->pstChild, "file");
|
||||||
if (iso)
|
if (iso)
|
||||||
{
|
{
|
||||||
if (0 == ventoy_plugin_check_path(isodisk, iso))
|
pos = grub_strchr(iso, '*');
|
||||||
|
if (pos || 0 == ventoy_plugin_check_path(isodisk, iso))
|
||||||
{
|
{
|
||||||
pwd = vtoy_json_get_string_ex(pCNode->pstChild, "pwd");
|
pwd = vtoy_json_get_string_ex(pCNode->pstChild, "pwd");
|
||||||
|
|
||||||
if (0 == ventoy_plugin_parse_pwdstr((char *)pwd, NULL))
|
if (0 == ventoy_plugin_parse_pwdstr((char *)pwd, NULL))
|
||||||
{
|
{
|
||||||
grub_printf("file:<%s> [OK]\n", iso);
|
grub_printf("file:<%s> [%s]\n", iso, (pos ? "*" : "OK"));
|
||||||
grub_printf("pwd:<%s>\n\n", pwd);
|
grub_printf("pwd:<%s>\n\n", pwd);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -956,6 +962,7 @@ static int ventoy_plugin_persistence_check(VTOY_JSON *json, const char *isodisk)
|
|||||||
{
|
{
|
||||||
int autosel = 0;
|
int autosel = 0;
|
||||||
int pathnum = 0;
|
int pathnum = 0;
|
||||||
|
char *pos = NULL;
|
||||||
const char *iso = NULL;
|
const char *iso = NULL;
|
||||||
VTOY_JSON *pNode = NULL;
|
VTOY_JSON *pNode = NULL;
|
||||||
|
|
||||||
@@ -975,9 +982,10 @@ static int ventoy_plugin_persistence_check(VTOY_JSON *json, const char *isodisk)
|
|||||||
iso = vtoy_json_get_string_ex(pNode->pstChild, "image");
|
iso = vtoy_json_get_string_ex(pNode->pstChild, "image");
|
||||||
if (iso)
|
if (iso)
|
||||||
{
|
{
|
||||||
if (0 == ventoy_plugin_check_path(isodisk, iso))
|
pos = grub_strchr(iso, '*');
|
||||||
|
if (pos || 0 == ventoy_plugin_check_path(isodisk, iso))
|
||||||
{
|
{
|
||||||
grub_printf("image: %s [OK]\n", iso);
|
grub_printf("image: %s [%s]\n", iso, (pos ? "*" : "OK"));
|
||||||
ventoy_plugin_check_fullpath(pNode->pstChild, isodisk, "backend", &pathnum);
|
ventoy_plugin_check_fullpath(pNode->pstChild, isodisk, "backend", &pathnum);
|
||||||
|
|
||||||
if (JSON_SUCCESS == vtoy_json_get_int(pNode->pstChild, "autosel", &autosel))
|
if (JSON_SUCCESS == vtoy_json_get_int(pNode->pstChild, "autosel", &autosel))
|
||||||
@@ -1102,8 +1110,12 @@ static int ventoy_plugin_menualias_check(VTOY_JSON *json, const char *isodisk)
|
|||||||
if (path && path[0] == '/' && alias)
|
if (path && path[0] == '/' && alias)
|
||||||
{
|
{
|
||||||
if (vtoy_alias_image_file == type)
|
if (vtoy_alias_image_file == type)
|
||||||
{
|
{
|
||||||
if (ventoy_is_file_exist("%s%s", isodisk, path))
|
if (grub_strchr(path, '*'))
|
||||||
|
{
|
||||||
|
grub_printf("image: <%s> [ * ]\n", path);
|
||||||
|
}
|
||||||
|
else if (ventoy_is_file_exist("%s%s", isodisk, path))
|
||||||
{
|
{
|
||||||
grub_printf("image: <%s> [ OK ]\n", path);
|
grub_printf("image: <%s> [ OK ]\n", path);
|
||||||
}
|
}
|
||||||
@@ -1223,7 +1235,15 @@ static int ventoy_plugin_injection_check(VTOY_JSON *json, const char *isodisk)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
grub_printf("image: <%s> [%s]\n", path, ventoy_check_file_exist("%s%s", isodisk, path) ? "OK" : "NOT EXIST");
|
if (grub_strchr(path, '*'))
|
||||||
|
{
|
||||||
|
grub_printf("image: <%s> [*]\n", path);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
grub_printf("image: <%s> [%s]\n", path, ventoy_check_file_exist("%s%s", isodisk, path) ? "OK" : "NOT EXIST");
|
||||||
|
}
|
||||||
|
|
||||||
grub_printf("archive: <%s> [%s]\n\n", archive, ventoy_check_file_exist("%s%s", isodisk, archive) ? "OK" : "NOT EXIST");
|
grub_printf("archive: <%s> [%s]\n\n", archive, ventoy_check_file_exist("%s%s", isodisk, archive) ? "OK" : "NOT EXIST");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1285,6 +1305,7 @@ static int ventoy_plugin_injection_entry(VTOY_JSON *json, const char *isodisk)
|
|||||||
static int ventoy_plugin_menuclass_entry(VTOY_JSON *json, const char *isodisk)
|
static int ventoy_plugin_menuclass_entry(VTOY_JSON *json, const char *isodisk)
|
||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
|
int parent = 0;
|
||||||
const char *key = NULL;
|
const char *key = NULL;
|
||||||
const char *class = NULL;
|
const char *class = NULL;
|
||||||
VTOY_JSON *pNode = NULL;
|
VTOY_JSON *pNode = NULL;
|
||||||
@@ -1313,12 +1334,21 @@ static int ventoy_plugin_menuclass_entry(VTOY_JSON *json, const char *isodisk)
|
|||||||
|
|
||||||
for (pNode = json->pstChild; pNode; pNode = pNode->pstNext)
|
for (pNode = json->pstChild; pNode; pNode = pNode->pstNext)
|
||||||
{
|
{
|
||||||
|
parent = 0;
|
||||||
type = vtoy_class_image_file;
|
type = vtoy_class_image_file;
|
||||||
key = vtoy_json_get_string_ex(pNode->pstChild, "key");
|
key = vtoy_json_get_string_ex(pNode->pstChild, "key");
|
||||||
if (!key)
|
if (!key)
|
||||||
{
|
{
|
||||||
key = vtoy_json_get_string_ex(pNode->pstChild, "dir");
|
key = vtoy_json_get_string_ex(pNode->pstChild, "parent");
|
||||||
type = vtoy_class_directory;
|
if (key)
|
||||||
|
{
|
||||||
|
parent = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
key = vtoy_json_get_string_ex(pNode->pstChild, "dir");
|
||||||
|
type = vtoy_class_directory;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class = vtoy_json_get_string_ex(pNode->pstChild, "class");
|
class = vtoy_json_get_string_ex(pNode->pstChild, "class");
|
||||||
@@ -1328,6 +1358,7 @@ static int ventoy_plugin_menuclass_entry(VTOY_JSON *json, const char *isodisk)
|
|||||||
if (node)
|
if (node)
|
||||||
{
|
{
|
||||||
node->type = type;
|
node->type = type;
|
||||||
|
node->parent = parent;
|
||||||
node->patlen = grub_snprintf(node->pattern, sizeof(node->pattern), "%s", key);
|
node->patlen = grub_snprintf(node->pattern, sizeof(node->pattern), "%s", key);
|
||||||
grub_snprintf(node->class, sizeof(node->class), "%s", class);
|
grub_snprintf(node->class, sizeof(node->class), "%s", class);
|
||||||
|
|
||||||
@@ -1349,7 +1380,7 @@ static int ventoy_plugin_menuclass_entry(VTOY_JSON *json, const char *isodisk)
|
|||||||
|
|
||||||
static int ventoy_plugin_menuclass_check(VTOY_JSON *json, const char *isodisk)
|
static int ventoy_plugin_menuclass_check(VTOY_JSON *json, const char *isodisk)
|
||||||
{
|
{
|
||||||
int type;
|
const char *name = NULL;
|
||||||
const char *key = NULL;
|
const char *key = NULL;
|
||||||
const char *class = NULL;
|
const char *class = NULL;
|
||||||
VTOY_JSON *pNode = NULL;
|
VTOY_JSON *pNode = NULL;
|
||||||
@@ -1364,18 +1395,23 @@ static int ventoy_plugin_menuclass_check(VTOY_JSON *json, const char *isodisk)
|
|||||||
|
|
||||||
for (pNode = json->pstChild; pNode; pNode = pNode->pstNext)
|
for (pNode = json->pstChild; pNode; pNode = pNode->pstNext)
|
||||||
{
|
{
|
||||||
type = vtoy_class_image_file;
|
name = "key";
|
||||||
key = vtoy_json_get_string_ex(pNode->pstChild, "key");
|
key = vtoy_json_get_string_ex(pNode->pstChild, "key");
|
||||||
if (!key)
|
if (!key)
|
||||||
{
|
{
|
||||||
key = vtoy_json_get_string_ex(pNode->pstChild, "dir");
|
name = "parent";
|
||||||
type = vtoy_class_directory;
|
key = vtoy_json_get_string_ex(pNode->pstChild, "parent");
|
||||||
|
if (!key)
|
||||||
|
{
|
||||||
|
name = "dir";
|
||||||
|
key = vtoy_json_get_string_ex(pNode->pstChild, "dir");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class = vtoy_json_get_string_ex(pNode->pstChild, "class");
|
class = vtoy_json_get_string_ex(pNode->pstChild, "class");
|
||||||
if (key && class)
|
if (key && class)
|
||||||
{
|
{
|
||||||
grub_printf("%s: <%s>\n", (type == vtoy_class_directory) ? "dir" : "key", key);
|
grub_printf("%s: <%s>\n", name, key);
|
||||||
grub_printf("class: <%s>\n\n", class);
|
grub_printf("class: <%s>\n\n", class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1611,6 +1647,11 @@ static int ventoy_plugin_conf_replace_check(VTOY_JSON *json, const char *isodisk
|
|||||||
|
|
||||||
grub_script_execute_sourcecode("loopback -d vtisocheck");
|
grub_script_execute_sourcecode("loopback -d vtisocheck");
|
||||||
}
|
}
|
||||||
|
else if (grub_strchr(isof, '*'))
|
||||||
|
{
|
||||||
|
grub_printf("iso:<%s> [*]\n", isof);
|
||||||
|
grub_printf("org:<%s>\n", orgf);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
grub_printf("iso:<%s> [NOT Exist]\n", isof);
|
grub_printf("iso:<%s> [NOT Exist]\n", isof);
|
||||||
@@ -1704,7 +1745,11 @@ static int ventoy_plugin_auto_memdisk_check(VTOY_JSON *json, const char *isodisk
|
|||||||
{
|
{
|
||||||
grub_printf("<%s> ", pNode->unData.pcStrVal);
|
grub_printf("<%s> ", pNode->unData.pcStrVal);
|
||||||
|
|
||||||
if (ventoy_check_file_exist("%s%s", isodisk, pNode->unData.pcStrVal))
|
if (grub_strchr(pNode->unData.pcStrVal, '*'))
|
||||||
|
{
|
||||||
|
grub_printf(" [*]\n");
|
||||||
|
}
|
||||||
|
else if (ventoy_check_file_exist("%s%s", isodisk, pNode->unData.pcStrVal))
|
||||||
{
|
{
|
||||||
grub_printf(" [OK]\n");
|
grub_printf(" [OK]\n");
|
||||||
}
|
}
|
||||||
@@ -1794,7 +1839,11 @@ static int ventoy_plugin_image_list_check(VTOY_JSON *json, const char *isodisk)
|
|||||||
{
|
{
|
||||||
grub_printf("<%s> ", pNode->unData.pcStrVal);
|
grub_printf("<%s> ", pNode->unData.pcStrVal);
|
||||||
|
|
||||||
if (ventoy_check_file_exist("%s%s", isodisk, pNode->unData.pcStrVal))
|
if (grub_strchr(pNode->unData.pcStrVal, '*'))
|
||||||
|
{
|
||||||
|
grub_printf(" [*]\n");
|
||||||
|
}
|
||||||
|
else if (ventoy_check_file_exist("%s%s", isodisk, pNode->unData.pcStrVal))
|
||||||
{
|
{
|
||||||
grub_printf(" [OK]\n");
|
grub_printf(" [OK]\n");
|
||||||
}
|
}
|
||||||
@@ -1996,7 +2045,7 @@ install_template * ventoy_plugin_find_install_template(const char *isopath)
|
|||||||
len = (int)grub_strlen(isopath);
|
len = (int)grub_strlen(isopath);
|
||||||
for (node = g_install_template_head; node; node = node->next)
|
for (node = g_install_template_head; node; node = node->next)
|
||||||
{
|
{
|
||||||
if (node->pathlen == len && grub_strcmp(node->isopath, isopath) == 0)
|
if (node->pathlen == len && ventoy_strcmp(node->isopath, isopath) == 0)
|
||||||
{
|
{
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
@@ -2036,7 +2085,7 @@ persistence_config * ventoy_plugin_find_persistent(const char *isopath)
|
|||||||
len = (int)grub_strlen(isopath);
|
len = (int)grub_strlen(isopath);
|
||||||
for (node = g_persistence_head; node; node = node->next)
|
for (node = g_persistence_head; node; node = node->next)
|
||||||
{
|
{
|
||||||
if ((len == node->pathlen) && (grub_strcmp(node->isopath, isopath) == 0))
|
if ((len == node->pathlen) && (ventoy_strcmp(node->isopath, isopath) == 0))
|
||||||
{
|
{
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
@@ -2117,7 +2166,7 @@ const char * ventoy_plugin_get_injection(const char *isopath)
|
|||||||
len = (int)grub_strlen(isopath);
|
len = (int)grub_strlen(isopath);
|
||||||
for (node = g_injection_head; node; node = node->next)
|
for (node = g_injection_head; node; node = node->next)
|
||||||
{
|
{
|
||||||
if (node->pathlen == len && grub_strcmp(node->isopath, isopath) == 0)
|
if (node->pathlen == len && ventoy_strcmp(node->isopath, isopath) == 0)
|
||||||
{
|
{
|
||||||
return node->archive;
|
return node->archive;
|
||||||
}
|
}
|
||||||
@@ -2140,7 +2189,7 @@ const char * ventoy_plugin_get_menu_alias(int type, const char *isopath)
|
|||||||
for (node = g_menu_alias_head; node; node = node->next)
|
for (node = g_menu_alias_head; node; node = node->next)
|
||||||
{
|
{
|
||||||
if (node->type == type && node->pathlen &&
|
if (node->type == type && node->pathlen &&
|
||||||
node->pathlen == len && grub_strcmp(node->isopath, isopath) == 0)
|
node->pathlen == len && ventoy_strcmp(node->isopath, isopath) == 0)
|
||||||
{
|
{
|
||||||
return node->alias;
|
return node->alias;
|
||||||
}
|
}
|
||||||
@@ -2149,7 +2198,7 @@ const char * ventoy_plugin_get_menu_alias(int type, const char *isopath)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char * ventoy_plugin_get_menu_class(int type, const char *name)
|
const char * ventoy_plugin_get_menu_class(int type, const char *name, const char *path)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
menu_class *node = NULL;
|
menu_class *node = NULL;
|
||||||
@@ -2158,21 +2207,38 @@ const char * ventoy_plugin_get_menu_class(int type, const char *name)
|
|||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = (int)grub_strlen(name);
|
|
||||||
|
|
||||||
if (vtoy_class_image_file == type)
|
if (vtoy_class_image_file == type)
|
||||||
{
|
{
|
||||||
for (node = g_menu_class_head; node; node = node->next)
|
for (node = g_menu_class_head; node; node = node->next)
|
||||||
{
|
{
|
||||||
if (node->type == type && node->patlen <= len && grub_strstr(name, node->pattern))
|
if (node->type != type)
|
||||||
{
|
{
|
||||||
return node->class;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (node->parent)
|
||||||
|
{
|
||||||
|
len = (int)grub_strlen(path);
|
||||||
|
if ((node->patlen < len) && (path[node->patlen] == '/') &&
|
||||||
|
(grub_strncmp(path, node->pattern, node->patlen) == 0))
|
||||||
|
{
|
||||||
|
return node->class;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
len = (int)grub_strlen(name);
|
||||||
|
if ((node->patlen < len) && grub_strstr(name, node->pattern))
|
||||||
|
{
|
||||||
|
return node->class;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
len = (int)grub_strlen(name);
|
||||||
for (node = g_menu_class_head; node; node = node->next)
|
for (node = g_menu_class_head; node; node = node->next)
|
||||||
{
|
{
|
||||||
if (node->type == type && node->patlen == len && grub_strncmp(name, node->pattern, len) == 0)
|
if (node->type == type && node->patlen == len && grub_strncmp(name, node->pattern, len) == 0)
|
||||||
@@ -2288,7 +2354,7 @@ int ventoy_plugin_check_memdisk(const char *isopath)
|
|||||||
len = (int)grub_strlen(isopath);
|
len = (int)grub_strlen(isopath);
|
||||||
for (node = g_auto_memdisk_head; node; node = node->next)
|
for (node = g_auto_memdisk_head; node; node = node->next)
|
||||||
{
|
{
|
||||||
if (node->pathlen == len && grub_strncmp(isopath, node->isopath, len) == 0)
|
if (node->pathlen == len && ventoy_strncmp(node->isopath, isopath, len) == 0)
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -2314,14 +2380,14 @@ int ventoy_plugin_get_image_list_index(int type, const char *name)
|
|||||||
{
|
{
|
||||||
if (vtoy_class_directory == type)
|
if (vtoy_class_directory == type)
|
||||||
{
|
{
|
||||||
if (len < node->pathlen && grub_strncmp(name, node->isopath, len) == 0)
|
if (len < node->pathlen && ventoy_strncmp(node->isopath, name, len) == 0)
|
||||||
{
|
{
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (len == node->pathlen && grub_strncmp(name, node->isopath, len) == 0)
|
if (len == node->pathlen && ventoy_strncmp(node->isopath, name, len) == 0)
|
||||||
{
|
{
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
@@ -2345,7 +2411,7 @@ conf_replace * ventoy_plugin_find_conf_replace(const char *iso)
|
|||||||
|
|
||||||
for (node = g_conf_replace_head; node; node = node->next)
|
for (node = g_conf_replace_head; node; node = node->next)
|
||||||
{
|
{
|
||||||
if (node->pathlen == len && grub_strncmp(iso, node->isopath, len) == 0)
|
if (node->pathlen == len && ventoy_strncmp(node->isopath, iso, len) == 0)
|
||||||
{
|
{
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
@@ -2367,7 +2433,7 @@ dud * ventoy_plugin_find_dud(const char *iso)
|
|||||||
len = (int)grub_strlen(iso);
|
len = (int)grub_strlen(iso);
|
||||||
for (node = g_dud_head; node; node = node->next)
|
for (node = g_dud_head; node; node = node->next)
|
||||||
{
|
{
|
||||||
if (node->pathlen == len && grub_strncmp(iso, node->isopath, len) == 0)
|
if (node->pathlen == len && ventoy_strncmp(node->isopath, iso, len) == 0)
|
||||||
{
|
{
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
@@ -2420,7 +2486,7 @@ static const vtoy_password * ventoy_plugin_get_password(const char *isopath)
|
|||||||
len = (int)grub_strlen(isopath);
|
len = (int)grub_strlen(isopath);
|
||||||
for (node = g_pwd_head; node; node = node->next)
|
for (node = g_pwd_head; node; node = node->next)
|
||||||
{
|
{
|
||||||
if (node->pathlen == len && grub_strncmp(isopath, node->isopath, len) == 0)
|
if (node->pathlen == len && ventoy_strncmp(node->isopath, isopath, len) == 0)
|
||||||
{
|
{
|
||||||
return &(node->password);
|
return &(node->password);
|
||||||
}
|
}
|
||||||
|
@@ -33,6 +33,8 @@
|
|||||||
#include <grub/i18n.h>
|
#include <grub/i18n.h>
|
||||||
#include <grub/net.h>
|
#include <grub/net.h>
|
||||||
#include <grub/time.h>
|
#include <grub/time.h>
|
||||||
|
#include <grub/elf.h>
|
||||||
|
#include <grub/elfload.h>
|
||||||
#include <grub/ventoy.h>
|
#include <grub/ventoy.h>
|
||||||
#include "ventoy_def.h"
|
#include "ventoy_def.h"
|
||||||
|
|
||||||
@@ -383,6 +385,174 @@ grub_err_t ventoy_cmd_unix_freebsd_ver(grub_extcmd_context_t ctxt, int argc, cha
|
|||||||
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
grub_err_t ventoy_cmd_unix_freebsd_ver_elf(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||||
|
{
|
||||||
|
int j;
|
||||||
|
int k;
|
||||||
|
grub_elf_t elf = NULL;
|
||||||
|
grub_off_t offset = 0;
|
||||||
|
grub_uint32_t len = 0;
|
||||||
|
char *str = NULL;
|
||||||
|
char *data = NULL;
|
||||||
|
void *hdr = NULL;
|
||||||
|
char ver[64] = {0};
|
||||||
|
|
||||||
|
(void)ctxt;
|
||||||
|
(void)argc;
|
||||||
|
(void)args;
|
||||||
|
|
||||||
|
if (argc != 3)
|
||||||
|
{
|
||||||
|
debug("Invalid argc %d\n", argc);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
data = grub_zalloc(8192);
|
||||||
|
if (!data)
|
||||||
|
{
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
elf = grub_elf_open(args[0], GRUB_FILE_TYPE_LINUX_INITRD);
|
||||||
|
if (!elf)
|
||||||
|
{
|
||||||
|
debug("Failed to open file %s\n", args[0]);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args[1][0] == '6')
|
||||||
|
{
|
||||||
|
Elf64_Ehdr *e = &(elf->ehdr.ehdr64);
|
||||||
|
Elf64_Shdr *h;
|
||||||
|
Elf64_Shdr *s;
|
||||||
|
Elf64_Shdr *t;
|
||||||
|
Elf64_Half i;
|
||||||
|
|
||||||
|
h = hdr = grub_zalloc(e->e_shnum * e->e_shentsize);
|
||||||
|
if (!h)
|
||||||
|
{
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
debug("read section header %u %u %u\n", e->e_shnum, e->e_shentsize, e->e_shstrndx);
|
||||||
|
grub_file_seek(elf->file, e->e_shoff);
|
||||||
|
grub_file_read(elf->file, h, e->e_shnum * e->e_shentsize);
|
||||||
|
|
||||||
|
s = (Elf64_Shdr *)((char *)h + e->e_shstrndx * e->e_shentsize);
|
||||||
|
str = grub_malloc(s->sh_size + 1);
|
||||||
|
if (!str)
|
||||||
|
{
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
str[s->sh_size] = 0;
|
||||||
|
|
||||||
|
debug("read string table %u %u\n", (grub_uint32_t)s->sh_offset, (grub_uint32_t)s->sh_size);
|
||||||
|
grub_file_seek(elf->file, s->sh_offset);
|
||||||
|
grub_file_read(elf->file, str, s->sh_size);
|
||||||
|
|
||||||
|
for (t = h, i = 0; i < e->e_shnum; i++)
|
||||||
|
{
|
||||||
|
if (grub_strcmp(str + t->sh_name, ".data") == 0)
|
||||||
|
{
|
||||||
|
offset = t->sh_offset;
|
||||||
|
len = t->sh_size;
|
||||||
|
debug("find .data section at %u %u\n", (grub_uint32_t)offset, len);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
t = (Elf64_Shdr *)((char *)t + e->e_shentsize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Elf32_Ehdr *e = &(elf->ehdr.ehdr32);
|
||||||
|
Elf32_Shdr *h;
|
||||||
|
Elf32_Shdr *s;
|
||||||
|
Elf32_Shdr *t;
|
||||||
|
Elf32_Half i;
|
||||||
|
|
||||||
|
h = hdr = grub_zalloc(e->e_shnum * e->e_shentsize);
|
||||||
|
if (!h)
|
||||||
|
{
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
debug("read section header %u %u %u\n", e->e_shnum, e->e_shentsize, e->e_shstrndx);
|
||||||
|
grub_file_seek(elf->file, e->e_shoff);
|
||||||
|
grub_file_read(elf->file, h, e->e_shnum * e->e_shentsize);
|
||||||
|
|
||||||
|
s = (Elf32_Shdr *)((char *)h + e->e_shstrndx * e->e_shentsize);
|
||||||
|
str = grub_malloc(s->sh_size + 1);
|
||||||
|
if (!str)
|
||||||
|
{
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
str[s->sh_size] = 0;
|
||||||
|
|
||||||
|
debug("read string table %u %u\n", (grub_uint32_t)s->sh_offset, (grub_uint32_t)s->sh_size);
|
||||||
|
grub_file_seek(elf->file, s->sh_offset);
|
||||||
|
grub_file_read(elf->file, str, s->sh_size);
|
||||||
|
|
||||||
|
for (t = h, i = 0; i < e->e_shnum; i++)
|
||||||
|
{
|
||||||
|
if (grub_strcmp(str + t->sh_name, ".data") == 0)
|
||||||
|
{
|
||||||
|
offset = t->sh_offset;
|
||||||
|
len = t->sh_size;
|
||||||
|
debug("find .data section at %u %u\n", (grub_uint32_t)offset, len);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
t = (Elf32_Shdr *)((char *)t + e->e_shentsize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (offset == 0 || len == 0)
|
||||||
|
{
|
||||||
|
debug(".data section not found %s\n", args[0]);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_file_seek(elf->file, offset + len - 8192);
|
||||||
|
grub_file_read(elf->file, data, 8192);
|
||||||
|
|
||||||
|
for (j = 0; j < 8192 - 12; j++)
|
||||||
|
{
|
||||||
|
if (grub_strncmp(data + j, "@(#)FreeBSD ", 12) == 0)
|
||||||
|
{
|
||||||
|
for (k = j + 12; k < 8192; k++)
|
||||||
|
{
|
||||||
|
if (0 == grub_isdigit(data[k]) && data[k] != '.')
|
||||||
|
{
|
||||||
|
data[k] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_snprintf(ver, sizeof(ver), "%s", data + j + 12);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ver[0])
|
||||||
|
{
|
||||||
|
k = (int)grub_strtoul(ver, NULL, 10);
|
||||||
|
debug("freebsd version:<%s> <%d.x>\n", ver, k);
|
||||||
|
grub_snprintf(ver, sizeof(ver), "%d.x", k);
|
||||||
|
ventoy_set_env(args[2], ver);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
debug("freebsd version:<%s>\n", "NOT FOUND");
|
||||||
|
}
|
||||||
|
|
||||||
|
out:
|
||||||
|
grub_check_free(str);
|
||||||
|
grub_check_free(hdr);
|
||||||
|
grub_check_free(data);
|
||||||
|
check_free(elf, grub_elf_close);
|
||||||
|
|
||||||
|
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||||
|
}
|
||||||
|
|
||||||
grub_err_t ventoy_cmd_unix_replace_conf(grub_extcmd_context_t ctxt, int argc, char **args)
|
grub_err_t ventoy_cmd_unix_replace_conf(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||||
{
|
{
|
||||||
grub_uint32_t i;
|
grub_uint32_t i;
|
||||||
|
@@ -636,6 +636,21 @@ static wim_lookup_entry * ventoy_find_meta_entry(wim_header *header, wim_lookup_
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static grub_uint64_t ventoy_get_stream_len(wim_directory_entry *dir)
|
||||||
|
{
|
||||||
|
grub_uint16_t i;
|
||||||
|
grub_uint64_t offset = 0;
|
||||||
|
wim_stream_entry *stream = (wim_stream_entry *)((char *)dir + dir->len);
|
||||||
|
|
||||||
|
for (i = 0; i < dir->streams; i++)
|
||||||
|
{
|
||||||
|
offset += stream->len;
|
||||||
|
stream = (wim_stream_entry *)((char *)stream + stream->len);
|
||||||
|
}
|
||||||
|
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
static int ventoy_update_all_hash(wim_patch *patch, void *meta_data, wim_directory_entry *dir)
|
static int ventoy_update_all_hash(wim_patch *patch, void *meta_data, wim_directory_entry *dir)
|
||||||
{
|
{
|
||||||
if ((meta_data == NULL) || (dir == NULL))
|
if ((meta_data == NULL) || (dir == NULL))
|
||||||
@@ -660,8 +675,15 @@ static int ventoy_update_all_hash(wim_patch *patch, void *meta_data, wim_directo
|
|||||||
{
|
{
|
||||||
ventoy_update_all_hash(patch, meta_data, (wim_directory_entry *)((char *)meta_data + dir->subdir));
|
ventoy_update_all_hash(patch, meta_data, (wim_directory_entry *)((char *)meta_data + dir->subdir));
|
||||||
}
|
}
|
||||||
|
|
||||||
dir = (wim_directory_entry *)((char *)dir + dir->len);
|
if (dir->streams)
|
||||||
|
{
|
||||||
|
dir = (wim_directory_entry *)((char *)dir + dir->len + ventoy_get_stream_len(dir));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dir = (wim_directory_entry *)((char *)dir + dir->len);
|
||||||
|
}
|
||||||
} while (dir->len >= sizeof(wim_directory_entry));
|
} while (dir->len >= sizeof(wim_directory_entry));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -860,7 +882,14 @@ static int ventoy_wimdows_locate_wim(const char *disk, wim_patch *patch)
|
|||||||
}
|
}
|
||||||
|
|
||||||
security = (wim_security_header *)decompress_data;
|
security = (wim_security_header *)decompress_data;
|
||||||
rootdir = (wim_directory_entry *)(decompress_data + ((security->len + 7) & 0xFFFFFFF8U));
|
if (security->len > 0)
|
||||||
|
{
|
||||||
|
rootdir = (wim_directory_entry *)(decompress_data + ((security->len + 7) & 0xFFFFFFF8U));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rootdir = (wim_directory_entry *)(decompress_data + 8);
|
||||||
|
}
|
||||||
|
|
||||||
/* search winpeshl.exe dirent entry */
|
/* search winpeshl.exe dirent entry */
|
||||||
search = search_replace_wim_dirent(decompress_data, rootdir);
|
search = search_replace_wim_dirent(decompress_data, rootdir);
|
||||||
|
@@ -12,14 +12,14 @@ make install
|
|||||||
PATH=$PATH:$VT_DIR/GRUB2/INSTALL/bin/:$VT_DIR/GRUB2/INSTALL/sbin/
|
PATH=$PATH:$VT_DIR/GRUB2/INSTALL/bin/:$VT_DIR/GRUB2/INSTALL/sbin/
|
||||||
|
|
||||||
net_modules_legacy="net tftp http"
|
net_modules_legacy="net tftp http"
|
||||||
all_modules_legacy="setkey date drivemap blocklist regexp newc vga_text ntldr search at_keyboard usb_keyboard gcry_md5 hashsum gzio xzio lzopio lspci pci ext2 xfs ventoy chain read halt iso9660 linux16 test true sleep reboot echo videotest videoinfo videotest_checksum video_colors video_cirrus video_bochs vga vbe video_fb font video gettext extcmd terminal linux minicmd help configfile tr trig boot biosdisk disk ls tar squash4 password_pbkdf2 all_video png jpeg part_gpt part_msdos fat exfat ntfs loopback gzio normal udf gfxmenu gfxterm gfxterm_background gfxterm_menu"
|
all_modules_legacy="file setkey date drivemap blocklist regexp newc vga_text ntldr search at_keyboard usb_keyboard gcry_md5 hashsum gzio xzio lzopio lspci pci ext2 xfs ventoy chain read halt iso9660 linux16 test true sleep reboot echo videotest videoinfo videotest_checksum video_colors video_cirrus video_bochs vga vbe video_fb font video gettext extcmd terminal linux minicmd help configfile tr trig boot biosdisk disk ls tar squash4 password_pbkdf2 all_video png jpeg part_gpt part_msdos fat exfat ntfs loopback gzio normal udf gfxmenu gfxterm gfxterm_background gfxterm_menu"
|
||||||
|
|
||||||
net_modules_uefi="efinet net tftp http"
|
net_modules_uefi="efinet net tftp http"
|
||||||
all_modules_uefi="setkey blocklist ventoy test true regexp newc search at_keyboard usb_keyboard gcry_md5 hashsum gzio xzio lzopio ext2 xfs read halt sleep serial terminfo png password_pbkdf2 gcry_sha512 pbkdf2 part_gpt part_msdos ls tar squash4 loopback part_apple minicmd diskfilter linux relocator jpeg iso9660 udf hfsplus halt acpi mmap gfxmenu video_colors trig bitmap_scale gfxterm bitmap font fat exfat ntfs fshelp efifwsetup reboot echo configfile normal terminal gettext chain priority_queue bufio datetime cat extcmd crypto gzio boot all_video efi_gop efi_uga video_bochs video_cirrus video video_fb gfxterm_background gfxterm_menu"
|
all_modules_uefi="file setkey blocklist ventoy test true regexp newc search at_keyboard usb_keyboard gcry_md5 hashsum gzio xzio lzopio ext2 xfs read halt sleep serial terminfo png password_pbkdf2 gcry_sha512 pbkdf2 part_gpt part_msdos ls tar squash4 loopback part_apple minicmd diskfilter linux relocator jpeg iso9660 udf hfsplus halt acpi mmap gfxmenu video_colors trig bitmap_scale gfxterm bitmap font fat exfat ntfs fshelp efifwsetup reboot echo configfile normal terminal gettext chain priority_queue bufio datetime cat extcmd crypto gzio boot all_video efi_gop efi_uga video_bochs video_cirrus video video_fb gfxterm_background gfxterm_menu"
|
||||||
|
|
||||||
all_modules_arm64_uefi="setkey blocklist ventoy test true regexp newc search gcry_md5 hashsum gzio xzio lzopio ext2 xfs read halt sleep serial terminfo png password_pbkdf2 gcry_sha512 pbkdf2 part_gpt part_msdos ls tar squash4 loopback part_apple minicmd diskfilter linux jpeg iso9660 udf hfsplus halt acpi mmap gfxmenu video_colors trig bitmap_scale gfxterm bitmap font fat exfat ntfs fshelp efifwsetup reboot echo configfile normal terminal gettext chain priority_queue bufio datetime cat extcmd crypto gzio boot all_video efi_gop video video_fb gfxterm_background gfxterm_menu"
|
all_modules_arm64_uefi="file setkey blocklist ventoy test true regexp newc search gcry_md5 hashsum gzio xzio lzopio ext2 xfs read halt sleep serial terminfo png password_pbkdf2 gcry_sha512 pbkdf2 part_gpt part_msdos ls tar squash4 loopback part_apple minicmd diskfilter linux jpeg iso9660 udf hfsplus halt acpi mmap gfxmenu video_colors trig bitmap_scale gfxterm bitmap font fat exfat ntfs fshelp efifwsetup reboot echo configfile normal terminal gettext chain priority_queue bufio datetime cat extcmd crypto gzio boot all_video efi_gop video video_fb gfxterm_background gfxterm_menu"
|
||||||
|
|
||||||
all_modules_mips64el_uefi="setkey blocklist ventoy test true regexp newc search gcry_md5 hashsum gzio xzio lzopio ext2 xfs read halt sleep serial terminfo png password_pbkdf2 gcry_sha512 pbkdf2 part_gpt part_msdos ls tar squash4 loopback part_apple minicmd diskfilter linux jpeg iso9660 udf hfsplus halt acpi mmap gfxmenu video_colors trig bitmap_scale gfxterm bitmap font fat exfat ntfs fshelp efifwsetup reboot echo configfile normal terminal gettext chain priority_queue bufio datetime cat extcmd crypto gzio boot all_video efi_gop video video_fb gfxterm_background gfxterm_menu"
|
all_modules_mips64el_uefi="file setkey blocklist ventoy test true regexp newc search gcry_md5 hashsum gzio xzio lzopio ext2 xfs read halt sleep serial terminfo png password_pbkdf2 gcry_sha512 pbkdf2 part_gpt part_msdos ls tar squash4 loopback part_apple minicmd diskfilter linux jpeg iso9660 udf hfsplus halt acpi mmap gfxmenu video_colors trig bitmap_scale gfxterm bitmap font fat exfat ntfs fshelp efifwsetup reboot echo configfile normal terminal gettext chain priority_queue bufio datetime cat extcmd crypto gzio boot all_video efi_gop video video_fb gfxterm_background gfxterm_menu"
|
||||||
|
|
||||||
|
|
||||||
if [ "$1" = "uefi" ]; then
|
if [ "$1" = "uefi" ]; then
|
||||||
|
@@ -61,3 +61,7 @@ else
|
|||||||
|
|
||||||
ventoy_add_udev_rule "$VTOY_PATH/hook/default/udev_disk_hook.sh %k"
|
ventoy_add_udev_rule "$VTOY_PATH/hook/default/udev_disk_hook.sh %k"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -f $VTOY_PATH/ventoy_persistent_map ]; then
|
||||||
|
$SED "1 aexport cow_label=vtoycow" -i /init
|
||||||
|
fi
|
||||||
|
79
IMG/cpio/ventoy/hook/debian/kerio-disk.sh
Normal file
79
IMG/cpio/ventoy/hook/debian/kerio-disk.sh
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
#!/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
|
||||||
|
|
||||||
|
|
||||||
|
ventoy_os_install_dmsetup_by_ko() {
|
||||||
|
vtlog "ventoy_os_install_dmsetup_by_ko $1"
|
||||||
|
|
||||||
|
vtVer=$(uname -r)
|
||||||
|
if uname -m | $GREP -q 64; then
|
||||||
|
vtBit=64
|
||||||
|
else
|
||||||
|
vtBit=32
|
||||||
|
fi
|
||||||
|
|
||||||
|
ventoy_extract_vtloopex $1 kerio
|
||||||
|
vtLoopExDir=$VTOY_PATH/vtloopex/kerio/vtloopex
|
||||||
|
|
||||||
|
if [ -e $vtLoopExDir/dm-mod/$vtVer/$vtBit/dm-mod.ko.xz ]; then
|
||||||
|
$BUSYBOX_PATH/xz -d $vtLoopExDir/dm-mod/$vtVer/$vtBit/dm-mod.ko.xz
|
||||||
|
insmod $vtLoopExDir/dm-mod/$vtVer/$vtBit/dm-mod.ko
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
if echo $vtdiskname | $EGREP -q "nvme|mmc|nbd"; then
|
||||||
|
ventoy_os_install_dmsetup_by_ko "${vtdiskname}p2"
|
||||||
|
else
|
||||||
|
ventoy_os_install_dmsetup_by_ko "${vtdiskname}2"
|
||||||
|
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 "/dev/$vtDM"
|
||||||
|
mount -t iso9660 /dev/$vtDM /cdrom
|
||||||
|
modprobe squashfs
|
||||||
|
echo "/dev/$vtDM" > /ventoy/vtDM
|
||||||
|
|
||||||
|
PATH=$VTPATH_OLD
|
||||||
|
|
||||||
|
set_ventoy_hook_finish
|
20
IMG/cpio/ventoy/hook/debian/kerio-hook.sh
Normal file
20
IMG/cpio/ventoy/hook/debian/kerio-hook.sh
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/ventoy/busybox/sh
|
||||||
|
#************************************************************************************
|
||||||
|
# Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License as
|
||||||
|
# published by the Free Software Foundation; either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
#************************************************************************************
|
||||||
|
|
||||||
|
$SED "/for drive in/i\ $BUSYBOX_PATH/sh $VTOY_PATH/hook/debian/kerio-disk.sh >/dev/null 2>&1; cat /ventoy/vtDM; exit 0" -i /installer/install_init
|
@@ -37,9 +37,17 @@ ventoy_os_install_dmsetup_by_fuse() {
|
|||||||
|
|
||||||
mount -t iso9660 $VTOY_PATH/mnt/fuse/ventoy.iso $VTOY_PATH/mnt/iso
|
mount -t iso9660 $VTOY_PATH/mnt/fuse/ventoy.iso $VTOY_PATH/mnt/iso
|
||||||
|
|
||||||
sfsfile=$(ls $VTOY_PATH/mnt/iso/adrv_veket*.sfs)
|
for sfsfile in $(ls $VTOY_PATH/mnt/iso/*drv_veket*.sfs); do
|
||||||
|
mount -t squashfs $sfsfile $VTOY_PATH/mnt/squashfs
|
||||||
mount -t squashfs $sfsfile $VTOY_PATH/mnt/squashfs
|
if [ -d $VTOY_PATH/mnt/squashfs/lib/modules ]; then
|
||||||
|
KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$2/kernel/drivers/md/dm-mod.ko*)
|
||||||
|
if [ -n "$KoName" -a -f $KoName ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
umount $VTOY_PATH/mnt/squashfs
|
||||||
|
done
|
||||||
|
|
||||||
KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$2/kernel/drivers/dax/dax.ko*)
|
KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$2/kernel/drivers/dax/dax.ko*)
|
||||||
vtlog "insmod $KoName"
|
vtlog "insmod $KoName"
|
||||||
|
@@ -86,6 +86,9 @@ ventoy_get_debian_distro() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -e /opt/kerio ]; then
|
||||||
|
echo 'kerio'; return
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
echo 'default'
|
echo 'default'
|
||||||
|
@@ -49,7 +49,12 @@ done
|
|||||||
|
|
||||||
if [ -n "$1" ]; then
|
if [ -n "$1" ]; then
|
||||||
vtlog "ln -s /dev/$vtDM $1"
|
vtlog "ln -s /dev/$vtDM $1"
|
||||||
ln -s /dev/$vtDM "$1"
|
|
||||||
|
if [ -e "$1" ]; then
|
||||||
|
vtlog "$1 already exist"
|
||||||
|
else
|
||||||
|
ln -s /dev/$vtDM "$1"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
vtLABEL=$($BUSYBOX_PATH/blkid /dev/$vtDM | $SED 's/.*LABEL="\([^"]*\)".*/\1/')
|
vtLABEL=$($BUSYBOX_PATH/blkid /dev/$vtDM | $SED 's/.*LABEL="\([^"]*\)".*/\1/')
|
||||||
vtlog "vtLABEL is $vtLABEL"
|
vtlog "vtLABEL is $vtLABEL"
|
||||||
|
@@ -19,9 +19,6 @@
|
|||||||
|
|
||||||
. $VTOY_PATH/hook/ventoy-os-lib.sh
|
. $VTOY_PATH/hook/ventoy-os-lib.sh
|
||||||
|
|
||||||
#ventoy_systemd_udevd_work_around
|
|
||||||
#ventoy_add_udev_rule "$VTOY_PATH/hook/default/udev_disk_hook.sh %k noreplace"
|
|
||||||
|
|
||||||
if [ -f $VTOY_PATH/autoinstall ]; then
|
if [ -f $VTOY_PATH/autoinstall ]; then
|
||||||
VTKS="inst.ks=file:$VTOY_PATH/autoinstall"
|
VTKS="inst.ks=file:$VTOY_PATH/autoinstall"
|
||||||
else
|
else
|
||||||
@@ -40,7 +37,25 @@ else
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "VTKS=$VTKS" >> $VTLOG
|
if [ -f $VTOY_PATH/ventoy_persistent_map ]; then
|
||||||
|
VTOVERLAY="rd.live.overlay=/dev/dm-1:/vtoyoverlayfs/overlayfs"
|
||||||
|
|
||||||
|
if [ -e /sbin/dmsquash-live-root ]; then
|
||||||
|
echo "patch /sbin/dmsquash-live-root for persistent ..." >> $VTLOG
|
||||||
|
$SED "/mount.*devspec.*\/run\/initramfs\/overlayfs/a . /ventoy/hook/openEuler/ventoy-overlay.sh" -i /sbin/dmsquash-live-root
|
||||||
|
fi
|
||||||
|
|
||||||
|
#close selinux
|
||||||
|
$BUSYBOX_PATH/mkdir -p $VTOY_PATH/selinuxfs
|
||||||
|
if $BUSYBOX_PATH/mount -t selinuxfs selinuxfs $VTOY_PATH/selinuxfs; then
|
||||||
|
echo 1 > $VTOY_PATH/selinuxfs/disable
|
||||||
|
$BUSYBOX_PATH/umount $VTOY_PATH/selinuxfs
|
||||||
|
fi
|
||||||
|
$BUSYBOX_PATH/rm -rf $VTOY_PATH/selinuxfs
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo "VTKS=$VTKS VTOVERLAY=$VTOVERLAY" >> $VTLOG
|
||||||
|
|
||||||
if ls $VTOY_PATH | $GREP -q 'ventoy_dud[0-9]'; then
|
if ls $VTOY_PATH | $GREP -q 'ventoy_dud[0-9]'; then
|
||||||
for vtDud in $(ls $VTOY_PATH/ventoy_dud*); do
|
for vtDud in $(ls $VTOY_PATH/ventoy_dud*); do
|
||||||
@@ -49,11 +64,7 @@ if ls $VTOY_PATH | $GREP -q 'ventoy_dud[0-9]'; then
|
|||||||
fi
|
fi
|
||||||
echo "vtInstDD=$vtInstDD" >> $VTLOG
|
echo "vtInstDD=$vtInstDD" >> $VTLOG
|
||||||
|
|
||||||
if $GREP -q 'root=live' /proc/cmdline; then
|
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE inst.stage2=hd:/dev/dm-0 $VTKS $vtInstDD#" -i /lib/dracut-lib.sh
|
||||||
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE root=live:/dev/dm-0 $VTKS $vtInstDD#" -i /lib/dracut-lib.sh
|
|
||||||
else
|
|
||||||
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE inst.stage2=hd:/dev/dm-0 $VTKS $vtInstDD#" -i /lib/dracut-lib.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
ventoy_set_inotify_script openEuler/ventoy-inotifyd-hook.sh
|
ventoy_set_inotify_script openEuler/ventoy-inotifyd-hook.sh
|
||||||
|
|
||||||
@@ -66,14 +77,15 @@ fi
|
|||||||
|
|
||||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/openEuler/ventoy-inotifyd-start.sh /lib/dracut/hooks/pre-udev/${vtPriority}-ventoy-inotifyd-start.sh
|
$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/openEuler/ventoy-inotifyd-start.sh /lib/dracut/hooks/pre-udev/${vtPriority}-ventoy-inotifyd-start.sh
|
||||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/openEuler/ventoy-timeout.sh /lib/dracut/hooks/initqueue/timeout/${vtPriority}-ventoy-timeout.sh
|
$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/openEuler/ventoy-timeout.sh /lib/dracut/hooks/initqueue/timeout/${vtPriority}-ventoy-timeout.sh
|
||||||
|
$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/openEuler/ventoy-repo.sh /lib/dracut/hooks/pre-pivot/99-ventoy-repo.sh
|
||||||
|
|
||||||
if [ -e /sbin/dmsquash-live-root ]; then
|
if [ -f /sbin/dmsquash-live-root ]; then
|
||||||
echo "patch /sbin/dmsquash-live-root ..." >> $VTLOG
|
echo "patch /sbin/dmsquash-live-root ..." >> $VTLOG
|
||||||
$SED "1 a $BUSYBOX_PATH/sh $VTOY_PATH/hook/openEuler/ventoy-make-link.sh" -i /sbin/dmsquash-live-root
|
$SED "1 a $BUSYBOX_PATH/sh $VTOY_PATH/hook/openEuler/ventoy-make-link.sh" -i /sbin/dmsquash-live-root
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# suppress write protected mount warning
|
# suppress write protected mount warning
|
||||||
if [ -e /usr/sbin/anaconda-diskroot ]; then
|
if [ -f /usr/sbin/anaconda-diskroot ]; then
|
||||||
$SED 's/^mount $dev $repodir/mount -oro $dev $repodir/' -i /usr/sbin/anaconda-diskroot
|
$SED 's/^mount $dev $repodir/mount -oro $dev $repodir/' -i /usr/sbin/anaconda-diskroot
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@@ -29,20 +29,11 @@ if is_inotify_ventoy_part $3; then
|
|||||||
|
|
||||||
vtlog "##### INOTIFYD: $2/$3 is created (YES) ..."
|
vtlog "##### INOTIFYD: $2/$3 is created (YES) ..."
|
||||||
|
|
||||||
vtGenRulFile='/etc/udev/rules.d/99-live-squash.rules'
|
|
||||||
if [ -e $vtGenRulFile ] && $GREP -q dmsquash $vtGenRulFile; then
|
|
||||||
vtScript=$($GREP -m1 'RUN.=' $vtGenRulFile | $AWK -F'RUN.=' '{print $2}' | $SED 's/"\(.*\)".*/\1/')
|
|
||||||
vtlog "vtScript=$vtScript"
|
|
||||||
$vtScript
|
|
||||||
else
|
|
||||||
vtlog "$vtGenRulFile not exist..."
|
|
||||||
fi
|
|
||||||
|
|
||||||
vtlog "find ventoy partition ..."
|
vtlog "find ventoy partition ..."
|
||||||
|
|
||||||
vtReplaceOpt=noreplace
|
#vtReplaceOpt=noreplace
|
||||||
|
|
||||||
$BUSYBOX_PATH/sh $VTOY_PATH/hook/default/udev_disk_hook.sh $3 $vtReplaceOpt
|
$BUSYBOX_PATH/sh $VTOY_PATH/hook/default/udev_disk_hook.sh $3
|
||||||
|
|
||||||
blkdev_num=$($VTOY_PATH/tool/dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/')
|
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})
|
vtDM=$(ventoy_find_dm_id ${blkdev_num})
|
||||||
|
21
IMG/cpio/ventoy/hook/openEuler/ventoy-overlay.sh
Normal file
21
IMG/cpio/ventoy/hook/openEuler/ventoy-overlay.sh
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/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/>.
|
||||||
|
#
|
||||||
|
#************************************************************************************
|
||||||
|
|
||||||
|
[ -d /run/initramfs/overlayfs$pathspec ] || mkdir -p /run/initramfs/overlayfs$pathspec
|
||||||
|
[ -d /run/initramfs/overlayfs$pathspec/../ovlwork ] || mkdir -p /run/initramfs/overlayfs$pathspec/../ovlwork
|
29
IMG/cpio/ventoy/hook/openEuler/ventoy-repo.sh
Normal file
29
IMG/cpio/ventoy/hook/openEuler/ventoy-repo.sh
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/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
|
||||||
|
|
||||||
|
repodev=$(ls $VTOY_PATH/dev_backup*)
|
||||||
|
echo "inst.repo=hd:/dev/${repodev#*dev_backup_}" >> /sysroot/etc/cmdline
|
||||||
|
|
||||||
|
PATH=$VTPATH_OLD
|
@@ -26,3 +26,13 @@ ventoy_add_udev_rule "$VTOY_PATH/hook/rhel6/udev_disk_hook.sh %k"
|
|||||||
|
|
||||||
#loop7 was used by loader
|
#loop7 was used by loader
|
||||||
ventoy_add_kernel_udev_rule "loop6" "$VTOY_PATH/hook/rhel6/udev_disk_hook.sh %k"
|
ventoy_add_kernel_udev_rule "loop6" "$VTOY_PATH/hook/rhel6/udev_disk_hook.sh %k"
|
||||||
|
|
||||||
|
if [ -f $VTOY_PATH/autoinstall ]; then
|
||||||
|
$BUSYBOX_PATH/mv /sbin/loader /sbin/loader_bk
|
||||||
|
$BUSYBOX_PATH/mv $VTOY_PATH/tool/loader /sbin/loader
|
||||||
|
|
||||||
|
RawCmdLine=$($BUSYBOX_PATH/cat /proc/cmdline)
|
||||||
|
echo -n "/sbin/loader_bk" > "/ventoy/loader_exec_file"
|
||||||
|
echo -n "--cmdline=$RawCmdLine ks=file:$VTOY_PATH/autoinstall" > "/ventoy/loader_exec_cmdline"
|
||||||
|
#echo 111 > "/ventoy/loader_debug"
|
||||||
|
fi
|
||||||
|
@@ -40,7 +40,26 @@ else
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "VTKS=$VTKS" >> $VTLOG
|
if [ -f $VTOY_PATH/ventoy_persistent_map ]; then
|
||||||
|
VTOVERLAY="rd.live.overlay=/dev/dm-1:/vtoyoverlayfs/overlayfs"
|
||||||
|
|
||||||
|
if [ -e /sbin/dmsquash-live-root ]; then
|
||||||
|
echo "patch /sbin/dmsquash-live-root for persistent ..." >> $VTLOG
|
||||||
|
$SED "/mount.*devspec.*\/run\/initramfs\/overlayfs/a . /ventoy/hook/rhel7/ventoy-overlay.sh" -i /sbin/dmsquash-live-root
|
||||||
|
$SED "s/osmin.img/osmin.imgxxxx/g" -i /sbin/dmsquash-live-root
|
||||||
|
fi
|
||||||
|
|
||||||
|
#close selinux
|
||||||
|
$BUSYBOX_PATH/mkdir -p $VTOY_PATH/selinuxfs
|
||||||
|
if $BUSYBOX_PATH/mount -t selinuxfs selinuxfs $VTOY_PATH/selinuxfs; then
|
||||||
|
echo 1 > $VTOY_PATH/selinuxfs/disable
|
||||||
|
$BUSYBOX_PATH/umount $VTOY_PATH/selinuxfs
|
||||||
|
fi
|
||||||
|
$BUSYBOX_PATH/rm -rf $VTOY_PATH/selinuxfs
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo "VTKS=$VTKS VTOVERLAY=$VTOVERLAY" >> $VTLOG
|
||||||
|
|
||||||
if ls $VTOY_PATH | $GREP -q 'ventoy_dud[0-9]'; then
|
if ls $VTOY_PATH | $GREP -q 'ventoy_dud[0-9]'; then
|
||||||
for vtDud in $(ls $VTOY_PATH/ventoy_dud*); do
|
for vtDud in $(ls $VTOY_PATH/ventoy_dud*); do
|
||||||
@@ -50,9 +69,9 @@ fi
|
|||||||
echo "vtInstDD=$vtInstDD" >> $VTLOG
|
echo "vtInstDD=$vtInstDD" >> $VTLOG
|
||||||
|
|
||||||
if $GREP -q 'root=live' /proc/cmdline; then
|
if $GREP -q 'root=live' /proc/cmdline; then
|
||||||
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE root=live:/dev/dm-0 $VTKS $vtInstDD#" -i /lib/dracut-lib.sh
|
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE root=live:/dev/dm-0 $VTKS $VTOVERLAY $vtInstDD#" -i /lib/dracut-lib.sh
|
||||||
else
|
else
|
||||||
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE inst.stage2=hd:/dev/dm-0 $VTKS $vtInstDD#" -i /lib/dracut-lib.sh
|
$SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE inst.stage2=hd:/dev/dm-0 $VTKS $VTOVERLAY $vtInstDD#" -i /lib/dracut-lib.sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ventoy_set_inotify_script rhel7/ventoy-inotifyd-hook.sh
|
ventoy_set_inotify_script rhel7/ventoy-inotifyd-hook.sh
|
||||||
@@ -67,6 +86,20 @@ 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-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
|
$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
|
||||||
|
if $GREP -q 'RED OS' /etc/system-release; then
|
||||||
|
vtNeedRepo="yes"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if $GREP -q el8 /proc/version; then
|
||||||
|
vtNeedRepo="yes"
|
||||||
|
fi
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
if [ -e /sbin/dmsquash-live-root ]; then
|
if [ -e /sbin/dmsquash-live-root ]; then
|
||||||
echo "patch /sbin/dmsquash-live-root ..." >> $VTLOG
|
echo "patch /sbin/dmsquash-live-root ..." >> $VTLOG
|
||||||
$SED "1 a $BUSYBOX_PATH/sh $VTOY_PATH/hook/rhel7/ventoy-make-link.sh" -i /sbin/dmsquash-live-root
|
$SED "1 a $BUSYBOX_PATH/sh $VTOY_PATH/hook/rhel7/ventoy-make-link.sh" -i /sbin/dmsquash-live-root
|
||||||
|
@@ -41,12 +41,8 @@ if is_inotify_ventoy_part $3; then
|
|||||||
vtlog "find ventoy partition ..."
|
vtlog "find ventoy partition ..."
|
||||||
|
|
||||||
vtReplaceOpt=noreplace
|
vtReplaceOpt=noreplace
|
||||||
|
if [ -f /lib/dracut/hooks/pre-pivot/99-ventoy-repo.sh ]; then
|
||||||
if $GREP -q el8 /proc/version && [ -f /etc/system-release ]; then
|
vtReplaceOpt=""
|
||||||
vtRhel8Ver=$($SED "s#.*8\.\([0-9]*\).*#\1#" /etc/system-release)
|
|
||||||
if [ $vtRhel8Ver -ge 3 ]; then
|
|
||||||
vtReplaceOpt=""
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$BUSYBOX_PATH/sh $VTOY_PATH/hook/default/udev_disk_hook.sh $3 $vtReplaceOpt
|
$BUSYBOX_PATH/sh $VTOY_PATH/hook/default/udev_disk_hook.sh $3 $vtReplaceOpt
|
||||||
|
21
IMG/cpio/ventoy/hook/rhel7/ventoy-overlay.sh
Normal file
21
IMG/cpio/ventoy/hook/rhel7/ventoy-overlay.sh
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/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/>.
|
||||||
|
#
|
||||||
|
#************************************************************************************
|
||||||
|
|
||||||
|
[ -d /run/initramfs/overlayfs$pathspec ] || mkdir -p /run/initramfs/overlayfs$pathspec
|
||||||
|
[ -d /run/initramfs/overlayfs$pathspec/../ovlwork ] || mkdir -p /run/initramfs/overlayfs$pathspec/../ovlwork
|
29
IMG/cpio/ventoy/hook/rhel7/ventoy-repo.sh
Normal file
29
IMG/cpio/ventoy/hook/rhel7/ventoy-repo.sh
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/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
|
||||||
|
|
||||||
|
repodev=$(ls $VTOY_PATH/dev_backup*)
|
||||||
|
echo "inst.repo=hd:/dev/${repodev#*dev_backup_}" >> /sysroot/etc/cmdline
|
||||||
|
|
||||||
|
PATH=$VTPATH_OLD
|
@@ -45,6 +45,9 @@ echo -n $vtDM > /ventoy/vtDM
|
|||||||
ventoy_create_dev_ventoy_part
|
ventoy_create_dev_ventoy_part
|
||||||
mdev -s
|
mdev -s
|
||||||
|
|
||||||
|
mkdir /ventoy_rdroot
|
||||||
|
mount /dev/ventoy2 /ventoy_rdroot
|
||||||
|
|
||||||
PATH=$VTPATH_OLD
|
PATH=$VTPATH_OLD
|
||||||
|
|
||||||
set_ventoy_hook_finish
|
set_ventoy_hook_finish
|
||||||
|
@@ -19,12 +19,39 @@
|
|||||||
|
|
||||||
. $VTOY_PATH/hook/ventoy-os-lib.sh
|
. $VTOY_PATH/hook/ventoy-os-lib.sh
|
||||||
|
|
||||||
$BUSYBOX_PATH/mkdir /sys
|
VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
|
||||||
$BUSYBOX_PATH/mount -t proc proc /proc
|
|
||||||
$BUSYBOX_PATH/mount -t sysfs sys /sys
|
|
||||||
|
|
||||||
$BUSYBOX_PATH/mdev -s
|
wrt_insmod() {
|
||||||
|
kbit=$1
|
||||||
|
kv=$(uname -r)
|
||||||
|
|
||||||
|
echo "insmod $kv $kbit" >> $VTOY_PATH/log
|
||||||
|
|
||||||
|
[ -f /ventoy_openwrt/$kv/$kbit/dax.ko ] && insmod /ventoy_openwrt/$kv/$kbit/dax.ko > /dev/null 2>&1
|
||||||
|
[ -f /ventoy_openwrt/$kv/$kbit/dm-mod.ko ] && insmod /ventoy_openwrt/$kv/$kbit/dm-mod.ko > /dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
#$BUSYBOX_PATH/sh $VTOY_PATH/loop/openwrt/ventoy-disk.sh
|
|
||||||
|
|
||||||
exec $BUSYBOX_PATH/sh
|
mkdir /sys
|
||||||
|
mount -t sysfs sys /sys
|
||||||
|
mdev -s
|
||||||
|
|
||||||
|
|
||||||
|
if [ -f /ventoy_openwrt.xz ]; then
|
||||||
|
tar xf /ventoy_openwrt.xz -C /
|
||||||
|
rm -f /ventoy_openwrt.xz
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if uname -m | egrep -q "amd64|x86_64"; then
|
||||||
|
wrt_insmod 64
|
||||||
|
else
|
||||||
|
wrt_insmod generic
|
||||||
|
if lsmod | grep -q 'dm-mod'; then
|
||||||
|
echo "insmod generic failed" >> $VTOY_PATH/log
|
||||||
|
else
|
||||||
|
wrt_insmod legacy
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
sh $VTOY_PATH/loop/openwrt/ventoy-disk.sh
|
||||||
|
@@ -153,6 +153,8 @@ ventoy_get_os_type() {
|
|||||||
echo 'rhel7'; return
|
echo 'rhel7'; return
|
||||||
elif $GREP -q 'openEuler' /etc/os-release; then
|
elif $GREP -q 'openEuler' /etc/os-release; then
|
||||||
echo 'openEuler'; return
|
echo 'openEuler'; return
|
||||||
|
elif $GREP -q 'fuyu' /etc/os-release; then
|
||||||
|
echo 'openEuler'; return
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@@ -198,6 +198,8 @@ ventoy_get_os_type() {
|
|||||||
echo 'rhel7'; return
|
echo 'rhel7'; return
|
||||||
elif $GREP -q 'openEuler' /etc/os-release; then
|
elif $GREP -q 'openEuler' /etc/os-release; then
|
||||||
echo 'openEuler'; return
|
echo 'openEuler'; return
|
||||||
|
elif $GREP -q 'fuyu' /etc/os-release; then
|
||||||
|
echo 'openEuler'; return
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
Binary file not shown.
@@ -2,25 +2,29 @@
|
|||||||
|
|
||||||
VTOY_PATH=$PWD/..
|
VTOY_PATH=$PWD/..
|
||||||
|
|
||||||
|
cilog() {
|
||||||
|
datestr=$(date +"%Y/%m/%d %H:%M:%S")
|
||||||
|
echo "$datestr $*"
|
||||||
|
}
|
||||||
|
|
||||||
LOG=$VTOY_PATH/DOC/build.log
|
LOG=$VTOY_PATH/DOC/build.log
|
||||||
[ -f $LOG ] && rm -f $LOG
|
[ -f $LOG ] && rm -f $LOG
|
||||||
|
|
||||||
cd $VTOY_PATH/DOC
|
cd $VTOY_PATH/DOC
|
||||||
echo "prepare_env ..."
|
cilog "prepare_env ..."
|
||||||
sh prepare_env.sh
|
sh prepare_env.sh
|
||||||
|
|
||||||
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/mips-loongson-gcc7.3-linux-gnu/2019.06-29/bin/:/opt/mips64el-linux-musl-gcc730/bin/
|
export PATH=$PATH:/opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin:/opt/aarch64--uclibc--stable-2020.08-1/bin:/opt/mips-loongson-gcc7.3-linux-gnu/2019.06-29/bin/:/opt/mips64el-linux-musl-gcc730/bin/
|
||||||
|
|
||||||
|
cilog "build grub2 ..."
|
||||||
echo "build grub2 ..."
|
|
||||||
cd $VTOY_PATH/GRUB2
|
cd $VTOY_PATH/GRUB2
|
||||||
sh buildgrub.sh >> $LOG 2>&1 || exit 1
|
sh buildgrub.sh >> $LOG 2>&1 || exit 1
|
||||||
|
|
||||||
echo "build ipxe ..."
|
cilog "build ipxe ..."
|
||||||
cd $VTOY_PATH/IPXE
|
cd $VTOY_PATH/IPXE
|
||||||
sh buildipxe.sh >> $LOG 2>&1 || exit 1
|
sh buildipxe.sh >> $LOG 2>&1 || exit 1
|
||||||
|
|
||||||
echo "build edk2 ..."
|
cilog "build edk2 ..."
|
||||||
cd $VTOY_PATH/EDK2
|
cd $VTOY_PATH/EDK2
|
||||||
sh buildedk.sh >> $LOG 2>&1 || exit 1
|
sh buildedk.sh >> $LOG 2>&1 || exit 1
|
||||||
|
|
||||||
@@ -74,7 +78,7 @@ if [ "$1" = "CI" ]; then
|
|||||||
sed "s/VENTOY_VERSION=.*/VENTOY_VERSION=\"$Ver\"/" -i ./grub/grub.cfg
|
sed "s/VENTOY_VERSION=.*/VENTOY_VERSION=\"$Ver\"/" -i ./grub/grub.cfg
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "packing ventoy-$Ver ..."
|
cilog "packing ventoy-$Ver ..."
|
||||||
sh ventoy_pack.sh $1 >> $LOG 2>&1 || exit 1
|
sh ventoy_pack.sh $1 >> $LOG 2>&1 || exit 1
|
||||||
|
|
||||||
echo -e '\n============== SUCCESS ==================\n'
|
echo -e '\n============== SUCCESS ==================\n'
|
||||||
|
@@ -2,12 +2,18 @@
|
|||||||
|
|
||||||
VTOY_PATH=$PWD/..
|
VTOY_PATH=$PWD/..
|
||||||
|
|
||||||
wget -q -P $VTOY_PATH/DOC/ https://www.fefe.de/dietlibc/dietlibc-0.34.tar.xz
|
date +"%Y/%m/%d %H:%M:%S"
|
||||||
wget -q -P $VTOY_PATH/DOC/ https://musl.libc.org/releases/musl-1.2.1.tar.gz
|
echo downloading envrionment ...
|
||||||
wget -q -P $VTOY_PATH/GRUB2/ https://ftp.gnu.org/gnu/grub/grub-2.04.tar.xz
|
|
||||||
|
wget -q -P $VTOY_PATH/DOC/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/dietlibc-0.34.tar.xz
|
||||||
|
wget -q -P $VTOY_PATH/DOC/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/musl-1.2.1.tar.gz
|
||||||
|
wget -q -P $VTOY_PATH/GRUB2/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/grub-2.04.tar.xz
|
||||||
wget -q -O $VTOY_PATH/EDK2/edk2-edk2-stable201911.zip https://codeload.github.com/tianocore/edk2/zip/edk2-stable201911
|
wget -q -O $VTOY_PATH/EDK2/edk2-edk2-stable201911.zip https://codeload.github.com/tianocore/edk2/zip/edk2-stable201911
|
||||||
wget -q -P /opt/ 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
|
wget -q -P /opt/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz
|
||||||
wget -q -P /opt/ https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--uclibc--stable-2020.08-1.tar.bz2
|
wget -q -P /opt/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/aarch64--uclibc--stable-2020.08-1.tar.bz2
|
||||||
wget -q -P /opt/ http://ftp.loongnix.org/toolchain/gcc/release/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz
|
wget -q -P /opt/ https://github.com/ventoy/vtoytoolchain/releases/download/1.0/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz
|
||||||
|
|
||||||
|
date +"%Y/%m/%d %H:%M:%S"
|
||||||
|
echo downloading envrionment finish...
|
||||||
|
|
||||||
sh all_in_one.sh CI
|
sh all_in_one.sh CI
|
||||||
|
@@ -32,6 +32,7 @@
|
|||||||
*save_env: loadenv
|
*save_env: loadenv
|
||||||
*search: search
|
*search: search
|
||||||
*serial: serial
|
*serial: serial
|
||||||
|
*set_keyboard_layout: setkey
|
||||||
*setkey: setkey
|
*setkey: setkey
|
||||||
*sha1sum: hashsum
|
*sha1sum: hashsum
|
||||||
*sha256sum: hashsum
|
*sha256sum: hashsum
|
||||||
|
Binary file not shown.
@@ -1,7 +1,7 @@
|
|||||||
videotest: font video gfxmenu
|
videotest: font video gfxmenu
|
||||||
setkey: extcmd
|
|
||||||
odc: archelp
|
odc: archelp
|
||||||
loopback: extcmd
|
loopback: extcmd
|
||||||
|
setkey: extcmd
|
||||||
macho:
|
macho:
|
||||||
gcry_des: crypto
|
gcry_des: crypto
|
||||||
memrw: extcmd
|
memrw: extcmd
|
||||||
@@ -93,7 +93,7 @@ terminal:
|
|||||||
div:
|
div:
|
||||||
crypto:
|
crypto:
|
||||||
part_bsd: part_msdos
|
part_bsd: part_msdos
|
||||||
ventoy: ext2 fshelp btrfs font crypto gcry_md5 exfat udf extcmd normal video gcry_sha1 iso9660
|
ventoy: elf fshelp ext2 btrfs font crypto gcry_md5 exfat udf extcmd normal video gcry_sha1 iso9660
|
||||||
gcry_sha512: crypto
|
gcry_sha512: crypto
|
||||||
password: crypto normal
|
password: crypto normal
|
||||||
fshelp:
|
fshelp:
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
source $prefix/keyboard.cfg.gz
|
source $prefix/keyboard.cfg
|
||||||
|
|
||||||
submenu "Resolution Configuration" --class=debug_resolution {
|
submenu "Resolution Configuration" --class=debug_resolution --class=F5tool {
|
||||||
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
|
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
|
||||||
echo 'Return ...'
|
echo 'Return ...'
|
||||||
}
|
}
|
||||||
@@ -16,7 +16,7 @@ submenu "Resolution Configuration" --class=debug_resolution {
|
|||||||
set vtActive="[*]"
|
set vtActive="[*]"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
menuentry "$vtCurMode $vtActive" --class=debug_videomode VTOY_RUN_RET {
|
menuentry "$vtCurMode $vtActive" --class=debug_videomode --class=debug_resolution --class=F5tool VTOY_RUN_RET {
|
||||||
terminal_output console
|
terminal_output console
|
||||||
set gfxmode=$1
|
set gfxmode=$1
|
||||||
terminal_output gfxterm
|
terminal_output gfxterm
|
||||||
@@ -26,11 +26,11 @@ submenu "Resolution Configuration" --class=debug_resolution {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
submenu "Screen Display Mode" --class=debug_screen_mode {
|
submenu "Screen Display Mode" --class=debug_screen_mode --class=F5tool {
|
||||||
menuentry 'Force Text Mode' --class=debug_text_mode {
|
menuentry 'Force Text Mode' --class=debug_text_mode --class=debug_screen_mode --class=F5tool {
|
||||||
terminal_output console
|
terminal_output console
|
||||||
}
|
}
|
||||||
menuentry 'Force Graphics Mode' --class=debug_gui_mode {
|
menuentry 'Force Graphics Mode' --class=debug_gui_mode --class=debug_screen_mode --class=F5tool {
|
||||||
terminal_output gfxterm
|
terminal_output gfxterm
|
||||||
}
|
}
|
||||||
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
|
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
|
||||||
@@ -39,8 +39,8 @@ submenu "Screen Display Mode" --class=debug_screen_mode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if [ "$grub_platform" != "pc" ]; then
|
if [ "$grub_platform" != "pc" ]; then
|
||||||
submenu 'Ventoy UEFI Utilities' --class=debug_util {
|
submenu 'Ventoy UEFI Utilities' --class=debug_util --class=F5tool {
|
||||||
menuentry 'Fixup Windows BlinitializeLibrary Failure' --class=debug_util_blinit {
|
menuentry 'Fixup Windows BlinitializeLibrary Failure' --class=debug_util_blinit --class=debug_util --class=F5tool {
|
||||||
chainloader ${vtoy_path}/vtoyutil_${VTOY_EFI_ARCH}.efi env_param=${env_param} ${vtdebug_flag} feature=fix_windows_mmap
|
chainloader ${vtoy_path}/vtoyutil_${VTOY_EFI_ARCH}.efi env_param=${env_param} ${vtdebug_flag} feature=fix_windows_mmap
|
||||||
boot
|
boot
|
||||||
echo -e "\npress ENTER to exit ..."
|
echo -e "\npress ENTER to exit ..."
|
||||||
@@ -54,8 +54,8 @@ if [ "$grub_platform" != "pc" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
|
submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --class=F5tool {
|
||||||
menuentry 'Check global control plugin configuration' --class=debug_control {
|
menuentry 'Check global control plugin configuration' --class=debug_control --class=debug_json --class=F5tool {
|
||||||
set pager=1
|
set pager=1
|
||||||
vt_check_plugin_json $vt_plugin_path control $vtoy_iso_part
|
vt_check_plugin_json $vt_plugin_path control $vtoy_iso_part
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
|
|||||||
unset pager
|
unset pager
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Check theme plugin configuration' --class=debug_theme {
|
menuentry 'Check theme plugin configuration' --class=debug_theme --class=debug_json --class=F5tool {
|
||||||
set pager=1
|
set pager=1
|
||||||
vt_check_plugin_json $vt_plugin_path theme $vtoy_iso_part
|
vt_check_plugin_json $vt_plugin_path theme $vtoy_iso_part
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
|
|||||||
unset pager
|
unset pager
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Check auto install plugin configuration' --class=debug_autoinstall {
|
menuentry 'Check auto install plugin configuration' --class=debug_autoinstall --class=debug_json --class=F5tool {
|
||||||
set pager=1
|
set pager=1
|
||||||
vt_check_plugin_json $vt_plugin_path auto_install $vtoy_iso_part
|
vt_check_plugin_json $vt_plugin_path auto_install $vtoy_iso_part
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
|
|||||||
unset pager
|
unset pager
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Check persistence plugin configuration' --class=debug_persistence {
|
menuentry 'Check persistence plugin configuration' --class=debug_persistence --class=debug_json --class=F5tool {
|
||||||
set pager=1
|
set pager=1
|
||||||
vt_check_plugin_json $vt_plugin_path persistence $vtoy_iso_part
|
vt_check_plugin_json $vt_plugin_path persistence $vtoy_iso_part
|
||||||
|
|
||||||
@@ -94,7 +94,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
|
|||||||
unset pager
|
unset pager
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Check menu alias plugin configuration' --class=debug_menualias {
|
menuentry 'Check menu alias plugin configuration' --class=debug_menualias --class=debug_json --class=F5tool {
|
||||||
set pager=1
|
set pager=1
|
||||||
vt_check_plugin_json $vt_plugin_path menu_alias $vtoy_iso_part
|
vt_check_plugin_json $vt_plugin_path menu_alias $vtoy_iso_part
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
|
|||||||
unset pager
|
unset pager
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Check menu class plugin configuration' --class=debug_menuclass {
|
menuentry 'Check menu class plugin configuration' --class=debug_menuclass --class=debug_json --class=F5tool {
|
||||||
set pager=1
|
set pager=1
|
||||||
vt_check_plugin_json $vt_plugin_path menu_class $vtoy_iso_part
|
vt_check_plugin_json $vt_plugin_path menu_class $vtoy_iso_part
|
||||||
|
|
||||||
@@ -112,7 +112,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
|
|||||||
unset pager
|
unset pager
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Check injection plugin configuration' --class=debug_injection {
|
menuentry 'Check injection plugin configuration' --class=debug_injection --class=debug_json --class=F5tool {
|
||||||
set pager=1
|
set pager=1
|
||||||
vt_check_plugin_json $vt_plugin_path injection $vtoy_iso_part
|
vt_check_plugin_json $vt_plugin_path injection $vtoy_iso_part
|
||||||
|
|
||||||
@@ -121,7 +121,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
|
|||||||
unset pager
|
unset pager
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Check auto memdisk plugin configuration' --class=debug_automemdisk {
|
menuentry 'Check auto memdisk plugin configuration' --class=debug_automemdisk --class=debug_json --class=F5tool {
|
||||||
set pager=1
|
set pager=1
|
||||||
vt_check_plugin_json $vt_plugin_path auto_memdisk $vtoy_iso_part
|
vt_check_plugin_json $vt_plugin_path auto_memdisk $vtoy_iso_part
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
|
|||||||
unset pager
|
unset pager
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Check image list plugin configuration' --class=debug_imagelist {
|
menuentry 'Check image list plugin configuration' --class=debug_imagelist --class=debug_json --class=F5tool {
|
||||||
set pager=1
|
set pager=1
|
||||||
vt_check_plugin_json $vt_plugin_path image_list $vtoy_iso_part
|
vt_check_plugin_json $vt_plugin_path image_list $vtoy_iso_part
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
|
|||||||
unset pager
|
unset pager
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Check image blacklist plugin configuration' --class=debug_imageblacklist {
|
menuentry 'Check image blacklist plugin configuration' --class=debug_imageblacklist --class=debug_json --class=F5tool {
|
||||||
set pager=1
|
set pager=1
|
||||||
vt_check_plugin_json $vt_plugin_path image_blacklist $vtoy_iso_part
|
vt_check_plugin_json $vt_plugin_path image_blacklist $vtoy_iso_part
|
||||||
|
|
||||||
@@ -148,7 +148,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
|
|||||||
unset pager
|
unset pager
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Check boot conf replace plugin configuration' --class=debug_bootconf_replace {
|
menuentry 'Check boot conf replace plugin configuration' --class=debug_bootconf_replace --class=debug_json --class=F5tool {
|
||||||
set pager=1
|
set pager=1
|
||||||
vt_check_plugin_json $vt_plugin_path conf_replace $vtoy_iso_part
|
vt_check_plugin_json $vt_plugin_path conf_replace $vtoy_iso_part
|
||||||
|
|
||||||
@@ -157,7 +157,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
|
|||||||
unset pager
|
unset pager
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Check dud plugin configuration' --class=debug_dud {
|
menuentry 'Check dud plugin configuration' --class=debug_dud --class=debug_json --class=F5tool {
|
||||||
set pager=1
|
set pager=1
|
||||||
vt_check_plugin_json $vt_plugin_path dud $vtoy_iso_part
|
vt_check_plugin_json $vt_plugin_path dud $vtoy_iso_part
|
||||||
|
|
||||||
@@ -166,7 +166,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
|
|||||||
unset pager
|
unset pager
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Check password plugin configuration' --class=debug_pwd {
|
menuentry 'Check password plugin configuration' --class=debug_pwd --class=debug_json --class=F5tool {
|
||||||
set pager=1
|
set pager=1
|
||||||
vt_check_plugin_json $vt_plugin_path password $vtoy_iso_part
|
vt_check_plugin_json $vt_plugin_path password $vtoy_iso_part
|
||||||
|
|
||||||
@@ -175,7 +175,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
|
|||||||
unset pager
|
unset pager
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Check custom boot plugin configuration' --class=debug_custom_boot {
|
menuentry 'Check custom boot plugin configuration' --class=debug_custom_boot --class=debug_json --class=F5tool {
|
||||||
set pager=1
|
set pager=1
|
||||||
vt_check_plugin_json $vt_plugin_path custom_boot $vtoy_iso_part
|
vt_check_plugin_json $vt_plugin_path custom_boot $vtoy_iso_part
|
||||||
|
|
||||||
|
@@ -311,18 +311,15 @@ function distro_specify_initrd_file_phase2 {
|
|||||||
vt_linux_specify_initrd_file /antiX/initrd.gz
|
vt_linux_specify_initrd_file /antiX/initrd.gz
|
||||||
elif [ -f (loop)/360Disk/initrd.gz ]; then
|
elif [ -f (loop)/360Disk/initrd.gz ]; then
|
||||||
vt_linux_specify_initrd_file /360Disk/initrd.gz
|
vt_linux_specify_initrd_file /360Disk/initrd.gz
|
||||||
|
elif [ -f (loop)/porteus/initrd.xz ]; then
|
||||||
|
vt_linux_specify_initrd_file /porteus/initrd.xz
|
||||||
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function ventoy_get_ghostbsd_ver {
|
function ventoy_get_ghostbsd_ver {
|
||||||
|
# fallback to parse version from elf /boot/kernel/kernel
|
||||||
# vt_parse_iso_create_date "$1/${chosen_path}" vt_create_date
|
set vt_freebsd_ver=xx
|
||||||
# if regexp "^202005" "$vt_create_date"; then
|
|
||||||
# set vt_freebsd_ver=12.x
|
|
||||||
# fi
|
|
||||||
|
|
||||||
set vt_freebsd_ver=12.x
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function ventoy_get_furybsd_ver {
|
function ventoy_get_furybsd_ver {
|
||||||
@@ -364,11 +361,18 @@ function ventoy_get_truenas_ver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function ventoy_get_midnightbsd_ver {
|
function ventoy_get_midnightbsd_ver {
|
||||||
set vt_freebsd_ver=11.x
|
if vt_str_begin "$vt_volume_id" "1_"; then
|
||||||
|
set vt_freebsd_ver=11.x
|
||||||
|
elif vt_str_begin "$vt_volume_id" "2_"; then
|
||||||
|
set vt_freebsd_ver=2.x
|
||||||
|
elif vt_str_begin "$vt_volume_id" "3_"; then
|
||||||
|
set vt_freebsd_ver=3.x
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function ventoy_freebsd_proc {
|
function ventoy_freebsd_proc {
|
||||||
set vtFreeBsdDistro=FreeBSD
|
set vtFreeBsdDistro=FreeBSD
|
||||||
|
set vt_freebsd_ver=xx
|
||||||
|
|
||||||
if vt_strstr "$vt_volume_id" "GHOSTBSD"; then
|
if vt_strstr "$vt_volume_id" "GHOSTBSD"; then
|
||||||
ventoy_get_ghostbsd_ver "$1" "${chosen_path}"
|
ventoy_get_ghostbsd_ver "$1" "${chosen_path}"
|
||||||
@@ -419,8 +423,11 @@ function ventoy_freebsd_proc {
|
|||||||
fi
|
fi
|
||||||
elif vt_strstr "${chosen_path}" "MidnightBSD"; then
|
elif vt_strstr "${chosen_path}" "MidnightBSD"; then
|
||||||
set vt_freebsd_ver=9.x
|
set vt_freebsd_ver=9.x
|
||||||
else
|
fi
|
||||||
set vt_freebsd_ver=12.x
|
|
||||||
|
|
||||||
|
if [ -e (loop)/usr/freebsd-dist/cloninst.sh ]; then
|
||||||
|
set vtFreeBsdDistro=ClonOS
|
||||||
fi
|
fi
|
||||||
|
|
||||||
set vt_freebsd_bit=64
|
set vt_freebsd_bit=64
|
||||||
@@ -431,10 +438,20 @@ function ventoy_freebsd_proc {
|
|||||||
fi
|
fi
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [ "$vt_freebsd_ver" = "xx" ]; then
|
||||||
|
if [ -e (loop)/boot/kernel/kernel ]; then
|
||||||
|
vt_unix_parse_freebsd_ver_elf (loop)/boot/kernel/kernel $vt_freebsd_bit vt_freebsd_ver
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$vt_freebsd_ver" = "xx" ]; then
|
||||||
|
set vt_freebsd_ver=13.x
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -n "${vtdebug_flag}" ]; then
|
if [ -n "${vtdebug_flag}" ]; then
|
||||||
echo "This is FreeBSD $vt_freebsd_ver ${vt_freebsd_bit}bit"
|
echo "This is $vtFreeBsdDistro $vt_freebsd_ver ${vt_freebsd_bit}bit"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
unset vt_unix_mod_path
|
unset vt_unix_mod_path
|
||||||
@@ -445,10 +462,6 @@ function ventoy_freebsd_proc {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -e (loop)/usr/freebsd-dist/cloninst.sh ]; then
|
|
||||||
set vtFreeBsdDistro=ClonOS
|
|
||||||
fi
|
|
||||||
|
|
||||||
vt_unix_replace_ko $vt_unix_mod_path (vtunix)/ventoy_unix/$vtFreeBsdDistro/geom_ventoy_ko/$vt_freebsd_ver/$vt_freebsd_bit/geom_ventoy.ko.xz
|
vt_unix_replace_ko $vt_unix_mod_path (vtunix)/ventoy_unix/$vtFreeBsdDistro/geom_ventoy_ko/$vt_freebsd_ver/$vt_freebsd_bit/geom_ventoy.ko.xz
|
||||||
vt_unix_replace_conf FreeBSD "${1}${chosen_path}"
|
vt_unix_replace_conf FreeBSD "${1}${chosen_path}"
|
||||||
}
|
}
|
||||||
@@ -646,10 +659,14 @@ function uefi_linux_menu_func {
|
|||||||
if [ -n "$vtoy_chain_mem_addr" ]; then
|
if [ -n "$vtoy_chain_mem_addr" ]; then
|
||||||
ventoy_acpi_param ${vtoy_chain_mem_addr} 2048
|
ventoy_acpi_param ${vtoy_chain_mem_addr} 2048
|
||||||
ventoy_cli_console
|
ventoy_cli_console
|
||||||
|
|
||||||
if [ "$VTOY_EFI_ARCH" != "mips" ]; then
|
if vt_check_mode 3; then
|
||||||
chainloader ${vtoy_path}/ventoy_${VTOY_EFI_ARCH}.efi fallback env_param=${env_param} isoefi=${LoadIsoEfiDriver} FirstTry=${FirstTryBootFile} ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}
|
ventoy_debug_pause
|
||||||
boot
|
else
|
||||||
|
if [ "$VTOY_EFI_ARCH" != "mips" ]; then
|
||||||
|
chainloader ${vtoy_path}/ventoy_${VTOY_EFI_ARCH}.efi fallback env_param=${env_param} isoefi=${LoadIsoEfiDriver} FirstTry=${FirstTryBootFile} ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}
|
||||||
|
boot
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# fallback
|
# fallback
|
||||||
@@ -885,9 +902,39 @@ function legacy_linux_menu_func {
|
|||||||
ventoy_debug_pause
|
ventoy_debug_pause
|
||||||
|
|
||||||
if [ -n "$vtoy_chain_mem_addr" ]; then
|
if [ -n "$vtoy_chain_mem_addr" ]; then
|
||||||
ventoy_acpi_param ${vtoy_chain_mem_addr} 2048
|
if vt_check_mode 3; then
|
||||||
linux16 $vtoy_path/ipxe.krn ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}
|
ventoy_acpi_param ${vtoy_chain_mem_addr} 2048
|
||||||
boot
|
ventoy_cli_console
|
||||||
|
|
||||||
|
# fallback
|
||||||
|
set vtback_root=$root
|
||||||
|
vt_push_last_entry
|
||||||
|
set vtback_theme=$theme
|
||||||
|
unset theme
|
||||||
|
|
||||||
|
vt_trailer_cpio "$vtoy_iso_part" "$vt_chosen_path" noinit
|
||||||
|
vt_set_boot_opt rdinit=/vtoy/vtoy
|
||||||
|
|
||||||
|
set root=(loop)
|
||||||
|
set vtback_cfg_find=0
|
||||||
|
for cfg in "/boot/grub/grub.cfg" "/EFI/BOOT/grub.cfg" "/EFI/debian/grub.cfg" "EFI/boot/grub.cfg" "efi/boot/grub.cfg" "/grub/grub.cfg" "EFI/BOOT/BOOTX64.conf"; do
|
||||||
|
if [ -e "$cfg" ]; then
|
||||||
|
set vtback_cfg_find=1
|
||||||
|
configfile "$cfg"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
vt_unset_boot_opt
|
||||||
|
set root=$vtback_root
|
||||||
|
set theme=$vtback_theme
|
||||||
|
vt_pop_last_entry
|
||||||
|
ventoy_gui_console
|
||||||
|
else
|
||||||
|
ventoy_acpi_param ${vtoy_chain_mem_addr} 2048
|
||||||
|
linux16 $vtoy_path/ipxe.krn ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}
|
||||||
|
boot
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo "chain empty failed"
|
echo "chain empty failed"
|
||||||
ventoy_pause
|
ventoy_pause
|
||||||
@@ -1030,7 +1077,7 @@ function iso_common_menuentry {
|
|||||||
vt_parse_iso_volume "${vtoy_iso_part}${vt_chosen_path}" vt_system_id vt_volume_id vt_volume_space
|
vt_parse_iso_volume "${vtoy_iso_part}${vt_chosen_path}" vt_system_id vt_volume_id vt_volume_space
|
||||||
if [ $vt_volume_space -ne $vt_chosen_size ]; then
|
if [ $vt_volume_space -ne $vt_chosen_size ]; then
|
||||||
vt_mod $vt_chosen_size 2048 vt_chosen_size_mod
|
vt_mod $vt_chosen_size 2048 vt_chosen_size_mod
|
||||||
if [ $vt_volume_space -gt $vt_chosen_size -o $vt_chosen_size_mod -ne 0 ]; then
|
if [ $vt_chosen_size_mod -ne 0 ]; then
|
||||||
echo -e "\n $vt_volume_space $vt_chosen_size $vt_chosen_size_mod\n"
|
echo -e "\n $vt_volume_space $vt_chosen_size $vt_chosen_size_mod\n"
|
||||||
echo -e "\n The size of the iso file \"$vt_chosen_size\" is invalid. File corrupted ?\n"
|
echo -e "\n The size of the iso file \"$vt_chosen_size\" is invalid. File corrupted ?\n"
|
||||||
echo -e " 此ISO文件的大小 \"$vt_chosen_size\" 有问题,请确认文件是否损坏。\n"
|
echo -e " 此ISO文件的大小 \"$vt_chosen_size\" 有问题,请确认文件是否损坏。\n"
|
||||||
@@ -1480,6 +1527,51 @@ function ventoy_img_batocera {
|
|||||||
vt_unset_boot_opt
|
vt_unset_boot_opt
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function ventoy_img_openwrt {
|
||||||
|
if [ -e (vtimghd,2)/lib64 ]; then
|
||||||
|
set ventoy_busybox_ver=64
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f ${vtoy_iso_part}/ventoy/ventoy_openwrt.xz ]; then
|
||||||
|
ventoy_gui_console
|
||||||
|
echo -e "\n ventoy_openwrt.xz not found. Please refer https://www.ventoy.net/en/doc_openwrt.html.\n"
|
||||||
|
echo -e " 未找到 ventoy_openwrt.xz 文件。请参考 https://www.ventoy.net/cn/doc_openwrt.html\n"
|
||||||
|
echo -e "\n press ENTER to exit (请按 回车 键返回) ..."
|
||||||
|
read vtInputKey
|
||||||
|
ventoy_cli_console
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if vt_img_check_range "${vtoy_iso_part}${vt_chosen_path}"; then
|
||||||
|
ventoy_debug_pause
|
||||||
|
else
|
||||||
|
ventoy_gui_console
|
||||||
|
echo -e "\n IMG file need processed. Please refer https://www.ventoy.net/en/doc_openwrt.html.\n"
|
||||||
|
echo -e " 此 IMG 文件必须处理之后才能支持。请参考 https://www.ventoy.net/cn/doc_openwrt.html\n"
|
||||||
|
echo -e "\n press ENTER to exit (请按 回车 键返回) ..."
|
||||||
|
read vtInputKey
|
||||||
|
ventoy_cli_console
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
vt_img_extra_initrd_append ${vtoy_iso_part}/ventoy/ventoy_openwrt.xz
|
||||||
|
|
||||||
|
|
||||||
|
#boot image file
|
||||||
|
vt_set_boot_opt rdinit=/vtoy/vtoy ventoyos=openwrt
|
||||||
|
vt_img_hook_root
|
||||||
|
|
||||||
|
set root=(vtimghd,1)
|
||||||
|
configfile (vtimghd,1)/boot/grub/grub.cfg
|
||||||
|
|
||||||
|
vt_img_unhook_root
|
||||||
|
vt_unset_boot_opt
|
||||||
|
}
|
||||||
|
|
||||||
function ventoy_img_tails {
|
function ventoy_img_tails {
|
||||||
vt_load_cpio $vtoy_path "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver"
|
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
|
vt_trailer_cpio ${vtoy_iso_part} "${vt_chosen_path}" noinit
|
||||||
@@ -1540,8 +1632,9 @@ function img_common_menuentry {
|
|||||||
|
|
||||||
vt_img_extra_initrd_reset
|
vt_img_extra_initrd_reset
|
||||||
|
|
||||||
|
|
||||||
vt_get_fs_label (vtimghd,1) vtImgHd1Label
|
vt_get_fs_label (vtimghd,1) vtImgHd1Label
|
||||||
if [ -d (vtimghd,2)/lib ]; then
|
if [ -d (vtimghd,2)/lib ]; then
|
||||||
vt_get_fs_label (vtimghd,2) vtImgHd2Label
|
vt_get_fs_label (vtimghd,2) vtImgHd2Label
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -1549,6 +1642,7 @@ function img_common_menuentry {
|
|||||||
vt_1st_line (vtimghd,1)/etc/hostname vtImgHostname
|
vt_1st_line (vtimghd,1)/etc/hostname vtImgHostname
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [ -e (vtimghd,1)/easy.sfs ]; then
|
if [ -e (vtimghd,1)/easy.sfs ]; then
|
||||||
ventoy_img_easyos
|
ventoy_img_easyos
|
||||||
elif [ -e (vtimghd,1)/volumio.initrd ]; then
|
elif [ -e (vtimghd,1)/volumio.initrd ]; then
|
||||||
@@ -1569,6 +1663,8 @@ function img_common_menuentry {
|
|||||||
ventoy_img_recalbox
|
ventoy_img_recalbox
|
||||||
elif [ -f (vtimghd,2)/loader/entries/ubos.conf ]; then
|
elif [ -f (vtimghd,2)/loader/entries/ubos.conf ]; then
|
||||||
ventoy_img_ubos
|
ventoy_img_ubos
|
||||||
|
elif [ -f (vtimghd,2)/etc/openwrt_version ]; then
|
||||||
|
ventoy_img_openwrt
|
||||||
elif [ -f (vtimghd,1)/efi/boot/mt86.png ]; then
|
elif [ -f (vtimghd,1)/efi/boot/mt86.png ]; then
|
||||||
if [ "$grub_platform" = "pc" ]; then
|
if [ "$grub_platform" = "pc" ]; then
|
||||||
img_unsupport_tip
|
img_unsupport_tip
|
||||||
@@ -1606,7 +1702,7 @@ function img_unsupport_menuentry {
|
|||||||
#############################################################
|
#############################################################
|
||||||
#############################################################
|
#############################################################
|
||||||
|
|
||||||
set VENTOY_VERSION="1.0.38"
|
set VENTOY_VERSION="1.0.42"
|
||||||
|
|
||||||
#ACPI not compatible with Window7/8, so disable by default
|
#ACPI not compatible with Window7/8, so disable by default
|
||||||
set VTOY_PARAM_NO_ACPI=1
|
set VTOY_PARAM_NO_ACPI=1
|
||||||
@@ -1618,6 +1714,7 @@ set VTOY_DEFAULT_MENU_MODE=0
|
|||||||
|
|
||||||
set VTOY_MEM_DISK_STR="[Memdisk]"
|
set VTOY_MEM_DISK_STR="[Memdisk]"
|
||||||
set VTOY_ISO_RAW_STR="Compatible Mode"
|
set VTOY_ISO_RAW_STR="Compatible Mode"
|
||||||
|
set VTOY_GRUB2_MODE_STR="GRUB2 Mode"
|
||||||
set VTOY_ISO_UEFI_DRV_STR="UEFI FS"
|
set VTOY_ISO_UEFI_DRV_STR="UEFI FS"
|
||||||
|
|
||||||
set VTOY_F2_CMD="ventoy_power"
|
set VTOY_F2_CMD="ventoy_power"
|
||||||
@@ -1747,6 +1844,9 @@ else
|
|||||||
terminal_output gfxterm
|
terminal_output gfxterm
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -n "$VTOY_DEFAULT_KBD_LAYOUT" ]; then
|
||||||
|
set_keyboard_layout "$VTOY_DEFAULT_KBD_LAYOUT"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -n "$VTOY_PLUGIN_SYNTAX_ERROR" ]; then
|
if [ -n "$VTOY_PLUGIN_SYNTAX_ERROR" ]; then
|
||||||
clear
|
clear
|
||||||
@@ -1766,6 +1866,8 @@ for vtTFile in ventoy.json ventoy_grub.cfg; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
#clear all input key before show main menu
|
||||||
|
vt_clear_key
|
||||||
|
|
||||||
#export necessary variable
|
#export necessary variable
|
||||||
export theme
|
export theme
|
||||||
@@ -1774,6 +1876,7 @@ export gfxpayload
|
|||||||
export vtoydev
|
export vtoydev
|
||||||
export vtoy_path
|
export vtoy_path
|
||||||
export vtdebug_flag
|
export vtdebug_flag
|
||||||
|
export vtoy_iso_fs
|
||||||
export vtoy_iso_part
|
export vtoy_iso_part
|
||||||
export vtoy_efi_part
|
export vtoy_efi_part
|
||||||
export VENTOY_VERSION
|
export VENTOY_VERSION
|
||||||
|
@@ -43,6 +43,7 @@
|
|||||||
*save_env: loadenv
|
*save_env: loadenv
|
||||||
*search: search
|
*search: search
|
||||||
*serial: serial
|
*serial: serial
|
||||||
|
*set_keyboard_layout: setkey
|
||||||
*setkey: setkey
|
*setkey: setkey
|
||||||
*setpci: setpci
|
*setpci: setpci
|
||||||
*sha1sum: hashsum
|
*sha1sum: hashsum
|
||||||
|
Binary file not shown.
@@ -1,7 +1,7 @@
|
|||||||
videotest: font video gfxmenu
|
videotest: font video gfxmenu
|
||||||
setkey: extcmd
|
|
||||||
odc: archelp
|
odc: archelp
|
||||||
loopback: extcmd
|
loopback: extcmd
|
||||||
|
setkey: extcmd
|
||||||
macho:
|
macho:
|
||||||
gcry_des: crypto
|
gcry_des: crypto
|
||||||
memrw: extcmd
|
memrw: extcmd
|
||||||
@@ -120,7 +120,7 @@ ehci: cs5536 usb boot
|
|||||||
crypto:
|
crypto:
|
||||||
part_bsd: part_msdos
|
part_bsd: part_msdos
|
||||||
cs5536:
|
cs5536:
|
||||||
ventoy: ext2 fshelp btrfs font crypto gcry_md5 exfat udf extcmd normal video gcry_sha1 iso9660
|
ventoy: elf fshelp ext2 btrfs font crypto gcry_md5 exfat udf extcmd normal video gcry_sha1 iso9660
|
||||||
gcry_sha512: crypto
|
gcry_sha512: crypto
|
||||||
password: crypto normal
|
password: crypto normal
|
||||||
fshelp:
|
fshelp:
|
||||||
|
@@ -47,6 +47,7 @@
|
|||||||
*search: search
|
*search: search
|
||||||
*sendkey: sendkey
|
*sendkey: sendkey
|
||||||
*serial: serial
|
*serial: serial
|
||||||
|
*set_keyboard_layout: setkey
|
||||||
*setkey: setkey
|
*setkey: setkey
|
||||||
*setpci: setpci
|
*setpci: setpci
|
||||||
*sha1sum: hashsum
|
*sha1sum: hashsum
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
videotest: font video gfxmenu
|
videotest: font video gfxmenu
|
||||||
setkey: extcmd
|
|
||||||
odc: archelp
|
odc: archelp
|
||||||
loopback: extcmd
|
loopback: extcmd
|
||||||
|
setkey: extcmd
|
||||||
macho:
|
macho:
|
||||||
gcry_des: crypto
|
gcry_des: crypto
|
||||||
memrw: extcmd
|
memrw: extcmd
|
||||||
@@ -123,7 +123,7 @@ crypto:
|
|||||||
part_bsd: part_msdos
|
part_bsd: part_msdos
|
||||||
cs5536: pci
|
cs5536: pci
|
||||||
biosdisk:
|
biosdisk:
|
||||||
ventoy: ext2 fshelp btrfs font crypto gcry_md5 exfat udf extcmd normal video gcry_sha1 iso9660 acpi
|
ventoy: elf fshelp ext2 btrfs font crypto gcry_md5 exfat udf extcmd normal video gcry_sha1 iso9660 acpi
|
||||||
lsapm:
|
lsapm:
|
||||||
gcry_sha512: crypto
|
gcry_sha512: crypto
|
||||||
password: crypto normal
|
password: crypto normal
|
||||||
|
62
INSTALL/grub/keyboard.cfg
Normal file
62
INSTALL/grub/keyboard.cfg
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
submenu "Keyboard Layouts" --class=debug_krdlayout --class=F5tool {
|
||||||
|
menuentry QWERTY_USA --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout QWERTY_USA
|
||||||
|
}
|
||||||
|
menuentry AZERTY --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout AZERTY
|
||||||
|
}
|
||||||
|
menuentry CZECH_QWERTY --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout CZECH_QWERTY
|
||||||
|
}
|
||||||
|
menuentry CZECH_QWERTZ --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout CZECH_QWERTZ
|
||||||
|
}
|
||||||
|
menuentry DANISH --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout DANISH
|
||||||
|
}
|
||||||
|
menuentry DVORAK_USA --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout DVORAK_USA
|
||||||
|
}
|
||||||
|
menuentry FRENCH --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout FRENCH
|
||||||
|
}
|
||||||
|
menuentry GERMAN --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout GERMAN
|
||||||
|
}
|
||||||
|
menuentry ITALIANO --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout ITALIANO
|
||||||
|
}
|
||||||
|
menuentry JAPAN_106 --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout JAPAN_106
|
||||||
|
}
|
||||||
|
menuentry LATIN_USA --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout LATIN_USA
|
||||||
|
}
|
||||||
|
menuentry PORTU_BRAZIL --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout PORTU_BRAZIL
|
||||||
|
}
|
||||||
|
menuentry QWERTY_UK --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout QWERTY_UK
|
||||||
|
}
|
||||||
|
menuentry QWERTZ --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout QWERTZ
|
||||||
|
}
|
||||||
|
menuentry QWERTZ_HUN --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout QWERTZ_HUN
|
||||||
|
}
|
||||||
|
menuentry QWERTZ_SLOV_CROAT --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout QWERTZ_SLOV_CROAT
|
||||||
|
}
|
||||||
|
menuentry SPANISH --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout SPANISH
|
||||||
|
}
|
||||||
|
menuentry SWEDISH --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout SWEDISH
|
||||||
|
}
|
||||||
|
menuentry TURKISH_Q --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout TURKISH_Q
|
||||||
|
}
|
||||||
|
menuentry VIETNAMESE --class=debug_kbd --class=debug_krdlayout --class=F5tool {
|
||||||
|
set_keyboard_layout VIETNAMESE
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
if [ "$grub_platform" = "pc" ]; then
|
if [ "$grub_platform" = "pc" ]; then
|
||||||
menuentry 'Search and boot Windows' --class=boot_windows {
|
menuentry 'Search and boot Windows' --class=boot_windows --class=F4boot {
|
||||||
|
|
||||||
set partid=3
|
set partid=3
|
||||||
while [ $partid -le 128 ]; do
|
while [ $partid -le 128 ]; do
|
||||||
@@ -38,7 +38,7 @@ if [ "$grub_platform" = "pc" ]; then
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Search and boot Grub4dos' --class=boot_g4d {
|
menuentry 'Search and boot Grub4dos' --class=boot_g4d --class=F4boot {
|
||||||
if search -n -s -f /grldr; then
|
if search -n -s -f /grldr; then
|
||||||
ntldr /grldr
|
ntldr /grldr
|
||||||
else
|
else
|
||||||
@@ -46,19 +46,19 @@ if [ "$grub_platform" = "pc" ]; then
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Boot the 1st local disk' --class=boot_disk {
|
menuentry 'Boot the 1st local disk' --class=boot_disk --class=F4boot {
|
||||||
set root=(hd0,1)
|
set root=(hd0,1)
|
||||||
chainloader +1
|
chainloader +1
|
||||||
boot
|
boot
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Boot the 2nd local disk' --class=boot_disk {
|
menuentry 'Boot the 2nd local disk' --class=boot_disk --class=F4boot {
|
||||||
set root=(hd1,1)
|
set root=(hd1,1)
|
||||||
chainloader +1
|
chainloader +1
|
||||||
boot
|
boot
|
||||||
}
|
}
|
||||||
|
|
||||||
menuentry 'Boot the 3rd local disk' --class=boot_disk {
|
menuentry 'Boot the 3rd local disk' --class=boot_disk --class=F4boot {
|
||||||
set root=(hd2,1)
|
set root=(hd2,1)
|
||||||
chainloader +1
|
chainloader +1
|
||||||
boot
|
boot
|
||||||
@@ -66,7 +66,7 @@ if [ "$grub_platform" = "pc" ]; then
|
|||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
menuentry 'Search and boot Windows' --class=boot_windows {
|
menuentry 'Search and boot Windows' --class=boot_windows --class=F4boot {
|
||||||
|
|
||||||
set partid=3
|
set partid=3
|
||||||
while [ $partid -le 128 ]; do
|
while [ $partid -le 128 ]; do
|
||||||
@@ -93,7 +93,7 @@ else
|
|||||||
}
|
}
|
||||||
|
|
||||||
if [ "$grub_cpu" = "i386" ]; then
|
if [ "$grub_cpu" = "i386" ]; then
|
||||||
menuentry 'Search and boot BOOTIA32.EFI' --class=boot_uefi {
|
menuentry 'Search and boot BOOTIA32.EFI' --class=boot_uefi --class=F4boot {
|
||||||
set VTOY_SEARCH_NO_VTOYEFI=1
|
set VTOY_SEARCH_NO_VTOYEFI=1
|
||||||
if search -n -s -f /efi/boot/bootia32.efi; then
|
if search -n -s -f /efi/boot/bootia32.efi; then
|
||||||
unset VTOY_SEARCH_NO_VTOYEFI
|
unset VTOY_SEARCH_NO_VTOYEFI
|
||||||
@@ -106,7 +106,7 @@ else
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
elif [ "$grub_cpu" = "arm64" ]; then
|
elif [ "$grub_cpu" = "arm64" ]; then
|
||||||
menuentry 'Search and boot BOOTAA64.EFI' --class=boot_uefi {
|
menuentry 'Search and boot BOOTAA64.EFI' --class=boot_uefi --class=F4boot {
|
||||||
set VTOY_SEARCH_NO_VTOYEFI=1
|
set VTOY_SEARCH_NO_VTOYEFI=1
|
||||||
if search -n -s -f /efi/boot/bootaa64.efi; then
|
if search -n -s -f /efi/boot/bootaa64.efi; then
|
||||||
unset VTOY_SEARCH_NO_VTOYEFI
|
unset VTOY_SEARCH_NO_VTOYEFI
|
||||||
@@ -119,7 +119,7 @@ else
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
menuentry 'Search and boot BOOTX64.EFI' --class=boot_uefi {
|
menuentry 'Search and boot BOOTX64.EFI' --class=boot_uefi --class=F4boot {
|
||||||
set VTOY_SEARCH_NO_VTOYEFI=1
|
set VTOY_SEARCH_NO_VTOYEFI=1
|
||||||
if search -n -s -f /efi/boot/bootx64.efi; then
|
if search -n -s -f /efi/boot/bootx64.efi; then
|
||||||
unset VTOY_SEARCH_NO_VTOYEFI
|
unset VTOY_SEARCH_NO_VTOYEFI
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -70,6 +70,14 @@ terminal-box: "terminal_box_*.png"
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+ hbox{
|
||||||
|
left = 30%+200
|
||||||
|
top = 95%-50
|
||||||
|
width = 10%
|
||||||
|
height = 25
|
||||||
|
+ label {text = "@VTOY_GRUB2_MODE@" color = "red" align = "left"}
|
||||||
|
}
|
||||||
|
|
||||||
+ hbox{
|
+ hbox{
|
||||||
left = 90%
|
left = 90%
|
||||||
top = 55
|
top = 55
|
||||||
|
@@ -43,6 +43,7 @@
|
|||||||
*save_env: loadenv
|
*save_env: loadenv
|
||||||
*search: search
|
*search: search
|
||||||
*serial: serial
|
*serial: serial
|
||||||
|
*set_keyboard_layout: setkey
|
||||||
*setkey: setkey
|
*setkey: setkey
|
||||||
*setpci: setpci
|
*setpci: setpci
|
||||||
*sha1sum: hashsum
|
*sha1sum: hashsum
|
||||||
|
Binary file not shown.
@@ -1,7 +1,7 @@
|
|||||||
videotest: font video gfxmenu
|
videotest: font video gfxmenu
|
||||||
setkey: extcmd
|
|
||||||
odc: archelp
|
odc: archelp
|
||||||
loopback: extcmd
|
loopback: extcmd
|
||||||
|
setkey: extcmd
|
||||||
macho:
|
macho:
|
||||||
gcry_des: crypto
|
gcry_des: crypto
|
||||||
memrw: extcmd
|
memrw: extcmd
|
||||||
@@ -120,7 +120,7 @@ ehci: cs5536 usb boot
|
|||||||
crypto:
|
crypto:
|
||||||
part_bsd: part_msdos
|
part_bsd: part_msdos
|
||||||
cs5536:
|
cs5536:
|
||||||
ventoy: ext2 fshelp btrfs font crypto gcry_md5 exfat udf extcmd normal video gcry_sha1 iso9660
|
ventoy: elf fshelp ext2 btrfs font crypto gcry_md5 exfat udf extcmd normal video gcry_sha1 iso9660
|
||||||
gcry_sha512: crypto
|
gcry_sha512: crypto
|
||||||
password: crypto normal
|
password: crypto normal
|
||||||
fshelp:
|
fshelp:
|
||||||
|
Binary file not shown.
@@ -27,6 +27,10 @@ sh mkcpio.sh
|
|||||||
sh mkloopex.sh
|
sh mkloopex.sh
|
||||||
cd -
|
cd -
|
||||||
|
|
||||||
|
cd ../Unix
|
||||||
|
sh pack_unix.sh
|
||||||
|
cd -
|
||||||
|
|
||||||
cd ../LinuxGUI
|
cd ../LinuxGUI
|
||||||
sh language.sh || exit 1
|
sh language.sh || exit 1
|
||||||
sh build.sh
|
sh build.sh
|
||||||
@@ -78,6 +82,7 @@ cp $OPT ./tool/i386/mount.exfat-fuse $tmpmnt/tool/mount.exfat-fuse_i386
|
|||||||
cp $OPT ./tool/x86_64/mount.exfat-fuse $tmpmnt/tool/mount.exfat-fuse_x86_64
|
cp $OPT ./tool/x86_64/mount.exfat-fuse $tmpmnt/tool/mount.exfat-fuse_x86_64
|
||||||
cp $OPT ./tool/aarch64/mount.exfat-fuse $tmpmnt/tool/mount.exfat-fuse_aarch64
|
cp $OPT ./tool/aarch64/mount.exfat-fuse $tmpmnt/tool/mount.exfat-fuse_aarch64
|
||||||
|
|
||||||
|
|
||||||
rm -f $tmpmnt/grub/i386-pc/*.img
|
rm -f $tmpmnt/grub/i386-pc/*.img
|
||||||
|
|
||||||
|
|
||||||
|
@@ -386,6 +386,7 @@ int ventoy_vdisk_read(struct san_device *sandev, uint64_t lba, unsigned int coun
|
|||||||
uint32_t lbacount = 0;
|
uint32_t lbacount = 0;
|
||||||
unsigned long lastbuffer;
|
unsigned long lastbuffer;
|
||||||
uint64_t readend;
|
uint64_t readend;
|
||||||
|
uint64_t VirtSec;
|
||||||
ventoy_virt_chunk *node;
|
ventoy_virt_chunk *node;
|
||||||
ventoy_sector_flag *cur_flag;
|
ventoy_sector_flag *cur_flag;
|
||||||
ventoy_sector_flag *sector_flag = g_sector_flag;
|
ventoy_sector_flag *sector_flag = g_sector_flag;
|
||||||
@@ -401,6 +402,19 @@ int ventoy_vdisk_read(struct san_device *sandev, uint64_t lba, unsigned int coun
|
|||||||
|
|
||||||
if (g_hddmode)
|
if (g_hddmode)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
|
/* need to check ?? */
|
||||||
|
lastlba = g_chain->virt_img_size_in_bytes / 512;
|
||||||
|
if (lba < lastlba)
|
||||||
|
{
|
||||||
|
if (lba + count > lastlba)
|
||||||
|
{
|
||||||
|
count = lastlba - lba;
|
||||||
|
}
|
||||||
|
ventoy_vdisk_read_real_hdd(lba, count, buffer);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
ventoy_vdisk_read_real_hdd(lba, count, buffer);
|
ventoy_vdisk_read_real_hdd(lba, count, buffer);
|
||||||
ix86->regs.dl = sandev->drive;
|
ix86->regs.dl = sandev->drive;
|
||||||
return 0;
|
return 0;
|
||||||
@@ -419,6 +433,33 @@ int ventoy_vdisk_read(struct san_device *sandev, uint64_t lba, unsigned int coun
|
|||||||
ix86->regs.dl = sandev->drive;
|
ix86->regs.dl = sandev->drive;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
else if ((lba * 2048) < g_chain->real_img_size_in_bytes)
|
||||||
|
{
|
||||||
|
/* fix for grub4dos Inconsistent data read from error */
|
||||||
|
memset((void *)(buffer + (count - 1) * 2048), 0, 2048);
|
||||||
|
|
||||||
|
count = (g_chain->real_img_size_in_bytes / 2048) - lba;
|
||||||
|
ventoy_vdisk_read_real(lba, count, buffer);
|
||||||
|
ix86->regs.dl = sandev->drive;
|
||||||
|
|
||||||
|
lba += count;
|
||||||
|
buffer += count * 2048;
|
||||||
|
count = (readend - g_chain->real_img_size_in_bytes) / 2048;
|
||||||
|
}
|
||||||
|
|
||||||
|
VirtSec = g_chain->virt_img_size_in_bytes / 2048;
|
||||||
|
if (lba >= VirtSec)
|
||||||
|
{
|
||||||
|
/* fix for grub4dos Inconsistent data read from error */
|
||||||
|
memset((void *)(buffer + (count - 1) * 2048), 0, 2048);
|
||||||
|
|
||||||
|
ix86->regs.dl = sandev->drive;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else if (lba + count > VirtSec)
|
||||||
|
{
|
||||||
|
count = VirtSec - lba;
|
||||||
|
}
|
||||||
|
|
||||||
if (count > sizeof(g_sector_flag))
|
if (count > sizeof(g_sector_flag))
|
||||||
{
|
{
|
||||||
|
795
KBD/keyboard_layout.c
Normal file
795
KBD/keyboard_layout.c
Normal file
@@ -0,0 +1,795 @@
|
|||||||
|
|
||||||
|
#define ventoy_keyboard_set_layout(name) if (grub_strcmp(layout, #name) == 0) return ventoy_keyboard_layout_##name()
|
||||||
|
|
||||||
|
static void ventoy_keyboard_layout_QWERTY_USA(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_disable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_AZERTY(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("a", "q");
|
||||||
|
grub_keymap_add_by_string("A", "Q");
|
||||||
|
grub_keymap_add_by_string("z", "w");
|
||||||
|
grub_keymap_add_by_string("Z", "W");
|
||||||
|
grub_keymap_add_by_string("q", "a");
|
||||||
|
grub_keymap_add_by_string("Q", "A");
|
||||||
|
grub_keymap_add_by_string("m", "semicolon");
|
||||||
|
grub_keymap_add_by_string("M", "colon");
|
||||||
|
grub_keymap_add_by_string("w", "z");
|
||||||
|
grub_keymap_add_by_string("W", "Z");
|
||||||
|
grub_keymap_add_by_string("comma", "m");
|
||||||
|
grub_keymap_add_by_string("question", "M");
|
||||||
|
grub_keymap_add_by_string("semicolon", "comma");
|
||||||
|
grub_keymap_add_by_string("period", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "period");
|
||||||
|
grub_keymap_add_by_string("slash", "greater");
|
||||||
|
grub_keymap_add_by_string("exclam", "slash");
|
||||||
|
grub_keymap_add_by_string("dollar", "bracketright");
|
||||||
|
grub_keymap_add_by_string("asterisk", "backslash");
|
||||||
|
grub_keymap_add_by_string("percent", "doublequote");
|
||||||
|
grub_keymap_add_by_string("ampersand", "1");
|
||||||
|
grub_keymap_add_by_string("1", "exclam");
|
||||||
|
grub_keymap_add_by_string("tilde", "2");
|
||||||
|
grub_keymap_add_by_string("2", "at");
|
||||||
|
grub_keymap_add_by_string("doublequote", "3");
|
||||||
|
grub_keymap_add_by_string("3", "numbersign");
|
||||||
|
grub_keymap_add_by_string("quote", "4");
|
||||||
|
grub_keymap_add_by_string("4", "dollar");
|
||||||
|
grub_keymap_add_by_string("parenleft", "5");
|
||||||
|
grub_keymap_add_by_string("5", "percent");
|
||||||
|
grub_keymap_add_by_string("minus", "6");
|
||||||
|
grub_keymap_add_by_string("6", "caret");
|
||||||
|
grub_keymap_add_by_string("backquote", "7");
|
||||||
|
grub_keymap_add_by_string("7", "ampersand");
|
||||||
|
grub_keymap_add_by_string("underscore", "8");
|
||||||
|
grub_keymap_add_by_string("8", "asterisk");
|
||||||
|
grub_keymap_add_by_string("caret", "9");
|
||||||
|
grub_keymap_add_by_string("9", "parenleft");
|
||||||
|
grub_keymap_add_by_string("at", "0");
|
||||||
|
grub_keymap_add_by_string("0", "parenright");
|
||||||
|
grub_keymap_add_by_string("parenright", "minus");
|
||||||
|
grub_keymap_add_by_string("less", "backquote");
|
||||||
|
grub_keymap_add_by_string("greater", "tilde");
|
||||||
|
grub_keymap_add_by_string("numbersign", "braceright");
|
||||||
|
grub_keymap_add_by_string("backslash", "question");
|
||||||
|
grub_keymap_add_by_string("bracketright", "braceleft");
|
||||||
|
grub_keymap_add_by_string("braceleft", "quote");
|
||||||
|
grub_keymap_add_by_string("braceright", "underscore");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_CZECH_QWERTY(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("semicolon", "backquote");
|
||||||
|
grub_keymap_add_by_string("plus", "1");
|
||||||
|
grub_keymap_add_by_string("equal", "minus");
|
||||||
|
grub_keymap_add_by_string("quote", "equal");
|
||||||
|
grub_keymap_add_by_string("parenright", "bracketright");
|
||||||
|
grub_keymap_add_by_string("doublequote", "backslash");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("1", "exclam");
|
||||||
|
grub_keymap_add_by_string("2", "at");
|
||||||
|
grub_keymap_add_by_string("3", "numbersign");
|
||||||
|
grub_keymap_add_by_string("4", "dollar");
|
||||||
|
grub_keymap_add_by_string("5", "percent");
|
||||||
|
grub_keymap_add_by_string("6", "caret");
|
||||||
|
grub_keymap_add_by_string("7", "ampersand");
|
||||||
|
grub_keymap_add_by_string("8", "asterisk");
|
||||||
|
grub_keymap_add_by_string("9", "parenleft");
|
||||||
|
grub_keymap_add_by_string("0", "parenright");
|
||||||
|
grub_keymap_add_by_string("percent", "underscore");
|
||||||
|
grub_keymap_add_by_string("slash", "braceleft");
|
||||||
|
grub_keymap_add_by_string("parenleft", "braceright");
|
||||||
|
grub_keymap_add_by_string("doublequote", "colon");
|
||||||
|
grub_keymap_add_by_string("exclam", "doublequote");
|
||||||
|
grub_keymap_add_by_string("quote", "bar");
|
||||||
|
grub_keymap_add_by_string("question", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("backquote", "Abackquote");
|
||||||
|
grub_keymap_add_by_string("exclam", "A1");
|
||||||
|
grub_keymap_add_by_string("at", "A2");
|
||||||
|
grub_keymap_add_by_string("numbersign", "A3");
|
||||||
|
grub_keymap_add_by_string("dollar", "A4");
|
||||||
|
grub_keymap_add_by_string("percent", "A5");
|
||||||
|
grub_keymap_add_by_string("caret", "A6");
|
||||||
|
grub_keymap_add_by_string("ampersand", "A7");
|
||||||
|
grub_keymap_add_by_string("asterisk", "A8");
|
||||||
|
grub_keymap_add_by_string("parenleft", "A9");
|
||||||
|
grub_keymap_add_by_string("parenright", "A0");
|
||||||
|
grub_keymap_add_by_string("minus", "Aminus");
|
||||||
|
grub_keymap_add_by_string("equal", "Aequal");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "Abracketleft");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Abracketright");
|
||||||
|
grub_keymap_add_by_string("semicolon", "Asemicolon");
|
||||||
|
grub_keymap_add_by_string("backslash", "Abackslash");
|
||||||
|
grub_keymap_add_by_string("less", "Acomma");
|
||||||
|
grub_keymap_add_by_string("greater", "Aperiod");
|
||||||
|
grub_keymap_add_by_string("slash", "Aslash");
|
||||||
|
grub_keymap_add_by_string("tilde", "Atilde");
|
||||||
|
grub_keymap_add_by_string("underscore", "Aunderscore");
|
||||||
|
grub_keymap_add_by_string("plus", "Aplus");
|
||||||
|
grub_keymap_add_by_string("braceleft", "Abraceleft");
|
||||||
|
grub_keymap_add_by_string("braceright", "Abraceright");
|
||||||
|
grub_keymap_add_by_string("caret", "Adoublequote");
|
||||||
|
grub_keymap_add_by_string("colon", "Acolon");
|
||||||
|
grub_keymap_add_by_string("question", "Aquestion");
|
||||||
|
grub_keymap_add_by_string("bar", "Abar");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_CZECH_QWERTZ(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("y", "z");
|
||||||
|
grub_keymap_add_by_string("z", "y");
|
||||||
|
grub_keymap_add_by_string("Y", "Z");
|
||||||
|
grub_keymap_add_by_string("Z", "Y");
|
||||||
|
grub_keymap_add_by_string("semicolon", "backquote");
|
||||||
|
grub_keymap_add_by_string("plus", "1");
|
||||||
|
grub_keymap_add_by_string("equal", "minus");
|
||||||
|
grub_keymap_add_by_string("quote", "equal");
|
||||||
|
grub_keymap_add_by_string("parenright", "bracketright");
|
||||||
|
grub_keymap_add_by_string("doublequote", "backslash");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("1", "exclam");
|
||||||
|
grub_keymap_add_by_string("2", "at");
|
||||||
|
grub_keymap_add_by_string("3", "numbersign");
|
||||||
|
grub_keymap_add_by_string("4", "dollar");
|
||||||
|
grub_keymap_add_by_string("5", "percent");
|
||||||
|
grub_keymap_add_by_string("6", "caret");
|
||||||
|
grub_keymap_add_by_string("7", "ampersand");
|
||||||
|
grub_keymap_add_by_string("8", "asterisk");
|
||||||
|
grub_keymap_add_by_string("9", "parenleft");
|
||||||
|
grub_keymap_add_by_string("0", "parenright");
|
||||||
|
grub_keymap_add_by_string("percent", "underscore");
|
||||||
|
grub_keymap_add_by_string("slash", "braceleft");
|
||||||
|
grub_keymap_add_by_string("parenleft", "braceright");
|
||||||
|
grub_keymap_add_by_string("doublequote", "colon");
|
||||||
|
grub_keymap_add_by_string("exclam", "doublequote");
|
||||||
|
grub_keymap_add_by_string("quote", "bar");
|
||||||
|
grub_keymap_add_by_string("question", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("tilde", "A1");
|
||||||
|
grub_keymap_add_by_string("caret", "A3");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aq");
|
||||||
|
grub_keymap_add_by_string("bar", "Aw");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "Af");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Ag");
|
||||||
|
grub_keymap_add_by_string("dollar", "Asemicolon");
|
||||||
|
grub_keymap_add_by_string("numbersign", "Ax");
|
||||||
|
grub_keymap_add_by_string("ampersand", "Ac");
|
||||||
|
grub_keymap_add_by_string("at", "Av");
|
||||||
|
grub_keymap_add_by_string("braceleft", "Ab");
|
||||||
|
grub_keymap_add_by_string("braceright", "An");
|
||||||
|
grub_keymap_add_by_string("less", "Acomma");
|
||||||
|
grub_keymap_add_by_string("greater", "Aperiod");
|
||||||
|
grub_keymap_add_by_string("asterisk", "Aslash");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_DANISH(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("plus", "minus");
|
||||||
|
grub_keymap_add_by_string("quote", "equal");
|
||||||
|
grub_keymap_add_by_string("doublequote", "bracketright");
|
||||||
|
grub_keymap_add_by_string("quote", "backslash");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("caret", "braceright");
|
||||||
|
grub_keymap_add_by_string("asterisk", "bar");
|
||||||
|
grub_keymap_add_by_string("backquote", "plus");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("bar", "Atilde");
|
||||||
|
grub_keymap_add_by_string("backslash", "Abackquote");
|
||||||
|
grub_keymap_add_by_string("greater", "tilde");
|
||||||
|
grub_keymap_add_by_string("at", "A2");
|
||||||
|
grub_keymap_add_by_string("dollar", "A4");
|
||||||
|
grub_keymap_add_by_string("braceleft", "A7");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "A8");
|
||||||
|
grub_keymap_add_by_string("bracketright", "A9");
|
||||||
|
grub_keymap_add_by_string("braceright", "A0");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aminus");
|
||||||
|
grub_keymap_add_by_string("less", "quote");
|
||||||
|
grub_keymap_add_by_string("greater", "doublequote");
|
||||||
|
grub_keymap_add_by_string("tilde", "Abracketright");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_DVORAK_USA(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("[", "minus");
|
||||||
|
grub_keymap_add_by_string("braceleft", "underscore");
|
||||||
|
grub_keymap_add_by_string("quote", "q");
|
||||||
|
grub_keymap_add_by_string("doublequote", "Q");
|
||||||
|
grub_keymap_add_by_string("comma", "w");
|
||||||
|
grub_keymap_add_by_string("less", "W");
|
||||||
|
grub_keymap_add_by_string("s", "semicolon");
|
||||||
|
grub_keymap_add_by_string("S", "colon");
|
||||||
|
grub_keymap_add_by_string("semicolon", "z");
|
||||||
|
grub_keymap_add_by_string("colon", "Z");
|
||||||
|
grub_keymap_add_by_string("w", "comma");
|
||||||
|
grub_keymap_add_by_string("W", "less");
|
||||||
|
grub_keymap_add_by_string("v", "period");
|
||||||
|
grub_keymap_add_by_string("z", "greater");
|
||||||
|
grub_keymap_add_by_string("z", "slash");
|
||||||
|
grub_keymap_add_by_string("equal", "bracketright");
|
||||||
|
grub_keymap_add_by_string("backslash", "backslash");
|
||||||
|
grub_keymap_add_by_string("underscore", "doublequote");
|
||||||
|
grub_keymap_add_by_string("quote", "q");
|
||||||
|
grub_keymap_add_by_string("doublequote", "Q");
|
||||||
|
grub_keymap_add_by_string("comma", "w");
|
||||||
|
grub_keymap_add_by_string("less", "W");
|
||||||
|
grub_keymap_add_by_string("period", "e");
|
||||||
|
grub_keymap_add_by_string("greater", "E");
|
||||||
|
grub_keymap_add_by_string("p", "r");
|
||||||
|
grub_keymap_add_by_string("P", "R");
|
||||||
|
grub_keymap_add_by_string("y", "t");
|
||||||
|
grub_keymap_add_by_string("Y", "T");
|
||||||
|
grub_keymap_add_by_string("f", "y");
|
||||||
|
grub_keymap_add_by_string("F", "Y");
|
||||||
|
grub_keymap_add_by_string("g", "u");
|
||||||
|
grub_keymap_add_by_string("G", "U");
|
||||||
|
grub_keymap_add_by_string("c", "c");
|
||||||
|
grub_keymap_add_by_string("C", "I");
|
||||||
|
grub_keymap_add_by_string("r", "o");
|
||||||
|
grub_keymap_add_by_string("R", "O");
|
||||||
|
grub_keymap_add_by_string("l", "p");
|
||||||
|
grub_keymap_add_by_string("L", "P");
|
||||||
|
grub_keymap_add_by_string("bracketright", "equal");
|
||||||
|
grub_keymap_add_by_string("braceright", "plus");
|
||||||
|
grub_keymap_add_by_string("a", "a");
|
||||||
|
grub_keymap_add_by_string("A", "A");
|
||||||
|
grub_keymap_add_by_string("o", "s");
|
||||||
|
grub_keymap_add_by_string("O", "S");
|
||||||
|
grub_keymap_add_by_string("e", "d");
|
||||||
|
grub_keymap_add_by_string("E", "D");
|
||||||
|
grub_keymap_add_by_string("u", "f");
|
||||||
|
grub_keymap_add_by_string("U", "F");
|
||||||
|
grub_keymap_add_by_string("i", "g");
|
||||||
|
grub_keymap_add_by_string("I", "G");
|
||||||
|
grub_keymap_add_by_string("d", "h");
|
||||||
|
grub_keymap_add_by_string("D", "H");
|
||||||
|
grub_keymap_add_by_string("h", "j");
|
||||||
|
grub_keymap_add_by_string("H", "J");
|
||||||
|
grub_keymap_add_by_string("t", "k");
|
||||||
|
grub_keymap_add_by_string("T", "K");
|
||||||
|
grub_keymap_add_by_string("n", "l");
|
||||||
|
grub_keymap_add_by_string("N", "L");
|
||||||
|
grub_keymap_add_by_string("s", "semicolon");
|
||||||
|
grub_keymap_add_by_string("S", "colon");
|
||||||
|
grub_keymap_add_by_string("minus", "quote");
|
||||||
|
grub_keymap_add_by_string("underscore", "doublequote");
|
||||||
|
grub_keymap_add_by_string("semicolon", "z");
|
||||||
|
grub_keymap_add_by_string("colon", "Z");
|
||||||
|
grub_keymap_add_by_string("q", "x");
|
||||||
|
grub_keymap_add_by_string("Q", "X");
|
||||||
|
grub_keymap_add_by_string("j", "c");
|
||||||
|
grub_keymap_add_by_string("J", "C");
|
||||||
|
grub_keymap_add_by_string("k", "v");
|
||||||
|
grub_keymap_add_by_string("K", "V");
|
||||||
|
grub_keymap_add_by_string("x", "b");
|
||||||
|
grub_keymap_add_by_string("X", "B");
|
||||||
|
grub_keymap_add_by_string("b", "n");
|
||||||
|
grub_keymap_add_by_string("B", "N");
|
||||||
|
grub_keymap_add_by_string("w", "comma");
|
||||||
|
grub_keymap_add_by_string("W", "less");
|
||||||
|
grub_keymap_add_by_string("v", "period");
|
||||||
|
grub_keymap_add_by_string("V", "greater");
|
||||||
|
grub_keymap_add_by_string("z", "slash");
|
||||||
|
grub_keymap_add_by_string("Z", "question");
|
||||||
|
grub_keymap_add_by_string("slash", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("question", "braceleft");
|
||||||
|
grub_keymap_add_by_string("equal", "bracketright");
|
||||||
|
grub_keymap_add_by_string("plus", "braceright");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_FRENCH(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("less", "backquote");
|
||||||
|
grub_keymap_add_by_string("greater", "tilde");
|
||||||
|
grub_keymap_add_by_string("ampersand", "1");
|
||||||
|
grub_keymap_add_by_string("1", "exclam");
|
||||||
|
grub_keymap_add_by_string("tilde", "2");
|
||||||
|
grub_keymap_add_by_string("2", "at");
|
||||||
|
grub_keymap_add_by_string("doublequote", "3");
|
||||||
|
grub_keymap_add_by_string("3", "numbersign");
|
||||||
|
grub_keymap_add_by_string("quote", "4");
|
||||||
|
grub_keymap_add_by_string("4", "dollar");
|
||||||
|
grub_keymap_add_by_string("parenleft", "5");
|
||||||
|
grub_keymap_add_by_string("5", "percent");
|
||||||
|
grub_keymap_add_by_string("minus", "6");
|
||||||
|
grub_keymap_add_by_string("6", "caret");
|
||||||
|
grub_keymap_add_by_string("backquote", "7");
|
||||||
|
grub_keymap_add_by_string("7", "ampersand");
|
||||||
|
grub_keymap_add_by_string("underscore", "8");
|
||||||
|
grub_keymap_add_by_string("8", "asterisk");
|
||||||
|
grub_keymap_add_by_string("backslash", "9");
|
||||||
|
grub_keymap_add_by_string("9", "parenleft");
|
||||||
|
grub_keymap_add_by_string("at", "0");
|
||||||
|
grub_keymap_add_by_string("0", "parenright");
|
||||||
|
grub_keymap_add_by_string("parenright", "minus");
|
||||||
|
grub_keymap_add_by_string("numbersign", "underscore");
|
||||||
|
grub_keymap_add_by_string("a", "q");
|
||||||
|
grub_keymap_add_by_string("A", "Q");
|
||||||
|
grub_keymap_add_by_string("z", "w");
|
||||||
|
grub_keymap_add_by_string("Z", "W");
|
||||||
|
grub_keymap_add_by_string("caret", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("dollar", "bracketright");
|
||||||
|
grub_keymap_add_by_string("q", "a");
|
||||||
|
grub_keymap_add_by_string("Q", "A");
|
||||||
|
grub_keymap_add_by_string("m", "semicolon");
|
||||||
|
grub_keymap_add_by_string("M", "colon");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "quote");
|
||||||
|
grub_keymap_add_by_string("percent", "doublequote");
|
||||||
|
grub_keymap_add_by_string("asterisk", "backslash");
|
||||||
|
grub_keymap_add_by_string("bracketright", "bar");
|
||||||
|
grub_keymap_add_by_string("w", "z");
|
||||||
|
grub_keymap_add_by_string("W", "Z");
|
||||||
|
grub_keymap_add_by_string("comma", "m");
|
||||||
|
grub_keymap_add_by_string("question", "M");
|
||||||
|
grub_keymap_add_by_string("semicolon", "comma");
|
||||||
|
grub_keymap_add_by_string("period", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "period");
|
||||||
|
grub_keymap_add_by_string("slash", "greater");
|
||||||
|
grub_keymap_add_by_string("exclam", "slash");
|
||||||
|
grub_keymap_add_by_string("bar", "question");
|
||||||
|
grub_keymap_add_by_string("tilde", "A2");
|
||||||
|
grub_keymap_add_by_string("numbersign", "A3");
|
||||||
|
grub_keymap_add_by_string("braceleft", "A4");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "A5");
|
||||||
|
grub_keymap_add_by_string("bar", "A6");
|
||||||
|
grub_keymap_add_by_string("quote", "A7");
|
||||||
|
grub_keymap_add_by_string("backslash", "A8");
|
||||||
|
grub_keymap_add_by_string("caret", "A9");
|
||||||
|
grub_keymap_add_by_string("at", "A0");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Aminus");
|
||||||
|
grub_keymap_add_by_string("braceright", "Aequal");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_GERMAN(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("backslash", "minus");
|
||||||
|
grub_keymap_add_by_string("z", "y");
|
||||||
|
grub_keymap_add_by_string("Z", "Y");
|
||||||
|
grub_keymap_add_by_string("y", "z");
|
||||||
|
grub_keymap_add_by_string("Y", "Z");
|
||||||
|
grub_keymap_add_by_string("plus", "bracketright");
|
||||||
|
grub_keymap_add_by_string("asterisk", "braceright");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aminus");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("caret", "backquote");
|
||||||
|
grub_keymap_add_by_string("quote", "equal");
|
||||||
|
grub_keymap_add_by_string("backquote", "plus");
|
||||||
|
grub_keymap_add_by_string("braceright", "doublequote");
|
||||||
|
grub_keymap_add_by_string("bar", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("at", "braceleft");
|
||||||
|
grub_keymap_add_by_string("numbersign", "backslash");
|
||||||
|
grub_keymap_add_by_string("at", "Aq");
|
||||||
|
grub_keymap_add_by_string("less", "backquote");
|
||||||
|
grub_keymap_add_by_string("greater", "tilde");
|
||||||
|
grub_keymap_add_by_string("braceleft", "A7");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "A8");
|
||||||
|
grub_keymap_add_by_string("bracketright", "A9");
|
||||||
|
grub_keymap_add_by_string("braceright", "A0");
|
||||||
|
grub_keymap_add_by_string("tilde", "Abracketright");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aminus");
|
||||||
|
grub_keymap_add_by_string("quote", "bar");
|
||||||
|
grub_keymap_add_by_string("greater", "semicolon");
|
||||||
|
grub_keymap_add_by_string("less", "colon");
|
||||||
|
grub_keymap_add_by_string("bar", "quote");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_ITALIANO(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("backslash", "backquote");
|
||||||
|
grub_keymap_add_by_string("bar", "tilde");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("tilde", "numbersign");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("quote", "minus");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("caret", "plus");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("bracketright", "braceleft");
|
||||||
|
grub_keymap_add_by_string("plus", "bracketright");
|
||||||
|
grub_keymap_add_by_string("asterisk", "braceright");
|
||||||
|
grub_keymap_add_by_string("at", "semicolon");
|
||||||
|
grub_keymap_add_by_string("braceleft", "colon");
|
||||||
|
grub_keymap_add_by_string("numbersign", "quote");
|
||||||
|
grub_keymap_add_by_string("braceright", "doublequote");
|
||||||
|
grub_keymap_add_by_string("less", "backslash");
|
||||||
|
grub_keymap_add_by_string("greater", "bar");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "Abracketleft");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Abracketright");
|
||||||
|
grub_keymap_add_by_string("at", "Asemicolon");
|
||||||
|
grub_keymap_add_by_string("numbersign", "Aquote");
|
||||||
|
grub_keymap_add_by_string("braceright", "Abraceright");
|
||||||
|
grub_keymap_add_by_string("braceleft", "Abraceleft");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_JAPAN_106(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("at", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("quote", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("underscore", "parenright");
|
||||||
|
grub_keymap_add_by_string("equal", "underscore");
|
||||||
|
grub_keymap_add_by_string("plus", "colon");
|
||||||
|
grub_keymap_add_by_string("colon", "quote");
|
||||||
|
grub_keymap_add_by_string("asterisk", "doublequote");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "bracketright");
|
||||||
|
grub_keymap_add_by_string("braceleft", "braceright");
|
||||||
|
grub_keymap_add_by_string("bracketright", "backslash");
|
||||||
|
grub_keymap_add_by_string("braceright", "bar");
|
||||||
|
grub_keymap_add_by_string("backslash", "backquote");
|
||||||
|
grub_keymap_add_by_string("tilde", "plus");
|
||||||
|
grub_keymap_add_by_string("caret", "equal");
|
||||||
|
grub_keymap_add_by_string("backquote", "braceleft");
|
||||||
|
grub_keymap_add_by_string("bar", "tilde");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_LATIN_USA(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("bar", "backquote");
|
||||||
|
grub_keymap_add_by_string("quote", "minus");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("backquote", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("plus", "bracketright");
|
||||||
|
grub_keymap_add_by_string("braceleft", "quote");
|
||||||
|
grub_keymap_add_by_string("braceright", "backslash");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("asterisk", "braceright");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "doublequote");
|
||||||
|
grub_keymap_add_by_string("bracketright", "bar");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("caret", "Aquote");
|
||||||
|
grub_keymap_add_by_string("doublequote", "braceleft");
|
||||||
|
grub_keymap_add_by_string("at", "Aq");
|
||||||
|
grub_keymap_add_by_string("backquote", "Abackslash");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aminus");
|
||||||
|
grub_keymap_add_by_string("greater", "plus");
|
||||||
|
grub_keymap_add_by_string("less", "equal");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aminus");
|
||||||
|
grub_keymap_add_by_string("backquote", "Abackslash");
|
||||||
|
grub_keymap_add_by_string("tilde", "Abracketright");
|
||||||
|
grub_keymap_add_by_string("caret", "Aquote");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_PORTU_BRAZIL(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("quote", "backquote");
|
||||||
|
grub_keymap_add_by_string("quote", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "bracketright");
|
||||||
|
grub_keymap_add_by_string("tilde", "quote");
|
||||||
|
grub_keymap_add_by_string("bracketright", "backslash");
|
||||||
|
grub_keymap_add_by_string("semicolon", "slash");
|
||||||
|
grub_keymap_add_by_string("bar", "colon");
|
||||||
|
grub_keymap_add_by_string("doublequote", "tilde");
|
||||||
|
grub_keymap_add_by_string("backquote", "braceleft");
|
||||||
|
grub_keymap_add_by_string("braceleft", "braceright");
|
||||||
|
grub_keymap_add_by_string("caret", "doublequote");
|
||||||
|
grub_keymap_add_by_string("braceright", "bar");
|
||||||
|
grub_keymap_add_by_string("colon", "question");
|
||||||
|
grub_keymap_add_by_string("backslash", "semicolon");
|
||||||
|
grub_keymap_add_by_string("bar", "Atilde");
|
||||||
|
grub_keymap_add_by_string("backslash", "Abackquote");
|
||||||
|
grub_keymap_add_by_string("slash", "Aq");
|
||||||
|
grub_keymap_add_by_string("question", "Aw");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_QWERTY_UK(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("at", "doublequote");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("tilde", "bar");
|
||||||
|
grub_keymap_add_by_string("numbersign", "backslash");
|
||||||
|
grub_keymap_add_by_string("backslash", "numbersign");
|
||||||
|
grub_keymap_add_by_string("bar", "tilde");
|
||||||
|
grub_keymap_add_by_string("backslash", "Atilde");
|
||||||
|
grub_keymap_add_by_string("backslash", "Abackquote");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_QWERTZ(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("ampersand", "percent");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("backslash", "minus");
|
||||||
|
grub_keymap_add_by_string("z", "y");
|
||||||
|
grub_keymap_add_by_string("Z", "Y");
|
||||||
|
grub_keymap_add_by_string("y", "z");
|
||||||
|
grub_keymap_add_by_string("Y", "Z");
|
||||||
|
grub_keymap_add_by_string("plus", "bracketright");
|
||||||
|
grub_keymap_add_by_string("asterisk", "braceright");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("caret", "backquote");
|
||||||
|
grub_keymap_add_by_string("backquote", "equal");
|
||||||
|
grub_keymap_add_by_string("numbersign", "backslash");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("percent", "caret");
|
||||||
|
grub_keymap_add_by_string("less", "numbersign");
|
||||||
|
grub_keymap_add_by_string("greater", "bar");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_QWERTZ_HUN(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("y", "z");
|
||||||
|
grub_keymap_add_by_string("z", "y");
|
||||||
|
grub_keymap_add_by_string("Y", "Z");
|
||||||
|
grub_keymap_add_by_string("Z", "Y");
|
||||||
|
grub_keymap_add_by_string("0", "backquote");
|
||||||
|
grub_keymap_add_by_string("quote", "exclam");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("plus", "numbersign");
|
||||||
|
grub_keymap_add_by_string("exclam", "dollar");
|
||||||
|
grub_keymap_add_by_string("slash", "caret");
|
||||||
|
grub_keymap_add_by_string("equal", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aq");
|
||||||
|
grub_keymap_add_by_string("bar", "Aw");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "Af");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Ag");
|
||||||
|
grub_keymap_add_by_string("greater", "Az");
|
||||||
|
grub_keymap_add_by_string("numbersign", "Ax");
|
||||||
|
grub_keymap_add_by_string("ampersand", "Ac");
|
||||||
|
grub_keymap_add_by_string("at", "Av");
|
||||||
|
grub_keymap_add_by_string("braceleft", "Ab");
|
||||||
|
grub_keymap_add_by_string("braceright", "An");
|
||||||
|
grub_keymap_add_by_string("less", "Am");
|
||||||
|
grub_keymap_add_by_string("dollar", "colon");
|
||||||
|
grub_keymap_add_by_string("question", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("at", "doublequote");
|
||||||
|
grub_keymap_add_by_string("tilde", "A1");
|
||||||
|
grub_keymap_add_by_string("caret", "A3");
|
||||||
|
grub_keymap_add_by_string("backquote", "A7");
|
||||||
|
grub_keymap_add_by_string("asterisk", "0");
|
||||||
|
grub_keymap_add_by_string("dollar", "Asemicolon");
|
||||||
|
grub_keymap_add_by_string("semicolon", "Acomma");
|
||||||
|
grub_keymap_add_by_string("greater", "Aperiod");
|
||||||
|
grub_keymap_add_by_string("asterisk", "Aslash");
|
||||||
|
grub_keymap_add_by_string("backquote", "A9");
|
||||||
|
grub_keymap_add_by_string("doublequote", "A0");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_QWERTZ_SLOV_CROAT(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("quote", "minus");
|
||||||
|
grub_keymap_add_by_string("plus", "equal");
|
||||||
|
grub_keymap_add_by_string("y", "z");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("doublequote", "tilde");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("asterisk", "plus");
|
||||||
|
grub_keymap_add_by_string("Y", "Z");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("tilde", "A1");
|
||||||
|
grub_keymap_add_by_string("caret", "A3");
|
||||||
|
grub_keymap_add_by_string("backquote", "A7");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aq");
|
||||||
|
grub_keymap_add_by_string("bar", "Aw");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "Af");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Ag");
|
||||||
|
grub_keymap_add_by_string("at", "Av");
|
||||||
|
grub_keymap_add_by_string("braceleft", "Ab");
|
||||||
|
grub_keymap_add_by_string("braceright", "An");
|
||||||
|
grub_keymap_add_by_string("less", "Acomma");
|
||||||
|
grub_keymap_add_by_string("greater", "Aperiod");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_SPANISH(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("caret", "braceleft");
|
||||||
|
grub_keymap_add_by_string("asterisk", "braceright");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("quote", "minus");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("greater", "bar");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("backslash", "backquote");
|
||||||
|
grub_keymap_add_by_string("less", "backslash");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("backquote", "bracketleft");
|
||||||
|
grub_keymap_add_by_string("plus", "bracketright");
|
||||||
|
grub_keymap_add_by_string("plus", "colon");
|
||||||
|
grub_keymap_add_by_string("at", "semicolon");
|
||||||
|
grub_keymap_add_by_string("bar", "A1");
|
||||||
|
grub_keymap_add_by_string("at", "A2");
|
||||||
|
grub_keymap_add_by_string("numbersign", "A3");
|
||||||
|
grub_keymap_add_by_string("tilde", "A4");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "Abracketleft");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Abracketright");
|
||||||
|
grub_keymap_add_by_string("braceleft", "Aquote");
|
||||||
|
grub_keymap_add_by_string("braceright", "Abackslash");
|
||||||
|
grub_keymap_add_by_string("greater", "bar");
|
||||||
|
grub_keymap_add_by_string("less", "backslash");
|
||||||
|
grub_keymap_add_by_string("backslash", "Abackquote");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_SWEDISH(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("plus", "minus");
|
||||||
|
grub_keymap_add_by_string("quote", "equal");
|
||||||
|
grub_keymap_add_by_string("doublequote", "bracketright");
|
||||||
|
grub_keymap_add_by_string("quote", "backslash");
|
||||||
|
grub_keymap_add_by_string("minus", "slash");
|
||||||
|
grub_keymap_add_by_string("doublequote", "at");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("caret", "braceright");
|
||||||
|
grub_keymap_add_by_string("asterisk", "bar");
|
||||||
|
grub_keymap_add_by_string("backquote", "plus");
|
||||||
|
grub_keymap_add_by_string("semicolon", "less");
|
||||||
|
grub_keymap_add_by_string("colon", "greater");
|
||||||
|
grub_keymap_add_by_string("underscore", "question");
|
||||||
|
grub_keymap_add_by_string("bar", "Atilde");
|
||||||
|
grub_keymap_add_by_string("backslash", "Abackquote");
|
||||||
|
grub_keymap_add_by_string("greater", "tilde");
|
||||||
|
grub_keymap_add_by_string("at", "A2");
|
||||||
|
grub_keymap_add_by_string("dollar", "A4");
|
||||||
|
grub_keymap_add_by_string("braceleft", "A7");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "A8");
|
||||||
|
grub_keymap_add_by_string("bracketright", "A9");
|
||||||
|
grub_keymap_add_by_string("braceright", "A0");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aminus");
|
||||||
|
grub_keymap_add_by_string("less", "quote");
|
||||||
|
grub_keymap_add_by_string("greater", "doublequote");
|
||||||
|
grub_keymap_add_by_string("tilde", "Abracketright");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_TURKISH_Q(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("doublequote", "backquote");
|
||||||
|
grub_keymap_add_by_string("asterisk", "minus");
|
||||||
|
grub_keymap_add_by_string("minus", "equal");
|
||||||
|
grub_keymap_add_by_string("comma", "backslash");
|
||||||
|
grub_keymap_add_by_string("period", "slash");
|
||||||
|
grub_keymap_add_by_string("quote", "at");
|
||||||
|
grub_keymap_add_by_string("caret", "numbersign");
|
||||||
|
grub_keymap_add_by_string("plus", "dollar");
|
||||||
|
grub_keymap_add_by_string("ampersand", "caret");
|
||||||
|
grub_keymap_add_by_string("slash", "ampersand");
|
||||||
|
grub_keymap_add_by_string("parenleft", "asterisk");
|
||||||
|
grub_keymap_add_by_string("parenright", "parenleft");
|
||||||
|
grub_keymap_add_by_string("equal", "parenright");
|
||||||
|
grub_keymap_add_by_string("question", "underscore");
|
||||||
|
grub_keymap_add_by_string("underscore", "plus");
|
||||||
|
grub_keymap_add_by_string("semicolon", "bar");
|
||||||
|
grub_keymap_add_by_string("colon", "question");
|
||||||
|
grub_keymap_add_by_string("less", "Abackquote");
|
||||||
|
grub_keymap_add_by_string("greater", "A1");
|
||||||
|
grub_keymap_add_by_string("numbersign", "A3");
|
||||||
|
grub_keymap_add_by_string("dollar", "A4");
|
||||||
|
grub_keymap_add_by_string("braceleft", "A7");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "A8");
|
||||||
|
grub_keymap_add_by_string("bracketright", "A9");
|
||||||
|
grub_keymap_add_by_string("braceright", "A0");
|
||||||
|
grub_keymap_add_by_string("backslash", "Aminus");
|
||||||
|
grub_keymap_add_by_string("bar", "Aequal");
|
||||||
|
grub_keymap_add_by_string("at", "Aq");
|
||||||
|
grub_keymap_add_by_string("doublequote", "Abracketleft");
|
||||||
|
grub_keymap_add_by_string("tilde", "Abracketright");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
static void ventoy_keyboard_layout_VIETNAMESE(void) {
|
||||||
|
grub_keymap_reset();
|
||||||
|
grub_keymap_add_by_string("exclam", "A1");
|
||||||
|
grub_keymap_add_by_string("at", "A2");
|
||||||
|
grub_keymap_add_by_string("numbersign", "A3");
|
||||||
|
grub_keymap_add_by_string("dollar", "A4");
|
||||||
|
grub_keymap_add_by_string("percent", "A5");
|
||||||
|
grub_keymap_add_by_string("caret", "A6");
|
||||||
|
grub_keymap_add_by_string("ampersand", "A7");
|
||||||
|
grub_keymap_add_by_string("asterisk", "A8");
|
||||||
|
grub_keymap_add_by_string("parenleft", "A9");
|
||||||
|
grub_keymap_add_by_string("parenright", "A0");
|
||||||
|
grub_keymap_add_by_string("plus", "Aplus");
|
||||||
|
grub_keymap_add_by_string("equal", "Aequal");
|
||||||
|
grub_keymap_add_by_string("braceleft", "Abraceleft");
|
||||||
|
grub_keymap_add_by_string("braceright", "Abraceright");
|
||||||
|
grub_keymap_add_by_string("colon", "Acolon");
|
||||||
|
grub_keymap_add_by_string("semicolon", "Asemicolon");
|
||||||
|
grub_keymap_add_by_string("quote", "Aquote");
|
||||||
|
grub_keymap_add_by_string("backslash", "Abackslash");
|
||||||
|
grub_keymap_add_by_string("less", "Aless");
|
||||||
|
grub_keymap_add_by_string("greater", "Agreater");
|
||||||
|
grub_keymap_add_by_string("comma", "Acomma");
|
||||||
|
grub_keymap_add_by_string("period", "Aperiod");
|
||||||
|
grub_keymap_add_by_string("question", "Aquestion");
|
||||||
|
grub_keymap_add_by_string("slash", "Aslash");
|
||||||
|
grub_keymap_add_by_string("tilde", "Atilde");
|
||||||
|
grub_keymap_add_by_string("backquote", "Abackquote");
|
||||||
|
grub_keymap_add_by_string("bracketright", "Abracketright");
|
||||||
|
grub_keymap_add_by_string("bracketleft", "Abracketleft");
|
||||||
|
grub_keymap_add_by_string("bar", "Abar");
|
||||||
|
grub_keymap_add_by_string("doublequote", "Adoublequote");
|
||||||
|
grub_keymap_add_by_string("colon", "Acolon");
|
||||||
|
grub_keymap_add_by_string("minus", "Aminus");
|
||||||
|
grub_keymap_add_by_string("underscore", "Aunderscore");
|
||||||
|
grub_keymap_enable();
|
||||||
|
}
|
||||||
|
void ventoy_set_keyboard_layout(const char *layout);
|
||||||
|
void ventoy_set_keyboard_layout(const char *layout) {
|
||||||
|
ventoy_keyboard_set_layout(QWERTY_USA);
|
||||||
|
ventoy_keyboard_set_layout(AZERTY);
|
||||||
|
ventoy_keyboard_set_layout(CZECH_QWERTY);
|
||||||
|
ventoy_keyboard_set_layout(CZECH_QWERTZ);
|
||||||
|
ventoy_keyboard_set_layout(DANISH);
|
||||||
|
ventoy_keyboard_set_layout(DVORAK_USA);
|
||||||
|
ventoy_keyboard_set_layout(FRENCH);
|
||||||
|
ventoy_keyboard_set_layout(GERMAN);
|
||||||
|
ventoy_keyboard_set_layout(ITALIANO);
|
||||||
|
ventoy_keyboard_set_layout(JAPAN_106);
|
||||||
|
ventoy_keyboard_set_layout(LATIN_USA);
|
||||||
|
ventoy_keyboard_set_layout(PORTU_BRAZIL);
|
||||||
|
ventoy_keyboard_set_layout(QWERTY_UK);
|
||||||
|
ventoy_keyboard_set_layout(QWERTZ);
|
||||||
|
ventoy_keyboard_set_layout(QWERTZ_HUN);
|
||||||
|
ventoy_keyboard_set_layout(QWERTZ_SLOV_CROAT);
|
||||||
|
ventoy_keyboard_set_layout(SPANISH);
|
||||||
|
ventoy_keyboard_set_layout(SWEDISH);
|
||||||
|
ventoy_keyboard_set_layout(TURKISH_Q);
|
||||||
|
ventoy_keyboard_set_layout(VIETNAMESE);
|
||||||
|
}
|
@@ -4,12 +4,13 @@
|
|||||||
# Configfiles are from grubfilemanager project
|
# Configfiles are from grubfilemanager project
|
||||||
#
|
#
|
||||||
|
|
||||||
cfgfile=../INSTALL/grub/keyboard.cfg
|
cfgfile=keyboard_layout.c
|
||||||
rm -f ${cfgfile}.gz
|
rm -f ${cfgfile}
|
||||||
|
|
||||||
echo "submenu \"Keyboard Layouts\" --class=debug_krdlayout {" >>$cfgfile
|
|
||||||
|
|
||||||
cat >>$cfgfile << EOF
|
cat >>$cfgfile << EOF
|
||||||
|
|
||||||
|
#define ventoy_keyboard_set_layout(name) if (grub_strcmp(layout, #name) == 0) return ventoy_keyboard_layout_##name()
|
||||||
|
|
||||||
menuentry QWERTY_USA --class=debug_kbd {
|
menuentry QWERTY_USA --class=debug_kbd {
|
||||||
setkey -r
|
setkey -r
|
||||||
setkey -d
|
setkey -d
|
||||||
@@ -25,6 +26,59 @@ ls -1 cfg | while read line; do
|
|||||||
echo "}" >> $cfgfile
|
echo "}" >> $cfgfile
|
||||||
done
|
done
|
||||||
|
|
||||||
|
dos2unix $cfgfile
|
||||||
|
sed 's/menuentry \([^ ]*\) .*/static void ventoy_keyboard_layout_\1(void) {/g' -i $cfgfile
|
||||||
|
sed 's/setkey *-r/grub_keymap_reset();/g' -i $cfgfile
|
||||||
|
sed 's/setkey *-d/grub_keymap_disable();/g' -i $cfgfile
|
||||||
|
sed 's/setkey *-e/grub_keymap_enable();/g' -i $cfgfile
|
||||||
|
sed 's/^setkey *\([^ ]*\) *\([^ ]*\)/grub_keymap_add_by_string("\1", "\2");/g' -i $cfgfile
|
||||||
|
|
||||||
|
rm -f .tmpfunc
|
||||||
|
echo "void ventoy_set_keyboard_layout(const char *layout);" >> .tmpfunc
|
||||||
|
echo "void ventoy_set_keyboard_layout(const char *layout) {" >> .tmpfunc
|
||||||
|
grep 'void *ventoy_keyboard_layout_' $cfgfile | while read line; do
|
||||||
|
name=$(echo $line | sed 's/.*ventoy_keyboard_layout_\(.*\)(.*/\1/g')
|
||||||
|
echo "ventoy_keyboard_set_layout($name);" >> .tmpfunc
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "}" >> .tmpfunc
|
||||||
|
|
||||||
|
cat .tmpfunc >> $cfgfile
|
||||||
|
rm -f .tmpfunc
|
||||||
|
|
||||||
|
rm -f ../GRUB2/SRC/grub-2.04/grub-core/term/$cfgfile
|
||||||
|
cp -a $cfgfile ../GRUB2/SRC/grub-2.04/grub-core/term/$cfgfile
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
############
|
||||||
|
#
|
||||||
|
# cfg
|
||||||
|
#############
|
||||||
|
|
||||||
|
cfgfile=../INSTALL/grub/keyboard.cfg
|
||||||
|
rm -f ${cfgfile}
|
||||||
|
|
||||||
|
echo "submenu \"Keyboard Layouts\" --class=debug_krdlayout {" >>$cfgfile
|
||||||
|
|
||||||
|
cat >>$cfgfile << EOF
|
||||||
|
menuentry QWERTY_USA --class=debug_kbd {
|
||||||
|
set_keyboard_layout QWERTY_USA
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
ls -1 cfg | while read line; do
|
||||||
|
kbd=${line%.cfg}
|
||||||
|
name=${kbd#KBD_}
|
||||||
|
|
||||||
|
echo " menuentry $name --class=debug_kbd {" >> $cfgfile
|
||||||
|
echo " set_keyboard_layout $name" >> $cfgfile
|
||||||
|
echo " }" >> $cfgfile
|
||||||
|
done
|
||||||
|
|
||||||
echo "}" >>$cfgfile
|
echo "}" >>$cfgfile
|
||||||
|
|
||||||
gzip $cfgfile
|
|
||||||
|
|
||||||
|
Binary file not shown.
@@ -16,7 +16,7 @@ You can copy many image files at a time and ventoy will give you a boot menu to
|
|||||||
x86 Legacy BIOS, IA32 UEFI, x86_64 UEFI, ARM64 UEFI and MIPS64EL UEFI are supported in the same way.<br/>
|
x86 Legacy BIOS, IA32 UEFI, x86_64 UEFI, ARM64 UEFI and MIPS64EL UEFI are supported in the same way.<br/>
|
||||||
Both MBR and GPT partition style are supported in the same way.<br/>
|
Both MBR and GPT partition style are supported in the same way.<br/>
|
||||||
Most type of OS supported(Windows/WinPE/Linux/Unix/Vmware/Xen...) <br/>
|
Most type of OS supported(Windows/WinPE/Linux/Unix/Vmware/Xen...) <br/>
|
||||||
650+ ISO files are tested. 90%+ distros in distrowatch.com supported. <br/>
|
700+ ISO files are tested. 90%+ distros in distrowatch.com supported. <br/>
|
||||||
</h4>
|
</h4>
|
||||||
|
|
||||||
# Features
|
# Features
|
||||||
@@ -35,7 +35,7 @@ Most type of OS supported(Windows/WinPE/Linux/Unix/Vmware/Xen...) <br/>
|
|||||||
* FAT32/exFAT/NTFS/UDF/XFS/Ext2(3)(4) supported for main partition
|
* FAT32/exFAT/NTFS/UDF/XFS/Ext2(3)(4) supported for main partition
|
||||||
* ISO files larger than 4GB supported
|
* ISO files larger than 4GB supported
|
||||||
* Native boot menu style for Legacy & UEFI
|
* Native boot menu style for Legacy & UEFI
|
||||||
* Most type of OS supported, 650+ iso files tested
|
* Most type of OS supported, 700+ iso files tested
|
||||||
* Linux vDisk boot supported
|
* Linux vDisk boot supported
|
||||||
* Not only boot but also complete installation process
|
* Not only boot but also complete installation process
|
||||||
* Menu dynamically switchable between List/TreeView mode
|
* Menu dynamically switchable between List/TreeView mode
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -435,43 +435,6 @@ static int vtoy_printf_iso_path(ventoy_os_param *param)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vtoy_print_os_param(ventoy_os_param *param, char *diskname)
|
|
||||||
{
|
|
||||||
int cnt = 0;
|
|
||||||
char *path = param->vtoy_img_path;
|
|
||||||
const char *fs;
|
|
||||||
|
|
||||||
cnt = vtoy_find_disk_by_size(param->vtoy_disk_size, diskname);
|
|
||||||
if (cnt > 1)
|
|
||||||
{
|
|
||||||
cnt = vtoy_find_disk_by_guid(param, diskname);
|
|
||||||
}
|
|
||||||
else if (cnt == 0)
|
|
||||||
{
|
|
||||||
cnt = vtoy_find_disk_by_guid(param, diskname);
|
|
||||||
debug("find 0 disk by size, try with guid cnt=%d...\n", cnt);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (param->vtoy_disk_part_type < ventoy_fs_max)
|
|
||||||
{
|
|
||||||
fs = g_ventoy_fs[param->vtoy_disk_part_type];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fs = "unknown";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (1 == cnt)
|
|
||||||
{
|
|
||||||
printf("/dev/%s#%s#%s\n", diskname, fs, path);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int vtoy_check_device(ventoy_os_param *param, const char *device)
|
static int vtoy_check_device(ventoy_os_param *param, const char *device)
|
||||||
{
|
{
|
||||||
unsigned long long size;
|
unsigned long long size;
|
||||||
@@ -499,6 +462,47 @@ static int vtoy_check_device(ventoy_os_param *param, const char *device)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int vtoy_print_os_param(ventoy_os_param *param, char *diskname)
|
||||||
|
{
|
||||||
|
int cnt = 0;
|
||||||
|
char *path = param->vtoy_img_path;
|
||||||
|
const char *fs;
|
||||||
|
|
||||||
|
cnt = vtoy_find_disk_by_size(param->vtoy_disk_size, diskname);
|
||||||
|
debug("find disk by size %llu, cnt=%d...\n", (unsigned long long)param->vtoy_disk_size, cnt);
|
||||||
|
if (1 == cnt)
|
||||||
|
{
|
||||||
|
if (vtoy_check_device(param, diskname) != 0)
|
||||||
|
{
|
||||||
|
cnt = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cnt = vtoy_find_disk_by_guid(param, diskname);
|
||||||
|
debug("find disk by guid cnt=%d...\n", cnt);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (param->vtoy_disk_part_type < ventoy_fs_max)
|
||||||
|
{
|
||||||
|
fs = g_ventoy_fs[param->vtoy_disk_part_type];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fs = "unknown";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (1 == cnt)
|
||||||
|
{
|
||||||
|
printf("/dev/%s#%s#%s\n", diskname, fs, path);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find disk and image path from ventoy runtime data.
|
* Find disk and image path from ventoy runtime data.
|
||||||
* By default data is read from phymem(legacy bios) or efivar(UEFI), if -f is input, data is read from file.
|
* By default data is read from phymem(legacy bios) or efivar(UEFI), if -f is input, data is read from file.
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user