Установка и начало работы c MeeGo SDK в Debian GNU/Linux 6.0

В данной статье описана установка MeeGo SDK в операционной системе Debian GNU/Linux 6.0 (Squeeze) из репозиториев MeeGo и подготовка к разработке с его использованием. Несмотря на то, что специально собранных пакетов для Debian 6.0 не предоставляется, можно использовать пакеты для Debian 5.0, если учесть некоторые особенности дистрибутива и поставляемых пакетов. В статье описаны следующие процедуры:


  • Проверка наличия поддержки аппаратной виртуализации
  • Конфигурирование репозиториев
  • Установка SDK и сборочных окружений
  • Установка и запуск образов MeeGo
  • Тестирование правильности установки




Проверка наличия поддержки аппаратной виртуализации



Перед началом работы необходимо проверить, что процессор компьютера, на который производится установка, поддерживает аппаратную виртуализацию (VT-x, AMD-v). Последняя необходима для запуска эмулятора с образом операционной системы MeeGo.



Чтобы проверить наличие аппаратной виртуализации необходимо выполнить команду

egrep '^flags.*(vmx|svm)' /proc/cpuinfo

Наличие любых строк в выводе команды свидетельствует о наличии аппаратной виртуализации. Иногда аппаратную виртуализацию необходимо предварительно включить в BIOS.



Кроме того, имеет смысл проверить, загружен ли модуль поддержки аппаратной виртуализации (в некоторых случаях он не загружается автоматически) с помощью команды

lsmod | grep kvm

Если в результате выполнения данной команды не было получено никакого вывода, то следует загрузить необходимый модуль командой

sudo modprobe kvm_intel

на платформе Intel или

sudo modprobe kvm_amd

на платформе AMD.



Для того, чтобы модуль загружался автоматически можно установить пакет qemu-kvm, доступный в репозиториях Debian:

sudo apt-get install qemu-kvm


Конфигурирование репозиториев



Добавляем строку с адресами репозиториев в файл /etc/apt/sources.list:

deb http://repo.meego.com/MeeGo/sdk/host/repos/debian/5.0/ /
deb http://ftp.ru.debian.org/debian unstable main

Последняя строка нужна, потому что MeeGo SDK зависит от пакета libmpfr1ldbl, который отсутствует в Debian Squeeze, но есть в Unstable. После установки SDK эту строку следует убрать!



Теперь добавляем публичный ключ, выполнив команды

sudo gpg --keyserver pgpkeys.mit.edu --recv 0BC7BEC479FC1F8A
sudo gpg --export --armor 0BC7BEC479FC1F8A | sudo apt-key add -

Обновляем список пакетов

sudo apt-get update


Установка SDK и сборочных окружений (targets)



Собственно установка SDK выполняется командой

sudo apt-get install meego-sdk

После того, как SDK установлен, необходимо установить сборочные окружения (targets), необходимые для компиляции приложений под различные платформы. Список доступных сборочных окружений можно получить с помощью команды

mad list targets

Ниже указано назначение различных сборочных окружений:

  • meego-core-armv7l-1.1.2 — сборка приложений на платформе armel (Nokia N900)
  • meego-handset-ia32-1.1.2 — сборка приложений для MeeGo Handset (Aava)
  • meego-netbook-ia32-1.1.2 — сборка приложений для MeeGo Netbook



Актуальной версией на момент написания статьи была версия 1.1.2.



Для установки окружения используется команда mad-admin. Например, для установки сборочного окружения для нетбуков используется команда

sudo mad-admin create -f meego-netbook-ia32-1.1.2


Перекомпиляция qemu-gl



Для запуска операционной системы MeeGo внутри хостовой операционной системы используется версия эмулятора (виртуальной машины) QEmu со специфическими патчами, позволяющими использовать аппаратное ускорение графики (OpenGL).



К сожалению, автоматически устанавливаемая из deb-пакета версия эмулятора qemu-gl содержит ряд ошибок (например, эта ошибка), из-за которой запуск или корректное функционирование эмулятора оказывается невозможными. Поэтому требуется перекомпиляция qemu-gl из исходных текстов, которые можно взять из git-репозитория.



Перед компиляцией необходимо установить следующие пакеты:

sudo apt-get install libsdl-dev libexpat1-dev libxcomposite-dev





Получение, компиляция и установка осуществляются с помощью следующих команд:

git clone git://gitorious.org/meego-developer-tools/meego-emulator-qemugl-x86.git
cd meego-emulator-qemugl-x86
git checkout -b qemu-gl-1.1 --track origin/qemu-gl-1.1
./configure --target-list=i386-softmmu --enable-gl --enable-skinning --prefix=/opt/meego/qemu-gl
make
sudo make install

В процессе установки произойдёт замена эмулятора, установленного из пакета, на эмулятор, собранный из исходников.


Установка и запуск сред выполнения MeeGo (runtimes)



Среда выполнения (runtime) представляет собой образ операционной системы MeeGo для запуска на эмуляторе Qemu.

Установка сред выполнения во многом аналогична установке сборочных окружений. Список доступных сред можно получить командой

mad list runtimes

Для установки образов MeeGo для мобильных устройств и нетбуков соответственно используются команды:

sudo mad-admin create -f -e meego-handset-ia32-qemu-1.1.2-runtime
sudo mad-admin create -f -e meego-netbook-ia32-qemu-1.1.2-runtime

Запуск эмулятора с файлом образа MeeGo для нетбуков осуществляется командой

mad remote -r meego-netbook-ia32-qemu-1.1.2-runtime poweron

Для завершения работы эмулятора используется команда

mad remote -r meego-netbook-ia32-qemu-1.1.2-runtime poweroff

Соответствующие команды для образа MeeGo Handset аналогичны.



С запущенной средой выполнения можно взаимодействовать через ssh:

ssh meego@localhost -p6666

Доступны две учётные записи: суперпользователя (root) и обычного пользователя (meego). Пароль в обоих случаях одинаковый — meego.



Примечание. Нередко из-за различных ошибок эмулятор не запускается. В этом случае выводится сообщение

Starting QEMU runtime meego-netbook-ia32-qemu-1.1.2-runtime
This may take some time ...

и больше ничего не происходит. Это связано с тем, что утилита mad препятствует выводу сообщений об ошибках, выдаваемых QEmu. В этом случае можно перейти в каталог, содержащий необходимый образ, и запустить QEmu непосредственно. Например:

cd /usr/lib/madde/linux-i686/runtimes/meego-netbook-ia32-qemu-1.1.2-runtime
. ./information ; $qemu $qemu_args

Отмечу, что данный способ запуска не позволяет установить ssh-соединение со средой выполнения, однако, для выявления возможных проблем он может быть полезным.



Проблемам установки посвящена wiki-страница. В ближайшее время на meego.e-werest.org будет подготовлен её перевод.


Тестирование правильности установки



В качестве теста правильности установки предлагается выполнить компиляцию проекта «Hello world» с последующим запуском его в эмуляторе.



Создание и компиляция проекта осуществляются с помощью следующих команд:

mad -t meego-netbook-ia32-1.1.2 pscreate -t qt-simple qthello
cd qthello
mad -t meego-netbook-ia32-1.1.2 qmake
mad -t meego-netbook-ia32-1.1.2 make

Для проверки правильности платформы, под которую было скомпилировано приложение, выполним

file build/qthello

Вывод команды должен выглядеть так:

build/qthello: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.25, not stripped

Запускаем Qemu с соответствующим файлом образа:

mad remote -r meego-netbook-ia32-qemu-1.1.2-runtime poweron

Передаём бинарный файл в виртуальную машину с помощью sftp (пароль meego):

sftp -P6666  meego@localhost
put build/qthello
exit

Теперь выполним подключение к виртуальной машине через ssh (пароль meego) и запуск скомпилированного приложения:

ssh meego@localhost -p6666
DISPLAY=:0 ./qthello

Для того, чтобы увидеть окно приложения, нужно переключиться на представление Zones в интерфейсе MeeGo.