Ровно неделю назад в сети появилась информация о новой операционной системе, которую разрабатывает корпорация Google. Эта ОС, в отличие от прошлых проектов компании, не основана на Linux. Fuchsia разрабатывают с нуля, взяв в качестве основы лишь (L)ittle (K)ernel и Magenta.
Изначально специалисты предположили, что новинка предназначена исключительно для «Интернета вещей». Но оказалось, что Fuchsia подходит и для установки на полноценные рабочие станции. Так что это все-таки за проект и зачем он нужен? Ситуацию немного прояснил Гэри Симс (Gary Sims), скомпилировавший и изучивший особенности этой операционной системы.
Собираем Fuchsia
Симс скомпилировал ОС (инструкция по сборке — здесь) на компьютере с 64-х битной версией Ubuntu. Кроме того, тоже можно сделать и в среде OS X или ПК с практически любым дистрибутивом Linux.
Как уже говорилось выше, Fuchsia состоит из двух частей. Это (L)ittle (K)ernel, небольшая и быстрая ОС, созданная для IoT девайсов. Размер ядра этой ОС всего 15-20 КБ, исходники можно изучить здесь (распространяется по лицензии MIT). Вторая часть — это Magenta, которая используется в современных устройствах с мощной (по сравнению с IoT системами) конфигурацией. Таким образом, Fuchsia является гибридной системой, которая может работать и на IoT устройствах, и на современных ПК или телефонах. ОС поддерживает Dart, JSON, SSL, Google GO, LLVM и Rust.
Для сборки Fuchsia нужен ряд программных инструментов и библиотек, включая простую командную оболочку “mxsh”. После того как все это получено, можно собирать LK/Magenta. Если все готово, можно загружать и Magenta.
Запускаем Fuchsia OS
Наиболее простой способ запустить Fuchsia OS — использовать qemu, это свободная программа с открытым исходным кодом для эмуляции аппаратного обеспечения различных платформ. Она включает в себя эмуляцию процессоров Intel x86 и устройств ввода-вывода. Исходники Fuchsia содержат собственную копию qemu, которая собирается в процессе общей сборки ОС.
При загрузке Fuchsia мы получаем большое количество отладочных сообщений, которые появляются по ходу загрузки ОС. Первое сообщение приветствует пользователя сообщением «welcome to lk/MP”, после чего инициализируется ряд подсистем, необходимых для запуска ОС. После этого идет определение процессора, сетевых устройств и прочих элементов системы. Если все прошло гладко, пользователь получает доступ к командной оболочке mxsh.
Оболочка содержит ряд встроенных команд, включая cd, cp, echo, ls, и rm. Если вы решите набрать слово, которое не является командой, оболочка попробует найти и запустить одноименную программу из директории /boot/bin/. В этой директории много различных исполняемых файлов, большинство которых предназначены для проверки работоспособности Fuchsia. Есть и файлы программ вроде fortune и cowsay.
Fuchsia поддерживает язык программирования Dart, созданный корпорацией Google. Изначально он позиционировался как замена Javascript. Сейчас Google использует этот язык для своих собственных проектов, включая Adwords. Работать с Dart можно либо компилируя исходники в Javascript, либо работая с собственной системой Dart VM. Второй способ используется в Fuchsia.
Для того чтобы опробовать скомпилированную ОС, можно запустить Dart-скрипт из /boot/apps. Он называется hello_fuchsia.dart. Если все работает правильно, в консоли появится надпись “Hello, Fuchsia!”
Для чего все это?
Одно то, что Fuchsia может выводить текстовую фразу, означает, что это сложная ОС, способная обеспечить работу интерпретатора и выполнение скрипта. Как видим, компиляторов С, Java и т.д. здесь нет, но Dart есть и работает. Поскольку корпорация вложила много средств и усилий в разработку этого языка программирования, можно ожидать, что Fuchsia и Dart будут широко использоваться на различных системах в будущем. Это может быть IoT устройство, бытовой гаджет, шлем виртуальной реальности и т.п.
В Fuchsia для создания пользовательского интерфейса использован Flutter. Обнаружен и Escher, поддерживающий ряд визуальных эффектов. Это может означать, что инженеры Google планируют использовать Material Design в своей новой системе.
Неясного о Fuchsia остается еще много. Главный вопрос все же остается прежним — в каких системах планируется использовать эту ОС? Ожидать, что она создана в качестве альтернативы Android OS не стоит, ведь для того, чтобы программный продукт, в особенности, операционная система стал успешным, нужно активное сообщество разработчиков, каталог приложений и т.п. Google вложил сотни миллионов долларов в Android и вряд ли собирается что-то поменять.
Относительно этой ОС есть еще одна интересная теория. Возможно, Google разрабатывает Fuchsia для того, чтобы иметь операционную систему, с которой не будет проблем в плане интеллектуальной собственности. Корпорация разрабатывает эту платформу самостоятельно, с нуля, поэтому в ней нет элементов, которые являются чьей-то интеллектуальной собственностью. В Android, например, такие элементы есть, и их немало, что стало причиной определенных проблем.
Одно можно сказать с уверенностью — Fuchsia уже здесь и работает. Графического интерфейса пока нет, возможно, его и не будет. Количество команд и поддерживаемых библиотек пока что очень ограничено. Разработчики Fuchsia пообещали вскоре выложить полную документацию по проекту, рассказав обо всех своих планах во время анонса. Пока же о планах компании можно лишь догадываться.
Может быть, мы все являемся свидетелями зарождения одной из самых распространенных в будущем операционных систем (можно провести аналогию с появлением Linux). Но нельзя исключать и возможность того, что Fuchsia — это чисто академический проект, эксперимент, который было решено провести в Google на локальном уровне и о котором стало случайно известно сторонним разработчикам.