[Перевод] Запускаем Yocto Linux на виртуальной машине

В процессе разработки, например, для Intel Edison или Galileo, может случиться так, что нужного для экспериментов устройства под рукой не оказалось. Похожее происходит и тогда, когда «железо» есть, но установленная на нём ОС не поддерживает всех необходимых для проекта возможностей. Что делать?

2993826ce39740d0b857843e67469f12.jpg


Один из вариантов решения этой проблемы — запуск целевой операционной системы на виртуальной машине. На ней можно компилировать, развёртывать и тестировать программы. Сегодня поговорим о том, как создавать образы Yocto Linux, подходящие для запуска в виртуальных средах, например, в простом программном эмуляторе QEMU. Кроме того, подобные образы можно использовать в системах с гипервизорами, скажем, в Microsoft Hyper-V на Windows.

Предварительные требования


Для того, чтобы успешно освоить это руководство, вам понадобится следующее:

  • ОС Debian/Ubuntu (протестировано на Debian 8.2. amd64).
  • Подключение к интернету.
  • Как минимум 100 Гб свободного пространства на жёстком диске.


Подготовка компьютера


В качестве root-пользователя (или с использованием «sudo») выполните на компьютере следующую команду:

# apt-get install wget git-core unzip make gcc g++ build-essential subversion sed autoconf automake texi2html texinfo coreutils diffstat python-pysqlite2 docbook-utils libsdl1.2-dev libxml-parser-perl libgl1-mesa-dev libglu1-mesa-dev xsltproc desktop-file-utils chrpath groff libtool xterm gawk fop


Примечание №1. Успешность выполнения этой команды зависит от версии Ubuntu/Debian, которой вы пользуетесь. Однако, вы вполне можете, для того, чтобы разрешить зависимости пакетов, воспользоваться «aptitude» и выполнить принудительную установку подходящих версий необходимых пакетов (например, такой командой: «aptitude install libsdl1.2-dev»).

Примечание №2. Для других дистрибутивов Linux, таких, как RedHat, CentOS, Fedora, SuSe, Gentoo, и так далее, мы бы посоветовали поискать подходящие версии вышеупомянутых пакетов с использованием соответствующего менеджера пакетов (например, zypper или yum).

Шаг первый. Настройка рабочей директории


Эти команды нужно выполнить в режиме обычного пользователя, root-привилегии не нужны.

# cd
# mkdir yocto-2.0
# cd yocto-2.0
# wget http://downloads.yoctoproject.org/releases/yocto/yocto-2.0/poky-jethro-14.0.0.tar.bz2
# tar xvjf poky-jethro-14.0.0.tar.bz2
# cd poky-jethro-14.0.0/


Примечание №3. Здесь можно выбрать другую ветку релизов Yocto. В этом руководстве мы пользуемся Yocto Poky 2.0.14.0.0 (Jethro).

Примечание №4. Если вы хотите загрузить самый свежий релиз исходных кодов Yocto, можете обратиться к ветке master. При этом понадобится поменять пару команд из вышеприведённого листинга на следующие:

# git clone git://git.yoctoproject.org/poky.git
# cd poky


Примечание №5. Нужную ветку можно выбрать, используя её кодовое имя. Например, так:

# git clone -b jethro git://git.yoctoproject.org/poky.git


Шаг второй. Настройка переменных окружения


Эта настройка очень проста, выполняется она с помощью скрипта от разработчиков Yocto.

# . ./oe-init-build-env


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

/home//yocto-2.0/poky-jethro-14.0.0/build/.


Шаг третий. Настройка BitBake


После исполнения скрипта из предыдущего шага был создан файл conf/local.conf.

Этот конфигурационный файл нужен для настройки BitBake, системы сборки Yocto (это центральный компонент Yocto Project).

Отредактируйте конфигурационный файл BitBake в любом текстовом редакторе, которым пользуетесь. Мы редактировали его в редакторе nano. Это — простой консольный текстовый редактор для Unix-сред. Запускается он так:

# cd conf/
# nano local.conf


В конфигурационном файле раскомментируйте следующие строки:

DL_DIR ?= "${TOPDIR}/downloads"
SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
TMPDIR ?= "${TOPDIR}/tmp"
SDKMACHINE ?= "i686"


Советуем собирать образы, включая в них все доступные дополнительные возможности. Хотя в результате файлы образов получаются немаленькими (около 8 Гб каждый), они включают в себя всё, что только можно, и, как результат, подходят для любых задач разработки.

EXTRA_IMAGE_FEATURES = "dbg-pkgs dev-pkgs ptest-pkgs tools-sdk tools-debug eclipse-debug tools-profile tools-testapps debug-tweaks"


Сохраните изменения в файле local.conf. В нашем случае это делается с помощью комбинации клавиш Ctrl+X. Теперь выполните следующие команды:

# cd ..
# hob


В ответ на них должен запуститься Hob (графический интерфейс для BitBake, основанный на GTK-2). Он приступит к проверке правильности настройки системы сборки.

e28d2c958c7a782b16491d4e2a84bb81.png
Проверка настройки системы сборки

После проверки выберите из выпадающего меню, в качестве целевой системы, qemux86.

f8ba598250e5faac0a374dcc2b343741.png


Выбор целевой системы

Подождите, пока Hob завершит разбор рецептов BitBake и сгенерирует дерево зависимостей. Затем выберите рецепт для целевого образа из соответствующего выпадающего списка. В нашем случае выбран полный образ без графического интерфейса: core-image-full-cmdline.

f81cdda68668eb4f5e0ef16e2d6e13f6.png


Выбор рецепта для сборки образа

После этого щёлкните по кнопке «Advanced configuration».

0bd93f3c12b2aeef7ba6670c7e8d831e.png


Переход к расширенным настройкам

На вкладке «Image types», в меню «Distro», выберите «poky», если хотите собрать самый свежий стабильный релиз. Затем, в списке «Image types», выберите желаемый формат образа. Обычно имеет смысл выбирать здесь ».iso»,».vdi» и ».vmdk». Образы в таких форматах наиболее удобны для практического использования.

fa380c30369581bb818400dabe3a9c04.png


Выбор формата образа

На вкладке «Output» задайте настройки, соответствующие вашим потребностям. Советуем добавить в образ как минимум 4 Гб свободного пространства для включения SDK для архитектуры i686 (если вы экспериментируете с платой Edison). Кроме того, было обнаружено, что весьма полезно устанавливать «deb» в качестве формата корневой файловой системы. В итоге мы пришли к следующим настройкам.

6f0068b6c6e835d52570970bd160293b.png


Настройка образа

Теперь можете сохранить выполненные настройки, нажав на кнопку «Save», и, в основном окне, нажать на кнопку «Build Image» для запуска процесса сборки образа.

150828ed05d668d537b9d28defc35298.png


Запуск сборки

Hob запустит экземпляр bitbake core-image-full-cmdline с заданными настройками.

eac2c1d82bca118a10729737246716ad.png


Сборка

Примечание №6. Процесс сборки может занять очень много времени. Но, в зависимости от возможностей вашего компьютера, вы можете изменить число потоков, использующихся при сборке, настраивая параметры «BitBake parallel threads» и «Make parallel threads» в окне настроек Hob.

4db6ed50df50b01d2d3d53010637994a.png


Настройка количества потоков, использующихся при сборке

Примечание №7. И, наконец, при использовании Hob, у вас есть возможность выбрать, какие пакеты вы хотите включить в образ, который планируете собрать. Для того, чтобы это сделать, перед началом сборки образов, нажмите на кнопку «Edit image recipe».

492fdb392a4e3d39384fefb989689c13.png


Переход к настройке состава пакетов, включаемых в образ

В появившемся окне выберите пакеты, которые хотите добавить в образ.

009cb81ac2cc07b7580ce5b11eac4b01.png


Выбор пакетов

Когда процесс сборки образов завершится, вы можете тут же их опробовать! Для этого нажмите на кнопку «Run image». Hob запустит QEMU с только что собранным образом qemux86.

6cd184cb094f040206c1f01d61a14cd3.png


Образ собран и готов к запуску

В самом начале запуска система попросит задать пароль суперпользователя.

8e4409cef6971f598249aabb2b0c4b37.png


Ввод пароля

Запустится ещё одно окно командной строки UNIX. В нём можно наблюдать за индикатором загрузки на фоне логотипа Yocto Project.

f604c854189634787440afe5561a84bd.jpg


Загрузка

После загрузки вы можете войти в учётную запись root только что созданного образа Yocto. Помните о том, что, добавив параметр отладки (debug-tweak) в переменную EXTRA_IMAGE_FEATURES в файле conf/local.conf, вы сможете входить в систему как root-пользователь без пароля. В противном случае нужно будет задать пароль для root-пользователя в рецепте BitBake перед сборкой образа.

285ae1331b162d63bf06ec46045c5233.png


Вход в систему

Теперь всё готово для того, чтобы приступить к экспериментам с виртуальной машиной QEMU, на которой работает Yocto Linux.

Примечание №8. После сборки образа Yocto по методике, представленной выше, на диске будет занято 89,8 Гб.

836a530acb1c327b5f39f9325e24ca24.png


Размер данных, сгенерированных при сборке образов

Итоги


Образы Yocto Linux, сгенерированные при сборке, можно найти по адресу »~/yocto-2.0/poky-jethro-14.0.0/build/tmp/deploy/images/qemux86/*». Здесь, в зависимости от настроек, могут быть файлы в различных форматах. Например, файлы .iso, .vmdk, .vdi.

Теперь вы можете запускать полученные образы, используя эмулятор или гипервизор, которым обычно пользуетесь. Среди них — Microsoft Hyper-V, VMware Fusion, VirtualBox и другие. Удачных экспериментов!

© Habrahabr.ru