我的无风扇 OpenBSD 桌面 – joshua stein

2021-07-25 17:52:08

在我的 X1 Nano 失望并得知未来所有英特尔“Evo”品牌笔记本电脑都将缺少 S3 暂停后,我开始考虑全职使用 M1 MacBook 或构建 OpenBSD 桌面。我选择了后者,构建了我的第一台台式机多年来。我简单地考虑过 arm64 CPU 和主板,但是 OpenBSD/arm64 的硬件支持对于我的日常使用来说还不够可靠,而且订购 HoneyComb LX2 的交货时间已经过了好几个星期。我决定使用 amd64 系统,因为 OpenBSD/amd64 平台非常成熟并且我非常了解它。除此之外,我对我的新桌面的唯一要求是:自从阅读了 Fabien Sanglard 关于使用 Streacom DB4 案例构建系统的文章后,我知道我特别想要那个外壳,因为它看起来很漂亮并且可以被动冷却 65W 处理器。在这个案例之后,我选择的下一个组件是显示器。回想起来,这会让其他一切变得更加复杂,但我对我购买的笔记本电脑的屏幕非常挑剔,所以我想确保 mydesktop 显示器是高质量的.我总是选择更小的 (<= 14") 笔记本电脑屏幕,因为我发现太多的水平空间会迷失方向。我更喜欢用虚拟桌面来分离任务,而不是把所有东西都放在一个大屏幕上。我想要一个更小的显示器,我可以离我更近,放在我桌子的下方,像笔记本电脑屏幕一样略微向上倾斜。除了良好的图像再现之外,我还需要一个高分辨率的显示器,可以以 1.5x 或 2x 模式(layout.css.devPixelsPerPx)显示 Firefox。虽然不是绝对要求,但集成扬声器将是显示器上的一个不错的选择,所以我不会不必单独购买并在我的办公桌上为它们找到一个地方。

经过一番研究,我选择了分辨率为 4096x2304 的 LG UltraFine 21.5" IPS LEDmonitor。这个特定版本的 LG UltraFine 不再生产,但较新的 24" 版本更大但分辨率更小(3840x2160),以及较新的 5K模型 (5120x2880) 需要 Thunderbolt。我在 eBay 上找到了一个 21.5 英寸的版本,它在原包装盒中状况良好。由于 LG UltraFine 有 VESA 安装选项,我购买了 Ergotron LX 显示器支架,以便能够将显示器放置在我想要的桌面上。在我拿到显示器后对它进行了一些测试后,我意识到将它与桌面系统一起使用可能会很困难,因为它使用一根 USB-C(非 Thunderbolt)电缆来显示和音频,但它也有一个 3 端口 USB背面的 -C 集线器及其亮度控制和环境光传感器也通过那根 USB-C 电缆连接。这一切都可以像往常一样使用 USB-C 电缆传输数据,但它使用 USB-C 电缆的专用引脚(“Alt 模式”)通过 DisplayPort 发送屏幕数据。这要求它连接的计算机具有 USB-C 端口可以断开这些引脚并将它们路由到 GPU 的 DisplayPort 信号,同时还可以处理 USB-C 连接的数据设备。使用外部 GPU(我那个时代的“显卡”)会很困难,因为即使它有 USB -C 连接器(大多数只有 HDMI 和/或 DisplayPort),它需要以某种方式将数据从该电缆作为 USBdata 路由回计算机,因为 GPU 只与 DisplayPort 通信。直到我已经购买了主板和 CPU 之后,我才完全弄清楚如何做所有这些,但最终我使用 Sunixupd2018 卡(实际上是戴尔品牌的版本)让它工作,它是一个 PCI USB-C 卡带有 DisplayPort 输出端口。将显示器的 USB-C 电缆插入 PCI 卡,然后将 DisplayPort 引出到外部连接器,USB-C 数据作为普通 USB-C 卡通过 PCI 连接路由。然后短DisplayPort 电缆用于连接 PCI 卡和主板/GPU DisplayPort 连接器。 xhci0 at pci1 dev 0 function 0 "ASMedia ASM1042AE xHCI" rev 0x00: msi, xHCI 1.10usb0 at xhci0: USB 修订版 3.0uhub0 at usb0 配置 1 接口 0 "ASMedia xHCI root hub" rev 3.00/1.00 添加显示器亮度和 1.00环境光传感器可通过 USB HID 设备使用,其集成扬声器按预期通过 uaudio 工作:

uhub5 在 uhub0 端口 3 配置 1 接口 0 "LG Electronics Inc. USB2.1 Hub" rev 2.10/52.26 addr 2uhub6 在 uhub5 端口 4 配置 1 接口 0 "LG USA 产品 0x9a48" rev 2.00/88.32 端口 addr1ubhuaudio 配置 2.00/88.32 端口 addr1ubhuaudio 1 个接口 1 "LG Electronics Inc. USB Audio" rev 2.00/0.2f addr 4uaudio0: class v1, high-speed, sync, channels: 2 play, 0 rec, 3 ctlsaudio1 at uaudio0uhub6: 设备问题,在 uhub6 端口禁用端口 2uhidev0 4 configuration 1 interface 0 "LG Electronics Inc. USB Controls" rev 2.00/3.04 addr 5uhidev0: iclass 3/0uhid0 at uhidev0: input=64, output=64, feature=8uhidev1 at uhub6 port 4 configuration 1 interface 1 "LG Electronics Inc . USB Controls" rev 2.00/3.04 addr 5uhidev1: iclass 3/0uhid1 at uhidev1: input=4, output=0, feature=6uhidev2 at uhub6 port 4 configuration 1 interface 2 "LG Electronics Inc. USB Controls" rev 2.00/3.04 addr 5uhidev2: iclass 3/0uhid2 at uhidev2: input=6, output=0, feature=13 我仍然不确定为什么端口 2 在 t 上被禁用他监视器的内部集线器(不是它背面的 3 端口集线器),但它似乎没有影响任何东西。我已经对 Streacom DB4 无风扇机箱深信不疑了,尽管在选择黑色之前我在黑色和钛金属颜色之间犹豫了一下。这个机箱可以为 65W 处理器散发足够的热量,尽管 Streacom 提供了一个单独的热管附加组件最高可支持 110W。我购买了 Streacom ST-ZF240 ZeroFlex 240WPSU,因为它也是无风扇的。我之前使用过 nanoPSU,但听到它的线圈呜呜声,所以我不想再走那条路了。在 DB4 到货之前,我一直不太明白 DB4 机箱有多大和有多大重量。完全组装好所有东西,重量超过 20 磅,占地面积为 10”x10”x11”。外壳的主要部分由两个大脚支撑离表面 2 英寸,在主板和我的桌子之间只剩下 2 英寸。这使得插入某些电缆(如带有大连接器的 DisplayPort 电缆)有点困难,但是我的办公桌的角落里有一个垫圈,用于放置外壳,因此大部分电缆可以直接穿过办公桌。由于最近对Intel的产品很不满意,我决定用AMD处理器。我以前从未用过,所以我对阵容不是很熟悉,但我想要一个集成显卡以避免购买外置GPU因为我没有 DisplayPort/USB-C 卡的空间,而且因为大多数外部 GPU 会发出大量热量和/或有风扇。我还需要一个 TDP 为 65W 或更低的处理器以保持在 Streacomcase 的限制之下。

我决定使用集成了 Radeon 显卡的 AMD Ryzen 7 Pro 4750G 4Ghz 8 核处理器。从技术上讲,这款 CPU 不应该出售给最终用户,但它可以在亚马逊上买到,这对我来说已经足够了。 cpu0: AMD Ryzen 7 PRO 4750G with Radeon Graphics, 4000.51 MHz, 17-60-01cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV, PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND, NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC, FSGSBASE、BMI1、AVX2、SMEP、BMI2、PQM、RDSSEED、ADX、SMAP、CLFLUSHOPT、CLWB、SHA、UMIP、IBPB、IBRS、STIBP、SSBD、XSAVEOPT、XSAVEC、XGETBV1、XSAVEScpu0:32KB 64b/line 8-way -cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cachecpu0: ITLB 64 4KB 条目完全关联, 64 4MB 条目完全关联cpu0: DTLB 64 4KB 条目完全关联, 64 4MB 条目...] cpu15 at mainbus0: apid 15 (应用处理器) cpu15: AMD Ryzen 7 PRO 4750G with Radeon Graphics, 4000.01 MHz, 17-60-01[...] 一旦我选择了 CPU,我就找了一个主板。我已经出定制了PC 游戏多年,但我对每个非服务器主板似乎都针对拥有各种愚蠢的闪烁 LED 和激进品牌的游戏玩家感到失望。除了支持 AM4 插槽的 Ryzen 4750G,我对主板的要求只是它具有英特尔千兆以太网(以获得最佳的 OpenBSD 支持),至少一个用于 NVMe 驱动器的 M.2 插槽,并且同时具有 HDMI(仅装箱)和 DisplayPort 端口。最终我选择了华硕 ROG Strix X570-I。通过将“AURA”设置为“Stealth Mode”,可以在 BIOS/固件菜单中禁用愚蠢的 RGB LED,然后拔掉 I/O 板上的两个 1” 风扇保持一切安静。我还必须将“监视器”部分中的“CPU风扇速度”设置为“忽略”,否则它会在每次启动时表示风扇错误,因为我没有插入。虽然我不打算使用它们,它的板载 WiFi 和声音在 OpenBSD 中运行良好: iwx0 at pci4 dev 0 function 0 "Intel Wi-Fi 6 AX200" rev 0x1a, msix[...]azalia1 at pci10 dev 0 function 6 "AMD 17h/1xh HD Audio " rev 0x00: apic 18 int 12azalia1: codecs: Realtek ALC1220audio0 at azalia1 我在单个 DIMM 中购买了 Crucial 16Gb DDR4 3200Mhz RAM,以防我以后想升级到 32Gb。再次,所有 RGB 顶部照明和 over-the-sthe 有什么用在“玩家”RAM 芯片上?

我安装了我已经拥有的三星 980 Pro 1Tb NVMe SSD。华硕主板有两个 m.2 插槽;一个在大型散热器下方的顶部,一个在主板的底部。我不太喜欢机械键盘(除了我的 Dolch PAC 64 上的那个),但是在看了 LGR 的关于 Glorious GMMKPro75% 键盘的视频后,我决定用那个键盘作为我的桌面。我喜欢它非常坚固和小巧,但仍然包括箭头键和一个旋转旋钮。我也同意 LGR 的观点,即 Glorious 品牌是愚蠢的和过头的,但幸运的是它只是在键盘的底部,所以我只需要在将它从键盘中取出时看到它盒子。我选择了黑色外壳、铝制开关板、润滑 (lol) Glorious Pandaswitches 和我多年前已经拥有的“Dolch”DSA 键帽套装。开关具有良好的触感,但不会太大声。此外,正如 Clint 在他的视频中指出的那样,空格键偶尔会卡住。我不确定这是否会随着时间的推移而自行修复。键盘的按键和照明的配置必须使用仅限 Windows 的软件完成,所以我启动到我的 Windows-on-a-USB 记忆棒并安装它。与主板一样,我禁用了所有 RGB 照明键盘。在像 mylaptops 这样的按键上有一个微妙的白色背光会很好,但是 GMMK Pro 的白色 RGB 灯在低亮度下看起来是蓝色的。我重新配置了键盘映射,在 Caps Lock 通常所在的位置放置了一个永久的控制键(如我会用 xmodmap 做其他事情)并将删除放在右上角,尽管我很少需要它。我可能需要得到一个腕托,因为我的手腕在几天后由于按键的高度而受伤。我习惯于在笔记本电脑键盘上打字,它离我的桌子表面只有几毫米,所以我的手腕通常处于更平坦的角度。出于这个原因,我也一直在使用 ThinkPad Compact USB 键盘,感觉就像一个 ThinkPad。我对这个键盘唯一的抱怨是塑料外壳有时会吱吱作响。如果有人可以用铝制复制外壳,我会付给你很多美元。至于我的鼠标,我不是游戏玩家,所以我不需要有 35 个按钮的东西。我多年来一直在笔记本电脑上使用联想 N50 无线鼠标,我非常喜欢它的设计,但它的鼠标点击和特别它的滚轮咔嗒声非常响亮。我最近切换到罗技 M355,因为它几乎无声。它使用我插入显示器背面的无线 USB 加密狗。

uhidev2 at uhub5 port 2 configuration 1 interface 0 "Logitech USB Receiver" rev 2.00/30.00 addr 4uhidev2: iclass 3/1ums1 at uhidev2: 16 个按钮,Z 和 W dirwsmouse1 at ums1 mux 0uhidev1 端口配置“Logitech USB Receiver” Receiver" rev 2.00/30.00 addr 4uhidev3: iclass 3/0, 17 report idsuhid5 at uhidev3 reportid 3: input=4, output=0, feature=0uhidpp0 at uhidev3 reportid 16 device 1 mouse "M355" serial e6-4f-5 05 我的鼠标垫是一块非常薄的布/橡胶,我不记得我从哪里弄到的,但我喜欢它,因为它很安静,上面没有标志。当然,如果我不能在其上运行 OpenBSD,我的系统将无法使用。当我第一次在系统上启动 OpenBSD 时,一旦 amdgpu KMS 驱动程序从 efifb 接管,系统就会挂起(即使连接了较低分辨率的 HDMImonitor)。 玩了随机 BIOS 选项后,我发现需要启用 BIOS 的 CSM某种原因。即使系统仍然通过 EFI 引导而不是通过 CSM 进行传统引导,启用 CSM 会做一些尚未理解的事情,使视频能够正常工作。这将使系统启动,但是一旦 amdgpu 接管,LG UltraFine 显示器将变为空白(尽管背光仍然打开)。我通过 SSH 进入并执行了 xinit,然后能够将分辨率从 4096x2304@60Hz 更改到 4096x2304@48Hz。我不确定这是否是 GPU、DisplayPort、电缆或某些软件问题之间的带宽问题。为了解决这个问题,我添加了一个 quirkto 更喜欢显示器 EDID 中的 4096x2304@48Hz 速率.由于 LG UltraFine 暴露了一个 USB HID 设备来控制它的亮度,我写了一个驱动程序附加到它并通过 wsconsctldisplay.brightness 暴露亮度调整。 $ dmesg | grep ulgufulguf0 在 uhub6 端口 4 配置 1 接口 0 "LG Electronics Inc. USB Controls" rev 2.00/3.04 addr 7$ wsconsctl display.brightnessdisplay.brightness=50.00%$ wsconsctl display.brightness=20display.brightness->%20

我仍然需要添加对读取环境光传感器并通过 sysctl hw.sensors 进行曝光的支持,然后我可以将其与 xdimmer 之类的东西一起使用,以便在夜间自动使屏幕变暗。为了默认通过显示器的扬声器路由声音,我默认使用 rsnd/1,它通过 uaudio0 映射到 audio1。 $ dmesg | grep uaudiouaudio0 at uhub6 端口 1 配置 1 接口 1 "LG Electronics Inc. USB Audio" rev 2.00/0.2f addr 6uaudio0: class v1, high-speed, sync, channels: 2 play, 0 rec, 3 ctlsaudio1 at uaudio0$ grep sndiod_flags /etc/rc.conf.localsndiod_flags=-f rsnd/1 既然有人问了,我上面照片中显示的窗口管理器是我的sdorfehs,它是ratpoison的一个分支。通过系统的 make -j8 构建最大化所有内核,CPU 温度最高约为 90 °C,外壳达到约 45 °C(113 °F)。当然,最热点是热管连接的地方到案例墙: