ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OpenRIG模块化算力机架:旧显卡与ATX电源的再生搭建指南

OpenRIG模块化算力机架:旧显卡与ATX电源的再生搭建指南 去年底我在工作室里清理杂物又翻出三块旧显卡旁边还躺着两块“当年脑子一热买回来就一直吃灰”的ATX电源。这场景对玩硬件的人来说太熟了每个零件单看都能用凑成整机却总是差这差那。后来我花了两周时间把手头这些散件和陆续到货的新零件整理成了一个开源项目代号就叫 openrig——Open 的 Rig一套开放的模块化算力机架。它不是一台传统意义上的主机而是把一台台独立主机拆散之后重新组织成一套可统一供电、统一散热、统一远程管理的算力平台。文章里我会把从机架尺寸、供电计算、风道设计、监控部署到翻车记录全部写出来适合手里有闲置硬件、想低成本搭一套多卡算力平台的人参考。也提前说一句这套方案不挑具体用途跑渲染农场、AI 推理、科学计算甚至有人拿它做数字货币算力任务物理层逻辑完全一样。1. OpenRIG是什么从一台吃灰主机说起的模块化算力机架1.1 “rig”这个词在硬件圈里到底指什么英文硬件论坛里rig 通常指“为了特定任务专门组装的整机”。游戏玩家说 gaming rig那就是一台打游戏用的高配电脑矿工说 mining rig那就是一台专门跑算力的机器。OpenRIG 这个名字其实就是把“开放Open”和“整机Rig”叠在一起强调两件事一是整个机架的结构、电源方案、监控脚本全部开源任何人可以照着图纸复刻二是硬件选型不锁定品牌ATX 主板、ITX 主板、各种显卡都能往上塞。实话说最初我想过直接买成品服务器机箱或者整套算力主机。但问了一圈价格、又认真想了想使用场景之后还是决定自己攒。成品方案有很多让人不舒服的地方服务器机箱又大又重风扇噪音感人扩展位固定换个零件还要考虑品牌兼容性整机算力主机更不用说了价格里一半是品牌溢价。OpenRIG 的思路刚好反过来——不做封闭整机只做一套开放骨架硬件你自己挑螺丝你自己拧遇到问题你自己能修。1.2 OpenRIG要解决的三个痛点我为什么非要折腾这么一套东西是因为在使用散装主机的时候被三个实实在在的问题反复折磨。第一个痛点单机的计算卡扩展能力实在太有限。普通 ATX 主板的 PCIe 插槽看着不少真到接 GPU 的时候就会发现两张显卡可以三张显卡开始挤四张以上基本不现实。供电、散热、机箱体积全都卡在那里。如果因为算力需求增长就要换服务器主板预算瞬间就上去了而且服务器主板对内存、CPU 都有另外一套要求手里现有的硬件大概率浪费。第二个痛点管理碎片化。好几台主机各自独立每台都要单独接电源、单独开机、单独看温度、单独更新驱动。一两次还行时间长了真的会烦。最尴尬的是某台机器半夜死机你得跑到机器面前按复位键。OpenRIG 把这些问题变成了一道统一管理的题所有节点共享一路供电规划、共用一条监控链路、通过一个控制面板集中开关机。第三个痛点散热和噪音各搞各的。单台主机塞进普通机箱风道基本靠运气显卡多了就是“闷罐”。几台机器摆在同一个房间里散热互相干扰热空气在机器之间打转。OpenRIG 用开放式机架加统一风道设计把进风、排风的方向固定下来每台节点的热空气各走各的不会互相“加热”。打个比方这就像家里有四台电暖器各自开各自的、各自控温、各自摆位置效果却不稳定OpenRIG 做的事情是装一套中央水暖管线共用、热量统一调度、阀门集中控制——耗能可能差不多但体验完全不是一个层级。1.3 这套方案适合谁不适合谁先说适合谁。你手里恰好有旧的 ATX 主板、旧电源、旧内存想把这些散件重新利用起来你想低成本搭一台可以塞 4 张以上显卡的算力机器你愿意花周末时间拧螺丝、刷系统、看温度曲线享受“自己动手把一堆零件变成一台机器”的那种成就感。以上情况只要中一条OpenRIG 就很适合你。不适合谁我也实话实说。不想碰任何电路改造、希望开箱即用的人建议直接去买商业整机。对噪音零容忍、要求跟笔记本一样安静的人开放式机架大概率会让你失望它再怎么优化也比不上一台静音塔式主机。还有如果你连“ATX 电源 24 针接口哪条是 PS-ON”都不想了解那这套东西对你来说门槛偏高。OpenRIG 的设计哲学从一开始就不是“尽量不要动手”而是“每一步都让你看得懂、改得动”。下面我从机械骨架开始把整个过程拆开讲清楚。2. 机架与节点硬件先把物理骨架搭扎实2.1 为什么用铝型材搭建开放式机架先解释一个可能被忽略的问题为什么不用标准机柜很多人的第一反应是服务器机柜不是更整齐吗确实整齐但机柜的缺点也很明显价格不便宜重量动辄几十公斤搬进家里费劲更关键的是机柜的散热逻辑是前后风道对普通 ATX 主板和竖装显卡并不友好你得加一堆转接支架。开放式机架就不一样了。它本质上是一张金属框架四面通风显卡竖着排成一排空气可以直接从侧面吹过每张卡的散热鳍片。当年矿工们喜欢用这种架子不是因为好看而是因为它对散热确实有效。我在设计 OpenRIG 的时候选了 4040 铝型材作为主材也就是截面 40mm×40mm 的工业铝型材配合角件和 T 型螺母组装。不需要焊接不需要电钻一把内六角扳手就能搭起来拆了重装也很方便。具体尺寸方面我搭的这个版本是三层结构每层放两个算力节点总共六个节点位。整架尺寸大约宽 580mm、深 600mm、高 950mm。每层高度留了 300mm这个数字不是随手定的一张标准 ATX 显卡竖装之后加上 PCIe 延长线的弯折空间大约需要 250mm 到 280mm留出 300mm 方便插拔和理线。深度 600mm 是为了兼容 300mm 以上的长显卡后面还要留出供电线和信号线的走线空间。2.2 节点槽位规划与兼容性设计每个节点托盘就是一层独立的“抽屉”我把一张 ATX 主板水平放在托盘上CPU 散热器朝上PCIe 插槽方向对着机架正面。显卡不直接插在主板上而是通过 PCIe 延长线转接到侧面竖直安装在显卡支架上。这样做的效果是一块普通 ATX 主板原本最多插两张卡还要忍受挤在一起的高温现在通过延长线可以轻松带 2 到 4 张卡卡的散热空间也宽敞了。一个节点可以理解为一台“准系统”主板、CPU、内存、系统盘再加上若干张计算卡。下面是我这套节点的参考配置表预算紧张的话全部可以用二手件替代部件参考型号数量备注主板B450/B660 等 ATX 大板1至少 4 条 PCIe x16 槽B660 更好买CPU8 核、TDP 65W 级别的中低端 CPU1算力主力在显卡CPU 够用即可内存DDR4 16GB1~2单节点跑渲染/推理够用系统盘NVMe 256GB1装系统和任务程序计算卡双卡或四卡2~4下面会详细讲延长线安排电源集中供电方案整架共用见第 3 章这个设计最大的好处是兼容性好。主板品牌无所谓A 家、I 家平台都能上显卡长度从 240mm 到 340mm 都能放将来如果想把节点升级成更大功率的配置只需要换托盘上的硬件机架本身不用动。托盘我用的是 2mm 冷轧钢板找人按图纸激光切割再在四角打孔和铝型材连接。没有条件激光切割的话用一块结实的木板甚至亚克力板也行只要能承住主板和显卡的重量。2.3 PCIe延长线与显卡竖装的细节PCIe 延长线是整套方案里最容易被低估的配件。很多人随便买一根便宜的延长线结果显卡掉驱动、算力波动、甚至开机不认卡问题排查半天才发现是延长线的锅。我的建议是不要在这上面省钱直接买带屏蔽层的 PCIe x16 延长线长度选 30cm 到 45cm 就够了。太长信号衰减明显太短又没办法把显卡从主板位置转出去。竖装显卡还有一个物理细节显卡尾部很重如果只靠 PCIe 延长线的插槽承受力量时间长了会松动。我在每个显卡支架的尾部加了一个 L 型铝合金条用螺丝把显卡的挡板尾部固定住这样显卡不会下垂延长线接口的压力也小很多。这里埋个伏笔我后来遇到过一次偶发掉卡问题根源就跟延长线和显卡固定方式有关这个在第 7 章的翻车记录里详细展开。3. 供电系统功率预算、电源选型与接线安全3.1 整机功率怎么算才靠谱供电是整个 OpenRIG 里最不能糊弄的环节也是我最想强调安全的部分。功率算错了轻则跑不满性能重则跳闸、烧线、甚至引发事故。先给一套我实际用的估算方法。单节点功率 CPU 实际功耗 计算卡功耗 主板内存风扇等杂项功耗。CPU 不要看 TDP要看实际负载功耗一般按 TDP 的 0.7 到 1.0 倍估计算卡直接查卡的典型功耗比如一张 200W 的卡按 220W 算留点余量杂项按 30W 到 50W 算。假如一个节点是 65W CPU 加两张 200W 显卡65 × 0.9 2 × 220 40 538W 左右。六个节点就是 538 × 6 ≈ 3228W再乘一个 1.3 的安全系数整机预算建议按 4200W 来准备。这里有一个很多人容易忽视的点电源标称的额定功率不等于 12V 输出能力。买电源或者电源模块的时候要看铭牌上的“12V 输出电流”或者“12V 输出功率”。比如一颗额定 850W 的 ATX 电源12V 输出可能只有 780W你就不能指望它稳定带 850W 的满载负载。我建议 12V 输出能力至少比实际功耗预算多 20% 以上。3.2 消费级ATX电源与服务器电源怎么选OpenRIG 的电源方案在小规模和大规模情况下应该选不同路线。我把两种方案的实际体验列个表对比项消费级 ATX 电源服务器电源12V 直流模块单颗功率一般 500W~1600W常见 750W~2400W成本中等二手大量二手性价比高功率密度大噪音通常安静原装风扇噪音很大需要改造接线难度直接模组线简单需要分线板接线要自己做适合场景1~3 个节点的小型 OpenRIG4 个节点以上的集中供电我的建议很明确节点数量一多就别用一颗颗 ATX 电源堆了。一方面几个电源同时挂在机架上理线噩梦另一方面多个独立电源的开关时序不一致容易出现部分节点已经启动、另一部分还在待机的混乱状态。我最终用的是两台服务器电源模块并联每台 2000W 级别的 12V 输出通过分线板把 12V 和 GND 引到各节点托盘。这里强调一下服务器电源并联不是简单的“两个电源输出接在一起”必须确保两台电源都支持并联均流或者干脆让每个电源单独带三个节点配电上物理隔离更安全省心。3.3 分线板接线、线规与接地集中供电之后接线就是头等大事。12V 大电流走线线规选错了就是发热隐患。基本规则10AWG 铜线长期承载 30A 左右没压力6AWG 可以到 50A 以上。我的节点托盘和电源分线板之间用了 10AWG 硅胶线单路额定留了 20A 以上的余量。每根线的接口我用冷压端子压好之后再插到分线板的螺丝端子上。这里有一个很多新手会忽略的细节冷压端子一定要用压线钳压到位压完之后用力拽一下拽不掉才算合格。松动的端子在大电流下发热非常快。接线的时候强烈建议把所有节点电源线的 12V 和 GND 都汇到统一的端子排上每一路都串一个保险丝或者小型断路器这样万一某个节点短路只跳那一路不会整架停电。这是我把成本和复杂程度加一点换整机安全性的大头。安全部分再啰嗦一句整套供电一定要接保护地线并且前端要装漏电保护开关。我见过有人从服务器电源模块上真的没接地机架摸上去麻手这是非常危险的事。服务器电源的外壳和 DC 输出的 GND 并不一定隔离如果内部电路异常整个机架都可能带电。务必把电源金属外壳、分线板接地汇流排都可靠接到保护地。4. 散热与风道高密度算力节点的温度控制实战4.1 开放式机架的散热优势与热回流隐患开放式机架确实解决了传统机箱“闷罐”的问题但它不是自动就凉快的。真正的隐患是热回流如果机架周围没有规划好进风和排风方向排出去的热空气会被旁边的机架或者墙壁挡回来被进风风扇重新吸进去温度不降反升。我设计的这个三层机架进风方向统一在机架正面显卡正面朝向的那一侧排风方向统一在背面。每个节点在显卡侧装了进风风扇在机架背板上装排风风扇让空气路径保持“正面进 → 穿过显卡鳍片 → 背面出”的单向流动。机架左右两侧我用了亚克力板做侧封只留背面上方开口出风等于把整个机架变成了一个定向风道。侧面不封的话冷风会从侧面溜走显卡区反而进风不足。4.2 风扇选型与PWM控制风扇选择上别买那种指示灯很花哨、风量吹着玩的机箱风扇。算力机架需要的是高静压风扇120mm 或 140mm 规格都可以转速 2000RPM 以上轴承选 FDB液态轴承的寿命长而且噪音比滚珠轴承低。我每个节点装了两个 12025 风扇一个进风一个排风整架下来十几个风扇噪音大概在 55dB(A) 左右放在独立房间没问题放客厅就比较吵了。风扇控制我用的是主板 CPU_FAN 接口加 PWM 分线器配合 lm-sensors 读取温度再用脚本控制转速。这个脚本比较粗但逻辑清晰每 20 秒读一次所有传感器取最高温度根据温度区间设定 PWM 占空比。放个简易版本#!/bin/bash # OpenRIG 简易风扇控制按最高温度调速 while true; do temp$(sensors | grep -E Package|edge | awk {print $20} | sort -nr | head -1) if [ -z $temp ]; then sleep 10 continue fi if (( $(echo $temp 75 | bc -l) )); then echo 255 /sys/class/hwmon/hwmon0/pwm1 elif (( $(echo $temp 60 | bc -l) )); then echo 180 /sys/class/hwmon/hwmon0/pwm1 else echo 120 /sys/class/hwmon/hwmon0/pwm1 fi sleep 20 done注意 /sys/class/hwmon 的路径每台机器不一样先用sensors命令找到正确的 hwmon 目录再绑定。脚本只是思路示范实际我建议把温度采集放到监控服务里做跟 Prometheus 那套打通后面第 5 章会讲。4.3 实测温度数据直接给一组我在室温 26℃ 环境下的实测数据。六个节点满载运行每节点双卡负载类型是连续渲染和 AI 推理交替测量项数值备注GPU 核心温度62℃~72℃显卡型号不同有差异均未超过 75℃显存温度78℃~92℃这个才是最大瓶颈显存散热好的型号优势明显CPU 温度55℃~68℃中低端 CPU 压力不大机架出风口温度41℃~45℃排风顺畅无明显热回流环境噪音52dB(A)~57dB(A)离机架 1 米测量晚上还是听得见这里反复提到的显存温度是在算力负载下最值得盯的指标。很多显卡核心温度不高但显存已经逼近 100℃长时间跑会加速老化甚至花屏。选卡的时候优先选显存散热有独立热管或者背板辅助散热的型号别只看核心散热规模。5. 控制与监控层让六台机器像一台机器一样被管理5.1 控制中枢与整体架构OpenRIG 的灵魂不在那堆硬件而在控制层。我的方案里加了一个树莓派 4 作为控制中枢它不跑算力任务只做三件事通过网络给六个节点下发开关机指令、定时采集各节点温度状态、在异常时告警。算力节点和树莓派之间走千兆局域网树莓派通过 SSH 执行远程命令。这套架构的好处是控制面和数据面分离就算某个节点系统崩溃树莓派依然能控制它的电源。5.2 批量开关机的两种实现方式节点开机有两种做法。第一种通过继电器控制 ATX 电源的 PS-ON 信号线。ATX 电源的第 16 针 PS-ON 接地就开机悬空就关机所以用一个继电器模块把 PS-ON 和 GND 分别引到继电器的两个触点树莓派 GPIO 给高电平就吸合实现远程开机。这种方法需要每个节点都有一个独立的继电器通道一台 8 路继电器模块正好管六个节点。第二种更省事就是主板自带 Wake-on-LANWoL功能。在 BIOS 里打开 WOL节点关机后网卡依然保持待机供电树莓派发一个魔术包就能唤醒。这种方式不需要额外接线但从彻底断电的状态无法唤醒。我的建议是两者结合日常远程开关机用 WoL碰到节点死机需要硬断电时再让树莓派控制继电器切断 AC 输入。批量关机我写了一个简单的 Python 脚本顺序很重要先 SSH 到节点执行systemctl poweroff等它完全关闭之后再通过继电器切断该节点电源。直接断交流电容易损坏文件系统血的教训。#!/usr/bin/env python3 # OpenRIG 批量关机示例优雅关闭后断电 import subprocess, time nodes [rig-node1, rig-node2, rig-node3, rig-node4, rig-node5, rig-node6] for node in nodes: subprocess.run([ssh, node, systemctl, poweroff], timeout20) time.sleep(5) # 等待系统关闭 # 适当延时后统一断开继电器继电器通道对应节点 time.sleep(10) subprocess.run([python3, /opt/openrig/relay_off.py])5.3 监控面板与温度告警监控这块我踩过不少弯路最后留下来的方案是每个节点装一个 node_exporter树莓派上跑 Prometheus 收数据再用轻量的 Grafana 画看板。这套组合在服务器监控圈是标配配起来不算复杂。如果你不想折腾直接用 Netdata 会更省事——安装完就自带网页界面温度、负载、网络一目了然对六个节点的规模绰绰有余。告警规则值得多写一句。我设了三条GPU 核心温度超过 80℃ 持续 5 分钟就告警显存温度超过 95℃ 持续 3 分钟立即告警节点 SSH 失联超过 2 分钟告警。告警通知通过 Webhook 推到手机这样半夜机器出问题我能第一时间知道不至于第二天起来才发现跑了半宿的渲染任务已经断了。6. 系统部署与首次上电从刷好系统到算力自动上线6.1 操作系统、驱动与systemd自动化算力节点的系统我用 Ubuntu Server LTS理由只有一个驱动兼容性好踩坑资料多。系统装好之后第一件事是开启 SSH并把树莓派的公钥放进 authorized_keys这样控制中枢才能远程管理。显卡驱动安装这点单独说。开源社区驱动比如 AMD 的 ROCm、NVIDIA 的开源驱动在计算任务上表现已经不错但如果追求稳定省心NVIDIA 卡建议直接用官方闭源驱动。Ubuntu 下可以一条命令自动装sudo ubuntu-drivers autoinstall装完重启用nvidia-smi验证驱动和 CUDA 版本是否正常。任务自动拉起我用的是 systemd 服务这是 Linux 上最正统的守护方式。以渲染任务为例写一个简单的 service 文件放到 /etc/systemd/system/worker.service然后 enable 开机自启[Unit] DescriptionOpenRIG Compute Worker Afternetwork-online.target [Service] Typesimple ExecStart/opt/openrig/worker.sh Restartalways RestartSec30 [Install] WantedBymulti-user.targetRestartalways是核心进程异常退出后 30 秒自动拉起配合前面的监控告警基本能做到无人值守。6.2 BIOS里的三处关键设置系统能跑起来之后有几处 BIOS 设置必须改。第一开启 Above 4G Decoding。这个选项不开启的话很多主板只允许系统访问 4GB 以内的 PCIe 地址空间插两张以上显卡时后端的卡会无法识别或报错。现在新一点的 BIOS 里还有 Resizable BAR / Smart Access Memory 选项建议一并开启对部分计算任务有微小性能提升。第二AC Power Loss 设为 Power On。这个选项决定了意外断电后恢复供电时节点的行为是保持关机还是自动开机。对远程管理的机架来说必须设为 Power On否则一次停电之后六个节点全部“沉睡”你还得逐台手动开机。第三把 PCIe 链路速度固定到 Gen3。很多人会好奇为什么不是越高越好。实际上主板、延长线、显卡三方在 Gen4 下需要严格的信号完整性便宜的延长线在 Gen4 下很容易出现偶发性掉卡。与其在 Gen4 的稳定性上折腾不如直接锁 Gen3性能损失很小稳定收益很大。6.3 首次上电的检查清单第一次给整个机架上电千万别六台节点同时开。我的流程是先单节点、后逐节点、再满载每一步都看一眼状态再继续拔掉所有计算卡的供电线先只给一块主板通电确认主板自检、CPU 风扇转动正常。插入一张显卡开进系统用nvidia-smi确认能识别跑 15 分钟轻负载看温度。第二张卡插上再跑 15 分钟观察两张卡的温度差是否正常排查延长线接触问题。单节点满载烤机 30 分钟确认散热和供电稳定然后关机。按同样步骤点亮第二个节点直到所有节点逐个上线。所有节点同时满载观察总电流和机架出风温度确认没有异常后才算整套系统验收通过。这套流程看着慢其实花不了多少时间但能帮你把“哪块硬件有问题”隔离到最小范围。别嫌麻烦直接全功率一把梭出了问题反而更难排查。7. 实测数据与翻车记录这些坑我替你们踩过了7.1 实际配置与实测成绩我最后定型的这套 OpenRIG 是 6 节点 12 卡整机满载功耗约 3.2kW体积半个冰箱大小实际连续运行了两个多月。整体浮点算力比我之前两台普通主机加起来高了一个数量级同样一批渲染任务从原来按天算缩短到按小时算。话说回来跑渲染任务的时候效率提升明显做 AI 推理训练这类任务因为每张卡独立作业吞吐量也是线性扩展效果符合预期。7.2 四个典型翻车现场与排查全过程翻车现场一PCIe 延长线导致的偶发掉卡。现象很恶心系统跑着跑着某张卡突然消失nvidia-smi只剩一半设备。一开始我以为显卡有问题换了卡还是偶发。后来静下心分析发现掉卡总是发生在特定延长线的通道上而且掉卡瞬间系统日志里有 NVRM Xid 报错。排查过程是换一根带屏蔽的 45cm 延长线再给显卡尾部加固定支架然后进 BIOS 把 PCIe 链路锁到 Gen3。三个动作做完问题彻底消失。根因就是延长线信号质量问题加上显卡轻微下垂导致接触不良。翻车现场二服务器电源原装风扇噪音起飞。服务器电源原装风扇追求的是风量转速经常飙到 8000RPM 以上那个声音在机房里不觉得放家里跟飞机起飞一样。解决方法是拆开电源外壳把原装风扇换成 4010 或 4020 的 PWM 风扇转速控制在 4000RPM 左右。要注意换风扇的时候别碰电源内部其他元件拆机之前一定先断电并等待电容放电。如果动手能力一般更省心的方案是直接买已经改装好的“静音版”服务器电源。翻车现场三六个节点同时上电空气开关直接跳闸。第一次整体开机的时候六个节点一起按下电源家里空气开关“啪”一声跳了。原因很简单每台节点开机瞬间的冲击电流远大于稳态功耗六台同时冲击叠加起来瞬时功率超过家用单路 16A 的承载能力。解决办法是软启动树莓派通过继电器逐个节点开机每间隔 5 到 10 秒启动一个把瞬时冲击错开。从那以后我把批量开机命令放到了监控面板上一键顺序启动。翻车现场四热风回流导致后排节点温度偏高。最开始机架没加侧板六个节点满载跑了半小时发现靠近墙壁的两个节点温度明显高于其他节点。伸手到机架背面一试排出来的热风又被墙壁挡了回来从侧面直接绕回进风面。最后在机架左右两侧加了亚克力侧封板把进风、排风方向强制分开问题立刻解决。这个案例说明开放式机架不等于没有风道设计开放性只是给你规划风道的自由不是免了规划这件事。7.3 给刚入坑的人三句话如果你看完这篇文章也想搞一台自己的 OpenRIG我有三句实在话放在最后。第一先小后大。不要一上来就买齐六个节点拿一台旧主板加一张旧显卡先把完整链路跑通确认自己能搞定供电、散热、远程控制再逐步扩展。第二安全永远比算力重要。电源线选粗、端子压牢、地线接好、漏保配齐这几样东西在整机成本里占比很小却能在关键时刻保命。第三学会记录。每台节点的 IP、MAC、用途、硬件配置直接打印标签贴到机架面板上。我知道我这么说像是老干部作风但等你真的在几十台设备里找一台机器的时候就会感谢当初手贱贴的标签。最后补一点个人体会。OpenRIG 这套东西做到现在我最看重的已经不是它跑出的算力数字了而是完整走了一遍“从零散硬件到可管理基础设施”的流程机械规划、供电计算、风道设计、系统部署、自动化运维。这套方法论一点也不挑硬件以后无论你换什么机器、跑什么任务思维路径完全一致。如果你的出发点也是“把手里的旧零件变成一套真正能干活的东西”那就动手吧踩着上面这些坑跳过去并不难。
返回列表