ASUS KCMA-D8
此页面描述了让 ASUS KCMA-D8 大部分功能正常工作的必要步骤。它假定您已经成功安装了 Arch Linux 并使用了 GRUB 引导加载程序。
BIOS
制造商的 BIOS 已过时且不安全,它没有 NVMe 驱动程序,无法从挂起状态恢复,并且是闭源的。为了解决这个问题,我们可以安装一个预编译的开源 BIOS,称为 libreboot。
原厂 BIOS 会阻止您刷写非原厂 BIOS,因此第一次刷写必须通过硬件完成。首次 安装 libreboot 的最简单方法是使用 Raspberry Pi,将 BIOS 芯片连接到 GPIO 如图所示。在 Pi 上使用 apt install flashprog 安装 flashprog,然后从 libreboot 下载页面下载、验证并解压最新的 BIOS 镜像(建议使用测试版 20231021 或更高版本,早期版本不支持 NVMe)。确保选择具有正确 RAM 类型、ROM 大小、payloads 和键盘类型的 BIOS 镜像,然后按照 flashprog 使用说明进行刷写,将 ./flashprog 替换为 flashprog,因为我们已经安装了它。在新 BIOS 启动前,请务必清除 CMOS。
一旦安装了 libreboot,就可以通过遵循 这些说明在操作系统内进行更新。
原厂 BIOS 芯片为 2MiB,可以升级到 16MiB 的芯片,例如 25Q128FVIQ 或 W25Q128FVSG,需要使用 SOP8 转 DIP8 适配器 PCB。这将为将来更大的 payloads 腾出空间,但并非必需。
要从 NVMe 启动您的操作系统,建议将操作系统完全安装到 NVMe,并将 GRUB 安装到 SATA 驱动器(该驱动器上至少需要有一个分区)。这可以避免您不得不在 libreboot BIOS 中重新配置 GRUB 的启动顺序。
传感器
运行 sensors detect 后,它会加载错误的内核驱动程序 w83627ehf。可以通过在 lm_sensors 配置文件中将 w83627ehf 替换为 w83795 来解决此问题。
/etc/conf.d/lm_sensors
HWMON_MODULES="w83795"
/sys/class/hwmon/ 中枚举的 hwmon 符号链接的顺序在电源循环后可能会发生变化,因为内核模块在每次启动时加载的顺序不一致。像插入游戏控制器这样简单的操作都可能导致顺序改变。通过创建/编辑 /etc/modules-load.d/modules.conf 来创建一个固定的模块加载顺序,这应该能使 hwmon 路径保持不变,并在重启后不会改变顺序。
/etc/modules-load.d/modules.conf
# Load w83795 at boot w83795
此方法可能并不总是可靠,应记录并实现更可靠的方法。
风扇控制
此主板的风扇控制相当独特。有 8 个 PWM 风扇控制通道,但只有 2 个通道用于控制所有 8 个风扇头的风扇速度。必须组合使用 4 针风扇(推荐用于 CPU)和 3 针风扇(推荐用于机箱)。所有 4 针风扇可以设置一个速度,所有 3 针风扇可以设置另一个速度。运行 pwmconfig 后,fancontrol.service 拒绝启动。这是因为 fancontrol 无法将超过 2 个风扇与 PWM 速度关联。手动配置 /etc/fancontrol,使每个设备 FCFANS 只有两个输入,然后 重启 fancontrol.service。这是一个配置示例
/etc/fancontrol
INTERVAL=10 DEVPATH=hwmon6=devices/pci0000:00/0000:00:14.0/i2c-8/8-002f DEVNAME=hwmon6=w83795g FCTEMPS=hwmon6/device/pwm2=hwmon6/device/temp1_input hwmon6/device/pwm1=hwmon6/device/temp8_input FCFANS=hwmon6/device/pwm2=hwmon6/device/fan8_input+hwmon6/device/fan6_input hwmon6/device/pwm1=hwmon6/device/fan2_input+hwmon6/device/fan1_input MINTEMP=hwmon6/device/pwm2=60 hwmon6/device/pwm1=40 MAXTEMP=hwmon6/device/pwm2=80 hwmon6/device/pwm1=65 MINSTART=hwmon6/device/pwm2=60 hwmon6/device/pwm1=60 MINSTOP=hwmon6/device/pwm2=0 hwmon6/device/pwm1=0
游戏加速时钟
搭配一对 4332 HE / 4386 CPU 和一些 1333-1600MHz RAM,在 KCMA-D8 上进行游戏是完全可行的。然而,有一些事情可以做得更好。例如,4386 的全核最大睿频为 3.1GHz,但在其他 2 个核心 4 个线程不太忙碌时,可以在 2 个核心 4 个线程上睿频到 3.8GHz。由于这些 CPU 拥有足够的线程并且可以消耗相当多的功率,我们可以简单地在启动时禁用一半的核心,从而获得巨大的单线程睿频,同时节省电力。推荐的方法是使用 cpupower-gui-gitAUR。以 root 身份执行 cpupower-gui 来修改 cpupower-gui.service 在启动时应用的默认配置文件。请参阅 cpupower-gui systemd units 以了解更多关于全局和用户配置的信息。
请记住,CPU 间的通信会引入游戏中通常不希望出现的延迟,因此将所有游戏线程限制在 CPU 0 上运行通常是可取的。请参阅 taskset(1) 来设置 CPU 亲和性。
IPMI 模块
此主板支持 ASMB4 IPMI 模块。制造商的 IPMI 模块 ROM 与 coreboot 存在一些不兼容之处,导致重启无法正常工作。存在一个名为 OpenBMC 的 IPMI 模块 ROM 的开源替代品,但编译极其困难,因为代码库很长时间没有更新,并且需要一个过时的 Debian 版本才能编译。dasharo 的开发者似乎对支持 KCMA-D8 感兴趣,因为他们已经为非常相似的 KGPE-D16 维护和更新了 coreboot 和 OpenBMC 的实现,他们只需要社区更多的推动。如果 Dasharo 决定支持 KCMA-D8,这将是巨大的,因为 IPMI 模块有能力在操作系统状态下正确控制风扇速度,从而可以在极不可能发生冻结的情况下挽救硬件免受过热,使 KCMA-D8 成为一个更传奇的 FOSS 主板。然而,他们拒绝回复任何关于此主题的电子邮件,因此可能性不大。
libreboot 的创始人 Leah Rowe 对将 dasharo 移植到 KCMA-D8 表示好奇。这将使 KCMA-D8 上运行一个更现代版本的 coreboot,并且可能也会支持 dasharo 的 OpenBMC。请支持 Leah :)