先说一个我亲历的场景。去年我接手一批用于训练的双卡工作站性能到位了可一到半夜不是这台死机就是那台失联。机架服务器都有BMC/IPMI那套带外管理系统崩溃了还能远程重启而工作站的板子上根本没有这东西一死机就是断网断电只能找人去机房按电源键。后来我在开源社区翻到openrig这个项目用一块树莓派CM4把电源控制、传感器采集、远程串口管理全接了回来等于给“没有BMC的主板”外挂了一套管理大脑。这篇文章我就按自己落地时的顺序讲为什么工作站会缺BMC、OpenRIG的硬件方案怎么设计、部署时每一步怎么走以及和企业监控体系对接的实操记录最后是几个我到现在还在避的雷。1. 工作站没有带外管理运维的崩溃是从“失联”开始的1.1 服务器有BMC而工作站没有这个差异比你想的大先厘清一个基础概念。服务器主板上那颗BMC芯片本质上是一套独立于CPU的小系统有自己的网络接口、管理固件和传感器总线。哪怕操作系统彻底死机、CPU功耗拉到0BMC依然在运行依然能接受到机房的网络请求帮你执行“强制重启”、“查看POST日志”这些操作。这种能力在服务器领域叫带外管理意思是管理流量不依赖业务网络、不依赖操作系统完全绕过主系统。而多数GPU工作站、算力盒子在设计时的定位是“近端算力”而不是“远程可管理单元”。它们的BIOS里有开机自检但出厂不带独立的BMC芯片也没有IPMI固件。这带来三个直接后果系统宕机后你只有两个选择打电话求人按电源键或者放弃今晚的恢复计划。无法远程查看硬件传感器的历史曲线。散热风扇狂转、GPU热点温度异常这些早期故障信号工作站全部“失聪”。做容量和能耗管理时没有数据支撑。数据中心里那些机架服务器的功耗和温度都能汇总到一个平台唯独这些工作站是信息孤岛。可能有人会说现在的AI工作站不是都有IPMI吗确实有一部分高端主板简化实现了类似功能但协议兼容性参差不齐很多厂家只提供自家私有App做局域网控制一旦离开同一网段就歇菜。OpenRIG这类开源方案的价值就在于把“带外管理”的能力标准化用一个通用协议把硬件监控、电源控制、串口访问全部接起来。1.2 OpenRIG的定位一张CM4把带外管理补回来简单说OpenRIG是一个开源硬件加软件项目它把树莓派Compute Module 4改造进服务器机箱通过PCIe和I2C通道与宿主主板通信对外提供Web管理界面、Redfish API以及IPMI兼容接口。它的思路和服务器BMC一致独立供电、独立网络、独立固件宿主机器坏了不影响它它坏了也不影响宿主正常运行。我记得第一次看到这个项目时的第一反应是“这不就是把一个树莓派塞进服务器吗”但深入了解后发现设计者真正解决的是“如何使用CM4已有的IO能力安全接管一台机器的电源和传感器”。CM4本身有千兆网口、USB、PCIe Gen2 x1还有一个灵活的GPIO接口软件层面可以刷标准Linux发行版。这意味着相比专用BMC芯片OpenRIG的软件栈几乎是完全开放的你可以用标准工具链去扩展、去调试而不是面对一个黑盒固件。从运维角度看它解决的核心问题有三个机器失联时能不能强制重启、开机时能不能看到串口日志、日常运行时能不能拿到传感器指标。如果你刚好在为一批不带BMC的工作站发愁这个方案值得花一个下午验证。2. 拆开OpenRIG的硬件方案PCIe取电、I2C摸脉、网口出海2.1 为什么偏偏选树莓派CM4选CM4而不是一块普通树莓派开发板是有讲究的。CM4是计算模块形态没有底板上的各种接口适合直接集成进设备同时它的PCIe总线可以直接复用不需要通过USB转接来虚拟网卡或存储这对于需要稳定千兆网络的管理模块来说很重要。另一个关键因素是供电设计。CM4的核心电压、IO电压都是独立管理的设计人员可以按服务器行业的电源规范去做冗余和浪涌保护这在普通开发板上很难做好。不过这里有一个现实问题CM4这几年价格波动厉害而且老款有eMMC和非eMMC版本之分。我的建议是买带eMMC的版本因为管理设备的固件存储不能依赖SD卡——SD卡在机箱内部高温、震动环境下容易出问题eMMC相对可靠得多。OpenRIG社区也一直有人讨论“能不能换成其他SBC”答案是可以但CM4的资料最全、坑最少新手别上来就挑战高难度。2.2 PCIe总线的角色不只是插上去那么简单OpenRIG接入宿主主板一般有两种方式一是将CM4的PCIe Gen2 x1链路转成标准PCIe插槽插到主板空闲槽位上二是用转接板走M.2接口。这里要说明的是虽然物理上占用的是PCIe x16或x4插槽实际走的是PCIe x1链路带宽大约500MB/s足够跑管理数据但别指望用它做高速存储虚拟化。它的目的不是数据通道而是提供“物理存在”探测和电源时序配合。为什么管理设备需要PCIe而不仅仅是用USB网卡关键在于PCIe设备的枚举是发生在系统最早期的主板BIOS能识别到一个PCIe设备的存在这为将来做“虚拟媒体”或“网络启动”留下了可能性。你的管理模块可以被看作一个标准PCIe端点设备而不是某个驱动依赖的USB外设。此外PCIe插槽上有稳定的5V standby供电很多主板在ATX电源待机状态下就给插槽供了电这让CM4能实现“宿主关机、管理模块仍在运行”的带外能力。强烈建议在部署前用万用表测一下目标插槽在S5状态系统软关机状态下是否有电这是很多OpenRIG部署失败的隐藏原因。2.3 传感器读取链路从Super I/O和PMBus拿到数据OpenRIG能显示CPU温度、风扇转速、主板电压这些数据不是平白出来的。它是通过一套I2C链路去和主板上的Super I/O芯片、PMBus电源芯片通信把本来只有BMC能读到的数据转发出来。具体接线时通常是把CM4的I2C引脚用杜邦线或专用转接板连接到主板的SMBus接口有时候也直接接在PCIe插槽的SMBus引脚上。社区常见的做法是从PCIe槽的B5/SMB_CLK和B6/SMB_DAT引脚引出总线这样做的好处是不用破坏机箱只需要把转接卡的SMBus接出来就行。但这里有个很现实的坑主板上的I2C设备很多地址可能冲突而且总线上挂的设备类型复杂所以OpenRIG软件里通常要配置设备树和跳过地址扫描。我第一次接的时候就因为没屏蔽某个设备地址导致整个I2C总线被拉死CM4上的管理界面能启动但读不到任何传感器数据。还有一个需要理解的点OpenRIG不是简单地把I2C数据转发成IPMI命令。它更像一个“传感器语义翻译器”——读懂PMBus的功率寄存器、Super I/O的温度寄存器统一输出成Redfish标准格式的JSON这样上层监控系统不需要关心底层芯片型号。这套抽象层做得好的地方在于你更换不同品牌的主板时不需要改监控平台只需要在OpenRIG层调整映射配置。3. 实操部署从烧写镜像到远程开机3.1 准备物料与镜像我这次部署用的物料如下供参考CM4模块2GB/8GB带eMMC带无线版本也行但推荐只用有线网CM4 IO board或者OpenRIG推荐的载板标准PCIe转接卡根据机箱实际选择内存卡备用给eMMC版本之外的情况做首次烧录一个5V/3A以上的直流电源调试用后续可以靠PCIe插槽供电USB转TTL调试线用于首次查看CM4启动日志镜像方面OpenRIG官方仓库会提供预编译镜像建议不要从零手工部署直接用官方镜像可以减少90%的配置工作。烧录方法和树莓派系统一样用Raspberry Pi Imager或dd命令# Linux下烧录示例 sudo dd ifopenrig.img of/dev/sdX bs4M statusprogress sync烧录后先不要立刻插到目标机器上建议在桌面环境把CM4载板接上网线、上电先完成最基本的管理账号设置和网络固定IP配置。首次启动可以打开串口调试线查看日志看到“Redfish service is ready”之类的输出说明服务正常。3.2 首次上电Web界面和网络配置OpenRIG默认的Web服务跑在HTTPS上浏览器会提示证书自签名正常放行即可。首次登录后先做三件事设置admin密码关闭默认账号配置静态IP或用DHCP预留地址确认时区与NTP同步。网络配置有一个容易被忽略的点管理网口尽量不要和业务网口混在同一个广播域里至少要在交换机上做VLAN隔离。因为带外管理性质的设备需要保证即使业务流量拥塞也仍然能访问到管理界面。如果网络环境不支持VLAN退而求其次的做法是给CM4的MAC地址做DHCP固定分配然后让管理网段独立成一个小子网。Web界面里通常能看到两部分内容一是宿主机的电源控制包括开机、关机、强制重启二是传感器读数包括CPU温度、GPU温度、风扇转速、各电压轨。如果你的主板I2C链路还没配通传感器页面会很“干净”先别慌去后台看I2C扫描结果确认设备树是否挂载成功。3.3 Redfish走通的验证过程Redfish是DMTF组织制定的现代服务器管理标准基于HTTPSRESTful API相比IPMI的包结构更容易集成到Web体系和云平台上。OpenRIG对外暴露的基本路径长这样/redfish/v1/服务根目录/redfish/v1/Systems/System_1宿主机的电源状态和型号信息/redfish/v1/Chassis/Chassis_1/Thermal传感器读数/redfish/v1/Chassis/Chassis_1/Power功率信息/redfish/v1/Managers/BMC管理模块自身信息验证通电后能否读到传感器用一行curl就行curl -sk -u admin:yourpassword \ https://192.168.10.2/redfish/v1/Chassis/Chassis_1/Thermal | jq输出里DHTDelta Heat或类似名称的字段就是传感器收集结果。如果能看到温度数值说明I2C链路和协议解析都通了这是OpenRIG部署最重要的里程碑。接着验证远程电源控制。Redfish标准里重启操作是这样发的curl -sk -u admin:yourpassword \ -X POST \ -H Content-Type: application/json \ -d {ResetType: On} \ https://192.168.10.2/redfish/v1/Systems/System_1/Actions/ComputerSystem.Reset实测中要注意的是ResetType大小写严格区分常见值包括On、ForceOff、GracefulShutdown、ForceRestart。业务系统的优雅关机会调用GracefulShutdown它先发ACPI关机指令让操作系统自己退出ForceOff则是直接切断电源。日常自动化的优先级建议是GracefulShutdown优先失败后超时再转ForceOff。3.4 接上IPMI和SOL串口OpenRIG在Redfish之外还兼容了一部分IPMI命令这让很多老运维可以在不改脚本的前提下使用ipmitool。以IPMI over LAN方式连接命令是ipmitool -I lanplus -H 192.168.10.2 -U admin -P yourpassword chassis status比较有用的一个IPMI功能是SOLSerial over LAN。SOL把宿主系统的串口重定向到管理网口你在管理机上就能看到Linux内核启动日志、BIOS自检输出这在排查“开机卡住不动”时价值巨大。启用SOL后执行ipmitool -I lanplus -H 192.168.10.2 -U admin -P yourpassword sol activate然后回车就能看到宿主串口内容。退出SOL一般是~.组合键。我实际使用中有一次靠这个功能定位到一块GPU初始化超时堵住了整个开机流程如果没有SOL大概又要拆箱换卡排查。需要注意的是SOL依赖宿主主板的串口功能通常是COM口或主板上的串口排针。如果主板没有引出物理串口这个功能就无法生效。选主板时如果计划用OpenRIG请务必确认板子上有可用的串口排针或板载TPM/NCSI接口。4. 放进监控体系Redfish API与Prometheus的联调4.1 Redfish是标准为什么标准这么重要OpenRIG没有强迫你用它的Web界面而是选择拥抱Redfish标准这件事的价值在集成阶段才会真正显现。企业里不太可能只管理一种硬件有成体系的服务器BMC有小部分老旧机器的IPMI现在又加上OpenRIG的部署节点。如果每类设备都写一套对接代码维护成本会失控。Redfish把所有硬件语义统一成一套HTTPS接口意味着你的监控平台只需要实现一次Redfish客户端就能覆盖所有兼容设备。我习惯用Prometheus做数据采集文本格式简单、生态丰富。OpenRIG本身不直接暴露Prometheus metrics但Redfish是JSON API可以用一个通用的redfish_exporter或者自己写两行Python脚本把它转出来。核心思路是定时GET Thermal/Power端点把温度、功率这类指标转成Prometheus格式。4.2 用Prometheus exporter采集OpenRIG指标这里我给出一个精简的Python示例逻辑是循环抓取OpenRIG的Redfish端点输出Prometheus文本指标import requests import urllib3 from prometheus_client import start_http_server, Gauge import time import os urllib3.disable_warnings() BMC_URL os.getenv(OPENRIG_URL, https://192.168.10.2) BMC_USER os.getenv(OPENRIG_USER, admin) BMC_PASS os.getenv(OPENRIG_PASS, yourpassword) temp_gauge Gauge(openrig_temperature, Sensor temperature, [sensor]) power_gauge Gauge(openrig_power, Chassis power consumption, [kind]) def fetch_sensors(): r requests.get( f{BMC_URL}/redfish/v1/Chassis/Chassis_1/Thermal, auth(BMC_USER, BMC_PASS), verifyFalse, timeout10 ) r.raise_for_status() data r.json() for sensor in data.get(Temperatures, []): temp_gauge.labels(sensor[Name]).set(sensor[ReadingCelsius]) for psu in data.get(PowerControl, []): power_gauge.labels(total).set(psu.get(PowerConsumedWatts, 0)) if __name__ __main__: start_http_server(9100) while True: try: fetch_sensors() except Exception as e: print(fetch error:, e) time.sleep(30)这个脚本跑起来后Prometheus里配置一个scrape jobtarget指向9090之外的exporter端口即可。扩展方向很明显想加风扇转速就继续解析Fans数组想加主机状态就拉Systems端点。相比各个厂商私有的SNMP OID这套处理的通用性好很多。4.3 告警规则与自动恢复脚本有了指标之后告警规则的设计和以前做服务器BMC时差不多。我这里有一组针对性比较强的规则GPU热点温度超过90度持续10分钟先告警再自动降频。宿主机系统失联但OpenRIG仍在线肯定不是网络整体断开优先判断GPU挂死还是内核崩溃。OpenRIG自身掉线属于“管理模块不可达”需要立刻派人工介入。整机功耗超过电源额定功率的85%大概率是两卡并行训练触发了瞬时功耗峰值考虑拉长任务调度间隔。自动恢复脚本也是基于Redfish的Power Reset接口。比如检测到某些训练节点连续5分钟无心跳且OpenRIG还在线自动执行一次GracefulShutdown等半分钟再执行On开机。这个流程一定要把“强制关机的触发条件”写得足够保守避免误伤正常训练任务。我这边实际观测到过一次很有趣的现象OpenRIG报的温度比NVIDIA-SMI看到的GPU温度低几度。原因不复杂OpenRIG走的是主板I2C总线而NVIDIA-SMI读的是GPU板载传感器两者路径不同响应速度和采样时刻都有差异。做自动降级策略时建议以GPU板载传感器为准OpenRIG的数据用于趋势判断即可。5. 我踩过的坑和现在仍然会避开的雷区5.1 CM4供电余量不足导致重启环路OpenRIG运行稳定性的首要变量是供电质量。CM4的标称功耗不高但PCIe插槽的5V供电质量在不同主板上天差地别。有些主板在待机状态下PCIe的5V是直接从ATX电源5VSB引出来的电流余量有限。如果CM4加上网卡载板、传感器模块后电流超了就会表现为“上电几秒后重启、日志停在PCIe枚举阶段”的循环。解决思路是采用双路供电调试阶段用外部电源给CM4独立供电确认系统功能正常后再从PCIe插槽取电做长期运行。我这边的经验是直接在机箱里加一个DC-DC模块从电源的5VSB端子取电输出稳定的5V/3A给CM4。这个做法相当于把“带外管理”和“宿主电源”之间的耦合降低更加符合BMC设计哲学。5.2 I2C通信不稳定和总线地址冲突传感器丢数据、读数跳变多半是I2C链路问题。之前提到过从PCIe插槽引SMBus信号是社区常见做法但PCIe插槽的SMBus上可能还挂着一堆其他设备比如内存温度传感器、电源管理芯片。CM4的I2C总线默认会扫描所有地址一旦扫描到某个设备后发了一个不该发的命令就可能把总线拉死。靠谱的调试路径是先确认软件层有没有做地址白名单。OpenRIG的设备树里通常会把已知传感器的地址固定下来你只需要把不需要探测的地址段注释掉。还有一种情况是线缆过长导致信号完整性下降我试过15厘米的杜邦线确实会出现周期性丢数据换成屏蔽线并控制在10厘米以内后问题消失。I2C是慢速协议但对时序抖动仍然敏感尤其多个上拉电阻并联时会改变上升沿。5.3 虚拟媒体和远程KVM的边界很多人以为有了OpenRIG就等于有了全套企业BMC功能包括远程挂载ISO装系统、KVM接管屏幕。现实是在KVM和虚拟媒体这两块OpenRIG目前的能力边界比较明显。企业BMC里的远程KVM依赖专用视频编码芯片捕获的是显卡输出的原始画面OpenRIG本身没有这道硬件所以不要把它当成一台全功能远程图形工作站。如果你的需求确实是远程重装系统可选的路径是通过IPMI SOL配合串口安装或者用PXE网络启动。PXE比虚拟媒体其实更适合大规模场景它不需要管理模块提供块设备模拟只要DHCP/TFTP服务搭好系统就能从网络加载安装程序。所以OpenRIG在这里的定位我理解成“补齐串口和电源管理”而不是替代云主机的VNC控制台。5.4 硬件选型和安全暴露面的取舍最后说说选型上的两条建议。第一CM4型号选择上优先带eMMC容量8GB以上只在真机上电测了再更新固件不要在业务高峰期做固件升级。第二OpenRIG的Web服务建议放在独立VLAN里不要直接暴露到办公网或互联网。它默认是自签名证书但如果你搞了一堆设备方便起见全用弱密码、公网可达那等于给整个机房开了一扇带管理功能的侧门。任何带外管理系统都是双刃剑它给了你远程修复的能力同时也会成为攻击者拿到物理机控制权后最想碰的目标。我的做法是管理网段禁止访问外网只允许运维跳板机的IP访问并且所有账号开启双因子认证。如果你有跳板机或堡垒机把OpenRIG的管理地址全部导向跳板机转发比直接开防火墙端口稳妥得多。如果你手头刚好也有一批“看起来很强但实际摸不到”的工作站OpenRIG值得花一个下午试一下——它未必能替代服务器BMC但至少能让你在半夜少爬起来两回。
企业数字化 ERP 产品动态
相关推荐
Self-Distillation技术解析:大模型训练新范式 1. 项目概述:Self-Distillation新范式解析2026年开年,大模型训练领域迎来了一次方法论革新——基于上下文的Self-Distillation技术。这个技术突破的核心在于"上下文即Teacher"的理念,彻底改变了传统蒸馏学习的范式。作为一名参与过… · 2026/11/4 17:38:33
Python五子棋源码解析:人机对战与人人对战实现 简介:这份Python五子棋源码包面向Python初学者与想入门游戏开发的编程爱好者,提供人机对战与人人对战两种完整可运行模式,帮助读者在真实项目中理解GUI编程、事件驱动与AI搜索算法的落地方式。压缩包共4个文件,以3个py源码文件为主… · 2026/11/10 2:01:40
哪里有培训高压电工证 找工作必须有电子证书吗 哪里有培训高压电工证 找工作必须有电子证书吗 你是不是也这样?刚进工地或者刚换工作,老板一句“你有高压电工证吗”,让你整个人都不好了。不是没证,是没找到地方培训,更别提电子证书怎么查了。别急,今天我就来聊聊【哪里有培训高压电工证】,还告诉你… · 2026/11/14 0:31:16
泸定县电工证怎么考保姆级教程:缺证就别想上岗! 泸定县电工证怎么考保姆级教程:缺证就别想上岗! 你是不是刚毕业就急着找工作,但单位一开口就要电工证?别急, 泸定县电工证怎么考 这个问题,今天我就给你讲明白,从报名到拿证,全流程保姆级教程,省心省力,一步到位。… · 2026/11/14 0:31:16
犀浦电工证多少钱?工地太忙根本没时间复习考试的你一定要看 犀浦电工证多少钱?工地太忙根本没时间复习考试的你一定要看 工地太忙根本没时间复习考试,这种话听上去像是工地老手的日常吐槽,但事实确实如此。尤其是在河南市政公用工程行业,项目赶工期、赶进度,很多人都在为赶进度和考证两件事头疼。特别是像犀浦电工… · 2026/11/14 0:31:16
工地太忙根本没时间复习考试?电工作业目的多久拿证全攻略 工地太忙根本没时间复习考试?电工作业目的多久拿证全攻略 工地太忙根本没时间复习考试,尤其是电工作业,动不动就是高压、低压、焊工、登高等多个工种,一不小心就错过考试窗口。而且很多人不知道,电工作业目的不仅仅是“能干活”,而是… · 2026/11/14 0:31:16
内江安监局电工证在哪考,过期了怎么复审别慌 内江安监局电工证在哪考,过期了怎么复审别慌 证书过期了不知道怎么复审延期?别急,内江安监局电工证在哪考、怎么考、怎么复审,这篇文章帮你一步步搞定。如果你手里拿着一个快要过期的电工证,现在开始行动,还来得及。… · 2026/11/14 0:30:16
电工证丢失还能补吗?千万别踩坑,丢了证等于失业 电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/13 22:30:50
电力电缆作业证直播报名入口与办理流程良心建议 电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/13 5:40:45
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/12 23:27:43
有初级电工证怎么工作 2026河南最新政策怎么应对 有初级电工证怎么工作 2026河南最新政策怎么应对 之前考的证在外省能不能转过来?这个问题我每天被问上百次。2026年河南最新政策对证书跨省转移有了明确说明,特别是南阳市的从业者,需要特别关注。… · 2026/11/14 0:00:31
电工证过期了不知道怎么复审?考电工证自学书+官方报名入口全攻略 电工证过期了不知道怎么复审?考电工证自学书+官方报名入口全攻略 证书过期了不知道怎么复审延期?很多人遇到这种情况,要么是工作太忙没时间处理,要么是不知道具体流程,导致证书失效,影响工作和项目进展。其实复审并不难,关键是要找准官方报名入口,掌… · 2026/11/14 0:00:31
为什么要低压电工证实操考试考什么 为什么低压电工证值不值得考?别再被中介骗了 你是不是也经常看到网上有人在问“低压电工证到底值不值得考”?或者在找报名点时,担心被中间人骗钱?这些问题,我懂,我也经历过。作为一名在应急管理行业摸爬滚打多年的从业者,我深知低压电工证不仅是一个从… · 2026/11/14 0:00:31
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 6:12:21
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 6:11:51
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 22:31:30