Команда Common Yadro Platform разрабатывает программную экосистему для продуктов компании.
Мы создаём слои управления аппаратной платформой и ОС, Linux-based дистрибутивы и общие для продуктов сервисы на Golang. Common Yadro Platform позволяет продуктовым командам сосредоточиться на разработке бизнес-логики и берет на себя бо́льшую часть жизненно важных функций платформы, предоставляя необходимые интерфейсы для вышележащих уровней ПО.
В команду разработки ищем emdedded-специалистов c опытом работы с аппаратурой в крупных Enterprise или Open Source проектах. Приветствуется любая комбинация продуктового опыта включая низкоуровневое программирование, администрирование систем, embedded или real-time разработку. Предстоит разбираться в аспектах работы системы под продуктовой нагрузкой, понимать как продукты работают в целом, быть готовым писать и портировать патчи, анализировать и оживлять аппаратуру на различных этапах её готовности, а так же помогать с запуском и отладкой дистрибутива в продуктах.
Чем Вам предстоит заниматься:
- разрабатывать HAL интерфейсы, писать или править драйверы, реализовывать в ядре ioctl для работы с железом;
- выполнять Bring-Up разрабатываемого компанией HW, помогать продуктовым командам с настройкой сложных аппаратных конфигураций;
- разрабатывать эффективные способы виртуализации систем, создавать QEMU устройства и Mock серверы, продумывать требования к гипервизорам;
- читать dmesg, отлаживать загрузчики, прошивки, ядро, анализировать и решать проблемы работы ОС и приложений на разных аппаратных архитектурах;
- исследовать возможности по трассировке системной производительности, разрабатывать подходы по её анализу с помощью eBPF;
- проектировать удобные механизмы на уровне ядра для Fault Injection расширяя существующие в Linux.
Что мы ожидаем от будущего члена команды:
- опыт работы в области Embedded Systems, Systems Engineering, Linux Engineering от трёх лет;
- представление о современном аппаратном обеспечении: устройство памяти, шин данных, систем ввода-вывода, PCIe, DMA, IRQ, NUMA, IOMMU;
- знание ядра Linux и принципов его работы;
- системное программирование на одном из языков: C, Rust, Go;
- знание английского на уровне чтения и написания технической документации.
Дополнительно приветствуем:
- понимание базовых принципов функционирования сетей, систем хранения данных или телекоммуникационного оборудования;
- опыт диагностики проблем производительности на уровне ОС и Hardware;
- умение обращаться с осциллографами, логическими анализаторами, программаторами является плюсом;
- умение читать принципиальные схемы и код для FPGA, совместно с разработчиками разбираться с проблемами в PCB и схемотехнике;
- опыт написания драйверов для UNIX-like систем;
- умение писать системные приложения и демоны под GNU/Linux;
- опыт автоматизации и написания скриптов на bash и Python/Perl.