BMC(Baseboard Management Controller)即基板管理控制器,是IPMI(Intelligent Platform Management Interface)协议即智能平台管理接口所定义的服务器管理体系中的核心组件。

1. 概述

1.1 IMPI简介

维基百科中IPMI定义如下:

智能平台管理接口(IPMI)是一套为自主计算机子系统定义的计算机接口规范,用于提供独立于主机系统的CPU,固件(BIOS或UEFI)和操作系统等软硬件的管理和监视功能。 IPMI定义了一套系统管理员接口,用于计算机系统的带外管理和管理员操作监视。

简言之,IPMI提供了一套基标准接口,通过嵌入到服务器主板上的BMC、相关传感器及相应固件,提供独立于服务器CPU、固件、和操作系统等软硬件的服务器检测管理功能,既不需要服务器操作系统支持,也不占用服务器操作系统资源。IPMI接口提供的服务包括服务器物理健康状态检测,服务器软硬件信息和运行状态查询,开关机,察看和修改BIOS配置,远程安装操作系统等。被监控的主机可以断电,但是必须保持电源和局域网连接。

IMPI接口基于命令/响应机制,通过网络功能码将机箱、传感器、固件、存储、应用等主机组件进行分类和传递消息,通过软件ID对BIOS、系统管理软件、远程终端等传感器管理软件进行分类,在网络、串行/Moderm接口、IPMB(I2C)、KCS、SMIC、SMBus等不同接口上传递使统一格式的IPMI消息。

IPMI1.5允许IPMI系统通过串口,BMC专用的带外网口,或者与主机共享的带内网口(NC-SI)与远程管理系统通讯。

IPMI2.0增加了SOL(serial over LAN)、群组管理系统、增强身份认证(RAKP+、SHA-1等)、基于OpenSSL/RCMP+的安全增强网络接口、固件防火墙和VLAN支持等。其中,SOL支持将BIOS输出和操作系统终端重定向到与BMC相连的串口,进而通过IPMI与远程系统管理软件连接。并且IPMI2.0兼容系统通常还提供KVM over IP(基于IP的远程键盘鼠标显示器连接)、远程桌面和页面服务器等功能,虽然这些功能并不属于IPMI协议的一部分。

IMPI规范主体架构如下:

IPMI主体架构

此外,为了提供更多的功能和更好的安全性,DMTF(分布式管理任务组)制定了基于浏览器RESTful插件和JSON数据格式的的安全可扩展数据中心管理标准Redfish API。英特尔也实现了IPMI 2.0的大数据中心扩展DCMI(Data Center Manageability Interface),基于IPMI接口但是最小化可选接口数量,并包括功率上限控制等其他不同。

1.2 BMC简介

维基百科中BMC定义如下:

基板管理控制器(BMC)提供IPMI架构中的智能特性。它是嵌入在计算机(通常是服务器)主板上的专用微控制器。 BMC负责管理系统管理软件和平台硬件之间的接口。

维基百科BMC框图

根据IPMI规范,BMC需要满足如下条件:

实现IMPI必选命令;

提供任一BMC访问接口;

提供标准化的看门狗定时器接口和看门狗内部事件产生功能;

提供可被其他主机组件使用的事件接收功能;

提供可通过相应的IPMI必选命令访问的SDR(传感器数据记录)仓库、SEL(系统事件记录)和FRU(现场可替换单元)目录等功能;

提供初始化代理功能以初始化BMC和其他管理控制器的传感器和事件产生组件。

简而言之,BMC就是嵌入到服务器主板上的一块独立处理器,通过IPMB、LPC(low-pin-count-interface)、SMBus等各种接口收集与主机内部的其他软硬件组件进行通信,并通过网络、串行/Moderm、PCI等接口传向本地主机/远程服务器提供查询和控制功能。

典型的BMC系统如下所示:

BMC典型架构

2. 开源方案

BMC系统通常由各个服务器厂商自主实现,开源框架较少。目前已知的开源方案有OpenBMC、u-bmc和coreIPM。

2.1 OpenBMC

2.1.1 概述

根据维基百科的定义:

OpenBMC项目是Linux基金会的开源项目,目的是提供一个BMC(基板管理控制器)固件堆栈的开源实现。OpenBMC是BMC 的Linux发行版,旨在跨越异构系统,包括企业,高性能计算(HPC),电信和云规模数据中心。

OpenBMC由微软,英特尔,IBM,谷歌和Facebook发起,使用Yocto Project作为底层构建和发布框架。OpenBMC提供REST API、Redfish、IPMIv2.0、D-BUS等接口和自定义的HOST管理接口,支持常见的主机状态查看和控制、BMC和在主机固件更新等功能。

目前OpenBMC支持的Soc如下所示:

BSP目录

单板

SoC

ARCH

meta-hxt/meta-stardragon4800-rep2

stardragon4800-rep2

ASPEED AST2500

arm1176jz-s

meta-qualcomm/meta-centriq2400-rep

centriq2400-rep

ASPEED AST2500

arm1176jz-s

meta-inspur/meta-on5263m5

on5263m5

ASPEED AST2500

arm1176jz-s

meta-evb/meta-evb-enclustra/meta-evb-zx3-pm3

evb-zx3-pm3

Xilinx Zynq-7000

arm Cortex-A9

meta-evb/meta-evb-aspeed/meta-evb-ast2500

evb-ast2500

ASPEED AST2500

arm1176jz-s

meta-evb/meta-evb-nuvoton/meta-evb-npcm750

evb-npcm750

Nuvoton NPCM7XX

arm7a-novfp

meta-evb/meta-evb-raspberrypi

RaspberryPi

RaspberryPi

arm1176jzf-s

meta-ibm/meta-z

ibm-z

fsp2

PPC476

meta-ibm/meta-witherspoon

witherspoon

ASPEED AST2500

arm1176jz-s

meta-ibm/meta-palmetto

palmetto

ASPEED AST2400

arm926ejs

meta-ibm/meta-romulus

romulus

ASPEED AST2500

arm1176jz-s

poky/meta-poky

qemux86

i586

x86

meta-facebook/meta-tiogapass

tiogapass

ASPEED AST2500

arm1176jz-s

meta-inventec/meta-lanyang

lanyang

ASPEED AST2500

arm1176jz-s

meta-quanta/meta-gsj

gsj

Nuvoton NPCM7XX

arm7a-novfp

meta-quanta/meta-f0b

f0b

ASPEED AST2500

arm1176jz-s

meta-quanta/meta-q71l

quanta-q71l

ASPEED AST2400

arm926ejs

meta-quanta/meta-runbmc-nuvoton

runbmc-nuvoton

Nuvoton NPCM7XX

arm7a-novfp

meta-intel/meta-s2600wf

s2600wf

ASPEED AST2500

arm1176jz-s

meta-mellanox/meta-msn

msn

ASPEED AST2500

arm1176jz-s

meta-ingrasys/meta-zaius

zaius

ASPEED AST2500

arm1176jz-s

meta-phosphor

qemuarm

arm versatile 926ejs

arm926ejs

meta-portwell/meta-neptune

neptune

ASPEED AST2500

arm1176jz-s

BSP目录

单板

SoC

ARCH

meta-bf/meta-mavericks

mavericks

ASPEED AST1250

arm926ejs

meta-facebook/meta-fby2/meta-fby2-gpv2

fby2

ASPEED AST2520

arm1136jf

meta-facebook/meta-fby2/meta-fby2-ep

fby2

ASPEED AST2520

arm1136jf

meta-facebook/meta-fby2

fby2

ASPEED AST2520

arm1136jf

meta-facebook/meta-fby2/meta-fby2-tl

fby2

ASPEED AST2520

arm1136jf

meta-facebook/meta-fby2/meta-fby2-rc

fby2

ASPEED AST2520

arm1136jf

meta-facebook/meta-yamp

yamp

ASPEED AST2520

arm1136jf

meta-facebook/meta-fbtp

fbtp

ASPEED AST2520

arm1136jf

meta-facebook/meta-fbttn

fbttn

ASPEED AST2520

arm1136jf

meta-facebook/meta-minipack

minipack

ASPEED AST2520

arm1136jf

meta-facebook/meta-lightning

lightning

ASPEED AST1250

arm926ejs

meta-facebook/meta-galaxy100

galaxy100

ASPEED AST1250

arm926ejs

meta-facebook/meta-wedge100

wedge100

ASPEED AST1250

arm926ejs

meta-facebook/meta-minilaketb

minilaketb

ASPEED AST2520

arm1136jf

meta-facebook/meta-yosemite

yosemite

ASPEED AST1250

arm926ejs

meta-facebook/meta-cmm

cmm

ASPEED AST2520

arm1136jf

meta-facebook/meta-wedge

wedge

ASPEED AST1250

arm926ejs

meta-portwell/meta-pwneptune

pwneptune

ASPEED AST2520

arm1136jf

注意:

不同git branch支持BSP不一样;

有效BSP必须同时包含local.conf.sample和bblayers.conf.sample文件。

2.1.2 编译和运行

编译和运行环境如下:

* kubuntu 18.04 LTS;

* OpenBMC官方仓库;

* OpenBMC维护的QEMU仓库,包含OpenBMC对QEMU官方代码的补丁和增强;

* Palmetto QEMU模拟目标机,真实硬件为一个使用AST2400(支持NC-SI)作为BMC的OpenPower Power8服务器。

注意:Facebook官方仓库编译不成功,workaround了automake编译错误问题后发现了更多问题,无法继续。有兴趣者可参考Facebook OpenBMC仓库主页和OpenBMC介绍 - 简书进行尝试,共同讨论一下。

搭建和编译步骤如下:

sudo apt-get install -y git build-essential libsdl1.2-dev texinfo gawk chrpath diffstat

cd openbmc

export TEMPLATECONF=meta-ibm/meta-palmetto/conf

. openbmc-env

bitbake obmc-phosphor-image

注意:image存放在编译目录下的tmp/deploy/images/palmetto/中。

QEMU编译步骤如下:

sudo apt-get install libsdl2-2.0-0 libsdl2-dev

cd qemu

git submodule update --init dtc

mkdir build

cd build

../configure --target-list=arm-softmmu

make

注意:可执行文件存放在编译目录下的arm-softmmu中,因此启动QEMU时必须加上路径。

QEMU配置和启动步骤如下:

sudo apt-get install libvirt-dev libvirt-bin bridge-utils uml-utilities qemu-system-common

创建网桥配置文件, 注意文件路径和网口名与系统相关,

sudo mkdir -p /etc/qemu

sudo echo "allow virbr0" >> /etc/qemu/bridge.conf

使用brctl addif/delif 命令调整网桥包含的网口并检查,正确配置如下所示

$ brctl show

bridge name bridge id STP enabled interfaces

virbr0 8000.fec6883d4c52 yes tap0

sudo arm-softmmu/qemu-system-arm -m 256 -M palmetto-bmc -nographic -drive file=~/code/openbmc/build/tmp/deploy/images/palmetto/flash-palmetto,format=raw,if=mtd -net nic,macaddr=C0:FF:EE:00:00:02,model=ftgmac100 -net bridge,id=net0,helper=/usr/lib/qemu/qemu-bridge-helper,br=virbr0

export bmc=root:0penBmc@xx.xx.xx.xx

查看接口

curl -b cjar -k https://${bmc}/xyz/openbmc_project/list

复位Host

curl -b cjar -k -H "Content-Type: application/json" -X PUT -d '{"data":"xyz.openbmc_project.State.Host.Transition.Reboot"}' https://${bmc}/xyz/openbmc_project/state/host0/attr/RequestedHostTransition

复位BMC

curl -b cjar -k -H "Content-Type: application/json" -X PUT -d '{"data":"xyz.openbmc_project.State.BMC.Transition.Reboot"}' https://${bmc}//xyz/openbmc_project/state/bmc0/attr/RequestedBMCTransition

Redfish接口与REST API接口类似,用法可参考OpenBMC Redfish cheat sheet:

export bmc=root:0penBmc@xx.xx.xx.xx

查询root

curl -b cjar -k https://${bmc}/redfish/v1

建立连接

curl --insecure -X POST -D headers.txt https://${bmc}/redfish/v1/SessionService/Sessions -d '{"UserName":"root", "Password":"0penBmc"}'

grep X-Auth-Token headers.txt

export bmc_token=

查看对象

curl -k -H "X-Auth-Token:

{bmc}/redfish/v1/Chassis

IMPI接口通常使用ipmitool访问,该工具支持部分命令补齐,帮助信息丰富:

sudo apt-get install ipmitool

查看Host电源状态

ipmitool -I lanplus -H xx.xx.xx.xx -U root -P 0penBmc power status

列出SDR(传感器数据记录)

ipmitool -I lanplus -H xx.xx.xx.xx -U root -P 0penBmc sdr list

2.2 u-bmc

u-bmc是一个与OpenBMC并行开发但使用gRPC而不是IPMI的BMC固件开源项目。其中,gRPC是Google主导开发的RPC框架,使用HTTP/2协议并用ProtoBuf作为序列化工具。

u-bmc目的在于挑战行业现状,例如为人诟病的安全问题等。u-bmc借鉴OpenBMC的代码并向其贡献代码。u-bmc仍处于试验阶段,目前仅支持基于ASPEED AST2400的BMC。

2.3 coreIPM

coreIPM是一个开源的IPMI BMC管理框架,符合带有PICMG 3.0 R2.0 AdvancedTCA扩展的IPMI v2.0规范,可以监控传感器并提供记录和警报,实现电源控制和复位等。

coreIPM支持NXP LPC系列ARM处理器和TI AM335X等,但Github代码仓库中最近一次更新已经是2009年12月。

参考

bmc控制卡_服务器BMC技术调研相关推荐

  1. bmc控制卡_X86服务器BMC基板管理控制器介绍

    转:https://www.cnblogs.com/zhangxinglong/p/13292092.html x86服务器BMC基板管理控制器介绍 在x86服务器,BIOS需要与各种硬件和芯片打交道 ...

  2. bmc控制卡_BMC+IKVM远程管理模块

    六.管理功能 1.BMC+IKVM远程管理模块 浪潮NF5280M2采用了集成的BMC+IKVM远程管理模块,基于IPMI 2.0,支持KVM-over-IP.通过这块远程管理卡,管理员可以远程连接服 ...

  3. stm32 led屏控制卡_互动LED地砖屏的配件组成与采购注意事项

    LED地砖屏的主要构成部分有led显示单元板.电源.控制卡与地砖屏箱体.单元板一个重要的显示部件,很大程度上决定了LED地砖屏的显示效果,而单元板的核心部件又有led模块.驱动芯片与电力板.就电源来说 ...

  4. stm32 led屏控制卡_室内LED显示屏如何安装?

    安装室内LED显示屏,一般常用的方法都会选择买边框.模组.排线.电源.控制卡等材料来自己组装成LED显示屏,那么如何把一块块模组组装成一整块大的LED屏幕,并且正常使用呢? 先算一下尺寸:单元板用的是 ...

  5. stm32 led屏控制卡_如何实现LED双面透明显示屏,双面LED透明屏

    市面上我们所常见的LED透明屏一般来说都是单面的,只能单面显示画面,而LED双面透明屏可能相对较少.其实LED双面透明屏显示屏无非就是两块LED透明屏的叠加,前后显示画面,可以向LED透明屏一样,拥有 ...

  6. stm32 led屏控制卡_全彩LED显示屏出现亮线的时候怎么处理比较好呢?

    全彩LED显示屏相对于液晶拼接屏而言,其出现亮线.屏幕小故障的概率要比液晶拼接屏大很多,但是,一般来说这些小故障很容易处理,所以全彩LED显示屏的拥护者还是众多的.全彩LED显示屏出现亮线的时候怎么处 ...

  7. 服务器raid卡型号分类,RAID分类2_RAID卡_服务器解决方案-中关村在线

    RAID 5: RAID 5 RAID 5 和RAID 3极为相似,都是数据分条,奇偶校验产生冗余.但是,它不采用一个固定的硬盘来存储奇偶校验值,所有数据和校验值都分布在所有硬盘上.RAID5最大的好 ...

  8. python 研华控制卡_研华运动控制卡VB.Net开发

    1.安装工具文件获得dll文件 默认路径安装"Advantech Common Motion Driver & Utility.exe",如下图为该安装文件. 具体安装步骤 ...

  9. 服务器BMC、BIOS、IPMI、UEFI技术解析

    服务器BMC.BIOS.IPMI.UEFI技术解析 以BIOS为核心的固件产业,是信创产业链的重要组成部分,可被誉为信创产业的"山海关".在计算机体系中,BIOS 有着比操作系统更 ...

最新文章

  1. 江苏省对口单招计算机原理,江苏省对口单招计算机原理教案.doc
  2. 9.kotlin安卓实践课程-用kotlin写第一个fragment的recyclerView的adapter具体实现
  3. Android使用腾讯浏览服务X5内核
  4. UTC时间、GMT时间、本地时间、Unix时间戳
  5. cts游戏手机版_cts游戏
  6. LNK2019无法解析的外部符号 public: static struct cv::Ptr class cv::xfeatures2d::SURF问题解决
  7. java解析XML Node与Element的区别
  8. GIT版本管理异常总结001---copssh安装后登录异常The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
  9. IDEA 编译构建等工程配置
  10. 生成解析器:Fsyacc
  11. 渗透测试 重点方法检测网站漏洞
  12. 【单片机】温度感应报警装置的设计与制作(说明书)
  13. 【科学文献计量】中英文文献标题及摘要可读性指标分析与可视化
  14. remosaic插值算法_手机镜头像素:硬件直出和插值有啥区别?
  15. 曾鹏锦老师:具备这5种能力人生之路越来越好走越走越宽
  16. 使用Visio画各种可视化的流程图之基本流程图和跨职能流程图
  17. 电驴emule v0.50a安装与设置
  18. 公司项目重构-Web安全-认证和会话管理
  19. matlab拉氏逆变换,偏微分方程的拉氏变换解法.ppt
  20. 【Navicat】Navicat:Navicat 导出表结构(表设计)为 EXCEL 格式

热门文章

  1. vos3000,1202端口起不来
  2. 软甲架构师历程读后感
  3. 摩托车简史与思想文化
  4. 56民族下拉列表 民族下拉列表
  5. BUCK BOOST以及BUCK_BOOST
  6. HP服务器P410i配置RAID
  7. 魔力宝贝手游版服务器维护,魔力宝贝手游3月20更新维护公告
  8. 地信(GIS)方向考研~​测绘科学与技术
  9. hadoop数仓建设之离线数据开发
  10. Anaconda 使用简介