1. 遇到Unknown display时先别慌刚装完Ubuntu系统或者更新完显卡驱动突然发现屏幕分辨率不对设置里显示Unknown display可选分辨率少得可怜这时候千万别急着重装系统。我遇到过太多次这种情况有时候是驱动没装好有时候是系统没正确识别显示器甚至可能是xorg配置出了问题。先深呼吸跟着我一步步排查这个问题九成九能自己解决。首先得搞清楚几个关键点你的显卡型号是什么用的是开源驱动还是闭源驱动显示器通过什么接口连接的这些信息后面都会用到。打开终端输入lspci | grep VGA就能看到显卡型号比如我常用的NVIDIA显卡会显示GeForce GTX 1060这样的信息。如果是AMD显卡则会显示Radeon系列型号。2. 快速诊断问题根源2.1 检查xrandr输出状态终端里输入xrandr命令这个命令能显示当前所有的显示设备和可用分辨率。正常情况应该能看到类似这样的输出Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192 HDMI-1 connected primary 1920x108000 (normal left inverted right x axis y axis) 527mm x 296mm 1920x1080 60.00* 50.00 59.94 1680x1050 59.95 1280x1024 75.02 60.02但如果显示Unknown display很可能是系统没正确识别显示器。这时候重点看两点一是连接接口是否显示正确比如HDMI-1、DP-1二是分辨率列表是否完整。2.2 验证显卡驱动状态输入ubuntu-drivers devices查看推荐的显卡驱动或者用glxinfo | grep renderer检查当前使用的渲染器。常见问题包括使用llvmpipe软件渲染说明没装显卡驱动驱动版本太旧不兼容新内核开源驱动和闭源驱动冲突我上次遇到这个问题是在升级到Ubuntu 22.04后系统自动切换到了nouveau开源驱动导致我的4K显示器只能显示1024x768。后来手动安装了NVIDIA官方驱动才解决。3. 临时解决方案用xrandr自定义分辨率3.1 添加自定义分辨率模式当xrandr显示的分辨率列表不全时我们可以手动添加。比如想要添加2560x144060Hz的分辨率cvt 2560 1440 60这个命令会输出类似这样的内容# 2560x1440 59.96 Hz (CVT 3.69M9) hsync: 89.52 kHz; pclk: 312.25 MHz Modeline 2560x1440_60.00 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync vsync把Modeline后面的内容复制下来接着执行xrandr --newmode 2560x1440_60.00 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync vsync xrandr --addmode HDMI-1 2560x1440_60.00 xrandr --output HDMI-1 --mode 2560x1440_60.00注意要把HDMI-1换成你的实际接口名称。这时候屏幕应该会立即切换到这个分辨率。3.2 解决刷新率问题有时候添加的分辨率虽然能用但屏幕会闪烁或者显示不正常这通常是刷新率设置不对。我遇到过144Hz显示器只能跑60Hz的情况这时候需要更精确地计算模型参数。可以用gtf命令替代cvtgtf 2560 1440 144 -x这个命令会生成支持144Hz刷新率的Modeline参数其他步骤和前面一样。4. 永久解决方案配置xorg.conf4.1 创建或修改xorg.conf文件临时方案重启后会失效要永久生效需要修改xorg配置。先备份现有配置sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak然后用你喜欢的编辑器创建新文件sudo nano /etc/X11/xorg.conf把下面这个模板粘贴进去根据你的实际情况修改Section Monitor Identifier Monitor0 VendorName Dell ModelName U2718Q Modeline 2560x1440_60.00 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync vsync Option PreferredMode 2560x1440_60.00 EndSection Section Screen Identifier Screen0 Monitor Monitor0 Device Device0 DefaultDepth 24 SubSection Display Depth 24 Modes 2560x1440_60.00 EndSubSection EndSection Section Device Identifier Device0 Driver nvidia VendorName NVIDIA Corporation EndSection4.2 常见配置错误排查配置完后如果黑屏或者无法进入桌面可能是这些原因写错了显示器EDID信息指定的显卡驱动不对比如把nvidia写成了nouveauModeline参数计算错误这时候可以按CtrlAltF2切换到命令行删掉xorg.conf文件恢复默认设置sudo rm /etc/X11/xorg.conf5. 高级技巧与疑难解答5.1 获取显示器EDID信息有时候系统无法自动识别显示器参数我们可以手动获取EDID信息。先找到显示器对应的接口ls /sys/class/drm/然后读取EDIDsudo cat /sys/class/drm/card0-HDMI-A-1/edid | edid-decode这个命令会输出显示器的详细规格包括支持的分辨率和刷新率范围。把这些信息整合到xorg.conf里会更准确。5.2 多显示器配置技巧对于多显示器环境需要在xorg.conf里为每个显示器配置单独的Section。比如Section ServerLayout Identifier DualScreen Screen 0 Screen0 0 0 Screen 1 Screen1 RightOf Screen0 EndSection然后为每个显示器单独配置Monitor和Screen段。我办公室的双屏就是这样设置的一个4K主屏加一个1080p竖屏。6. 驱动相关问题的终极解决方案如果试了所有方法还是不行可能是驱动问题。对于NVIDIA显卡建议sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update ubuntu-drivers devices sudo apt install nvidia-driver-535安装完成后记得重启。AMD显卡用户可以尝试最新的Mesa驱动sudo add-apt-repository ppa:kisak/kisak-mesa sudo apt update sudo apt upgrade7. 其他实用工具推荐除了xrandr这些工具也很好用arandr图形化界面管理显示器设置nvidia-settingsNVIDIA显卡专用配置工具ddcutil通过DDC/CI协议直接控制显示器硬件我特别喜欢用arandr它能直观地调整多显示器布局还能把配置保存成脚本方便下次直接加载。