]> glassweightruler.freedombox.rocks Git - Ventoy.git/commitdiff
grub2 mode support KNOPPIX
authorlongpanda <admin@ventoy.net>
Sat, 10 Dec 2022 11:27:38 +0000 (19:27 +0800)
committerlongpanda <admin@ventoy.net>
Sat, 10 Dec 2022 11:27:38 +0000 (19:27 +0800)
GRUB2/MOD_SRC/grub-2.04/grub-core/lib/syslinux_parse.c
GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_def.h
GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_linux.c
INSTALL/grub/grub.cfg

index 44649d416503e44c9fa7d68e8223caff0cfaf3f6..8c63c7a5ed0a0685019a10154faaef3e29b2db45 100644 (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)
index ba1dcf22bac77152f5d7b633ddbde4da916c2237..40f859ee7069b8596550008f7bc8d5861623fb85 100644 (file)
     }\
 }
 
+#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 */
index 47803de0c77bec64c3bf2119a692a9db2d8a8024..c3548e84d81185cae610cc63b21c3afd4399b640 100644 (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] == ':')
         {
index 4c9a15dbf258288ac1852b856b2dfdb31fb68fe0..19cce835ae339815b01584d042aae3d77d32c4ce 100644 (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