Международная конференция разработчиков
и пользователей свободного программного обеспечения

Gentoo Embedded на зоопарке платформ

Максим Мельников, Gentoo Openmoko Team ( http://gentoo.mindzoo.de/ ), maxposedon@gmail.com

Каждый год выходит несколько интересных “маленьких” устройств под управлением ОС Linux. Многие пользователи хотят их не только использовать, но и настраивать под себя, писать программное обеспечение, использовать любимый дистрибутив. Gentoo Embedded – это проект, организованный владельцами таких устройств, желающими использовать на них Gentoo.

Зоопарк устройств

На данный момент, в рамках проекта Gentoo Embedded происходит работа над поддержкой совершенно различных устройств.

Я работаю над поддержкой: Neo Freerunner (телефон), Sheevaplug (домашний сервер), Ben Nanonote (очень маленький ноутбук). Так же ведется активная работа над BeagleBoard, Touchbook, n900 – различные мобильные устройства на базе Cortex A8; Guruplug (Sheevaplug 2.0) – домашние сервера/рабочие станции; различные WiFi точки доступа; Nokia tablet n8x0 и многими другими устройствами.

Neo Freerunner

Телефон с невысокими техническими характеристиками (400Mhz + 128Mb + GSM + 480×640×32), позволяющий использовать только свободное ПО, что делает возможным выбрать любой дистрибутив. Самое интересное в данном устройстве – эксперименты с поддержкой GSM. Для этого есть несколько middleware – fso2 (vala) с opimd(python) от freesmartphone.org и ofono © от Nokia/Intel. Для организациии пользовательского интерфейса на базе freesmartphone.org middleware было портировано популярное для OpenMoko-телефонов программное обеспечение для оконного окружения enlightenment: shr на языке C и zhone2 на языке vala.

Sheevaplug

Очень мощное для платформы ARM аппаратное обеспечение (процессор 1.2ГГц и 512Мб ОЗУ) с энерго потреблением всего 2-5 ватт. На этой аппаратуре Gentoo (armv5tel-softfloat-linux-gnueabi) работает превосходно (linux 2.6.34 + glibc + обычный Gentoo), а также доступно огромное количество сервер-ориентированного программного обеспечения. Перечисленные особенности сделали эту платформу, наверное, самой популярной в проекте.

Ben Nanonote

Очень маленький свободный ноутбук (т.н. нанобук), от компании Sharism, которая является продолжателем идей OpenMoko Inc. Технические характеристики весьма слабы (процессор 366МГц , 32Мб ОЗУ, трехдюймовый экран с разрешением 320×240), однако малый вес, размер, и хорошая работа редактора vim и библиотеки Qt на нем могут дать устройству большее будущее, чем кажется на первый взгляд – в первую очередь как медиа-плеера и/или платформы для запуска старых игр.

Проект Gentoo Embedded

В силу того, что различные участники проекта преследуют различные цели, можно выделить четыре совершенно различных подхода к разработке.

Native Compilation. Метод “в лоб”, скопированный с настольных комьютеров и ноутбуков – собирать (компилировать, устанавливать) ОС непосредственно на устройстве. Метод хорошо работает, но является очень медленным. Средства distcc и icecream могут ускорить компиляцию, но из-за медленной линковки и необходимого в ряде случаев большого количества памяти требуется предусматривать раздел подкачки, в 10 раз превышающий объем ОЗУ устройства.

Cross-compilation. Метод значительно более быстрый, но более сложный (и, с точки зрения автора, интересный), заключается в сборке на настольном компьютере программного обеспечения для устройства отличной архитектуры. Для большого количества программных пакетов требуется писать патчи и решать проблемы на этапе установки. Данный подход позволяет вносить наибольший вклад в само программное обеспечение (разделение библиотек и программ в различные пакеты и др.), но не является рабочим без написания множества хаков, завязанных на конкретную платформу.

Chromium OS. Операционная система от Google, которая только готовится к выпуску, на самом деле является хорошим примером, показывающим, как использовать Gentoo Embedded в своих целях. От Gentoo взята вся инфраструктура пакетов, патчи и наработки Gentoo Embedded. Перечисленное обернуто собственным набором скриптов и хаков, для удобства сборки. Проект имеет смысл изучать и брать за основу, если целью является использование Gentoo Embedded в стиле Open Embedded или OpenWRT.

Qemu. Очень популярное в сфере embedded средство, хотя и довольное медленное. В рамках Gentoo Embedded эмуятор Qemu получил два интересных варианта использования. В первом варианте совместное использование qemu-user и chroot-патчей позволяет выполнить chroot в каталог, где все программное обеспечение собрано под совершенно другой процессор. В этом случае используется эмуляция на уровне системных вызовов ядра, (т.е. используется оригинальное ядро Linux), что позволяет добиться 5-кратного повышения производительности. Второй способ предполагает совместное использование контейнеров lxc и qemu-user. Это достаточно сложно настраиваемая система, однако она позволяет в тестировать в chroot-окружении все, начиная от скриптов инициализации системы и заканчивая приложениями системы X Windows.

Linux Embedded 2.0

Дальнейшее развитие Embedded Linux как платформы ожидается по следующим направлениям:

  1. devtmpfs – инициализация устройств в ядре, позволяет оказаться от udev, что сильно ускоряет загрузку, и снимает необходимость в классических tar ball-ах с устройствами
  2. config-less initd – на embedded-устройствах, как правило, не нужен конфигурационный init, конфигурация может быть компилируемой и использовать системные вызовы для монтирования файловых систем и выполнения других действий без запуска сторонних процессов
  3. звуковая подсистема pulseaudio – может быть очень эффективным для энергопотребления для устройств в режиме медиа-плеера
  4. файловая система btrfs обеспечивает поддержку SSD-накопителей, а также возможность интеграции мгновенных снимков файловой системы с пакетным менеджером делает ее с каждым днем все привлекательнее
  5. файловые системы ubifs, logfs для NAND-памяти вытесняют устаревшие yaffs2 и jffs2
  6. контейнеры lxc и lxc с qemu-user могут быть очень удобны на этапе тестирования
  7. X Windows, OpenVG, OpenglES обеспечивают полноценный классический GUI
  8. программирование FGPA-матриц, благодаря наличию свободных и открытых устройств на рынке, позволит развиваться и этому направлению
  9. GSM/CDMA-катализатор “OpenMoko” запустил огромное количество проектов по реверс-инженирингу протоколов GSM и CDMA, и можно ожидать стандартного Linux на многих Android-телефонах
  10. Small Screen GUI: Linux необходимо огромное количество ПО, адаптированного под малые экраны, даже меньшие чем на нетбуках
  11. Qt (Nokia) and Enlightment (Samsung) становятся главными тулкитами для платформы Linux Embedded
  12. интеграция органайзер-ориентированного ПО с PC/web
  13. все более важным становится вопрос об изоляции приложений (application isolation) друг от друга; в этом направлении наиболее активно работает Nokia в рамках Maemo 6

Материалы к докладу