openbmc简介
openbmc简介
OpenBMC
在说OpenBMC之前,先说一下BMC(Baseboard Manager Controller,简称BMC),BMC应用了IPMI架构的智能性,是嵌入在计算机(通常是服务器)主板上的专用的微控制器。它是负责管理系统和管理软件与服务器平台硬件之间的一个接口。
根据IPMI规范,BMC需要满足如下条件:
- 具有IMPI命令; 提供BMC访问接口(一般是网口);
- 提供标准化的看门狗定时器接口和看门狗内部事件产生功能;
- 提供可被其他主机组件使用的事件接收功能;
- 提供可通过相应的IPMI必选命令访问的SDR(传感器数据记录)、SEL(系统事件记录)和FRU(现场可替换单元)等功能;
简而言之,BMC就是服务器主板上一块独立的小板卡,有自己独立的处理器,和控制系统,通过IPMB、LPC(low-pin-count-interface)、SMBus等接口与主机硬件或者主机系统进行通信,并通过网络、串行/Moderm、PCI等接口传向本地主机/远程服务器提供查询和控制等功能。
OpenBMC是BMC 的Linux发行版,旨在跨越异构系统,包括企业,高性能计算(HPC),电信和云规模数据中心等系统的管理。
2014年,四名Facebook程序员在一次Facebook 黑客马拉松活动上创建了一个名为OpenBMC的原型开源BMC固件。 2015年,IBM与Rackspace合作开发了一个开源BMC固件堆栈,也称为OpenBMC。这些项目仅在名称和概念上相似。2018年3月,OpenBMC成为Linux Foundation项目并融合在IBM堆栈上。OpenBMC项目的创始组织是Microsoft、Intel、BM、Google和Facebook。并且成立了一个技术指导委员会,由五家创始公司的代表来指导该项目。IBM的Brad Bishop当选为技术指导委员会主席。2019年4月,ArmHoldings也加入了OpenBMC技术指导委员会,成为了第六名成员。
OpenBmc使用Yocto Project作为底层构建和发行的框架,并结合OpenEmbedded,systemd和D-BusOpen等技术来轻松定制管理平台。同时,OpenBMC包含一个用于与固件堆栈进行交互的Web应用程序,并添加了Redfish对硬件管理的支持。它支持常见的主机状态查看和控制、主机固件更新等功能。
IPMI简介
可以说IPMI目前是BMC的核心,BMC的远程控制都是通过ipmi协议实现。IPMI的全称是Intelligent Platform Management Interface,智能平台管理接口。IPMI规定了很多的东西,BMC是其中最重要的一个部分,此外还有一些”模块“控制器通过IPMB与BMC相连,这些”模块“控制器一般控制特定的设备,有些支持热插拔。
IPMB全称Intelligent Platform Management Bus,是一种基于I2C的串行总线,它用于BMC与模块(主板上的子卡)控制器的通信,其上传递的是IPMI命令。
IMPI接口基于命令/响应机制,可通过网络将机箱、传感器、固件、存储、应用等主机组件的信息进行分类传递,通过软件ID对BIOS、系统管理软件、远程终端等传感器等进行分类管理,在网络、串行/Moderm接口、IPMB(I2C)、KCS、SMIC、SMBus等不同接口上传递都使用统一的格式。
IPMI1.0于1998年9月16日发布,制定了基本规范。
IPMI1.5于2001年2月21日发布,允许IPMI系统通过串口,BMC专用的带外网口,或者与主机共享的带内网口(NC-SI)与远程管理系统通讯。
IPMI2.0于2004年2月12日发布,增加了SOL(serial over LAN)、群组管理系统、身份认证(RAKP+、SHA-1等)、基于OpenSSL/RCMP+的安全增强网络接口、固件防火墙和VLAN支持等。其中,SOL支持将BIOS输出和操作系统终端重定向到与BMC相连的串口,进而通过IPMI与远程系统管理软件连接。同时,IPMI2.0兼容系统通常还提供KVM over IP(基于IP的远程键盘鼠标显示器连接)、远程桌面和页面服务器等功能,尽管这些功能并不属于IPMI协议。
IPMI2.0修订版1.1于2013年10月1日发布,修订了勘误表,说明和附录,并增加了对IPv6寻址的支持。
OpenBMC软件架构
BMC硬件本身就是一个计算机系统。与常用的计算机系统相比,BMC中的硬件资源非常有限。BMC硬件中CPU运行速度较慢,闪存一般在32 MB,RAM一般少于256 MB。因此,OpenBMC被设计为完整的Linux发行版,可以灵活地定制以支持不同的BMC SoC或板卡。
OpenBMC映像包括一个引导程序(u-boot),一个Linux内核,开源软件包和特定于主板的软件包:
引导加载程序和Linux内核都包括BMC SoC的各种硬件驱动程序,包括i2c驱动程序,USB驱动程序,LPC驱动、PWM驱动程序和SPI驱动程序。
开源软件包一般包括常用应用程序,例如BusyBox,i2c工具,lm传感器,OpenSSH和Python等。
用户板的软件包包括用于特定板的初始化脚本和工具。例如,它包括一个用于从EEPROM转储资产信息的工具和一个风扇控制器守护程序,用于根据环境读数控制风扇速度。
在“ Wedge”内部的BMC上运行的“ OpenBMC”软件包如下图所示。
OpenBMC中,共有三组层:
- 1、通用层包括可用于不同板卡和BMC SoC的软件包。如meta-openembedded、meta-security等。
- 2、SoC层包括特定于BMC SoC的软件包,例如Aspeed对AST2300 / AST2400 SoC 基础包,引导加载程序和内核都在SoC层中定义。如meta-aspeed、meta-raspberrypi、meta-xilinx等。
- 3、板层包括用于不同板的封装。应用于特定Wedge的硬件配置的初始化脚本和工具,如meta-facebook、meta-ibm等
本文地址:https://blog.csdn.net/dsafsdas/article/details/107478227
上一篇: 排序算法之选择排序
下一篇: Java篇——多线程(死锁)