第一章:BMC设计方案组成及开发模式
BMC,全称为基板管理控制器(Baseboard Management Controller),是现代服务器中至关重要的管理组件。它的功能涵盖了服务器健康监控、远程控制、电源管理、日志告警、资产管理以及OS等多元化任务。本文将对BMC方案以及开发模式进行简要介绍,而笔者将在后续的系列文章中深入阐述BMC的各项功能,此处则不再展开。
BMC的设计方案的核心包括【BMC芯片】和【BMC固件】两大部分:
1、在BMC芯片方面,市面主流的BMC芯片通常由信骅、海思、芯唐三家公司提供。其中ASPEED公司的AST系列芯片目前在服务器业界的市场占有率在80%以上,处于绝对的垄断地位。
三家公司的最新芯片都是基于ARM的芯片,有着低功耗、接口丰富等特点。(下图为信骅AST2600芯片的简要说明)
2、在BMC固件方面,服务器制造厂商内部大概有三种主要的开发模式:
第一种是基于IBV公司比如 AMI、insyde、百敖、昆仑的BMC基础代码(Clean Code)进行二次开发;
第二种是基于开源固件比如OpenBMC的社区框架(Open Source Framework)进行定制化开发;
第三种相对不常见,属于特定服务器设备制造商的私有软硬件整体方案(In-House Solution),
比如:华为的海思SOC+iBMC方案、惠普的iLO方案、DELL的iDRAC方案等。
第二章:BMC开源固件方案简介
目前市面上常见的开源BMC固件方案有OpenBMC和u-bmc等,其中:
1、OpenBMC是Linux基金会的开源项目,目的是提供一个BMC(基板管理控制器)固件堆栈的开源实现。它基于IPMI(Intelligent Platform Management Interface)标准,并提供了一些额外的功能和扩展性。通过OpenBMC,管理员可以通过网络远程监控和管理服务器,他们可以通过Web界面或命令行界面访问OpenBMC,查看服务器的硬件状态、传感器数据、日志等信息。管理员还可以通过OpenBMC执行各种操作,如重启服务器、更新固件、配置BIOS等。
2、U-BMC:是基于systemd的嵌入式Linux发行版,它提供了一个高度模块化和可配置的BMC固件,可通过U-Boot或Tiano引导加载程序加载。它与一般BMC方案的主要区别在于使用gRPC(Google Remote Procedure Call)而不是IPMI进行通信。gRPC(Google Remote Procedure Call)是一个高性能、开源和通用的RPC(远程过程调用)框架,由Google推出。它基于HTTP/2协议标准设计开发,默认采用Protocol Buffers作为接口描述语言,用于定义服务。gRPC支持多种开发语言,并提供了一种简单的方法来精确的定义服务,同时为客户端和服务端自动生成可靠的功能库。它使得客户端可以直接调用不同服务器上的远程程序,使用起来就像调用本地程序一样,简化了远程服务的连接、调用、操作和调试过程,便于构建分布式应用和服务。U-BMC旨在解决一些行业存在的关键问题,如安全问题等。
第三章:小结
尽管基于开源方案的BMC固件可以提供一些优势,但其开发过程也面临着一些挑战。首先,需要对各种不同的开源项目进行深入研究和理解,才能将它们融合到BMC固件中。这需要开发团队具备一定的技术实力和经验,以确保所选择的开源方案能够满足实际需求。其次,随着开源项目的不断更新和发展,需要持续关注和跟进,及时修复和更新BMC固件中的漏洞和缺陷,以确保其安全性和可靠性。
另外,基于开源方案的BMC固件也需要进行更严格的测试和验证。由于开源方案的多样性和复杂性,不同方案之间的兼容性问题也需要引起关注。在进行方案选择和开发过程中,需要考虑不同硬件平台和操作系统的差异,以确保BMC固件能够满足各种实际场景的需求。
总体而言,开发基于开源方案的BMC固件需要克服一系列挑战,但随着技术的不断发展和进步,相信未来的BMC固件将会更加安全、可靠、灵活和开放。