Проект OpenBMC основывается на инфраструктуре проекта Yocto и состоит из большого числа компонентов: от загрузчика u-boot и ядра ОС Linux до демонов и утилит, работающих в режиме пользователя и активно использующих программную шину d-bus для меж процессного взаимодействия. Проект OpenBMC предназначен для удалённого управления аппаратным обеспечением серверов посредством протоколов Redfish, IPMI и SNMP, а также имеет интерфейс командной строки и веб-интерфейс. Команда включает в себя два направления: интерфейсы (frontend) и сервисы (backend). Задачи решаемые BMC являются абсолютно критичными для функционирования, мониторинга оборудования на котором работает базовая станция. Обязанности: Управление техническим базисом разработки и поддержки продуктов в сфере систем управления BMC на базе OpenBMC; Самостоятельная разработка системного ПО на C/С++ под ОС GNU/Linux; Реализация интерфейсов и API в рамках Redfish протоколов обеспечивающие взаимодействие с Telecom platform (например получение данных сенсоров и телеметрии, обновление firmware, включение и перезагрузка отдельных плат, управление ПЛИС для коммутации синхронизационных маршрутов) Реализация сервисной части непосредственно работающей с аппаратурой (fpga и другие устройства посредством i2c, gpio, …) Общением с аппаратурой на низком и среднем уровне (драйверы ядра Linux; userspace-демоны, читающие из драйверов); Доработкой демонов, участвующих процессе обновления firmware в прошиваемых компонентах системы, доступных из BMC. Разработкой интерфейса командной строки управления BMC(Bash); Исправление дефектов; Разрабатывать unit-тесты, проводить код-ревью, писать техническую документацию; Участвовать в диагностике возможных проблем работы системы в тестовых и полевых сценариях; Требования: Знания Linux на уровне программирования userspace (POSIX API); Знания принципов работы systemd и d-bus; Знание протокола GraphQL; Знание стека протоколов DMTF: Redfish, PLDM, MCPT, и т. д. Знакомство с современными архитектурами (ARM, х-86); Отличного понимания принципов WebAPI: REST и т. п.; Глубокого знания языка C++, 17ый стандарт и выше (Библиотеки: STL, Boost); Навыков отладки с помощью gdb и иных средств; Уверенные знания сетей, базирующихся на TCP/IP; Опыт работы с системами версионного контроля (BitBucket, Gitlab) и баг-трекинга (JIRA); Знание и понимание различных уровней тестирования, умение тестировать собственный код; Важно знать английский на уровне чтения и написания технической документации; Самостоятельное решение сложных комплексных задач в новой предметной области; Умение работать с документацией (в первую очередь читать и понимать). Условия: Знание принципов работы проекта Yocto; Знание Linux (как архитектуры драйверов ядра, так и пользовательских API POSIX); Знание протокола GraphQL; Знание стека протоколов DMTF: Redfish, PLDM, MCPT, и т. д. Опыт использования I2C, PCIe и подобных протоколов и интерфейсов для взаимодействия с оборудованием Опыт работы со встраиваемым программным обеспечением и системами реального времени; Общие знания мобильных телекоммуникационных систем LTE; Знание и опыт работы с системами виртуализации;