如何提高控制台模式的分辨率?

当我的电脑进入控制台模式(启动、关闭或按下Ctrl + Alt + F1),文字会变得非常大。我无法截屏,但它看起来像是640 x 480的分辨率。我的显示器通常工作在1440 x 900。
我记得从光盘安装时出现的控制台文字很小。
我该如何让控制台文字看起来像从光盘启动时那样?
10个回答

我找到了一个有效的解决方案,来自这个论坛帖子

简而言之:

以root身份使用您喜欢的编辑器打开/etc/default/grub

定位到包含GRUB_GFXMODE= ...的行,并将其更改为您想要的分辨率。再添加一行新的变量GRUB_GFXPAYLOAD,分辨率与前者相同。它应该类似于以下内容:

GRUB_GFXMODE=1440x900x32
GRUB_GFXPAYLOAD=1440x900x32

保存并退出。然后以root身份编辑/etc/grub.d/00_header
定位到以下行:if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE=...。像之前一样,将分辨率更改为所需的分辨率,并添加另一行用于payload。
if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE=1440x900x32 ; fi
if [ "x${GRUB_GFXPAYLOAD}" = "x" ] ; then GRUB_GFXPAYLOAD=1440x900x32 ; fi

最后,找到一行写着gfxmode=${GRUB_GFXMODE}的代码,并在其下方添加一个payload的代码行。它应该是这样的:
set gfxmode=${GRUB_GFXMODE}
set gfxpayload=${GRUB_GFXPAYLOAD}

保存并退出。
仍然以root身份,使用以下命令刷新grub:
update-grub2

重新启动,grub 菜单和控制台应该有更好的分辨率。

完成!


这对我来说似乎没有起作用。我使用的分辨率是1366x768x32。 - kzh
1我的解决方案只适用于grub2,我想。你使用的是grub1吗?如果是的话,先尝试降低分辨率 - 比如1024x768x32。祝好! - egarcia
1不幸的是,这对我没用,正在运行10.10。 - segfault
1我的显示器默认分辨率是1680x1050,所以我只是将所有1440x900的地方替换成了1680x1050。但是运气不好,没有起作用。 - segfault
3目前看起来 grub2 并没有使用 'GRUB_GFXPAYLOAD' 选项,只有 'GRUB_GFXPAYLOAD_LINUX'。请参考 grub2 的官方文档:http://www.gnu.org/software/grub/manual/grub.html#gfxpayload - mbaitoff
2看到一个更通用的响应会更有趣,这将适用于大多数分辨率。 - sorin
真的,它有效果 :) - thefourtheye
GRUB_GFXMODE和GRUB_GFXPAYLOAD有什么区别? - szx
2这个答案已经过时,并且在Ubuntu Server 12.04 LTS上对我没有起作用。此外,它涉及到编辑一个名为00_header的文件,而这个文件实际上不应该被编辑。 - Serge Stroobandt
1这个解决方案对我来说在1440x900x32上失败了,但在1024x768x24上却有效。我正在运行VirtualBox 4.3.26中的Ubuntu Server 14.04 LTS。Vranger的答案效果更好。 - Kyr
这个解决方案不适用于UBUNTU GNOME 15.04。 - Jiří Doubravský
1这对我在Ubuntu 14.04上有效,但我不需要编辑00_header这一步骤。修改/etc/default/grub然后运行sudo update-grub并重新启动就足够了。 - David Baucum
没有理由编辑 /etc/grub.d/00_header。请参考 A.B. 的回答 - Honest Abe

这对我在Ubuntu 14.04上与ESXi 5.5有所帮助:
sudo vi /etc/default/grub

将行改为:

GRUB_CMDLINE_LINUX_DEFAULT="splash vga=792"

然后运行:
sudo update-grub
sudo reboot -r now

使用795或799以获得更高的分辨率(更多细节请点击这里)。

1这个解决方案对我有效。splash选项让登录界面卡住了,我觉得它是不必要的。 顺便说一下,我真的不喜欢那些像792这样晦涩难懂的选项! - Kyr
1在15.04版本中,它已经被弃用了。 - Jiří Doubravský
也适用于 Fedora 21。 - Alex Jones
@JiříDoubravský那么该怎么办呢?其他答案都不起作用。 - Alex Jones
1无论如何,reboot命令不喜欢-r选项。 - Jin Kwon
@JiříDoubravský 看起来你错了:这在我刚安装的Ubuntu 16.04.2 LTS上正常工作! - 1111161171159459134
如果在启动软件后更改分辨率,只需将nomodeset添加到GRUB_CMDLINE_LINUX_DEFAULT - 1111161171159459134

  1. 从GRUB菜单开始
  2. 按下C键进入GRUB命令行
  3. 运行vbeinfo并做出决定(例如1920x1200x32)。
  4. 重新启动系统
  5. sudo nano /etc/default/grub
  6. 更改GRUB_GFXMODE=(例如GRUB_GFXMODE=1920x1200x32
  7. GRUB_GFXPAYLOAD_LINUX设置为GRUB_GFXPAYLOAD_LINUX=keep
  8. sudo update-grub
  9. 重新启动系统

在这个问题的所有答案中,这是对我最有效的一个,在Ubuntu 16.04服务器上(而且是最简单的一个)。 - Seb - SonarSource Team
关于上面的第二步:我发现应该按下 'c' 进入命令行(而不是 'E')。 - kaiwan
无法在VMware Workstation Player上使用Ubuntu 16.10。 - Sebi2020
@Sebi2020 现在选哪个?VMware Player 还是 VMware Workstation?对我来说,在 VMware Workstation 14.0 上使用 Ubuntu 16.04 是可以的。 - 0xC0000022L
1@0xC0000022L VMWare Workstation 10 - Sebi2020
2对于Ubuntu 18.04及更高版本,请使用videoinfo而不是vbeinfo - robocat
在Virtualbox中运行Ubuntu 18.04 LTS时,我还需要在update-grub步骤之前应用此问题中的解决方案。 - tonysdg
如果你使用专有的Nvidia驱动程序(至少在我的情况下),这是没有意义的,因为一些文本段会变得模糊不清。 - daGo
我使用的是安装了Ubuntu 20.04.3的Dell XPS 13。这种方法对我有效。 - panc

使用GRUB_GFXPAYLOAD_LINUX设置图形模式

首先,安装xrandr并运行它:

$ sudo apt-get install xrandr
$ xrandr

可用的屏幕模式如下所示。
现在,编辑/etc/default/grub
$ sudo nano /etc/default/grub

假设之前未编辑过的文件,请进行以下更改:
变量GRUB_CMDLINE_LINUX_DEFAULT应至少包含nomodeset,在桌面系统上可能还需要添加quietsplash
GRUB_CMDLINE_LINUX_DEFAULT="nomodeset"

在服务器系统上,取消注释GRUB_TERMINAL=console以在进入图形控制台之前查看更多启动过程中传递的消息。
将此行保留为注释。
#GRUB_GFXMODE=640x480

在文件末尾添加一行:
GRUB_GFXPAYLOAD_LINUX=1280x1024x16

或者将值替换为硬件支持的任何其他(逗号分隔)模式。值“text”、“keep”、“auto”、“vga”和“ask”也应该有效。
最后,在保存编辑后的“/etc/default/grub”文件时,使用Ctrl+O进行保存,并使用Ctrl+X退出,然后执行以下命令:
$ sudo update-grub
$ sudo reboot

这个答案也适用于降低分辨率和/或刷新率或帧缓冲频率的降频系统。当刷新频率过高时,CRT显示器通常会出现闪烁条纹。

2现在没有HWInfo了。 - obayhan
1@obayhan 已经注意到了!您可以使用 xrandr 代替。 - Serge Stroobandt
1适用于16.04版本。 - Jin Kwon
1这个。这是唯一在16.10版本上对我有效的东西。 - Siguza
blurred text :-( - daGo
@daGo 选择一个分辨率和颜色深度,这两者都被你的显示器和显卡支持! - Serge Stroobandt
无论深浅都无关紧要 - daGo

只是一些个人背景:在我的另一台电脑上,我对那种花哨的模式没有任何问题(它是160列x 60行,但它有一个4:3的CRT显示器)。它配备了一个TNT2(是的,我发誓),并且该模式在第一次启动时就会迅速显示出来。问题是,它通过加载“nouveau”驱动程序来实现这一点,而这个驱动程序仍然有点故障(在我的情况下,尝试移动窗口时会导致整个系统挂起)。因此,为了拥有一个可用的系统,我不得不降级到旧的稳定的“nv”驱动程序,并且禁用模式设置(因为内核总是在启用时加载nouveau)。请注意,我没有使用nVidia专有驱动程序,但和你一样,我在控制台模式下被切换回了80x25。
这是因为nv驱动程序不使用内核的模式设置。现在,我不知道专有驱动程序的情况,但我猜想它们可能已经改变了您的配置以便使用,并且可能这就是为什么您看到那个“大”模式的原因。可能他们在安装时禁用了模式设置。这就是为什么在从Live CD启动时您会看到“小”文本模式的原因。
你可以尝试使用不同的VESA模式启动,但这很大程度上取决于你的硬件。请参考http://en.wikipedia.org/wiki/VESA_BIOS_Extensions#Linux_video_mode_numbers了解更多信息。例如,如果你想尝试在1024x640的文本模式下启动,你会发现模式ID是877。
因此,在启动时,按住SHIFT键(如果你没有GRUB超时)来显示GRUB菜单。选择你希望启动的模式,然后按下'e'键(以编辑命令)。在"kernel"命令的末尾添加vga=877。这个数字是模式ID,如果你想尝试其他模式,请将其替换为所需的数字。
另外,在同一Wikipedia页面上,你还可以尝试位于模式表下方的有用的"通用格式"。那个hwinfo命令非常有用。

1我使用的是grub2,而不是grub。我不知道grub负责控制台,所以在我的问题中没有提到。很抱歉。我已经找到了一个grub2的解决方案。谢谢!祝好! - egarcia
说实话,你找到的解决方案似乎也更简单。很高兴你解决了问题,谢谢分享! - Charles Roberto Canato

为什么我要回答这个旧的威胁呢?答案很简单,因为有很多其他威胁在提到它。
如果 vbeinfo 或者 hwinfo --framebuffer 没有显示您显示器的原生分辨率,那么请禁用 vesa,在以下位置删除 vga= 选项:
sudo nano /etc/default/grub

搜索GRUB_CMDLINE_LINUX_DEFAULT=并删除vga=(如果找到的话)。
如果您已经删除了该选项,请不要忘记生成新的grub.cfg文件。
sudo update-grub

如果你不知道自己做得很好,那就重新启动并打开终端:

grep vga /proc/cmdline
grep -ir vga /etc/modprobe.d/

如果grep没有显示任何内容,那么你已经移除了vga=选项。
现在安装uvesafb:
sudo apt-get install v86d

确保uvesafb模块已包含在您的initrd中。将其添加到/etc/initramfs-tools/modules的末尾。
sudo sh -c "echo uvesafb >> /etc/initramfs-tools/modules"

查看可用的模式:
sudo modprobe uvesafb
cat /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes

现在配置uvesafb mode_option=YOURxResoultion-BitColorMode,例如1280x1024-32:
sudo sh -c "echo options uvesafb mode_option=1280x1024-32 scroll=ywrap > /etc/modprobe.d/uvesafb.conf"

不要忘记重新构建你的initrd:
sudo update-initramfs -k all -u

现在你可以重新启动了!
点击this查看更多详细信息。 这是针对Debian的,但也适用于Ubuntu。 希望对你有所帮助,而且比使用grub2更通用。

+1不需要更改grub配置,uvesafb在我使用的Ubuntu 16.04上配合专有的Nvidia驱动(其他地方推荐的KMS不适用于这种情况)很好用。 - jfs

Ubuntu 18 控制台模式:

编辑

GRUB_CMDLINE_LINUX_DEFAULT="splash quite"

/etc/default/grub

所以新的一行看起来像这样:
GRUB_CMDLINE_LINUX_DEFAULT="splash quiet vga=XXX nomodeset"

XXX的来源在哪里?

https://www.pendrivelinux.com/vga-boot-modes-to-set-screen-resolution/

然后重新加载 grub 配置并重新启动
update-grub2
reboot

看起来这个问题已经有很多类似的答案了。也许你可以解释一下是什么促使你添加自己的答案(即之前发布的答案中缺少了哪些信息)。 - cauon
1这很简单。而且适用于最新的Ubuntu 18版本。 - Paul Paku
1"splash quite" 是对 "splash quiet" 的拼写错误 - 这个毫无价值的编辑器不让我只改这个,而不必做其他不必要的更改,所以也许你需要在答案的主体部分加上你的理由。 - Rich

这不会改变启动时的字体,但会改变Ctrl+Alt+F[1-6]控制台的字体。
为您的控制台安装自定义Ubuntu字体。
sudo apt-get install fonts-ubuntu-font-family-console

创建一个脚本 /usr/local/bin/fontset 并使用以下命令:
#!/bin/sh
setfont /usr/share/consolefonts/Uni3-TerminusBold32x16.psf.gz

(从文件夹/usr/share/consolefonts/中选择所需的字体)
您可以在使用Ctrl+Alt+F1之后每次在控制台上调用fontset 或者将此行添加到您的/root/.profile文件中。
[ ! -t 0 ] && sleep 1 & /usr/local/bin/fontset

(不要将此添加到您的用户.profile文件中,否则在图形引导时会出现错误)

来源:调整启动消息屏幕和控制台上的字体大小


我能够通过编辑/etc/default/grub并将GRUB_GFXMODE设置为所需的分辨率(在我的情况下,设置GRUB_GFXMODE=1152x864),然后运行sudo update-grub2来增加Ubuntu服务器20.04.2虚拟机的控制台分辨率。我能够通过运行sudo hwinfo --framebuffer找到可用的分辨率模式。我正在使用grub 2.04

以下内容适用于Debian Stretch 4.9.51-1。
无GUI,只有控制台模式:
编辑/etc/default/grub并添加以下行。
GRUB_CMDLINE_LINUX_DEFAULT="splash vga=795 nomodeset"

要查看 vga= 代码列表,请参见http://pierre.baudu.in/other/grub.vga.modes.html

nomodeset 防止 grub 初始化后分辨率再次更改 [感谢 How do I increase console-mode resolution? ]

编辑: 如 @Videonauth 所提到的: 之后执行以下操作: sudo update-grub


仅在/etc/default/grub中进行更改是不够的,你还需要随后运行sudo update-grub来使其生效。 - Videonauth