Centos/AnolisOS系统修改显示器旋转后黑屏问题处理方法?查询显示器配置的方式?以及命令行修改显示器的3个参数方法和3个层次?(xrandr、edid、xorg、gdm)

快速回忆要点

# 获取display
for i in {0..10}; do echo; echo "---Display $i:"; xrandr --display :$i; done
# 根据display设置分辨率、旋转和刷新率
xrandr --display :1 --output VGA-1 --mode 1600x900 --rotate normal --rate 60
重要坑:分辨率设置必须包含在硬件支持里面,以及分辨率如何配合rotate之后需要折算后看新的是否包含,否则会黑屏

背景

显示器连接服务器,想调整为横屏显示。于是在Anolis中设置了竖屏显示,结果就黑屏了,但是ssh可以连接。经过一定摸索。特此记录如何解决。
在这里插入图片描述

结论

ssh中执行xrandr命令修改分辨率、旋转和刷新率。
结社找到使用display:1 并且叫做VGA-1

xrandr --display :1 --output VGA-1 --mode 1600x900 --rotate normal --rate 60

参数说明:
– display 指定虚拟显示器(对于gdm或者x11来说的一个虚拟显示器)
– output 指定对应的显示器名字
– mode 指定分辨率,需要xrandr --display :1列出来的数据
– rotate 指定旋转方向。总的四个,normal、inverted(180°旋转)、left、right

注意上面的display根据后文的方式获取,包括output名字,以及支持的mode

坑1:xrandr在ssh中需要指定display参数来说明用哪个虚拟的display
坑2:指定rotate之后如果实际显示器不支持,可能无法显示。(我本次就是落在这里了)。比如800x600,指定left之后假设是600x800,如果显示器不支持这个,配置能够生效,但是实际显示会异常。具体显示器支持哪些直接使用xrandr进行配置
坑3:注意在不同用户模式下执行后获得的display以及实际的显示器是不一样的。

避坑指南:
重要坑:分辨率设置必须包含在硬件支持里面,以及分辨率如何配合rotate之后需要折算后看新的是否包含,否则会黑屏。

常见问题处理

xrandr报错:Can’t open display

在这里插入图片描述
原因:ssh中xrandr无法读取环境变量DISPLAY,xrandr无法配置数据。默认的display 是:1

解决办法:

  1. 在非ssh执行
  2. 使用xrandr的–display参数,详细参考后文

如何查询使用的是哪个display?注意使用对应的账户

一定要注意,使用什么账户登录,就在对应账户查询。比如在root查询其他的。
执行下面的命令遍历10个display,找到有显示的

for i in {0..10}; do echo; echo "---Display $i:"; xrandr --display :$i; done

这里是root查询出来的(root我用vnc登录的):这里就是display2。
在这里插入图片描述

这里是登录账户查询出来的:
在这里插入图片描述

其他要点

  • 不同用户,不同显示器,使用的display是不一样的。名字也不一样
  • GDM(GNOME Display Manager)是 Linux 系统中的一个登录管理器,它通常用于启动 GNOME 桌面环境。
  • EDID(Extended Display Identification Data): 每个显示器都包含一个存储在其内部的 EDID 数据,其中包含了有关显示器的详细信息,如分辨率、刷新率、制造商等。
  • 重启GDM的方式:sudo service gdm restart或者sudo systemctl restart gdm,如果修改某些配置可能需要重启gdm
  • 查看系统使用的窗口管理工具是gdm还是display-manager:systemctl list-units --type=service | grep display-manager 以及 systemctl list-units --type=service | grep gdm
  • gdm和x11类似于一个前端一个后端,gdm是前端,x11是后端
  • 关闭所有x11的方式:killall Xorg。查看当前启动的xorg:ps -aux |grep -i xorg
  • XRandR是X Rotate and Reflect Extension(改变大小与旋转扩展)的缩写,用来在命令行界面中对Linux系统中的X窗口系统的多屏幕做出一些设定的软件,能更改外接屏幕的大小、分辨率等, 参考:https://zh.wikipedia.org/zh-cn/XRandR
  • 需要一台对比显示器,尤其是低分辨率的显示器
  • 高分辨率的显示器可能服务器不支持
  • 结合linux驱动中的framebuffer以及显示器驱动刷新方式作为分辨率相关的辅助信息进行分析

最后

本文记录了一次服务器因为修改显示器旋转造成黑屏的问题。并且针对此需要理解x11、gdm、xrandr的关系以及xrandr命令如何获取显示器配置等信息,以及如何通过xrandr配置linux的分辨率、旋转、刷新率等信息。并且尝试理解xrandr作为一个配置工具,从display中看到了session、display、显示器硬件的EDID等关系,进一步看到Linux如何将显示器硬件与显示"display桌面"解耦,如何将不同用户管理display、如何将桌面管理与桌面会话(session)解耦(gdm与x11关系)、如何将EDID与硬件绑定作为ID等相关信息。进一步看到了字啊工程上解耦带来了生态的繁荣。比如桌面管理可以有多个方式等进一步。
大道至简,Linux显示分层为硬件、session、display、gdm、cmd等多个维度。对于软件开发设计也是一个不错的范例。

参考

https://wangchujiang.com/linux-command/c/xrandr.html

  • 48
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值