|
|
b4e6bbb |
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
|
|
b4e6bbb |
Subject: Don't accept text modes on EFI when booting Linux.
|
|
|
b4e6bbb |
Date: 2011-08-16 16:11:10 +0200
|
|
|
b4e6bbb |
|
|
|
b4e6bbb |
------------------------------------------------------------
|
|
|
b4e6bbb |
revno: 3402
|
|
|
b4e6bbb |
committer: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
|
|
b4e6bbb |
branch nick: grub
|
|
|
b4e6bbb |
timestamp: Tue 2011-08-16 16:11:10 +0200
|
|
|
b4e6bbb |
message:
|
|
|
b4e6bbb |
Don't accept text modes on EFI when booting Linux.
|
|
|
b4e6bbb |
|
|
|
b4e6bbb |
* grub-core/loader/i386/linux.c (ACCEPTS_PURE_TEXT): New define.
|
|
|
b4e6bbb |
(grub_linux_boot) [!ACCEPTS_PURE_TEXT]: Restrict to graphics modes.
|
|
|
b4e6bbb |
diff:
|
|
|
b4e6bbb |
|
|
|
b4e6bbb |
=== modified file 'grub-core/loader/i386/linux.c'
|
|
|
b4e6bbb |
--- a/grub-core/loader/i386/linux.c 2011-05-18 07:56:33 +0000
|
|
|
b4e6bbb |
+++ b/grub-core/loader/i386/linux.c 2011-08-16 14:11:10 +0000
|
|
|
b4e6bbb |
@@ -45,15 +45,18 @@
|
|
|
b4e6bbb |
#include <grub/efi/efi.h>
|
|
|
b4e6bbb |
#define HAS_VGA_TEXT 0
|
|
|
b4e6bbb |
#define DEFAULT_VIDEO_MODE "auto"
|
|
|
b4e6bbb |
+#define ACCEPTS_PURE_TEXT 0
|
|
|
b4e6bbb |
#elif defined (GRUB_MACHINE_IEEE1275)
|
|
|
b4e6bbb |
#include <grub/ieee1275/ieee1275.h>
|
|
|
b4e6bbb |
#define HAS_VGA_TEXT 0
|
|
|
b4e6bbb |
#define DEFAULT_VIDEO_MODE "text"
|
|
|
b4e6bbb |
+#define ACCEPTS_PURE_TEXT 1
|
|
|
b4e6bbb |
#else
|
|
|
b4e6bbb |
#include <grub/i386/pc/vbe.h>
|
|
|
b4e6bbb |
#include <grub/i386/pc/console.h>
|
|
|
b4e6bbb |
#define HAS_VGA_TEXT 1
|
|
|
b4e6bbb |
#define DEFAULT_VIDEO_MODE "text"
|
|
|
b4e6bbb |
+#define ACCEPTS_PURE_TEXT 1
|
|
|
b4e6bbb |
#endif
|
|
|
b4e6bbb |
|
|
|
b4e6bbb |
#define GRUB_LINUX_CL_OFFSET 0x1000
|
|
|
b4e6bbb |
@@ -483,12 +486,22 @@
|
|
|
b4e6bbb |
tmp = grub_xasprintf ("%s;" DEFAULT_VIDEO_MODE, modevar);
|
|
|
b4e6bbb |
if (! tmp)
|
|
|
b4e6bbb |
return grub_errno;
|
|
|
b4e6bbb |
+#if ACCEPTS_PURE_TEXT
|
|
|
b4e6bbb |
err = grub_video_set_mode (tmp, 0, 0);
|
|
|
b4e6bbb |
+#else
|
|
|
b4e6bbb |
+ err = grub_video_set_mode (tmp, GRUB_VIDEO_MODE_TYPE_PURE_TEXT, 0);
|
|
|
b4e6bbb |
+#endif
|
|
|
b4e6bbb |
grub_free (tmp);
|
|
|
b4e6bbb |
}
|
|
|
b4e6bbb |
else
|
|
|
b4e6bbb |
- err = grub_video_set_mode (DEFAULT_VIDEO_MODE, 0, 0);
|
|
|
b4e6bbb |
-
|
|
|
b4e6bbb |
+ {
|
|
|
b4e6bbb |
+#if ACCEPTS_PURE_TEXT
|
|
|
b4e6bbb |
+ err = grub_video_set_mode (DEFAULT_VIDEO_MODE, 0, 0);
|
|
|
b4e6bbb |
+#else
|
|
|
b4e6bbb |
+ err = grub_video_set_mode (DEFAULT_VIDEO_MODE,
|
|
|
b4e6bbb |
+ GRUB_VIDEO_MODE_TYPE_PURE_TEXT, 0);
|
|
|
b4e6bbb |
+#endif
|
|
|
b4e6bbb |
+ }
|
|
|
b4e6bbb |
if (err)
|
|
|
b4e6bbb |
{
|
|
|
b4e6bbb |
grub_print_error ();
|