升级到 RHEL 6.8 后虚拟控制台大小增加

升级到 RHEL 6.8 后虚拟控制台大小增加

将某些 VMware 虚拟机更新至RHEL 6.8(内核 2.6.32-642)看来虚拟控制台的尺寸已经增加了——它非常大。

控制台中没有运行 X 服务器,即它是一个经典的基于文本的 Linux 控制台。

当我通过虚拟控制台登录时,LINESCOLUMNS变量​​的值是:

COLUMNS=160
LINES=48

我如何调整控制台的大小?

提前感谢

更新 1

我用 Google 搜索了这个问题,发现很多解决方案都使用vga=中的内核选项grub.conf。我试过了,但是没有用;虽然/proc/cmdline重启后该选项确实出现了——但它并没有被忽略。

我在输出中发现了以下两行dmesg

Console: colour VGA+ 80x25
console [tty0] enabled

但我发现下面有很多行:

[drm] DMA map mode: Using physical TTM page addresses.
[drm] Capabilities:
[drm]   Rect copy.
[drm]   Cursor.
[drm]   Cursor bypass.
[drm]   Cursor bypass 2.
[drm]   8bit emulation.
[drm]   Alpha cursor.
[drm]   Extended Fifo.
[drm]   Multimon.
[drm]   Pitchlock.
[drm]   Irq mask.
[drm]   Display Topology.
[drm]   GMR.
[drm]   Traces.
[drm]   GMR2.
[drm]   Screen Object 2.
[drm]   Command Buffers.
[drm] Max GMR ids is 64
[drm] Max number of GMR pages is 65536
[drm] Max dedicated hypervisor surface memory is 163840 kiB
[drm] Maximum display memory size is 8192 kiB
[drm] VRAM at 0xd8000000 size is 8192 kiB
[drm] MMIO at 0xd0800000 size is 256 kiB
[drm] global init.
[TTM] Zone  kernel: Available graphics memory: 8167096 kiB
[TTM] Zone   dma32: Available graphics memory: 2097152 kiB
[TTM] Initializing pool allocator
[TTM] Initializing DMA pool allocator
[drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[drm] No driver support for vblank timestamp query.
[drm] Screen Objects Display Unit initialized
[drm] width 1280
[drm] height 768
[drm] bpp 32
[drm] Fifo max 0x00040000 min 0x00001000 cap 0x0000077f
[drm] Using command buffers with DMA pool.
[drm] DX: no.
fbcon: svgadrmfb (fb0) is primary device
Console: switching to colour frame buffer device 160x48
[drm] Initialized vmwgfx 2.9.0 20150810 for 0000:00:0f.0 on minor 0

您可以看到drm模块设置图形屏幕尺寸(1280x768@32)和文本屏幕尺寸(160x48。我对这个模块一无所知drm。以下命令行显示了有关它的一些信息:

# lsmod|grep drm
drm_kms_helper        127219  1 vmwgfx
drm                   362893  4 vmwgfx,ttm,drm_kms_helper
i2c_core               29132  3 i2c_piix4,drm_kms_helper,drm

我将寻找有关drm模块的信息。

更新 2

我确认该问题出现在 RHEL 6.8 中。我已将 RHEL 6.1 更新至 RHEL 6.7,控制台大小没有发生任何变化。

后来,当我更新到 RHEL 6.8 时,控制台变得非常大。

答案1

简而言之:

尝试禁用 VMware 的svgadrmfb帧缓冲区驱动程序。我的分辨率也发生了相同的变化,我发现在我的一个虚拟机上更新后,帧缓冲区已启用。

现在来看看详细的答案……

我在寻找以下问题的答案时看到了你的问题完全相同问题,尽管在我的情况下,当我在 TurnKey Linux 设备(基于 Debian)上自动更新后重新启动时,显示分辨率发生了变化。我们称之为虚拟机1

在查看内核日志(dmesg)并将其与另一个虚拟机的日志进行比较后,虚拟机(仍具有原始分辨率),我发现虚拟机1还有以下几行。

[    2.033291] [drm] width 1280
[    2.033305] [drm] height 768
[    2.033318] [drm] bpp 32
[    2.050045] [drm] Fifo max 0x00040000 min 0x00001000 cap 0x0000007f
[    2.085691] fbcon: svgadrmfb (fb0) is primary device
[    2.088207] Console: switching to colour frame buffer device 160x48

我检查了虚拟机并确认它没有加载svgadrmfb驱动程序(因为没有/dev/fb0)。

我找到了以下有关如何禁用帧缓冲区的文章: http://kb.digium.com/articles/FAQ/如何禁用-the-Linux-frame-buffer-if-it-s-causing-problems

我测试了建议的内核启动参数:

  • vga=normal
  • nofb
  • nomodeset
  • video=vesafb:off(事实上​​,我尝试过video=svgadrmfb:off,但是还是没用。)
  • i915.modeset=0

就我而言,这种方法对我有用。一旦我发现了这一点,我就会按照以下方法永久保存它(我偏离了链接页面中的nomodeset步骤 4)。查看文件后/etc/grub.d/10_linux,我意识到GRUB_CMDLINE_LINUX_DEFAULT/etc/default/grub。(还建议询问Ubuntu #19486

就我而言,变量是:

GRUB_CMDLINE_LINUX_DEFAULT="consoleblank=0"

我把这一行改成:

GRUB_CMDLINE_LINUX_DEFAULT="consoleblank=0 nomodeset"

做出更改后,更新 GRUB 的配置:

sudo update-grub

然后发出init 6重新启动命令。

如果您的系统之前也没有加载svgadrmfb,那么当帧缓冲区被禁用时,屏幕分辨率应该会返回。

root@server:~# tput cols
80
root@server:~# tput lines
25

另外,一旦您的系统启动,您可以验证有效的内核启动命令:

root@server:~# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.16.0-4-amd64 root=/dev/mapper/turnkey-root ro consoleblank=0 nomodeset

答案2

我打开了这个帖子在 RedHat 讨论中,一位支持成员建议我另一个帖子。我尝试了显示的不同解决方案并添加了内核选项

vmwgfx.enable_fbdev=0

grub配置文件中起作用。

感谢大家。

相关内容