]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2009-03-30 Robert Millan <rmh@aybabtu.com>
authorrobertmh <robertmh@localhost>
Mon, 30 Mar 2009 22:22:31 +0000 (22:22 +0000)
committerrobertmh <robertmh@localhost>
Mon, 30 Mar 2009 22:22:31 +0000 (22:22 +0000)
        * loader/i386/linux.c (grub_cmd_linux): Check for zImage before
        checking for abi version.  Improve error messages on BIOS to notify
        user about `linux16' command.

ChangeLog
loader/i386/linux.c

index f742c0a43bdcb305ae9a7e161cbdc77462170cb6..03c09cf1b6d2c2b0c9c244d82a0b61783f85452a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-03-30  Robert Millan  <rmh@aybabtu.com>
+
+       * loader/i386/linux.c (grub_cmd_linux): Check for zImage before
+       checking for abi version.  Improve error messages on BIOS to notify
+       user about `linux16' command.
+
 2009-03-29  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Leak fixes
index 9deb40ff10292e98fd69b5ba47b7709d2bff6827..33b6d8659dca997bbf94752a57afd5a35f0b690b 100644 (file)
@@ -492,18 +492,26 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
       goto fail;
     }
 
-  /* FIXME: Is 2.02 recent enough for 32-bit boot?  */
-  if (lh.header != grub_cpu_to_le32 (GRUB_LINUX_MAGIC_SIGNATURE)
-      || grub_le_to_cpu16 (lh.version) < 0x0203)
+  if (! (lh.loadflags & GRUB_LINUX_FLAG_BIG_KERNEL))
     {
-      grub_error (GRUB_ERR_BAD_OS, "too old version");
+      grub_error (GRUB_ERR_BAD_OS, "zImage doesn't support 32-bit boot"
+#ifdef GRUB_MACHINE_PCBIOS
+                 " (try with `linux16')"
+#endif
+                 );
       goto fail;
     }
 
-  /* zImage doesn't support 32-bit boot.  */
-  if (! (lh.loadflags & GRUB_LINUX_FLAG_BIG_KERNEL))
+  /* FIXME: 2.03 is not always good enough (Linux 2.4 can be 2.03 and
+     still not support 32-bit boot.  */
+  if (lh.header != grub_cpu_to_le32 (GRUB_LINUX_MAGIC_SIGNATURE)
+      || grub_le_to_cpu16 (lh.version) < 0x0203)
     {
-      grub_error (GRUB_ERR_BAD_OS, "zImage is not supported");
+      grub_error (GRUB_ERR_BAD_OS, "version too old for 32-bit boot"
+#ifdef GRUB_MACHINE_PCBIOS
+                 " (try with `linux16')"
+#endif
+                 );
       goto fail;
     }