grub2 mode support KNOPPIX

This commit is contained in:
longpanda 2022-12-10 19:27:38 +08:00
parent a5c6859f5f
commit 6203366040
4 changed files with 36 additions and 29 deletions

View File

@ -362,7 +362,8 @@ static grub_err_t
cmd_append (const char *line, struct syslinux_menu *menu)
{
if (!menu->entries)
return grub_error (GRUB_ERR_BAD_ARGUMENT, "kernel without label");
return GRUB_ERR_NONE;
//return grub_error (GRUB_ERR_BAD_ARGUMENT, "kernel without label");
menu->entries->append = grub_strdup (line);
if (!menu->entries->append)

View File

@ -99,6 +99,19 @@
}\
}
#define VTOY_SKIP_SPACE(s) \
while (ventoy_isspace(*s)) \
{\
s++;\
}
#define VTOY_SKIP_SPACE_NEXT(s, initial) \
s += initial;\
while (ventoy_isspace(*s)) \
{\
s++;\
}
typedef enum VTOY_FILE_FLT
{
VTOY_FILE_FLT_ISO = 0, /* .iso */

View File

@ -177,10 +177,7 @@ static grub_err_t ventoy_isolinux_initrd_collect(grub_file_t file, const char *p
{
nextline = ventoy_get_line(start);
while (ventoy_isspace(*start))
{
start++;
}
VTOY_SKIP_SPACE(start);
offset = 7; // strlen("initrd=") or "INITRD " or "initrd "
pos = grub_strstr(start, "initrd=");
@ -438,10 +435,7 @@ static grub_err_t ventoy_grub_cfg_initrd_collect(const char *fileName)
{
nextline = ventoy_get_line(start);
while (ventoy_isspace(*start))
{
start++;
}
VTOY_SKIP_SPACE(start);
if (grub_strncmp(start, "initrd", 6) != 0)
{
@ -454,10 +448,7 @@ static grub_err_t ventoy_grub_cfg_initrd_collect(const char *fileName)
start++;
}
while (ventoy_isspace(*start))
{
start++;
}
VTOY_SKIP_SPACE(start);
if (*start == '"')
{
@ -528,10 +519,7 @@ static grub_err_t ventoy_grub_cfg_initrd_collect(const char *fileName)
if (*start == ' ' || *start == '\t')
{
while (ventoy_isspace(*start))
{
start++;
}
VTOY_SKIP_SPACE(start);
}
else
{
@ -1813,18 +1801,12 @@ static char *ventoy_systemd_conf_tag(char *buf, const char *tag, int optional)
for (start = buf; start; start = nextline)
{
nextline = ventoy_get_line(start);
while (ventoy_isspace(*start))
{
start++;
}
VTOY_SKIP_SPACE(start);
if (grub_strncmp(start, tag, taglen) == 0 && (start[taglen] == ' ' || start[taglen] == '\t'))
{
start += taglen;
while (ventoy_isspace(*start))
{
start++;
}
VTOY_SKIP_SPACE(start);
return start;
}
}
@ -2038,10 +2020,7 @@ grub_err_t ventoy_cmd_linux_limine_menu(grub_extcmd_context_t ctxt, int argc, ch
for (start = filebuf; start; start = nextline)
{
nextline = ventoy_get_line(start);
while (ventoy_isspace(*start))
{
start++;
}
VTOY_SKIP_SPACE(start);
if (start[0] == ':')
{

View File

@ -852,6 +852,13 @@ function uefi_linux_menu_func {
configfile "mem:${vt_sys_menu_mem_addr}:size:${vt_sys_menu_mem_size}"
fi
fi
if [ $vtback_cfg_find -eq 0 ]; then
if [ -f (loop)/boot/isolinux/syslnx64.cfg ]; then
syslinux_configfile (loop)/boot/isolinux/syslnx64.cfg
set vtback_cfg_find=1
fi
fi
if [ "$vtback_cfg_find" = "0" ]; then
echo " "
@ -1319,6 +1326,13 @@ function legacy_linux_menu_func {
configfile "mem:${vt_sys_menu_mem_addr}:size:${vt_sys_menu_mem_size}"
fi
fi
if [ $vtback_cfg_find -eq 0 ]; then
if [ -f (loop)/boot/isolinux/syslnx64.cfg ]; then
syslinux_configfile (loop)/boot/isolinux/syslnx64.cfg
set vtback_cfg_find=1
fi
fi
vt_unset_boot_opt
set root=$vtback_root