Arch Linux (GNOME Wayland) 拓展屏配置指南
杂记 在线办公 代码记录 6

Arch Linux (GNOME Wayland) 拓展屏配置指南

目标接口HDMI-A-1
EDID 来源:AOC0CCD (GitHub 物理转储)
目标分辨率:2560x1600@60Hz

第一步:获取并转换指定的 EDID 文件

由于 GitHub 上的文件是十六进制文本格式,我们需要将其下载并转换为内核能读取的二进制 .bin 格式。

  1. 下载 RAW 文本文件并转换
    在终端中依次运行以下命令。这里使用 curl 下载,并通过你之前提到的 xxd 进行转换:
# 创建并进入工作目录
mkdir -p ~/edid_work && cd ~/edid_work

# 下载你指定的 AOC EDID 文本文件
curl -s -O https://raw.githubusercontent.com/linuxhw/EDID/master/Digital/AOC/AOC0CCD/82A0A0F41AA1

# 转换为二进制 bin 文件 (命名为 AOC_EDID.bin)
cat 82A0A0F41AA1 | grep -E '^([a-f0-9]{32}|[a-f0-9 ]{47})$' | tr -d '[:space:]' | xxd -r -p > AOC_EDID.bin

  1. 将 bin 文件移入系统固件目录
sudo mkdir -p /usr/lib/firmware/edid
sudo cp AOC_EDID.bin /usr/lib/firmware/edid/

第二步:将 EDID 封入内核初始化镜像 (Initramfs)

为了让显卡在开机第一时间读取到这个 AOC 的 EDID,必须将其打入开机内存盘。

  1. 编辑 mkinitcpio 配置文件
sudo nano /etc/mkinitcpio.conf

  1. 找到 FILES=() 这一行,将刚才的 bin 文件路径填进去:
FILES=(/usr/lib/firmware/edid/AOC_EDID.bin)

  1. 保存退出 (Ctrl+O, 回车, Ctrl+X),然后重新打包内核
sudo mkinitcpio -P


PS:Ubuntu 使用 initramfs-tools 来打包开机内存盘。为了让显卡在开机的第一时间(甚至在挂载真正的硬盘之前)就能读取到这个 AOC 身份证,必须将其打入内核镜像。

编写挂钩脚本(Hook):
新建一个用于打包的自动化脚本:

sudo nano /etc/initramfs-tools/hooks/load-edid

写入复制指令:
在脚本中粘贴以下内容,告诉打包工具在构建镜像时顺带把这个 bin 文件带上:

#!/bin/sh
PREREQ=""
prereqs() { echo "$PREREQ"; }
case $1 in prereqs) prereqs; exit 0;; esac

. /usr/share/initramfs-tools/hook-functions
copy_file firmware /usr/lib/firmware/edid/AOC_EDID.bin /usr/lib/firmware/edid/AOC_EDID.bin

赋权并执行打包:
赋予脚本执行权限,并重新生成当前及所有备用内核的引导镜像:

sudo chmod +x /etc/initramfs-tools/hooks/load-edid
sudo update-initramfs -u -k all

(注:打包时如果提示正在 Generating /boot/initrd.img-... 且未报错,即说明文件已被成功缝入。)


第三步:修改 GRUB 引导参数(强制通电与绑定)

告诉内核强制激活 HDMI-A-1 接口,并挂载这台 AOC 显示器。

  1. 编辑 GRUB 配置
sudo nano /etc/default/grub

  1. 找到 GRUB_CMDLINE_LINUX_DEFAULT= 这一行,在双引号内的最末尾添加以下参数(用空格与前面的参数隔开):
video=HDMI-A-1:e drm.edid_firmware=HDMI-A-1:edid/AOC_EDID.bin

参数说明

  • HDMI-A-1:指定强制激活的物理接口。

  • e:强制接口通电 (Force Enable)。

  • drm.edid_firmware=...:将你刚生成的 AOC EDID 强行绑定给该接口。

  1. 保存退出,更新 GRUB 菜单
sudo grub-mkconfig -o /boot/grub/grub.cfg

第四步:重启并使用

  1. 重启系统
reboot

  1. 重启进入系统后,打开 GNOME 的 设置 -> 显示器
  2. 此时应该能看到名为 AOC28(或类似名称)的显示器。将其设为开启,并在下拉菜单中选择 2560x1600
  3. 打开平板上的 Moonlight 连接电脑,当 GNOME 弹出屏幕共享确认框时,选择这块 AOC 拓展屏即可。

💡 补充说明:
由于使用的是物理显示器的真实 EDID 提取文件,其内部包含了物理面板的固定时序。如果在第四步的设置中,依然找不到 2560x1600 的选项,说明显卡驱动底层的安全机制仍然认为该 EDID 的物理带宽要求过高,拒绝了 R 参数的降维强制覆写。如果发生这种情况,唯一的解法依然是放弃这份物理 EDID,回到前面使用 wxedid 生成纯净虚拟 EDID 的方案。

💡 Sunshine作为拓展屏💡
需要在Sunshine修改全局配置:


    打开 Sunshine Web UI(通常是 https://localhost:47990)。

    进入 Configuration -> Audio/Video 标签页。

    找到 Output Name(或者 Output Index)选项:

        如果用索引: 输入 1(注意:Linux/X11/Wayland 的索引通常从 0 开始,如果你的屏幕2在系统里是第二个,可以尝试填 1)。

        如果用名称(更推荐): 直接输入对应的接口名称(如 DP-1 或 HDMI-A-1)。

    点击 Save 并重启 Sunshine。
    
Arch Linux (GNOME Wayland) 拓展屏配置指南
https://blog.427221.xyz/archives/arch-linux-gnome-wayland-tuo-zhan-ping-pei-zhi-zhi-nan
作者
qqq
发布于
更新于
许可