В последние годы рынок Интернета вещей демонстрирует скачкообразный рост. Не удивительно, что он привлекает внимание всё новых и новых разработчиков. Следуют тренду и девелоперы открытых операционных систем, внедряя в них инструменты и средства для работы с IoT-устройствами. Актуальный обзор Эрика Брауна на Linux.com предлагает ознакомиться с перечнем современных ОС для IoT.
Стоить учесть, что помимо новых Linux-дистрибутивов, предназначенных в основном для обслуживания сетевых шлюзов и концентраторов, существует и ряд других открытых проектов. Последние разрабатывают ОС для работы на микроконтроллерах (MCU), которые, в свою очередь, работают на различных IoT-девайсах. В обзор включена нетребовательная к системным ресурсам ОС OpenWRT — она активно дорабатывается, поэтому имеет все шансы закрепиться на рынке. Специфика работы IoT-устройств выдвигает следующие требования к ОС: малый объём потребляемой оперативной памяти и небольшое энергопотребление, модульность, упрощенные инструменты конфигурирования коммуникаций, поддержка широкого спектра беспроводных и сенсорных технологий.
Помимо этого, многие проекты концентрируются на обеспечении безопасности подключаемых устройств. Отличительная черта проектов открытых систем, которые не используют Linux-ядро, является их нацеленность на работу промышленных систем в режиме реального времени.
Вне рамок обзора остались «легкие» Linux-дистрибутивы типа Xubuntu или Bodhi Linux, которые применяются для установки на ПК или для работы с флэш-накопителями. Такие дистрибутивы не предназначены для IoT, но некоторые из них — например, LXLE или Linux Litе, всё же пригодны для работы на отдельных автономных устройствах.
Как уже отмечалось, рынок IoT развивается и ещё не перешёл в фазу зрелости. Исходя из этого, во внимание принимались либо известные проекты RTOS (Run time operation system, операционные системы реального времени), либо проекты, представляющие интерес с точки зрения перспективы.
Нельзя обойти вниманием и Windows 10 for IoT Core, но её нельзя назвать открытой в полной мере, поскольку ее свободное использование возможно исключительно для участников организации Open Connectivity Foundation (OCF). Последняя недавно объединилась с AllSeen Alliance и будет разрабатывать стандарт IoTivity для обмена данными между IoT-устройствами.
Открытые операционные системы на базе Linux
Brillo. За разработку этой системы отвечает Google. С момента выхода Brillo прошёл год и можно подвести некоторые промежуточные итоги. Пока что нельзя сказать, что система де-факто стала стандартом на рынке, но пользуется популярностью в кругу энтузиастов, устанавливающих её на микрокомпьютеры, подобные Intel Edison или Dragonboard 410c, и даже на «системы на модуле» (computer-on-module). ОС поддерживает Wi-FI и Bluetooth Low Energy и является частью экосистемы Weave, кроссплатформенного ПО со своим собственным API.
Данный язык позволит устройствам «общаться» между собой и является основным инструментом управления всеми гаджетами. То есть, к примеру, благодаря Weave и машина, и кофеварка, и смартфон будут понимать одни и те же команды. Для работы системы достаточно 32 Мб ОЗУ и 128 Мб ПЗУ.
Huawei LiteOS. Это ОС для IoT производства Huawei, которую не следует путать с одноимённым вариантом для систем Unix. LiteOS на базе Linux куда более экономичная, её ядро занимает не больше 10 Кб. ОС подготовлена для работы начиная от MCU и заканчивая процессорами, совместимыми с Android. Система обладает множеством функций, среди которых автоматическое обнаружение сетей, работа в режиме реального времени, широкая поддержка беспроводных устройств и сотовых сетей. LiteOS совместима с протоколом Huawei Agile IoT Solution, разрабатываемым с целью унификации межмашинных взаимодействий, и технологией сверхузкополосной беспроводной связи для передачи данных (Narrow-Band IoT).
OpenWRT. Эта система в основном используется для маршрутизаторов и другого MIPS-оборудования, например Wi-Fi-плат. Главное достоинство OpenWRT в том, что возможности пользователя в расширении функционала ограничиваются лишь аппаратными ресурсами роутера. По сути, это полноценная Linux-платформа со своим менеджером пакетов и репозиторием.
На OpenWRT можно установить bind9, OpenVPN, LuCi, в общем, практически любой софт, работающий под Linux. Система имеет несколько форков —
Ostro Linux. Эта ОС получила известность благодаря тому, что была выбрана Intel в качестве вычислительной платформы для Intel Joule — одноплатного компьютера для тестирования прототипов носимых гаджетов, роботов и устройств Интернета вещей. Комплект Intel Joule 570x включает чип Intel Atom T5700 на 1,7 ГГц, 4 Гб ОЗУ и накопитель на 16 Гб. Ostro Linux совместима со стандартом IoTivity, поддерживает множество беспроводных технологий, а также предоставляет фреймворк для работы с разнообразными датчиками. Дистрибутив фокусируется на обеспечении безопасной работы ПО, устройств и данных. Ostro Linux доступен в двух редакциях — обычной и расширенной.
Raspbian. Linux-система Raspbian предназначена для одноплатного компьютера Raspberry PI. Несмотря на то, что для этого, самого популярного в мире DIY-компьютера существует множество специфических дистрибутивов, в том числе и для IoT, большинство разработчиков выбирают Raspbian. ОС разработана на основе Debian и хорошо оптимизирована для аппаратных возможностей Raspberry Pi.
Помимо этого разработчики могут найти сотни уже готовых проектов, а также справочных материалов по работе дистрибутива. Одна из последних версий Raspbian обзавелась поддержкой среды программирования Node-RED. Она позволяет создавать новые приложения для взаимодействия с подключенными объектами из веб-браузера с помощью графического языка.
Snappy Ubuntu Core. Разрабатываемый компанией Canonical проект Ubuntu Core предлагает компактный вариант дистрибутива Ubuntu, адаптированного для устройств Интернета вещей, контейнеров, потребительского и промышленного оборудования. Вместо традиционных deb-пакетов в дистрибутиве используется модель монолитного построения образа базовой системы. Ubuntu Core служит основой для запуска дополнительных компонентов и приложений, которые запускаются в формате snap (Canonical разрабатывает snap как универсальный формат пакетов).
Ubuntu Snappy Core поддерживает откаты обновлений, безопасные обновления, обеспечивает поддержку облака и магазина приложений для платформы. Для работы системы достаточно процессора с частотой 600 МГц, 128 Мб оперативной памяти, а также 4 Гб памяти на диске. Дистрибутив Linux для встраиваемых устройств может работать на платах Pi и других устройствах с подобными характеристиками, включая дроны Erle-Copter, шлюзы Dell Edge, Nextcloud Box и LimeSDR.
Tizen. Платформа Tizen развивается под покровительством организации Linux Foundation при участии Intel и Samsung. Особенно активно ею занимается последняя. Хоть система и позиционируется для встраиваемых систем, но пока что применяется в «умных» телевизорах Samsung и новых смарт-часах Gear S3. Тем не менее, спектр работающих на Tizen устройств может быть крайне широк — начиная от плат типа Raspberry и заканчивая бытовой техникой.
У Samsung уже имеется аппаратная платформа для IoT под названием Artik, и, по слухам, вскоре южнокорейская компания выпустит версию Tizen, оптимизированную для использования в сегменте Интернета вещей. Эта версия будет интегрирована с системой «умного» дома SmartThings. На текущий момент в новое семейство плат для IoT входят Artik 1, Artik 5 и Artik 10. Artik 1 — несёт на борту двухъядерный процессор (250 МГц + 80 МГц), адаптер беспроводной связи Bluetooth Low Energy (BLE) 4.0, акселерометр, гироскоп и магнитометр. Поддерживаются дисплеи с разрешением до WVGA (800×480). Плата размером 12×12 мм предназначено для устройств с минимальным расходом энергии.
uClinux. Это упрощенная версия Linux для встраиваемых устройств, которая может работать на микроконтроллерах Cortex-M3, M4 и M7. Для работы uClinux может понадобиться внешний чип памяти DRAM. Дистрибутив поддерживает широкий спектр беспроводных технологий и драйверов, некоторые его разработки приняты в основную ветку ядра Linux.
Но это преимущество быстро нивелируется конкурирующими системами, например, ОС для MCU Mbed, которая по сравнению с uClinux легче конфигурируется. Одним из основных разработчиков uClinux является компания Emcraft. Она оказывает техническую поддержку разработчикам, а также выпускает модули на базе чипов Cortex-M для сборки системных плат.
Yocto Project. Это не дистрибутив, а набор поддерживаемых и развиваемых Linux Foundation утилит, шаблонов и методов для разработки embedded-дистрибутивов. Yocto Project рассматривается как базис для большинства успешных коммерческих IoT-дистрибутивов.
Проект позволяет задействовать готовые программные модули, что изрядно экономит время и средства разработчиков. Наработками Yocto Project пользуются Ostro Linux и Qt for Device Creation. Последний проект готовит версию фреймворка под названием QT Lite. Новый код будет опубликован в версии библиотеки Qt 5.8 и нацелен на разработку приложений для IoT-устройств.
Другие открытые операционные системы
Apache Mynewt. Этот Open Source-проект разработан компанией Runtime при поддержке Linux Foundation и работает на
Помимо этого, свободный дистрибутив будет работать на платах Arduino Zero компании Arduino LLC. В начале октября в официальном блоге Arduino LLC появилась запись о том, что организация объединяется с Arduino SRL. В перспективе этот союз может отразиться на ценах конечных устройств, но избавит пользователей от форков прошивки для Arduino SRL и вновь объединит сообщество.
Mbed. Встраиваемая mbed OS разработана компанией ARM, которая занимается лицензированием одноимённой архитектуры для миллиардов устройств, в том числе и IoT. Поначалу Mbed была проприетарной системой, но осенью прошлого года перешла в разряд открытых. Код операционной системы распространяется под лицензией Apache 2.0. Система нацелена на работу на маломощных устройствах, использующих микроконтроллеры Cortex-M. Mbed потребляет минимум системных ресурсов, для её запуска хватает 8 Кб ОЗУ. Система поддерживает многопоточность и может работать в режиме реального времени.
Mbed создавалась с прицелом на поддержку огромного числа соединений и протоколов, по которым в недалёком будущем будут передаваться данные в IoT-сетях. В отличие от других Runtime-систем, в Mbed включён развиваемый организацией Thread Group стандарт масштабируемой беспроводной меш-сети на базе IPv6. Функционал Mbed расширяют такие сопутствующие компоненты, как облачный сервис mbed Device Connector, клиент для подключения сторонних решений mbed Client и прослойка для связывания устройств с web-приложениями mbed Device Server.
Contiki. Эта система для микроконтроллеров не может похвастаться рекордно малым потреблением ресурсов, как Tiny OS или RIOT OS (4 Кб и 5 Кб соответственно, тогда как Contiki — 10 Кб), она также не умеет работать в реальном времени, но зато она поддерживает стек IPv6 для «умных» устройств, которые получили сертификацию IPv6 Ready.
Предмет гордости системы — широчайший спектр поддерживаемого оборудования, вытесняющая приоритетная многозадачность, динамическое ядро. Полностью установленная Contiki с полным графическим интерфейсом пользователя будет занимать приблизительно 30 Кб оперативной памяти. Вместе с ОС поставляется отладочный инструмент Cooja Network Simulator. К плюсам системы также нужно отнести оптимальное расходование ОЗУ.
FreeRTOS. Эту систему можно отнести к категории проектов, конкурирующих с Linux. Пока что она не может похвастаться внушительным списком поддерживаемых драйверов, её инструменты управления сетями или памятью ОС уступают Linux. Но у неё есть преимущества. Система потребляет несравнимо меньше ресурсов, чем RTOS типа VxWorks, не говоря уже о встраиваемых Linux-системах — 0,5 Кб ОЗУ и
Fuchsia. Понимая перспективы, которые для Google сулит IoT, компания продолжает экспериментировать с встраиваемыми микросистемами. Fuchsia — одна из них. О проекте известно не много, но точно известно, что новинка из разряда Open Source и не будет работать на ядре Linux. Один из независимых разработчиков Гэри Симс ранее разобрал код Fuchsia (распространяется по лицензии MIT) и вскрыл некоторые его особенности. Выяснилось, что ОС базируется на LK (Little Kernel) и Magenta.
LK — это микроядро размером от 15 до 20 Кб, созданное для небольших встраиваемых устройств. Magenta — более крупное и продвинутое ядро, разработанное на базе LK. Например, в Magenta есть понятие процесса, а в LK — нет. Ядро Magenta предназначено для использования на устройствах, не настолько ограниченных с точки зрения аппаратной конфигурации, и является конкурентом для RTOS, ориентированных на IoT-применение, таких как FreeRTOS. Fuchsia, судя по всему, будет гибридной системой, использующей одно из двух ядер в зависимости от того, на каком устройстве она работает. Известно, что ОС поддерживает 32- и
NuttX. Эта ОС выпущена под лицензией BSD и является наиболее известной RTOS для БПЛА и дронов, работающих на платформах APM/ArduPilot и PX4 UAV. Последние являются частью более широкого проекта Dronecode. В 2014 г. Linux Foundation взяла его под своё покровительство. NuttX поддерживает архитектуры x86 и Cortex-A5, Cortex-A8, но наиболее эффективно она работает на микроконтроллерах Cortex-M. Разработчик позиционирует ОС как цикличную, поддерживающую вытесняющую (но с фиксированными приоритетами) многозадачность, которую можно рассматривать как «крошечный аналог Linux с небольшим набором функций».
RIOT OS. Ее никак нельзя отнести к новичкам на рынке встраиваемых платформ — ей 8 лет, она известна своей энергоэффективностью и совместимостью со многими беспроводными протоколами. Платформа нетребовательна к ресурсам и может запускаться на MCU, потребляя 1,5 Кб ОЗУ и 5 Кб флэш-памяти. Отличается многопоточностью, системой динамического распределения памяти, мультиплатформенностью, частичной совместимостью с POSIX (portable operating system interface, переносимый интерфейс операционных систем) и поддержкой языка C++ — такой набор опций больше характерен для Linux-систем, чем для RTOS.
Представляет интерес и архитектура RIOT OS: ошибка в одном из модулей не «рушит» всю систему, тем самым повышая её надежность. Система распространяется по лицензии LGPL, что позволяет использовать её во многих приложениях. Кроме этого, приложения, написанные для Linux или OS X, можно портировать на девайсы с RIOT OS.
TinyOS. При разработке TinyOS основное внимание было уделено обеспечению малого энергопотребления. В результате была создана ОС с простой, но развитой компонентной архитектурой. Специфика этой ОС заключается в обеспечении механизмов параллельного выполнения задач в условиях крайне ограниченных ресурсов. Система написана на диалекте языка Си — nesC — и распространяется на условиях лицензии BSD.
TinyOS используется для экспериментов с беспроводными сетями с пониженным энергопотреблением и меш-сетями. Разработчики позиционируют эту ОС как лёгкую систему, которая не предназначена для запуска требовательного к ресурсам софта. TinyOS работает на микроконтроллерах Cortex-M, тестируется её работа на радио-чипах.
Zephyr. ОС разрабатывается Linux Foundation и запускается на архитектурах x86, ARM, ARC, а также предназначена для тестирования в эмуляторе на базе QEMU. Наработки проекта поставляются под лицензией Apache 2.0. Участниками проекта выступили такие компании, как Intel, NXP Semiconductors/Freescale, Synopsys и UbiquiOS. Zephyr базируется на системах River Rocket OS и Viper. Последняя — это урезанная версия VxWorks.
Ядро рассчитано на потребление минимальных ресурсов (от 8 до 512 Кб ОЗУ в зависимости от компоновки), что позволяет использовать его на различных портативных системах, от простых встраиваемых датчиков и чипов для одежды, до «умных» часов и беспроводных шлюзов для IoT-устройств. Из особенностей Zephyr — широкие возможности по настройке. В системный образ могут включаться только те возможности ядра, которые требуются для выполнения приложения. Все стадии разработки проходят обязательные этапы подтверждения безопасности кода: статический анализ, испытания на проникновение, анализ внедрения бэкдоров и моделирование угроз.
Minoca. Это одна из самых молодых RTOS. Её код открыт под лицензией GPLv3. Сборки подготовлены для архитектур x86, ARMv6 и ARMv7, в том числе сформированы загрузочные образы для плат Raspberry Pi 2, Raspberry Pi, BeagleBone Black, Asus C201, PandaBoard и Galileo, а также эмулятор на основе QEMU. Система модульная — подсистемы ядра отделены друг от друга. Драйверы устройств не привязаны к ядру и оформляются в виде универсальных исполняемых файлов, не зависящих от версии ядра.
Для всей системы с драйверами и видеобуфером требуется от 5 до 7 Мб оперативной памяти. Основные преимущества перед Linux — низкое энергопотребление, более высокая скорость, меньшее потребление оперативной памяти и возможность незаметного обновления ядра без перекомпиляции драйверов.