в основном все статьи про удалённое управление серверами заполнены маркетинговым буллщитом и минимумом реально полезной информации, я постараюсь объяснить, что это и зачем, с точки зрения хакера, а также добавлю некоторые технические подробности, которых или в принципе нигде нет, или которые нужно собирать по крупицам по всему Интернету.
0. we need to go deeper
а точнее, ликбез, что такое BMC ( https://en.wikipedia.org/wiki/Baseboard_Management_Controller )
BMC ("baseboard management controller") - это отдельный процессор (преимущественно ARM) на материнской плате сервера, со своей собственной оперативной памятью и хранилищем, своим отдельным сетевым портом RJ45 и своей операционной системой (преимущественно Linux). по сути это отдельный маленький сервер, установленный внутри каждого "большого" сервера, как будто вы засунули Raspberry Pi в свой системный блок, но с одним нюансом: уровень доступа BMC к серверу - безграничный, в отличие от какой-нибудь внешней малины.
BMC подключён (имеет доступ к) почти ко всем компонентам сервера - по линиям PCI(e), USB, I2C, SMBUS, и иногда даже имеет прямой доступ к оперативной памяти сервера (DMA).
блок-схема от Интеля:
чуть более подробная блок-схема от Супермикры:
ещё чуть подробнее:
BMC работает постоянно, даже когда "основной" сервер выключен. BMC имеет доступ к сети (обычно через собственный сетевой порт, но иногда делит один из портов материнки с "основной" операционной системой), и предоставляет удалённое управление сервером по протоколу IPMI ( https://ru.wikipedia.org/wiki/Intelligent_Platform_Management_Interface ). BMC запускает несколько сетевых служб - SSH, telnet, даже вебсервер, и некоторые другие. обычно к BMC подключаются через web GUI браузером.
BMC умеет:
- собирать и показывать пользователю информацию о сервере (модели процессоров, оперативы и другого железа, состояние хардов, установленные платы PCI, данные с сенсоров, потребляемую мощность, и многое другое);
- управлять питанием сервера (включать-выключать, нажимать кнопку Reset);
- обновлять прошивку BIOS/UEFI;
- и самый полезный для клиентов хостинга функционал - предоставлять доступ к клавиатуре, мыши, и экрану сервера через Интернет, как будто вы находитесь прямо перед сервером. вдобавок ещё можно подключать .iso файл с локального компьютера или качать из Интернета (смотри скрины ниже) как будто втыкаешь реальную USB флешку в сервер, и таким образом устанавливать любую операционную систему по своему усмотрению (или грузиться с LiveCD для восстановления убитой системы). выходит, что это - аналог внешней железки IP-KVM, только встроенный в сервер и не требующий подключения к серверу лишних проводов.
IPMI - это название протокола по управлению сервером через интернет, по этому протоколу подключаются к чипу BMC и отправляют ему всякие команды.
так как обычно пользователи из всего функционала IPMI используют только функцию IP-KVM, то эти понятия стали практически взаимозаменяемы: "IPMI = IP-KVM". говоря "IPMI" обычно подразумевают не сам протокол, а именно удалённый доступ типа IP-KVM к серверу через чип BMC, и если хостер в описании дедика пишет "есть IPMI" - это значит, что вы сможете загрузить на сервер свой .iso образ через интернет и установить операционную систему с нуля, а не использовать предустановленную хостером систему из его мутного образа с троянами и бэкдорами.
"прошивка IPMI", или "прошивка BMC" - это тот самый линукс, который запущен на процессоре BMC, использует оперативу BMC, и записывается на флеш память этого BMC.
IP-KVM здорового человека: *встроен в сервер*
IP-KVM курильщика: пачка USB+VGA кабелей втыкается одной стороной в сервер, другой в специальную стоечную коробку, а стоечная коробка расшаривает сигнал с этих кабелей в Интернет. то есть клиенты хостинга подключаются не напрямую к своему (арендованному) серверу, а к этой коробке.
почему я назвал статью "бэкдором"? если это не очевидно, повторю ещё раз: в вашем сервере стоит дополнительный постоянно работающий сервер с собственной ОС с закрытым исходным кодом, он подключён ко всем элементам материнки, и имеет собственный доступ в Интернет. ничто не мешает ему записывать все нажатия клавиш, которые вы делаете в web GUI, и видеопоток, который вы видите в web GUI, и отправлять эти данные "куда следует", или показывать сохранённые данные при заходе в web GUI со специального дебаг аккаунта, "случайно забытого" в релизной версии прошивки. в некоторых серверах, например HP, BMC имеет прямой доступ к оперативной памяти сервера, и может читать и изменять память незаметно для операционной системы, установленной на сервере ( https://github.com/Synacktiv-contrib/pcileech_hpilo4_service )
никак иначе, кроме как железным бэкдором, подобный функционал назвать невозможно.
внешний IP-KVM, в отличие от BMC/IPMI, подключается к вашему серверу только тогда, когда это нужно (когда вы попросите админов датацентра его подключить). с другой стороны, при использовании внешнего устройства IP-KVM админы датацентра уже точно могут видеть видеопоток с вашего сервера и все ваши нажатия клавиш.
что из этого лучше с точки зрения информационной безопасности - встроенный или внешний IP-KVM доступ - каждый для себя решает сам.
ладно, хватит о грустном, теперь о хорошем: для домашнего использования IPMI - это восхитительная технология, очень рекомендую. я управляю всем своим парком компов удалённо - с ноутбука по вайфаю, лёжа на диване, или через интернет, будучи не дома и подключаясь к домашнему роутеру через VPN.
можно собрать обычный домашний комп на серверной материнке бренда Supermicro*, потому что они поддерживают обычные десктопные комплектующие - ATX блоки питания, четырёхпиновые кулеры, и так далее, и поддерживают работу с не-ECC оперативной памятью. также многие их материнки имеют стандартный десктопный форм-фактор, в отличие от какого-нибудь Dell или HP, где все разъёмы проприетарные (даже под кулеры), и материнки нестандартных форм и размеров, которые невозможно установить в обычный десктопный корпус типа tower.
* - помимо Supermicro некоторые серверные мамки от Lenovo, Asus, Gigabyte, и ASRock тоже можно использовать с обычными десктопными комплектующими.
приведу немного примеров веб-гуя от BMC самых часто используемых в продакшоне серверов - Dell "iDRAC", HP "iLO", и Supermicro "BMC IPMI" (нет своего брендированного названия), и самой часто используемой функции в веб-гуе BMC - загрузка удалённого сервера с файла .iso на локальном компьютере.
Supermicro:
Dell iDRAC:
HP iLO 4:
скриншоты другого функционала, что ещё может среднестатистический BMC/IPMI, вы можете посмотреть вот тут: https://www.thomas-krenn.com/en/wiki/ASPEED_AST2400_IPMI_Chip_with_ATEN-Software
кстати, у вас в компе тоже есть аналог BMC, у которого тоже свой процессор, оператива, и доступ в Интернет. этот аналог называется "PCH", или "чипсет", но удалённый доступ к нему (по сути к вашему компьютеру) есть только у Intel и у NSA
однако к некоторым компьютерам и ноутбукам "бизнес" серии Intel даёт удалённый доступ ещё и юзеру - посмотрите, есть ли у вас на наклейке от интеля слово "vPro" и гуглите "Intel AMT". но даже если на наклейке нет слова "vPro", и даже если на сайте ark.intel.com в описании вашего процессора указано, что поддержки vPro/AMT нет, то это ещё не значит, что её на самом деле нет
во многих процессорах этот функционал есть, но программно выключен, и его можно включить с помощью тулзы "amtactivator".
подробностей насчёт AMD не знаю, не работал с этими процами.
самый большой минус (или плюс?
) BMC состоит в том, что производители серверов не шифруют прошивку на флеш чипе, благодаря чему прошивку можно достать программатором, заразить своим добром, и залить обратно на чип. конечно, для этого необходим физический доступ к серверу, но ведь у сотрудников датацентра, где стоит ваш сервер, этот доступ и так есть 
а вот образ прошивки для обновления через web GUI производители шифруют кто во что горазд: некоторые простым AES со вшитым в этот же самый файл ключом (то есть ключ можно достать из прошивки, изменить прошивку, и правильно зашифровать получившийся файл тем же ключом), некоторые не шифруют, но подписывают с помощью RSA или PGP, с приватным ключом, зашитым в сам процессор BMC (то есть распаковать прошивку для изучения содержимого получится, но добавить в неё своё добро и залить через web GUI уже нет), а некоторые особо упоротые производители [из Гуандуна] в качестве прошивки дают нераспаковываемое нерасшифровываемое бинарное месиво (видимо, им есть, что скрывать
)
перефразирую: в зависимости от бренда сервера, добавление своего добра в оригинальный файл обновления прошивки для заливки его в BMC через web GUI - это задача от не очень простой до чрезвычайно сложной.
1. hard pr0n
а точнее, подробности о "железе" BMC. фотки специально старался резать криво, чтобы вотермарк XSS не закрывал модели чипов.
сервера бренда HP:
в старых серверах (< gen8) использовалась дополнительная плата с сетевым портом RJ45 для удалённого подключения к BMC, в современных серверах (gen8+) сетевой порт BMC встроен в материнку или BMC делит один из портов с "основной" операционной системой сервера.
используются чипы BMC собственной разработки, называются "iLO" от "integrated Lights-Out", актуальные версии - iLO4 и iLO5.
в 8 поколении серверов на чипе iLO4 указана модель "610107-002" или "531510-003", в серверах 9го поколения используется чип iLO4 "531510-004", обе модели включают в себя одно ядро ARM926EJ 400 MHz архитектуры ARMv5.
серверов 10 и 11 поколения с BMC iLO5 у меня под рукой нет, но гугл говорит, что там используется чип "815393-001-B1", включающий в себя одно ядро ARM Cortex-A9 (800 MHz?) архитектуры ARMv7.
в отличие от серверов других брендов, вместо нормального человеческого линукса на BMC серверов HP запущена RTOS "GreenHills Integrity" https://www.ghs.com/products/rtos/integrity.html
в моём тестовом экземпляре HP gen9 чипу BMC доступно 256 MB (2 Gbit) оперативы Hynix H5TC2G63GFR-PBA 256 MB (2 Gbit)
и 4 GB (32 Gbit) хранилища eMMC Hynix H26M31001HPR. гугл говорит, что в серверах HP gen 10 хранилище тоже объёмом 4 гигабайта.
BIOS/UEFI записан на 25-ый SPI чип MXIC 25L12835F, а также какой-то кусок прошивки BMC записан на такой же SPI чип, стоящий рядом. что именно там хранится - не знаю, ещё не разбирал.
интересно, что прошивка Intel ME записана на собственный отдельный 25-ый SPI чип - Winbond 25Q64FVSIQ
обычно (в серверах других брендов) прошивка ME записана на ту же флешку, что и BIOS/UEFI.
в качестве CPLD используется целый FPGA от Lattice, модель LCMXO2-4000HC
сервера бренда Dell:
в предыдущих поколениях (< gen14) использовался процессор Renesas SH7758 с архитектурой SuperH / SH4
в современных серверах (gen 14-15) используется процессор Nuvoton NPCM750, имеющий два ядра ARM Cortex-A9. что используется в самых свежих gen 16 - не знаю, ещё не сталкивался.
в качестве ОС на обоих видах процессора работает дистрибутив Linux, собранный на основе Yocto Project "Poky" https://www.yoctoproject.org/software-item/poky/
также в предыдущих поколениях (< gen13) использовалась дополнительная плата с сетевым портом RJ45 для удалённого подключения к BMC, в современных серверах (gen13+) сетевой порт BMC встроен в материнку.
Dell gen12:
(сетевуху Dell gen14 смотри выше на фотке "IP-KVM здорового человека")
далее только gen14:
BMC доступно целых 512 MB (4 Gbit) оперативы Hynix H5AN4G6NAFR. логи BMC пишутся на 25-ый чип SPI Winbond 25Q32JVSIM или MXIC 25L3233F
прошивка BMC установлена на eMMC Hynix H26M41204HPR 8 GB (64 Gbit) или Micron MTFC8GAKAJCN-1M "JY995" 8 GB (64 Gbit)
BIOS/UEFI хранится на шестнадцатиногом 25-ом SPI чипе Winbond 25Q256JVFQ или MXIC MX25L25673GMI-10G
и опять в качестве CPLD используется FPGA - Lattice LCMXO3LF-4300C
Huawei:
используются чипы BMC собственной разработки - HiSilicon Hi1710, содержащие 1 ядро ARM Cortex-A9 800 MHz.
BMC доступно 256 MB (2 Gbit) оперативной памяти Micron MT41K128M16JT-125, и 128 MB (1 Gbit) хранилища Spansion S29GL01GS10TFI01.
в качестве ОС на BMC запущен дистрибутив Linux, из интересного - web GUI написан на PHP
128 мегабайт под хранилище явно маловато, куда оно ещё может писать логи и другие данные - неизвестно: с верхней стороны материнки ничего похожего на хранилище eMMC или NAND/NOR Flash я не увидел, с обратной стороны материнки виднеется какой-то чип прямо под BMC, но он не похож на флеш чип своим форм-фактором. разбирать сервер я не стал, потому что там гемор - надо снимать сокеты процессоров, чтобы открутить металлическую платформу, к которой крепится материнская плата.
в другом сервере я видел eMMC чип на 8 GB (Hynix H26M41204HPR) расположенный на месте того Spansion-апрямиком из 2007-го, и там было 512 MB оперативы (Micron MT41K256M16TW-107), хотя BMC такой же Hi1710.
BIOS/UEFI скорее всего (я не проверял) записан в этом 25-ом 16-тиногом SPI чипе рядом с чипсетом - "25Q128A"
и тут тоже встречаем старого знакомого Lattice, однако на этот раз FPGA слабоватый, всего 1280 вентилей. китайцы экономят на всём
модель FPGA - LCMXO2-1200UHC
Fujitsu:
тогда как в нормальных серверах используются SPI чипы в форм-факторе SOP/SOIC 8/16-ног, в японско-немецком творении ставят SPI чипы в форм-факторе BGA (с контактами снизу чипа), в моём конкретном экземпляре это MXIC MX25L51245GZ21-10G
процессор BMC: Avago/Emulex SE-SM4310-P02 - удивительный процессор с тремя ядрами разных архитектур, состоит из:
- ядро 1: ARM9 400MHz на котором запущена сама операционная система BMC (в старых серверах - ThreadX, в современных - Linux)
- ядро 2: 32-bit RISC 200MHz "для задач реального времени"
- ядро 3: Atmel 8051 200MHz "Programmable processor for BMC self-test or general purpose"
так как "старого знакомого" FPGA от Lattice на материнке нет, то скорее всего задачи CPLD выполняются вторым или третьим ядром процессора BMC
оператива: 256 MB (2 Gbit) Hynix H5TQ2G63FFR-RDC
где хранится BIOS/UEFI - не знаю. рядом с чипсетом есть парочка восьминогих чипов, но их маркировка не похожа на SPI.
скорее всего биос хранится на вышеуказанном BGAшном чипе MXIC.
Supermicro, Lenovo, Asus, Gigabyte, ASRock, Tyan, Facebook (не шучу), ...:
все эти серверасобираются в одном подвале используют одинаковые чипы BMC от фирмы ASPEED, такие как ASPEED AST2400, AST2500, AST2600.
AST2400: ARMv5 ARM926EJ-S 400 MHz
AST2500: ARMv6 ARM1176JZS 800 MHZ
AST2600: ARMv7 Dual-Core Cortex-A7 1.2 GHz
в моём конкретном экземпляре это AST2400, имеющий 128 MB (1 Gbit) оперативы Winbond W631GG6KB-15
на фоне виднеется совсем слабый FPGA Lattice LCMXO2-640HC
в качестве хранилища используется шестнадцатиногий 25-ый SPI чип MXIC MX25L25635FMI-10G объёмом 32 MB (256 Mbit), BIOS/UEFI записан на восьминогий 25-ый чип Winbond 25Q128FVSG
0. we need to go deeper
а точнее, ликбез, что такое BMC ( https://en.wikipedia.org/wiki/Baseboard_Management_Controller )
BMC ("baseboard management controller") - это отдельный процессор (преимущественно ARM) на материнской плате сервера, со своей собственной оперативной памятью и хранилищем, своим отдельным сетевым портом RJ45 и своей операционной системой (преимущественно Linux). по сути это отдельный маленький сервер, установленный внутри каждого "большого" сервера, как будто вы засунули Raspberry Pi в свой системный блок, но с одним нюансом: уровень доступа BMC к серверу - безграничный, в отличие от какой-нибудь внешней малины.
BMC подключён (имеет доступ к) почти ко всем компонентам сервера - по линиям PCI(e), USB, I2C, SMBUS, и иногда даже имеет прямой доступ к оперативной памяти сервера (DMA).
блок-схема от Интеля:
чуть более подробная блок-схема от Супермикры:
ещё чуть подробнее:
BMC работает постоянно, даже когда "основной" сервер выключен. BMC имеет доступ к сети (обычно через собственный сетевой порт, но иногда делит один из портов материнки с "основной" операционной системой), и предоставляет удалённое управление сервером по протоколу IPMI ( https://ru.wikipedia.org/wiki/Intelligent_Platform_Management_Interface ). BMC запускает несколько сетевых служб - SSH, telnet, даже вебсервер, и некоторые другие. обычно к BMC подключаются через web GUI браузером.
BMC умеет:
- собирать и показывать пользователю информацию о сервере (модели процессоров, оперативы и другого железа, состояние хардов, установленные платы PCI, данные с сенсоров, потребляемую мощность, и многое другое);
- управлять питанием сервера (включать-выключать, нажимать кнопку Reset);
- обновлять прошивку BIOS/UEFI;
- и самый полезный для клиентов хостинга функционал - предоставлять доступ к клавиатуре, мыши, и экрану сервера через Интернет, как будто вы находитесь прямо перед сервером. вдобавок ещё можно подключать .iso файл с локального компьютера или качать из Интернета (смотри скрины ниже) как будто втыкаешь реальную USB флешку в сервер, и таким образом устанавливать любую операционную систему по своему усмотрению (или грузиться с LiveCD для восстановления убитой системы). выходит, что это - аналог внешней железки IP-KVM, только встроенный в сервер и не требующий подключения к серверу лишних проводов.
IPMI - это название протокола по управлению сервером через интернет, по этому протоколу подключаются к чипу BMC и отправляют ему всякие команды.
так как обычно пользователи из всего функционала IPMI используют только функцию IP-KVM, то эти понятия стали практически взаимозаменяемы: "IPMI = IP-KVM". говоря "IPMI" обычно подразумевают не сам протокол, а именно удалённый доступ типа IP-KVM к серверу через чип BMC, и если хостер в описании дедика пишет "есть IPMI" - это значит, что вы сможете загрузить на сервер свой .iso образ через интернет и установить операционную систему с нуля, а не использовать предустановленную хостером систему из его мутного образа с троянами и бэкдорами.
"прошивка IPMI", или "прошивка BMC" - это тот самый линукс, который запущен на процессоре BMC, использует оперативу BMC, и записывается на флеш память этого BMC.
IP-KVM здорового человека: *встроен в сервер*
IP-KVM курильщика: пачка USB+VGA кабелей втыкается одной стороной в сервер, другой в специальную стоечную коробку, а стоечная коробка расшаривает сигнал с этих кабелей в Интернет. то есть клиенты хостинга подключаются не напрямую к своему (арендованному) серверу, а к этой коробке.
почему я назвал статью "бэкдором"? если это не очевидно, повторю ещё раз: в вашем сервере стоит дополнительный постоянно работающий сервер с собственной ОС с закрытым исходным кодом, он подключён ко всем элементам материнки, и имеет собственный доступ в Интернет. ничто не мешает ему записывать все нажатия клавиш, которые вы делаете в web GUI, и видеопоток, который вы видите в web GUI, и отправлять эти данные "куда следует", или показывать сохранённые данные при заходе в web GUI со специального дебаг аккаунта, "случайно забытого" в релизной версии прошивки. в некоторых серверах, например HP, BMC имеет прямой доступ к оперативной памяти сервера, и может читать и изменять память незаметно для операционной системы, установленной на сервере ( https://github.com/Synacktiv-contrib/pcileech_hpilo4_service )
никак иначе, кроме как железным бэкдором, подобный функционал назвать невозможно.
внешний IP-KVM, в отличие от BMC/IPMI, подключается к вашему серверу только тогда, когда это нужно (когда вы попросите админов датацентра его подключить). с другой стороны, при использовании внешнего устройства IP-KVM админы датацентра уже точно могут видеть видеопоток с вашего сервера и все ваши нажатия клавиш.
что из этого лучше с точки зрения информационной безопасности - встроенный или внешний IP-KVM доступ - каждый для себя решает сам.
ладно, хватит о грустном, теперь о хорошем: для домашнего использования IPMI - это восхитительная технология, очень рекомендую. я управляю всем своим парком компов удалённо - с ноутбука по вайфаю, лёжа на диване, или через интернет, будучи не дома и подключаясь к домашнему роутеру через VPN.
можно собрать обычный домашний комп на серверной материнке бренда Supermicro*, потому что они поддерживают обычные десктопные комплектующие - ATX блоки питания, четырёхпиновые кулеры, и так далее, и поддерживают работу с не-ECC оперативной памятью. также многие их материнки имеют стандартный десктопный форм-фактор, в отличие от какого-нибудь Dell или HP, где все разъёмы проприетарные (даже под кулеры), и материнки нестандартных форм и размеров, которые невозможно установить в обычный десктопный корпус типа tower.
* - помимо Supermicro некоторые серверные мамки от Lenovo, Asus, Gigabyte, и ASRock тоже можно использовать с обычными десктопными комплектующими.
приведу немного примеров веб-гуя от BMC самых часто используемых в продакшоне серверов - Dell "iDRAC", HP "iLO", и Supermicro "BMC IPMI" (нет своего брендированного названия), и самой часто используемой функции в веб-гуе BMC - загрузка удалённого сервера с файла .iso на локальном компьютере.
Supermicro:
Dell iDRAC:
HP iLO 4:
скриншоты другого функционала, что ещё может среднестатистический BMC/IPMI, вы можете посмотреть вот тут: https://www.thomas-krenn.com/en/wiki/ASPEED_AST2400_IPMI_Chip_with_ATEN-Software
кстати, у вас в компе тоже есть аналог BMC, у которого тоже свой процессор, оператива, и доступ в Интернет. этот аналог называется "PCH", или "чипсет", но удалённый доступ к нему (по сути к вашему компьютеру) есть только у Intel и у NSA
однако к некоторым компьютерам и ноутбукам "бизнес" серии Intel даёт удалённый доступ ещё и юзеру - посмотрите, есть ли у вас на наклейке от интеля слово "vPro" и гуглите "Intel AMT". но даже если на наклейке нет слова "vPro", и даже если на сайте ark.intel.com в описании вашего процессора указано, что поддержки vPro/AMT нет, то это ещё не значит, что её на самом деле нет
подробностей насчёт AMD не знаю, не работал с этими процами.
самый большой минус (или плюс?
а вот образ прошивки для обновления через web GUI производители шифруют кто во что горазд: некоторые простым AES со вшитым в этот же самый файл ключом (то есть ключ можно достать из прошивки, изменить прошивку, и правильно зашифровать получившийся файл тем же ключом), некоторые не шифруют, но подписывают с помощью RSA или PGP, с приватным ключом, зашитым в сам процессор BMC (то есть распаковать прошивку для изучения содержимого получится, но добавить в неё своё добро и залить через web GUI уже нет), а некоторые особо упоротые производители [из Гуандуна] в качестве прошивки дают нераспаковываемое нерасшифровываемое бинарное месиво (видимо, им есть, что скрывать
перефразирую: в зависимости от бренда сервера, добавление своего добра в оригинальный файл обновления прошивки для заливки его в BMC через web GUI - это задача от не очень простой до чрезвычайно сложной.
1. hard pr0n
а точнее, подробности о "железе" BMC. фотки специально старался резать криво, чтобы вотермарк XSS не закрывал модели чипов.
сервера бренда HP:
в старых серверах (< gen8) использовалась дополнительная плата с сетевым портом RJ45 для удалённого подключения к BMC, в современных серверах (gen8+) сетевой порт BMC встроен в материнку или BMC делит один из портов с "основной" операционной системой сервера.
используются чипы BMC собственной разработки, называются "iLO" от "integrated Lights-Out", актуальные версии - iLO4 и iLO5.
в 8 поколении серверов на чипе iLO4 указана модель "610107-002" или "531510-003", в серверах 9го поколения используется чип iLO4 "531510-004", обе модели включают в себя одно ядро ARM926EJ 400 MHz архитектуры ARMv5.
серверов 10 и 11 поколения с BMC iLO5 у меня под рукой нет, но гугл говорит, что там используется чип "815393-001-B1", включающий в себя одно ядро ARM Cortex-A9 (800 MHz?) архитектуры ARMv7.
в отличие от серверов других брендов, вместо нормального человеческого линукса на BMC серверов HP запущена RTOS "GreenHills Integrity" https://www.ghs.com/products/rtos/integrity.html
в моём тестовом экземпляре HP gen9 чипу BMC доступно 256 MB (2 Gbit) оперативы Hynix H5TC2G63GFR-PBA 256 MB (2 Gbit)
и 4 GB (32 Gbit) хранилища eMMC Hynix H26M31001HPR. гугл говорит, что в серверах HP gen 10 хранилище тоже объёмом 4 гигабайта.
BIOS/UEFI записан на 25-ый SPI чип MXIC 25L12835F, а также какой-то кусок прошивки BMC записан на такой же SPI чип, стоящий рядом. что именно там хранится - не знаю, ещё не разбирал.
интересно, что прошивка Intel ME записана на собственный отдельный 25-ый SPI чип - Winbond 25Q64FVSIQ
обычно (в серверах других брендов) прошивка ME записана на ту же флешку, что и BIOS/UEFI.
в качестве CPLD используется целый FPGA от Lattice, модель LCMXO2-4000HC
сервера бренда Dell:
в предыдущих поколениях (< gen14) использовался процессор Renesas SH7758 с архитектурой SuperH / SH4
в современных серверах (gen 14-15) используется процессор Nuvoton NPCM750, имеющий два ядра ARM Cortex-A9. что используется в самых свежих gen 16 - не знаю, ещё не сталкивался.
в качестве ОС на обоих видах процессора работает дистрибутив Linux, собранный на основе Yocto Project "Poky" https://www.yoctoproject.org/software-item/poky/
также в предыдущих поколениях (< gen13) использовалась дополнительная плата с сетевым портом RJ45 для удалённого подключения к BMC, в современных серверах (gen13+) сетевой порт BMC встроен в материнку.
Dell gen12:
(сетевуху Dell gen14 смотри выше на фотке "IP-KVM здорового человека")
далее только gen14:
BMC доступно целых 512 MB (4 Gbit) оперативы Hynix H5AN4G6NAFR. логи BMC пишутся на 25-ый чип SPI Winbond 25Q32JVSIM или MXIC 25L3233F
прошивка BMC установлена на eMMC Hynix H26M41204HPR 8 GB (64 Gbit) или Micron MTFC8GAKAJCN-1M "JY995" 8 GB (64 Gbit)
BIOS/UEFI хранится на шестнадцатиногом 25-ом SPI чипе Winbond 25Q256JVFQ или MXIC MX25L25673GMI-10G
и опять в качестве CPLD используется FPGA - Lattice LCMXO3LF-4300C
Huawei:
используются чипы BMC собственной разработки - HiSilicon Hi1710, содержащие 1 ядро ARM Cortex-A9 800 MHz.
BMC доступно 256 MB (2 Gbit) оперативной памяти Micron MT41K128M16JT-125, и 128 MB (1 Gbit) хранилища Spansion S29GL01GS10TFI01.
в качестве ОС на BMC запущен дистрибутив Linux, из интересного - web GUI написан на PHP
128 мегабайт под хранилище явно маловато, куда оно ещё может писать логи и другие данные - неизвестно: с верхней стороны материнки ничего похожего на хранилище eMMC или NAND/NOR Flash я не увидел, с обратной стороны материнки виднеется какой-то чип прямо под BMC, но он не похож на флеш чип своим форм-фактором. разбирать сервер я не стал, потому что там гемор - надо снимать сокеты процессоров, чтобы открутить металлическую платформу, к которой крепится материнская плата.
в другом сервере я видел eMMC чип на 8 GB (Hynix H26M41204HPR) расположенный на месте того Spansion-а
BIOS/UEFI скорее всего (я не проверял) записан в этом 25-ом 16-тиногом SPI чипе рядом с чипсетом - "25Q128A"
и тут тоже встречаем старого знакомого Lattice, однако на этот раз FPGA слабоватый, всего 1280 вентилей. китайцы экономят на всём
модель FPGA - LCMXO2-1200UHC
Fujitsu:
тогда как в нормальных серверах используются SPI чипы в форм-факторе SOP/SOIC 8/16-ног, в японско-немецком творении ставят SPI чипы в форм-факторе BGA (с контактами снизу чипа), в моём конкретном экземпляре это MXIC MX25L51245GZ21-10G
процессор BMC: Avago/Emulex SE-SM4310-P02 - удивительный процессор с тремя ядрами разных архитектур, состоит из:
- ядро 1: ARM9 400MHz на котором запущена сама операционная система BMC (в старых серверах - ThreadX, в современных - Linux)
- ядро 2: 32-bit RISC 200MHz "для задач реального времени"
- ядро 3: Atmel 8051 200MHz "Programmable processor for BMC self-test or general purpose"
так как "старого знакомого" FPGA от Lattice на материнке нет, то скорее всего задачи CPLD выполняются вторым или третьим ядром процессора BMC
оператива: 256 MB (2 Gbit) Hynix H5TQ2G63FFR-RDC
где хранится BIOS/UEFI - не знаю. рядом с чипсетом есть парочка восьминогих чипов, но их маркировка не похожа на SPI.
скорее всего биос хранится на вышеуказанном BGAшном чипе MXIC.
Supermicro, Lenovo, Asus, Gigabyte, ASRock, Tyan, Facebook (не шучу), ...:
все эти сервера
AST2400: ARMv5 ARM926EJ-S 400 MHz
AST2500: ARMv6 ARM1176JZS 800 MHZ
AST2600: ARMv7 Dual-Core Cortex-A7 1.2 GHz
в моём конкретном экземпляре это AST2400, имеющий 128 MB (1 Gbit) оперативы Winbond W631GG6KB-15
на фоне виднеется совсем слабый FPGA Lattice LCMXO2-640HC
в качестве хранилища используется шестнадцатиногий 25-ый SPI чип MXIC MX25L25635FMI-10G объёмом 32 MB (256 Mbit), BIOS/UEFI записан на восьминогий 25-ый чип Winbond 25Q128FVSG