Skip to content

Latest commit

 

History

History
213 lines (118 loc) · 14.6 KB

reimu-BUILD.md

File metadata and controls

213 lines (118 loc) · 14.6 KB

Общие сведения

Программное обеспечение, необходимое для функционирования программы

Отсутствует. Программа представляет собой двоичный образ, включающий все необходимые для себя компоненты и запускается на процессоре BMC с момента его выхода из сброса, то есть не опирается на какое-либо другое ранее запущенное/загруженное программное обеспечение.

Языки программирования, на которых написана программа

Программа написана с использованием широкого набора языков программирования, среди которых C, C++, Bitbake, Python, Shell и другие.

Функциональное назначение

ПО REIMU предназначено для проведения действий с модулем на основе процессора Эльбрус-8С, Эльбрус-8СВ и других подобных модулей (далее платформа). При этом платформа может быть выключена, достаточно подключить к ней блок питания (если он не подключен) и подать на него питающее напряжение.

Описание логической структуры

Алгоритм программы

В этом разделе описывается общая схема работы ПО REIMU:

  1. загрузка U-Boot (программы начального старта BMC);

  2. загрузка ядра Linux;

  3. старт SystemD и запуск необходимых сервисов, включая сервисы Phosphor;

  4. ожидание действий пользователя.

Сервисы Phosphor запускаются только в случае их наличия в двоичном образе (далее прошивка). Это справедливо для прошивок объёмом более 64 МБ.

Связи программы с другими программами

При работе ПО REIMU не имеет прямых связей с другими программами. Косвенные связи с пользовательским ПО производятся по независимым от программы стандартным протоколам, например, SSH или HTTPS.

Используемые технические средства

Используются вычислительные комплексы, построенные на основе процессоров «Эльбрус» и модули, входящие в них, при условии наличия на модуле микросхемы AST2400 или AST2500 или совместимой, или установленного в специальный разъём модуля МУС-А, и всей необходимой для их функционирования обвязки.

Сборка программы

Сборка программы происходит на инструментальном ВК (далее хост).

Минимальные технические требования к инструментальному ВК

  1. Хост должен быть на основе процессора с архитектурой x86_64 и иметь установленную ОС Ubuntu-20.04 или другую ОС Linux (в этом случае успешная сборка возможна, но не гарантируется).

  2. Желательно, чтобы хост имел не менее 16 ядер и не менее 8 ГБ памяти, а также быстрый диск, в идеале SSD, желательно NVMe. В противном случае сборка может завершиться с ошибкой или продолжаться слишком долго.

  3. Необходимо не менее 100 ГБ свободного пространства на диске для каждого собираемого флавора.

  4. Должен иметься доступ в интернет по протоколам HTTP, HTTPS, а также, по возможности, git. Если хост находится за прокси-сервером, то этот прокси-сервер должен быть указан в настройках, доступных программам git, wget, curl.

  5. Должна быть сконфигурирована локаль en_US.UTF-8 (на Ubuntu 20.04 для этого нужно выполнить команды sudo apt install locales && sudo dpkg-reconfigure locales).

Требования к ПО, установленному на инструментальном ПК

  1. Должны быть установлены программы git, curl, cpio, wget, python3-dev.

  2. Должно быть развёрнуто сборочное окружение: для Ubuntu 20.04 его разворачивание заключается в установке пакетов build-essential, gcc, g++, make, gawk, diffstat, chrpath, binutils, zstd.

  3. Возможно, потребуется установка пакетов libfdt1, libfdt-dev, либо, наоборот, их удаление (в зависимости от ОС).

В ОС Ubuntu (и других подобных) установка вышеупомянутого ПО выполняется командой:

sudo apt install git curl cpio wget python3-dev build-essential gcc g++ make gawk diffstat chrpath binutils libfdt1 libfdt-dev zstd

Процедура сборки

Сборка не должна производиться в каталоге, являющимся сетевым ресурсом NFS.

Сборка не должна производиться из-под суперпользователя (root).

Сборка не должна производиться в каталоге, находящемся внутри каталогов /usr, /etc, /lib, /dev или /run.

На 32-ядерном (64 потока) AMD Ryzen Threadripper 2990WX 3000 МГц, 64 ГБ памяти, 500 ГБ NVMe Samsung SSD 970 EVO Plus сборка с нуля занимает не менее полутора часов.

Предупреждения при сборке, заканчивающиеся словами «attempting MIRRORS if available» следует игнорировать (это означает, что выкачка зависимости не удалась с первого раза и была сделана с альтернативного адреса).

Две пары предупреждений, относящихся к «phosphor-vlan» также следует игнорировать (на данный момент это специфика OpenBMC, т.к. phosphor-vlan добавляется в ядро не «чистым» способом).

Сообщение «Using an insecure image signing key!» также не является ошибкой (на данный момент образ не подписывается).

Сборка может производиться в следующих конфигурациях (флаворах):

  1. REIMU-4232M — модуль МУС-А, AST2400, флешка 32 МБ, вывод через UART2;

  2. REIMU-4232 — интегрированный AST2400, флешка 32 МБ, вывод через UART2;

  3. REIMU-4264 — интегрированный AST2400, флешка 64 МБ, вывод через UART2;

  4. REIMU-4564 — интегрированный AST2400, флешка 64 МБ, вывод через UART5;

  5. REIMU-5564 — интегрированный AST2500, флешка 64 МБ, вывод через UART5.

Также флавор REIMU-4564 соответствует изделию ТВГИ.00308-01, флавор REIMU-5564 — изделиям ТВГИ.00306-01 и 643.ДАЦН.20001-01.

Алгоритм сборки состоит в следующем:

  1. Скачать исходные тексты программы:
git clone https://github.com/makise-homura/openbmc
  1. Войти в каталог с исходными текстами и переключиться на нужный тег (в примере reimu-1.0.1; вместо него можно поставить тег последнего релиза на гитхабе):
cd openbmc
git checkout reimu-1.0.1

Если исходники поставляются отдельным архивом, вместо пунктов 1 и 2 следует их распаковать в какой-нибудь каталог и перейти в него.

  1. В случае недоступности протокола git задать переменные, которые позволяют скачивать репозитории по протоколу HTTPS:
git config url.https://github.com/.insteadof git://github.com/
git config url.https://git.yoctoproject.org/git/.insteadof git://git.yoctoproject.org/
git config url.https://git.savannah.gnu.org/git/.insteadof git://git.savannah.gnu.org/
  1. Настроить сборку на нужный флавор (в примере — REIMU-5564):
source setup reimu-5564

Здесь вместо слова source можно использовать символ точки.

После выполнения этой команды текущий каталог будет сменён.

  1. Запустить сборку образа прошивки из каталога, в который произведён переход предыдущей командой:
bitbake obmc-phosphor-image
  1. Результатом сборки является файл с именем вида obmc-phosphor-image-$FLAVOR-*.static.mtd, лежащий в каталоге tmp/deploy/images/$FLAVOR, где $FLAVOR - имя выбранного флавора.

  2. Сборка является успешной в случае появления указанного файла.

  3. В случае необходимости начать сборку с нуля, необходимо удалить каталог, который стал текущим после выполнения п. 4, и повторить сборку, начиная с п. 4.

В процессе сборки также генерируется файл obmc-phosphor-image-$FLAVOR-*.static.mtd.tar, который применяется при обновлении прошивки на BMC с прошивками REIMU-4264, REIMU-4564 и REIMU-5564.

Вызов и загрузка

Установка программы

Первично результат сборки загружается в первую микросхему флеш-памяти BMC при изготовлении материнской платы на заводе-изготовителе.

Программирование ПЗУ производится через соответствующий разъём, указанный в документации на плату, с помощью программатора SPI NOR флеш-памяти (например, Dediprog SF100/SF600).

Программирование производится в соответствии с документацией на ПО программатора. Содержимое .mtd-файла записывается с адреса 0 при напряжении питания микросхемы 3,0-3,3 В.

В дальнейшем обновление прошивки производится средствами ПО REIMU, как указано в его руководстве оператора (для флаворов REIMU-4264, REIMU-4564 или REIMU-5564 для этого потребуется файл с именем вида obmc-phosphor-image-$FLAVOR-*.static.mtd.tar, также получившийся при сборке).

Запуск и завершение работы

ПО REIMU запускается автоматически при подаче дежурного питания на материнскую плату или перезагрузке BMC.

Завершение работы ПО REIMU происходит при снятии дежурного питания с материнской платы или перезагрузке BMC.

На платах, не поддерживающих хранение времени в специализированной микросхеме, доступной BMC, при отсутствии дежурного напряжения питания время в BMC сбрасывается.

Входные и выходные данные

Входными данными являются любые данные, которые своими действиями (ввод команд в SSH-сессии, нажатия кнопок в web-интерфейсе и т. п.) пользователь передаёт ПО REIMU.

Выходными данными являются любые данные, которые выдаёт ПО REIMU пользователю или управляемой им платформе.

Перечень сокращений

ВК — вычислительный комплекс

МН — машинный носитель

ОС — операционная система

ПЗУ — постоянное запоминающее устройство

ПО — программное обеспечение

AMD — Advanced Micro Devices

BMC — Baseboard Management Controller

HTTP — HyperText Transfer Protocol

HTTPS — HyperText Transfer Protocol Secure

NFS — Network File System

NOR — Not-Or

NVMe — Non-Volatile Memory Express

REIMU — REmote Intelligent Management Unit

SPI — Serial Peripheral Interface

SSD — Solid State Drive

SSH — Secure SHell