Ubuntu-2404-强制1080P现场操作记录
Ubuntu 24.04 强制 1080P 输出简明操作手册
目标:让 Ubuntu 桌面输出1920x1080。
适用:机器可能接主板 AST2400 VGA、独立显卡 VGA、独立显卡 HDMI。现场必须先判断实际接线。
0. 先看结论
| 实际接线 | 常见 connector | GRUB 强制参数 |
|---|---|---|
| 主板 AST2400 VGA | VGA-1 | video=VGA-1:1920x1080M@60e |
| 独立显卡 VGA | VGA-2 | video=VGA-2:1920x1080M@60e |
| 独立显卡 HDMI | GRUB 常见HDMI-A-1,GNOME 常见HDMI-1 | video=HDMI-A-1:1920x1080M@60e |
注意:
- GRUB 使用
/sys/class/drm里看到的 connector 名。 - GNOME 显示接口里的 HDMI 可能叫
HDMI-1,不是HDMI-A-1。 - 换接线或换 connector 前,先备份并移除旧的
~/.config/monitors.xml,否则可能出现只有光标、没有桌面的情况。
1. 检查当前输出口
echo"===== GPU ====="lspci-nnk|grep-A5-Ei"VGA|Display|3D"echoecho"===== Connectors ====="forcin/sys/class/drm/card*-*;do[-e"$c"]||continueecho"---$c"[-f"$c/status"]&&echo"status=$(cat"$c/status")"[-f"$c/modes"]&&sed-n'1,20p'"$c/modes"done看哪个 connector 是connected,再选择后续命令。
2. 检查是否已有 1080P 模式
主板 AST VGA:
cat/sys/class/drm/card1-VGA-1/modes独立显卡 VGA:
cat/sys/class/drm/card2-VGA-2/modes独立显卡 HDMI:
cat/sys/class/drm/card2-HDMI-A-1/modes如果目标输出里已经有:
1920x1080可以直接到第 4 步切 GNOME 桌面。没有的话继续第 3 步。
3. 通过 GRUB 注入 1080P 模式
先备份:
sudocp-a/etc/default/grub /etc/default/grub.bak-$(date+%Y%m%d-%H%M%S)mv~/.config/monitors.xml ~/.config/monitors.xml.bak-before-1080p-$(date+%Y%m%d-%H%M%S)2>/dev/null||true编辑 GRUB:
sudonano/etc/default/grub找到:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"按实际接线改其中一种。
主板 AST VGA:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=VGA-1:1920x1080M@60e"独立显卡 VGA:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=VGA-2:1920x1080M@60e"独立显卡 HDMI:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=HDMI-A-1:1920x1080M@60e"保存后执行:
sudoupdate-grubsudoreboot重启后确认:
cat/proc/cmdlineforcin/sys/class/drm/card*-*;do[-e"$c"]||continueecho"---$c"[-f"$c/status"]&&echo"status=$(cat"$c/status")"[-f"$c/modes"]&&sed-n'1,20p'"$c/modes"done目标 connector 的 modes 里应出现1920x1080。
4. 切换 GNOME 桌面到 1080P
先准备环境变量:
PID=$(pgrep-x-u"$USER"gnome-shell|tail-1)exportXDG_RUNTIME_DIR=/run/user/$(id-u)exportDBUS_SESSION_BUS_ADDRESS=$(tr'\0''\n'</proc/$PID/environ|sed-n's/^DBUS_SESSION_BUS_ADDRESS=//p'|head-1)STATE=$(gdbus call--session\--destorg.gnome.Mutter.DisplayConfig\--object-path /org/gnome/Mutter/DisplayConfig\--methodorg.gnome.Mutter.DisplayConfig.GetCurrentState)SERIAL=$(printf'%s\n'"$STATE"|sed-n's/^(uint32 \([0-9][0-9]*\),.*/\1/p'|head-1)主板 AST VGA:
gdbus call--session\--destorg.gnome.Mutter.DisplayConfig\--object-path /org/gnome/Mutter/DisplayConfig\--methodorg.gnome.Mutter.DisplayConfig.ApplyMonitorsConfig\"$SERIAL"2"[(0, 0, 1.0, 0, true, [('VGA-1', '1920x1080@60.000', {})])]""{}"独立显卡 VGA:
gdbus call--session\--destorg.gnome.Mutter.DisplayConfig\--object-path /org/gnome/Mutter/DisplayConfig\--methodorg.gnome.Mutter.DisplayConfig.ApplyMonitorsConfig\"$SERIAL"2"[(0, 0, 1.0, 0, true, [('VGA-2', '1920x1080@60.000', {})])]""{}"独立显卡 HDMI:
gdbus call--session\--destorg.gnome.Mutter.DisplayConfig\--object-path /org/gnome/Mutter/DisplayConfig\--methodorg.gnome.Mutter.DisplayConfig.ApplyMonitorsConfig\"$SERIAL"2"[(0, 0, 1.0, 0, true, [('HDMI-1', '1920x1080@60.000', {})])]""{}"说明:
- 命令里的
2表示保存配置。 - 只想临时测试时,把
2改成1。 - 不建议手写
scale为1.25这类小数缩放,X11 会话下可能导致monitors.xml无法读取。
5. 镜像输出
镜像要求所有参与镜像的输出都支持1920x1080。如果某个输出只有1024x768,镜像会被拉回低分辨率。
VGA-1和VGA-2镜像:
gdbus call--session\--destorg.gnome.Mutter.DisplayConfig\--object-path /org/gnome/Mutter/DisplayConfig\--methodorg.gnome.Mutter.DisplayConfig.ApplyMonitorsConfig\"$SERIAL"2"[(0, 0, 1.0, 0, true, [('VGA-1', '1920x1080@60.000', {}), ('VGA-2', '1920x1080@60.000', {})])]""{}"HDMI 和 AST VGA 镜像:
gdbus call--session\--destorg.gnome.Mutter.DisplayConfig\--object-path /org/gnome/Mutter/DisplayConfig\--methodorg.gnome.Mutter.DisplayConfig.ApplyMonitorsConfig\"$SERIAL"2"[(0, 0, 1.0, 0, true, [('HDMI-1', '1920x1080@60.000', {}), ('VGA-1', '1920x1080@60.000', {})])]""{}"6. 有光标但没有桌面的修复方法
记录一次实际测试,出现无桌面现象:(未清除monitors.xml缓存)
- 当前机器只有 AST
VGA-1。 - GRUB 已经是
video=VGA-1:1920x1080M@60e,没有问题。 - 但
~/.config/monitors.xml里还写着旧的VGA-2,并且把VGA-1标成 disabled。 - 文件里还保存了
scale=1.25,X11 会话日志报错:A fractional scale with physical layout mode not allowed。
SSH 登录后执行:
mv~/.config/monitors.xml ~/.config/monitors.xml.bak-black-cursor-$(date+%Y%m%d-%H%M%S)2>/dev/null||true如果当前目标是主板 ASTVGA-1,写入干净配置:
mkdir-p~/.configcat>~/.config/monitors.xml<<'XML' <monitors version="2"> <configuration> <logicalmonitor> <x>0</x> <y>0</y> <scale>1</scale> <primary>yes</primary> <monitor> <monitorspec> <connector>VGA-1</connector> <vendor>unknown</vendor> <product>unknown</product> <serial>unknown</serial> </monitorspec> <mode> <width>1920</width> <height>1080</height> <rate>60.000</rate> </mode> </monitor> </logicalmonitor> </configuration> </monitors> XML然后重启桌面:
sudosystemctl restart gdm3或直接重启:
sudoreboot7. 回退
回退 GRUB:
ls-lt/etc/default/grub.bak-*sudocp/etc/default/grub.bak-YYYYMMDD-HHMMSS /etc/default/grubsudoupdate-grubsudoreboot回退 GNOME 显示配置:
rm~/.config/monitors.xml然后注销或重启。
8. 常见问题
GRUB 写了但没有效果
大概率 connector 写错。重新执行第 1 步检查。
1080P 出现了,但 GNOME 仍是 1024x768
说明内核模式已经注入成功,但桌面还没切换。执行第 4 步。
镜像后变回 1024x768
说明参与镜像的某个输出没有 1080P 模式。先对那个输出执行第 3 步。
强制后花屏
说明屏幕、转接器或小屏控制板可能不真正支持该 1080P 时序,这就没有办法了,请回退。
