前段时间,当我尝试将我的桌面系统从 Ubuntu 18.10 更新到 19.04 时,出现了一些问题,最终我得到的图形环境无法正常工作。
这迫使我使用控制台 (Ctrl+Alt+F3),它工作得很好。实际上,它工作得很好。屏幕得到了充分利用,字体清晰,尽管字体很小,但由于与显示器的分辨率完美匹配,因此可读性很高。我最终拥有了一个非常大的工作空间。与 结合tmux
,这是一个完美的开发环境。
我对这个新设置感觉很好,以至于我几周都没去修复图形环境。但是,文本模式缺少的一项功能是 Firefox,如果不访问它,我能做的事情就太少了。所以我修复了这个问题,它显然与 nVidia 图形驱动程序有关。只需卸载并重新安装即可解决问题。现在图形环境运行正常。
所以,我不再“需要”控制台模式,但由于我喜欢它,我想再次使用它,令我沮丧的是,分辨率被设置为默认的 1024x768。crips 字体不见了,文本现在变得过大且模糊,降低了工作环境,并带来了不愉快的阅读体验。
于是,我上去搜索一些解决方案。碰巧这个问题经常被问到。我发现了同一个答案的许多变体,它们都指向grub
。
现在,这很奇怪,因为在上述情况下,控制台分辨率发生了变化,而grub
没有丝毫改变。所以这很可疑。尽管如此,我还是勉强尝试了。grub
解决方案的一个好变体可以是阅读此处。所以我用显示器的分辨率应用了它,但没有效果。分辨率仍然很低而且很模糊。
深入挖掘后,我发现了一些关于如何选择视频模式的建议,首先使用vbeinfo
on列出它们grub
。这不起作用。后来我看到了一条建议videoinfo
。这个有用,但只列出了 4x3 格式的“低分辨率”模式,从 640 到 1280。
最后,另一个答案建议使用hwinfo
,它在用户模式下可用。这个列出了更多模式,但仍然不是我的显示器的模式。
sudo hwinfo --framebuffer
02: None 00.0: 11001 VESA Framebuffer
[Created at bios.459]
Unique ID: xxxx
Hardware Class: framebuffer
Model: "NVIDIA GPU Board"
Vendor: "NVIDIA Corporation"
Device: "GPU Board"
SubVendor: "NVIDIA"
SubDevice:
Revision: "Chip Rev"
Memory Size: 16 MB
Memory Range: 0x01000000-0x01ffffff (rw)
Mode 0x0301: 640x480 (+640), 8 bits
Mode 0x0303: 800x600 (+1024), 8 bits
Mode 0x0305: 1024x768 (+1024), 8 bits
Mode 0x0307: 1280x1024 (+1280), 8 bits
Mode 0x0311: 640x480 (+1280), 16 bits
Mode 0x0312: 640x480 (+2560), 24 bits
Mode 0x0314: 800x600 (+2048), 16 bits
Mode 0x0315: 800x600 (+4096), 24 bits
Mode 0x0317: 1024x768 (+2048), 16 bits
Mode 0x0318: 1024x768 (+4096), 24 bits
Mode 0x031a: 1280x1024 (+2560), 16 bits
Mode 0x031b: 1280x1024 (+5120), 24 bits
Mode 0x0345: 1600x1200 (+1664), 8 bits
Mode 0x0346: 1600x1200 (+3328), 16 bits
Mode 0x034a: 1600x1200 (+6656), 24 bits
Mode 0x0371: 1360x768 (+6144), 24 bits
Mode 0x0377: 1920x1080 (+7680), 24 bits
Config Status: cfg=new, avail=yes, need=no, active=unknown
我的显示器的原始分辨率为 1680x1050,即 16:10 格式。但列表中没有这个分辨率。这似乎表明显卡无法处理。
然而,它在图形模式下运行得很好。更奇怪的是,当图形驱动程序出现问题时,1680x1050 的控制台模式曾经运行良好。不知何故,修复图形驱动程序使控制台模式的情况变得更糟。
除了前面描述的操作之外,还有什么可以尝试的吗?
编辑:我尝试了rEFInd
,它通过 提供了更合理的配置体验refind.conf
。我想这也意味着这个grub2
技巧不再有效。无论如何,设置resolution 1680 1050
不起作用,并且启动立即抱怨它,将选择限制为640x480, 800x600, 1024x768, 1280x1024
。所以我猜rEFInd
只能从中选择一个,可能是由于 nVidia VGA Bios 支持的限制。
但是,我觉得控制台被限制为仅“继承”与引导加载程序相同的分辨率,这很奇怪。而且它仍然无法解释为什么在修复图形驱动程序之前,1680x1050 的控制台可以正常工作。
编辑2grub
:将的分辨率修改为1280x1024
,这是 允许的分辨率之一videoinfo
,成功将 Ubuntu tty 的分辨率修改为1280x1024
。最后,有些影响。它增加了默认的工作空间1024x768
,但字体更难读了……仍然没有解释为什么 tty 使用1680x1050
工作正常,而 nvidia 驱动程序却一团糟。
编辑3:我现在怀疑,虽然我的图形环境无法正常工作,但图形驱动程序可能是由提供的nouveau
。不幸的是,它与我的显卡不兼容,因为它太新了(它是 RTX2080)。但不知何故,nouveau
有一个有效的帧缓冲区实现,这使得高分辨率控制台成为可能,而官方 nVidia 驱动程序中奇怪地缺少这个功能……
编辑4:按照@Naoyuki Tai 的要求,但通过 SSH 远程会话运行:
sudo fbset -i
mode "1024x768-76"
# D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz
geometry 1024 768 1024 768 32
timings 12714 128 32 16 4 128 4
rgba 8/16,8/8,8/0,8/24
endmode
Frame buffer device information:
Name : EFI VGA
Address : 0x53000000
Size : 3145728
Type : PACKED PIXELS
Visual : TRUECOLOR
XPanStep : 0
YPanStep : 0
YWrapStep : 0
LineLength : 4096
Accelerator : No