[{"data":1,"prerenderedAt":216},["ShallowReactive",2],{"content-doc-\u002Fzh\u002Fblogs\u002Fbaiao-websol":3,"surround-\u002Fzh\u002Fblogs\u002Fbaiao-websol":214},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"category":11,"author":12,"body":16,"_type":206,"_id":207,"_source":208,"_file":209,"_stem":210,"_extension":211,"coverImage":48,"plainText":212,"authorNames":213},"\u002Fzh\u002Fblogs\u002Fbaiao-websol","blogs",false,"","浏览器直达服务器串口：百敖基于 openUBMC 的 Web SOL 技术实践","在服务器运维中，当系统宕机、无法启动或网络中断时，串口控制台往往是诊断和恢复的核心途径。传统方式依赖专用客户端软件，部署复杂、跨平台不便，尤其在紧急场景下效率低下。\n为此，南京百敖团队基于 openUBMC架构，实现了 Serial Over LAN（SOL）功能的 Web 化迁移： 如下图，在浏览器访问BMC串行接口及系统串行接口：","2026\u002F04\u002F14","essentials",[13],{"name":14,"description":15},"汪涛","南京百敖软件有限公司技术总监，openUBMC技术委员会委员，在BMC、BIOS等固件领域从事研发14年，多次承担国家科技支撑计划，拥有丰富的服务器固件领域研发经验。",{"type":17,"children":18,"toc":199},"root",[19,27,41,54,59,65,77,84,92,97,102,110,115,120,128,133,138,152,157,163,168,179,184,189,194],{"type":20,"tag":21,"props":22,"children":24},"element","h4",{"id":23},"引言",[25],{"type":26,"value":23},"text",{"type":20,"tag":28,"props":29,"children":30},"p",{},[31,33,39],{"type":26,"value":32},"在服务器运维中，当系统宕机、无法启动或网络中断时，串口控制台往往是诊断和恢复的核心途径。传统方式依赖专用客户端软件，部署复杂、跨平台不便，尤其在紧急场景下效率低下。\n为此，南京百敖团队基于 openUBMC架构，实现了 Serial Over LAN（SOL）功能的 Web 化迁移：",{"type":20,"tag":34,"props":35,"children":36},"strong",{},[37],{"type":26,"value":38},"用户无需安装任何软件，直接在浏览器中访问服务器串口控制台。",{"type":26,"value":40}," 如下图，在浏览器访问BMC串行接口及系统串行接口：",{"type":20,"tag":28,"props":42,"children":43},{},[44,50],{"type":20,"tag":45,"props":46,"children":49},"img",{"alt":47,"src":48},"alt text","\u002Fcategory\u002Fblog\u002Fbaiao-websol\u002F%E5%9B%BE%E4%B8%80.png",[],{"type":20,"tag":45,"props":51,"children":53},{"alt":47,"src":52},"\u002Fcategory\u002Fblog\u002Fbaiao-websol\u002F%E5%9B%BE%E4%BA%8C.png",[],{"type":20,"tag":28,"props":55,"children":56},{},[57],{"type":26,"value":58},"本文分享这一功能的完整技术实践，包括架构设计、关键挑战及解决方案，以及在百敖 openUBMC 商业版中的集成经验。",{"type":20,"tag":21,"props":60,"children":62},{"id":61},"架构设计分层构建可靠的-web-sol-系统",[63],{"type":26,"value":64},"架构设计：分层构建可靠的 Web SOL 系统",{"type":20,"tag":28,"props":66,"children":67},{},[68,70,75],{"type":26,"value":69},"在实现浏览器化串口管理的过程中，我们面临多项嵌入式 Web 系统常见的难题。这些挑战直接指导了架构选型，最终形成清晰的三层设计：",{"type":20,"tag":34,"props":71,"children":72},{},[73],{"type":26,"value":74},"前端界面层、网关层与后端服务层",{"type":26,"value":76},"。这种分层不仅实现了功能，还确保了兼容性、安全性和性能。",{"type":20,"tag":28,"props":78,"children":79},{},[80],{"type":20,"tag":45,"props":81,"children":83},{"alt":47,"src":82},"\u002Fcategory\u002Fblog\u002Fbaiao-websol\u002F%E5%9B%BE%E4%B8%89.png",[],{"type":20,"tag":28,"props":85,"children":86},{},[87],{"type":20,"tag":34,"props":88,"children":89},{},[90],{"type":26,"value":91},"1. 前端界面层：利用Vue框架集成xterm.js",{"type":20,"tag":28,"props":93,"children":94},{},[95],{"type":26,"value":96},"初期尝试直接将串口原始数据输出到 HTML 时，遇到了严重渲染异常——字符错乱、ANSI\u002FVT 控制序列（如光标定位、清屏）无法解析，导致显示与物理终端完全不一致。这直接暴露了普通 Web 元素处理复杂终端序列的局限性。",{"type":20,"tag":28,"props":98,"children":99},{},[100],{"type":26,"value":101},"因此，我们选用 Vue.js 构建单页应用，并集成 xterm.js 作为终端仿真核心。xterm.js 能准确解析并渲染控制序列，支持色彩、滚动等完整特性。同时，通过 WebSocket 实现实时双向通信，并添加自动重连机制，确保连接稳定性。",{"type":20,"tag":28,"props":103,"children":104},{},[105],{"type":20,"tag":34,"props":106,"children":107},{},[108],{"type":26,"value":109},"2. 网关层：安全与协议兼容的必然选择",{"type":20,"tag":28,"props":111,"children":112},{},[113],{"type":26,"value":114},"Web SOL 需要在浏览器与后端间建立持久双向通道，同时必须应对嵌入式环境的资源限制和安全需求。我们早期在 WebSocket 处理上遇到兼容性问题，因此需要更好的解决方案。",{"type":20,"tag":28,"props":116,"children":117},{},[118],{"type":26,"value":119},"openUBMC中集成了Nginx，因此它成为理想选择：它高效处理 TLS 1.2\u002F1.3 加密传输、WebSocket 协议升级与代理转发。同时，集成 JWT 身份验证、IP 访问控制及严格 CSP 策略，提供统一的安全入口和流量分发能力，避免直接暴露后端服务。",{"type":20,"tag":28,"props":121,"children":122},{},[123],{"type":20,"tag":34,"props":124,"children":125},{},[126],{"type":26,"value":127},"3. 后端服务层：高并发与底层操作的权衡",{"type":20,"tag":28,"props":129,"children":130},{},[131],{"type":26,"value":132},"后端的核心难点在于高效管理多个 WebSocket 会话，同时精准操作底层 TTY 设备。 Lua WebSocket库在Skynet协程环境下会出现阻塞异常，而串口配置中还遇到回声干扰（如“阶梯式换行”）和硬件端口识别问题。",{"type":20,"tag":28,"props":134,"children":135},{},[136],{"type":26,"value":137},"为此，我们优化了WebSocket的实现，并兼容了Skynet的协程框架，重构事件处理逻辑，最大化地复用了Skynet高并发能力来管理多个WebSocket对话。",{"type":20,"tag":28,"props":139,"children":140},{},[141,143,150],{"type":26,"value":142},"串口通信模块则通过 C 扩展实现：使用 ",{"type":20,"tag":144,"props":145,"children":147},"code",{"className":146},[],[148],{"type":26,"value":149},"cfmakeraw()",{"type":26,"value":151}," 将 TTY 设为 raw 模式，禁用内核级处理（如回车转换），采用读写分离架构避免数据回显干扰。同时通过对接openUBMC的SerialManagement 服务，支持了BMC与服务器OS的串口切换能力，让Web SOL的能力进一步增强。",{"type":20,"tag":28,"props":153,"children":154},{},[155],{"type":26,"value":156},"通过层层攻克上述挑战，这套三层架构最终在 openUBMC 上完美落地了 Web SOL 系统，实现了高效、可靠且安全的浏览器化串口管理。",{"type":20,"tag":21,"props":158,"children":160},{"id":159},"产品化集成落地百敖-openubmc-商业版",[161],{"type":26,"value":162},"产品化集成：落地百敖 openUBMC 商业版",{"type":20,"tag":28,"props":164,"children":165},{},[166],{"type":26,"value":167},"功能开发完成后，我们将其模块化封装：前端资源、Nginx 配置、后端服务通过openUBMC的Conan体系构建和管理。最终结合百敖自研的其他能力（实时监控界面、灵活的传感器告警策略等），基于openUBMC 25.06 社区发行版推出了百敖的openUBMC商业发行版。",{"type":20,"tag":28,"props":169,"children":170},{},[171,175],{"type":20,"tag":45,"props":172,"children":174},{"alt":47,"src":173},"\u002Fcategory\u002Fblog\u002Fbaiao-websol\u002F%E5%9B%BE%E5%9B%9B.png",[],{"type":20,"tag":45,"props":176,"children":178},{"alt":47,"src":177},"\u002Fcategory\u002Fblog\u002Fbaiao-websol\u002F%E5%9B%BE%E4%BA%94.png",[],{"type":20,"tag":21,"props":180,"children":182},{"id":181},"总结与展望",[183],{"type":26,"value":181},{"type":20,"tag":28,"props":185,"children":186},{},[187],{"type":26,"value":188},"本次 Web SOL 的成功实践，充分验证了 openUBMC 架构的灵活性和扩展性：其基于 Skynet、D-Bus、Lua\u002FC 混合开发以及模块化构建体系，能够高效支持各类新型运维特性的快速集成与落地，为服务器远程管理提供了广阔的创新空间。",{"type":20,"tag":28,"props":190,"children":191},{},[192],{"type":26,"value":193},"同时，这次从底层 TTY 操作到 Web 前端的完整开发过程，也标志着百敖团队已具备深厚的 openUBMC 技术积累，能够为客户提供从功能定制、性能优化到安全加固的全栈开发服务，满足多样化的国产化服务器管理需求。",{"type":20,"tag":28,"props":195,"children":196},{},[197],{"type":26,"value":198},"未来，我们将继续基于 openUBMC 平台迭代更多实用特性。我们相信，通过持续的技术迭代与生态建设，百敖openUBMC将为服务器远程管理提供更加强大、便捷且安全的解决方案，助力企业数据中心实现更高水平的运维自动化与智能化。",{"title":7,"searchDepth":200,"depth":200,"links":201},4,[202,203,204,205],{"id":23,"depth":200,"text":23},{"id":61,"depth":200,"text":64},{"id":159,"depth":200,"text":162},{"id":181,"depth":200,"text":181},"markdown","content:zh:blogs:baiao-websol.md","content","zh\u002Fblogs\u002Fbaiao-websol.md","zh\u002Fblogs\u002Fbaiao-websol","md","引言 在服务器运维中，当系统宕机、无法启动或网络中断时，串口控制台往往是诊断和恢复的核心途径。传统方式依赖专用客户端软件，部署复杂、跨平台不便，尤其在紧急场景下效率低下。\n为此，南京百敖团队基于 openUBMC架构，实现了 Serial Over LAN（SOL）功能的 Web 化迁移： 用户无需安装任何软件，直接在浏览器中访问服务器串口控制台。  如下图，在浏览器访问BMC串行接口及系统串行接口：   本文分享这一功能的完整技术实践，包括架构设计、关键挑战及解决方案，以及在百敖 openUBMC 商业版中的集成经验。 架构设计：分层构建可靠的 Web SOL 系统 在实现浏览器化串口管理的过程中，我们面临多项嵌入式 Web 系统常见的难题。这些挑战直接指导了架构选型，最终形成清晰的三层设计： 前端界面层、网关层与后端服务层 。这种分层不仅实现了功能，还确保了兼容性、安全性和性能。  1. 前端界面层：利用Vue框架集成xterm.js 初期尝试直接将串口原始数据输出到 HTML 时，遇到了严重渲染异常——字符错乱、ANSI\u002FVT 控制序列（如光标定位、清屏）无法解析，导致显示与物理终端完全不一致。这直接暴露了普通 Web 元素处理复杂终端序列的局限性。 因此，我们选用 Vue.js 构建单页应用，并集成 xterm.js 作为终端仿真核心。xterm.js 能准确解析并渲染控制序列，支持色彩、滚动等完整特性。同时，通过 WebSocket 实现实时双向通信，并添加自动重连机制，确保连接稳定性。 2. 网关层：安全与协议兼容的必然选择 Web SOL 需要在浏览器与后端间建立持久双向通道，同时必须应对嵌入式环境的资源限制和安全需求。我们早期在 WebSocket 处理上遇到兼容性问题，因此需要更好的解决方案。 openUBMC中集成了Nginx，因此它成为理想选择：它高效处理 TLS 1.2\u002F1.3 加密传输、WebSocket 协议升级与代理转发。同时，集成 JWT 身份验证、IP 访问控制及严格 CSP 策略，提供统一的安全入口和流量分发能力，避免直接暴露后端服务。 3. 后端服务层：高并发与底层操作的权衡 后端的核心难点在于高效管理多个 WebSocket 会话，同时精准操作底层 TTY 设备。 Lua WebSocket库在Skynet协程环境下会出现阻塞异常，而串口配置中还遇到回声干扰（如“阶梯式换行”）和硬件端口识别问题。 为此，我们优化了WebSocket的实现，并兼容了Skynet的协程框架，重构事件处理逻辑，最大化地复用了Skynet高并发能力来管理多个WebSocket对话。 串口通信模块则通过 C 扩展实现：使用  cfmakeraw()  将 TTY 设为 raw 模式，禁用内核级处理（如回车转换），采用读写分离架构避免数据回显干扰。同时通过对接openUBMC的SerialManagement 服务，支持了BMC与服务器OS的串口切换能力，让Web SOL的能力进一步增强。 通过层层攻克上述挑战，这套三层架构最终在 openUBMC 上完美落地了 Web SOL 系统，实现了高效、可靠且安全的浏览器化串口管理。 产品化集成：落地百敖 openUBMC 商业版 功能开发完成后，我们将其模块化封装：前端资源、Nginx 配置、后端服务通过openUBMC的Conan体系构建和管理。最终结合百敖自研的其他能力（实时监控界面、灵活的传感器告警策略等），基于openUBMC 25.06 社区发行版推出了百敖的openUBMC商业发行版。   总结与展望 本次 Web SOL 的成功实践，充分验证了 openUBMC 架构的灵活性和扩展性：其基于 Skynet、D-Bus、Lua\u002FC 混合开发以及模块化构建体系，能够高效支持各类新型运维特性的快速集成与落地，为服务器远程管理提供了广阔的创新空间。 同时，这次从底层 TTY 操作到 Web 前端的完整开发过程，也标志着百敖团队已具备深厚的 openUBMC 技术积累，能够为客户提供从功能定制、性能优化到安全加固的全栈开发服务，满足多样化的国产化服务器管理需求。 未来，我们将继续基于 openUBMC 平台迭代更多实用特性。我们相信，通过持续的技术迭代与生态建设，百敖openUBMC将为服务器远程管理提供更加强大、便捷且安全的解决方案，助力企业数据中心实现更高水平的运维自动化与智能化。",[14],[215,215],null,1785415973917]