设置 Linux(CentOS|Ubuntu|Debian|RedHat) VNC 控制台显示分辨率方法

小助手读文章 00:00 / 00:00

我们在使用虚拟机或者云服务器 VPS 装类似 CentOS、Ubuntu 等 Linux 系统,时常会遇到命令行控制台超出了显示器屏幕显示范围( VPS VNC 应该是体验最明显的),想看完整的命令还要拖一下滚动条,很不方便。由于我们装的系统(特别是 VPS)大多数时候是不带桌面 GUI 的,难以像 Windows 一样直接设置分辨率,而装一个 GUI 十分浪费系统资源,实在没有必要,所以我们可以通过修改启动参数来指定分辨率。

CentOS/RedHat

CentOS 是 RedHat 的开源版本,操作上本质是一样的,以下以 CentOS 为例。

编辑启动文件 /boot/grub2/grub.cfg(CentOS7,之前版本是 /boot/grub/grub.conf):

在 CentOS7 中,启动方式与 CentOS6 有所变动,大致相同,但还是注意区别不要照抄,以免无法启动系统。

# vim /boot/grub2/grub.cfg
......
### BEGIN /etc/grub.d/10_linux ###
menuentry 'CentOS Linux (4.13.9-1.el7.elrepo.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-514.el7.x86_64-advanced-da3df41d-4f56-407b-b8b7-b16c941eda57' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod xfs
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  aa51e8e9-ea37-4894-b465-9f1a5cce17ed
        else
          search --no-floppy --fs-uuid --set=root aa51e8e9-ea37-4894-b465-9f1a5cce17ed
        fi
        linux16 /vmlinuz-4.13.9-1.el7.elrepo.x86_64 root=/dev/mapper/cl-root ro rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet LANG=en_US.UTF-8
        initrd16 /initramfs-4.13.9-1.el7.elrepo.x86_64.img
}
......

这个文件里可能会有很多内核,注意看自己使用的是哪一个,用下列命令便可以确认:

# uname -r
4.13.9-1.el7.elrepo.x86_64

我们要做的是在 Kernel 尾巴添加 vga=ask,这样在启动时就会列出所有支持的分辨率模式供我们选择,改完之后是这样的:

# vim /boot/grub2/grub.cfg
......
### BEGIN /etc/grub.d/10_linux ###
menuentry 'CentOS Linux (4.13.9-1.el7.elrepo.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-514.el7.x86_64-advanced-da3df41d-4f56-407b-b8b7-b16c941eda57' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod xfs
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  aa51e8e9-ea37-4894-b465-9f1a5cce17ed
        else
          search --no-floppy --fs-uuid --set=root aa51e8e9-ea37-4894-b465-9f1a5cce17ed
        fi
        linux16 /vmlinuz-4.13.9-1.el7.elrepo.x86_64 root=/dev/mapper/cl-root ro rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet LANG=en_US.UTF-8 vga=ask
        initrd16 /initramfs-4.13.9-1.el7.elrepo.x86_64.img
}
......

保存后,用下列命令重启,并在 30s 内连接 VNC(VPS)或虚拟机(超时就按默认启动了):

# reboot

系统启动后,按页面提示按 Enter 回车键进入分辨率选择,可以看到列出了很多分辨率,我们根据需求选一个即可,输入分辨率前面的数字即可:

1024x768.gif

可以看到,现在启动后已经按我们设置的分辨率显示了,刚好填满屏幕。实际使用中, 如果每一次开机都要设置一遍分辨率,显然是浪费时间的,所以我们可以再次修改启动文件,将 vga=ask 改成我们刚设置的分辨率 vga=333,这样每次启动就都按照这个分辨率显示了。

还记得刚设置分辨时,分辨率前面对应的参数值吗?

Ubuntu/Debian

Ubuntu/Debian 操作也是一样的,以 Ubuntu 作为例子介绍。

与 CentOS 类似,先确认支持什么分辨率,然后选择合适的,区别在于分辨率在运行状态就可以获取到了。

安装硬件查看工具 hwinfo

# apt install hwinfo -y

查看支持的分辨率:

# hwinfo --framebuffer
02: None 00.0: 11001 VESA Framebuffer                           
  [Created at bios.459]
  Unique ID: rdCR.O3PgoQaqFo1
  Hardware Class: framebuffer
  Model: "VMware virtual machine"
  Vendor: "VMware, Inc"
  Device: "VMware virtual machine"
  SubVendor: "V M ware, Inc. VBE support 2.0"
  SubDevice: 
  Revision: "2.0"
  Memory Size: 0 MB
  Memory Range: 0x00000000-??? (rw)
  Mode 0x0300: 640x400 (+640), 8 bits
  Mode 0x0301: 640x480 (+640), 8 bits
  Mode 0x0303: 800x600 (+800), 8 bits
  Mode 0x0305: 1024x768 (+1024), 8 bits
......
  Mode 0x0331: 640x480 (+1280), 16 bits
  Mode 0x0332: 800x600 (+1600), 16 bits
  Mode 0x0333: 1024x768 (+2048), 16 bits
  Mode 0x0334: 1152x864 (+2304), 16 bits
......
  Mode 0x0378: 1280x768 (+2560), 16 bits
  Mode 0x0379: 1280x768 (+5120), 24 bits
  Config Status: cfg=new, avail=yes, need=no, active=unknown

可以看到列出了很多分辨率,甚至很多是相同分辨率的,区别在于颜色通道(8 bits、16 bits、24 bits,越大颜色显示越细腻),一般选择 16 bits 已经足够了,如果有 GUI 建议 24 bits。

其实 Mode 0x** 就是 CentOS 启动选择分辨率时看到的分辨率前面的数字。

修改启动文件,GRUB_CMDLINE_LINUX_DEFAULT 增加分辨率模式,如 video=0x0333
GRUB_GFXMODEGRUB_GFXPAYLOAD_LINUX 设置为分辨率模式对应的分辨率,如 1024x768,改完之后应该是类似这样的:

# vim /etc/default/grub
......
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity video=0x0341"
GRUB_CMDLINE_LINUX=""
.......
GRUB_GFXMODE=1024x768
GRUB_GFXPAYLOAD_LINUX=1024x768
......

更新启动脚本:

# update-grub

重启:

# reboot

启动成功后就可以看到已经按指定的 1024x768 显示了。


参考文章:

1、《设置CentOS控制台分辨率
2、《Ubuntu Server 15终端分辨率


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 linuxcentosubuntu控制台分辨率调整 的文章

 本文最后更新于 2019/05/22 12:00:00,可能因经年累月而与现状有所差异

 引用转载请注明:VirCloud's Blog > 运维 > 设置 Linux(CentOS|Ubuntu|Debian|RedHat) VNC 控制台显示分辨率方法