为什么 Grub2 不使用自定义分辨率?

为什么 Grub2 不使用自定义分辨率?

我希望有人能帮助我...运行 Ubuntu 12.10 GNOME Remix

我正在努力Grub2使用分辨率1600x900...

我检查过信息hwinfo --framebuffer两者都提供:

模式 0x037f:1600x900 (+6400),24 位

此解决方案适用于以前的 Ubuntu 和 Fedora 安装。


为啥没生效??我尝试了不同的分辨率...背景和字体颜色是可以改变的。

感谢您的见解。

答案1

设置模式时,请尝试同时包含位深度/etc/default/grub,例如:

GRUB_GFXMODE=1600x900x24

还添加这一行:

GRUB_GFXPAYLOAD_LINUX=keep

运行sudo update-grub,重新启动,并让我们知道它是否有效。

答案2

我认为GRUB_GFXMODE被忽略了(或者至少在某个时间点之前)。你总是可以尝试使用 vga 代码的传统方式

  1. 首先安装hwinfo

    sudo apt-get 安装 hwinfo

  2. 然后您将获得 vgacode hwinfo(首选分辨率,24 位):

    sudo hwinfo --framebuffer

    02:无 00.0:11001 VESA 帧缓冲区
    [在 bios.464 上创建]
    唯一 ID:rdCR.ku_DuSHewh1
    硬件类:帧缓冲区
    型号:“Intel(R)Sandybridge 移动图形控制器”
    供应商:“Intel Corporation”
    设备:“Intel(R)Sandybridge 移动图形控制器”
    子供应商:“Intel(R)Sandybridge 移动图形芯片组加速 VGA BIOS”
    子设备:
    修订版:“硬件版本 0.0”
    内存大小:63 MB + 960 kB
    内存范围:0xd0000000-0xd3feffff (rw)
    模式 0x0360:1366x768 (+1408),8 位
    模式 0x0361:1366x768 (+2752),16 位
    模式 0x0362: 1366x768 (+5504),24 位
    模式 0x0363: 1600x900 (+1600),8 位
    模式 0x0364: 1600x900 (+3200),16 位
    模式0x0365:1600x900 (+6400),24 位
    模式 0x0366:1920x1080 (+1920),8 位
    模式 0x0367:1920x1080 (+3840),16 位
    模式 0x0368:1920x1080 (+7680),24 位
    模式 0x0307:1280x1024 (+1280),8 位
    模式 0x031a:1280x1024 (+2560),16 位
    模式 0x031b:1280x1024 (+5120),24 位
    模式 0x0305:1024x768 (+1024),8 位
    模式 0x0317:1024x768 (+2048),16 位
    模式 0x0318:1024x768 (+4096),24 位
    模式 0x0312:640x480 (+2560),24 位
    模式 0x0314:800x600 (+1600),16 位
    模式 0x0315:800x600 (+3200),24 位
    模式 0x0301:640x480 (+640),8 位 模式
    0x0303:800x600 (+832),8 位
    模式 0x0311:640x480 (+1280),16 位
    配置状态:cfg=new、avail=yes、need=no、active=unknown

  3. 您编辑一行/etc/default/grub(或者您只是使用grub-customizer)来包含vga=0x0365vga=891(0x365 是 869):

    sudo gedit /etc/default/grub

    ...
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vga=891"
    ...

  4. 更新 grub 配置:

    sudo 更新 grub

  5. 重新启动并让我们知道发生了什么

答案3

刚刚为我解决了同样的问题。以下是我所做的:

禁用之前的帧缓冲区(对我来说是 vga16fb)并启用 uvesafb:

/etc/modprobe.d/blacklist-framebuffer.conf:

...
blacklist vga16fb

您可以使用命令找到当前正在使用的帧缓冲区lsmod | grep fb

/etc/modprobe.d/framebuffer.conf:

options uvesafb mode_option=1680x1050-24 mtrr=3 scroll=ywrap

/etc/模块:

...
uvesafb

下一步是将 uvesafb 放入 initrd 映像中。

在/etc/initramfs-tools/模块中:

...
uvesafb mode_option=1680x1050-24 mtrr=3 scroll=ywrap

重新创建 initrd:sudo update-initramfs -u

目前,高分辨率控制台应该在启动后可用。下一个任务是将 grub2 转为高分辨率模式。由于某些原因,我的 grub 配置文件中缺少几个重要选项,因此我将它们添加到 /etc/default/grub 中:

GRUB_VIDEO_BACKEND="vbe"
GRUB_TERMINAL_OUTPUT="gfxterm"
GRUB_GFXMODE="1680x1050x24"
GRUB_GFXPAYLOAD_LINUX="1680x1050x24"

我不确定下一节,它可能不是必需的,但这是我对 /etc/grub.d/00_header 所做的:

几乎在文件的顶部,有许多if [ "x${GRUB_...后备操作符。我又添加了两个:

if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE=1680x1050x24 ; fi
if [ "x${GRUB_GFXPAYLOAD_LINUX}" = "x" ] ; then GRUB_GFXPAYLOAD_LINUX=1680x1050x24 ; fi

现在找到该文件中的文本set gfxmode=${GRUB_GFXMODE},并将以下代码插入下一行:

set gfxpayload=${GRUB_GFXPAYLOAD_LINUX}

再次,我不确定它是否需要最新的 grub2(我有 1.98)现在更新 grub 配置文件:

sudo update-grub2

并且一切都应该正常工作。

答案4

就我而言,除了 /etc/default/grub 之外,还有其他配置文件,/etc/default/grub.d/kali-themes.cfg(正如您所想象的,它是 Kali Linux,debian 衍生产品,就像 Ubuntu 一样)。

它有一行 GRUB_GFXMODE="auto,1280x720,1280x800",它破坏了一切。现在,删除它并执行 update-grub 可以在我的真实系统上修复它。

请注意,有些分辨率不能自动工作!它们是一些非标准分辨率,例如 1150xsomething(例如在 vmware 上)。您需要在 GRUB_GFXMODE 中明确告知 grub。

还要注意,在 vmware 中这永远不会起作用,因为 Vmware 中的 GOP UEFI 驱动程序不支持更高的分辨率(请参阅 uefi-grub 命令行中的 videoinfo 命令)。

还要注意,只有不带 CSM 的 UEFI 启动才支持 nvidia GPU 中的高分辨率,不支持 BIOS VESA 扩展,因为 nvidia 仍然没有编写该驱动程序,但有了 UEFI 就不再需要它了。

还请注意,尽管 grub 中可以有 60 fps,但无法设置 120 Hz 或 100 Hz(至少在我看来),这意味着切换到 Linux 内核屏幕时不流畅,这就是为什么您可能希望直接启动内核而不使用 grub。阅读有关 EFISTUB 内核模式的信息。它还将在 debian 支持的签名内核的许多情况下允许安全启动。

相关内容