在控制台模式下获得更好的分辨率(nVidia 驱动程序)

在控制台模式下获得更好的分辨率(nVidia 驱动程序)

前段时间,当我尝试将我的桌面系统从 Ubuntu 18.10 更新到 19.04 时,出现了一些问题,最终我得到的图形环境无法正常工作。

这迫使我使用控制台 (Ctrl+Alt+F3),它工作得很好。实际上,它工作得很好。屏幕得到了充分利用,字体清晰,尽管字体很小,但由于与显示器的分辨率完美匹配,因此可读性很高。我最终拥有了一个非常大的工作空间。与 结合tmux,这是一个完美的开发环境。

我对这个新设置感觉很好,以至于我几周都没去修复图形环境。但是,文本模式缺少的一项功能是 Firefox,如果不访问它,我能做的事情就太少了。所以我修复了这个问题,它显然与 nVidia 图形驱动程序有关。只需卸载并重新安装即可解决问题。现在图形环境运行正常。

所以,我不再“需要”控制台模式,但由于我喜欢它,我想再次使用它,令我沮丧的是,分辨率被设置为默认的 1024x768。crips 字体不见了,文本现在变得过大且模糊,降低了工作环境,并带来了不愉快的阅读体验。

于是,我上去搜索一些解决方案。碰巧这个问题经常被问到。我发现了同一个答案的许多变体,它们都指向grub

现在,这很奇怪,因为在上述情况下,控制台分辨率发生了变化,而grub没有丝毫改变。所以这很可疑。尽管如此,我还是勉强尝试了。grub解决方案的一个好变体可以是阅读此处。所以我用显示器的分辨率应用了它,但没有效果。分辨率仍然很低而且很模糊。

深入挖掘后,我发现了一些关于如何选择视频模式的建议,首先使用vbeinfoon列出它们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

相关内容