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