В процессе разработки, например, для Intel Edison или Galileo, может случиться так, что нужного для экспериментов устройства под рукой не оказалось. Похожее происходит и тогда, когда «железо» есть, но установленная на нём ОС не поддерживает всех необходимых для проекта возможностей. Что делать?
![](https://habrastorage.org/files/299/382/6ce/2993826ce39740d0b857843e67469f12.jpg)
Один из вариантов решения этой проблемы – запуск целевой операционной системы на виртуальной машине. На ней можно компилировать, развёртывать и тестировать программы. Сегодня поговорим о том, как создавать образы Yocto Linux, подходящие для запуска в виртуальных средах, например, в простом программном эмуляторе QEMU. Кроме того, подобные образы можно использовать в системах с гипервизорами, скажем, в Microsoft Hyper-V на Windows.
Для того, чтобы успешно освоить это руководство, вам понадобится следующее:
В качестве root-пользователя (или с использованием «sudo») выполните на компьютере следующую команду:
Примечание №1. Успешность выполнения этой команды зависит от версии Ubuntu/Debian, которой вы пользуетесь. Однако, вы вполне можете, для того, чтобы разрешить зависимости пакетов, воспользоваться «aptitude» и выполнить принудительную установку подходящих версий необходимых пакетов (например, такой командой: «aptitude install libsdl1.2-dev»).
Примечание №2. Для других дистрибутивов Linux, таких, как RedHat, CentOS, Fedora, SuSe, Gentoo, и так далее, мы бы посоветовали поискать подходящие версии вышеупомянутых пакетов с использованием соответствующего менеджера пакетов (например, zypper или yum).
Эти команды нужно выполнить в режиме обычного пользователя, root-привилегии не нужны.
Примечание №3. Здесь можно выбрать другую ветку релизов Yocto. В этом руководстве мы пользуемся Yocto Poky 2.0.14.0.0 (Jethro).
Примечание №4. Если вы хотите загрузить самый свежий релиз исходных кодов Yocto, можете обратиться к ветке master. При этом понадобится поменять пару команд из вышеприведённого листинга на следующие:
Примечание №5. Нужную ветку можно выбрать, используя её кодовое имя. Например, так:
Эта настройка очень проста, выполняется она с помощью скрипта от разработчиков Yocto.
После того, как вы запустите скрипт, и он успешно отработает, папка сборки станет новым рабочим пространством. Например, путь к этой папке может выглядеть так:
После исполнения скрипта из предыдущего шага был создан файл
Этот конфигурационный файл нужен для настройки BitBake, системы сборки Yocto (это центральный компонент Yocto Project).
Отредактируйте конфигурационный файл BitBake в любом текстовом редакторе, которым пользуетесь. Мы редактировали его в редакторе
В конфигурационном файле раскомментируйте следующие строки:
Советуем собирать образы, включая в них все доступные дополнительные возможности. Хотя в результате файлы образов получаются немаленькими (около 8 Гб каждый), они включают в себя всё, что только можно, и, как результат, подходят для любых задач разработки.
Сохраните изменения в файле
В ответ на них должен запуститься Hob (графический интерфейс для BitBake, основанный на GTK-2). Он приступит к проверке правильности настройки системы сборки.
![](https://habrastorage.org/getpro/habr/post_images/e28/d2c/958/e28d2c958c7a782b16491d4e2a84bb81.png)
Проверка настройки системы сборки
После проверки выберите из выпадающего меню, в качестве целевой системы, qemux86.
![](https://habrastorage.org/getpro/habr/post_images/f8b/a59/825/f8ba598250e5faac0a374dcc2b343741.png)
Выбор целевой системы
Подождите, пока Hob завершит разбор рецептов BitBake и сгенерирует дерево зависимостей. Затем выберите рецепт для целевого образа из соответствующего выпадающего списка. В нашем случае выбран полный образ без графического интерфейса:
![](https://habrastorage.org/getpro/habr/post_images/f81/cdd/a68/f81cdda68668eb4f5e0ef16e2d6e13f6.png)
Выбор рецепта для сборки образа
После этого щёлкните по кнопке «Advanced configuration».
![](https://habrastorage.org/getpro/habr/post_images/0bd/93f/3c1/0bd93f3c12b2aeef7ba6670c7e8d831e.png)
Переход к расширенным настройкам
На вкладке «Image types», в меню «Distro», выберите «poky», если хотите собрать самый свежий стабильный релиз. Затем, в списке «Image types», выберите желаемый формат образа. Обычно имеет смысл выбирать здесь «.iso», «.vdi» и «.vmdk». Образы в таких форматах наиболее удобны для практического использования.
![](https://habrastorage.org/getpro/habr/post_images/fa3/80c/303/fa380c30369581bb818400dabe3a9c04.png)
Выбор формата образа
На вкладке «Output» задайте настройки, соответствующие вашим потребностям. Советуем добавить в образ как минимум 4 Гб свободного пространства для включения SDK для архитектуры i686 (если вы экспериментируете с платой Edison). Кроме того, было обнаружено, что весьма полезно устанавливать «deb» в качестве формата корневой файловой системы. В итоге мы пришли к следующим настройкам.
![](https://habrastorage.org/getpro/habr/post_images/6f0/068/b6c/6f0068b6c6e835d52570970bd160293b.png)
Настройка образа
Теперь можете сохранить выполненные настройки, нажав на кнопку «Save», и, в основном окне, нажать на кнопку «Build Image» для запуска процесса сборки образа.
![](https://habrastorage.org/getpro/habr/post_images/150/828/ed0/150828ed05d668d537b9d28defc35298.png)
Запуск сборки
Hob запустит экземпляр
![](https://habrastorage.org/getpro/habr/post_images/eac/2c1/d82/eac2c1d82bca118a10729737246716ad.png)
Сборка
Примечание №6. Процесс сборки может занять очень много времени. Но, в зависимости от возможностей вашего компьютера, вы можете изменить число потоков, использующихся при сборке, настраивая параметры «BitBake parallel threads» и «Make parallel threads» в окне настроек Hob.
![](https://habrastorage.org/getpro/habr/post_images/4db/6ed/50d/4db6ed50df50b01d2d3d53010637994a.png)
Настройка количества потоков, использующихся при сборке
Примечание №7. И, наконец, при использовании Hob, у вас есть возможность выбрать, какие пакеты вы хотите включить в образ, который планируете собрать. Для того, чтобы это сделать, перед началом сборки образов, нажмите на кнопку «Edit image recipe».
![](https://habrastorage.org/getpro/habr/post_images/492/fdb/392/492fdb392a4e3d39384fefb989689c13.png)
Переход к настройке состава пакетов, включаемых в образ
В появившемся окне выберите пакеты, которые хотите добавить в образ.
![](https://habrastorage.org/getpro/habr/post_images/009/cb8/1ac/009cb81ac2cc07b7580ce5b11eac4b01.png)
Выбор пакетов
Когда процесс сборки образов завершится, вы можете тут же их опробовать! Для этого нажмите на кнопку «Run image». Hob запустит QEMU с только что собранным образом qemux86.
![](https://habrastorage.org/getpro/habr/post_images/6cd/184/cb0/6cd184cb094f040206c1f01d61a14cd3.png)
Образ собран и готов к запуску
В самом начале запуска система попросит задать пароль суперпользователя.
![](https://habrastorage.org/getpro/habr/post_images/8e4/409/cef/8e4409cef6971f598249aabb2b0c4b37.png)
Ввод пароля
Запустится ещё одно окно командной строки UNIX. В нём можно наблюдать за индикатором загрузки на фоне логотипа Yocto Project.
![](https://habrastorage.org/getpro/habr/post_images/f60/4c8/541/f604c854189634787440afe5561a84bd.jpg)
Загрузка
После загрузки вы можете войти в учётную запись root только что созданного образа Yocto. Помните о том, что, добавив параметр отладки (debug-tweak) в переменную EXTRA_IMAGE_FEATURES в файле conf/local.conf, вы сможете входить в систему как root-пользователь без пароля. В противном случае нужно будет задать пароль для root-пользователя в рецепте BitBake перед сборкой образа.
![](https://habrastorage.org/getpro/habr/post_images/285/ae1/331/285ae1331b162d63bf06ec46045c5233.png)
Вход в систему
Теперь всё готово для того, чтобы приступить к экспериментам с виртуальной машиной QEMU, на которой работает Yocto Linux.
Примечание №8. После сборки образа Yocto по методике, представленной выше, на диске будет занято 89,8 Гб.
![](https://habrastorage.org/getpro/habr/post_images/836/a53/0ac/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 и другие. Удачных экспериментов!
![](https://habrastorage.org/files/299/382/6ce/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/<your user>/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). Он приступит к проверке правильности настройки системы сборки.
![](https://habrastorage.org/getpro/habr/post_images/e28/d2c/958/e28d2c958c7a782b16491d4e2a84bb81.png)
Проверка настройки системы сборки
После проверки выберите из выпадающего меню, в качестве целевой системы, qemux86.
![](https://habrastorage.org/getpro/habr/post_images/f8b/a59/825/f8ba598250e5faac0a374dcc2b343741.png)
Выбор целевой системы
Подождите, пока Hob завершит разбор рецептов BitBake и сгенерирует дерево зависимостей. Затем выберите рецепт для целевого образа из соответствующего выпадающего списка. В нашем случае выбран полный образ без графического интерфейса:
core-image-full-cmdline
.![](https://habrastorage.org/getpro/habr/post_images/f81/cdd/a68/f81cdda68668eb4f5e0ef16e2d6e13f6.png)
Выбор рецепта для сборки образа
После этого щёлкните по кнопке «Advanced configuration».
![](https://habrastorage.org/getpro/habr/post_images/0bd/93f/3c1/0bd93f3c12b2aeef7ba6670c7e8d831e.png)
Переход к расширенным настройкам
На вкладке «Image types», в меню «Distro», выберите «poky», если хотите собрать самый свежий стабильный релиз. Затем, в списке «Image types», выберите желаемый формат образа. Обычно имеет смысл выбирать здесь «.iso», «.vdi» и «.vmdk». Образы в таких форматах наиболее удобны для практического использования.
![](https://habrastorage.org/getpro/habr/post_images/fa3/80c/303/fa380c30369581bb818400dabe3a9c04.png)
Выбор формата образа
На вкладке «Output» задайте настройки, соответствующие вашим потребностям. Советуем добавить в образ как минимум 4 Гб свободного пространства для включения SDK для архитектуры i686 (если вы экспериментируете с платой Edison). Кроме того, было обнаружено, что весьма полезно устанавливать «deb» в качестве формата корневой файловой системы. В итоге мы пришли к следующим настройкам.
![](https://habrastorage.org/getpro/habr/post_images/6f0/068/b6c/6f0068b6c6e835d52570970bd160293b.png)
Настройка образа
Теперь можете сохранить выполненные настройки, нажав на кнопку «Save», и, в основном окне, нажать на кнопку «Build Image» для запуска процесса сборки образа.
![](https://habrastorage.org/getpro/habr/post_images/150/828/ed0/150828ed05d668d537b9d28defc35298.png)
Запуск сборки
Hob запустит экземпляр
bitbake core-image-full-cmdline
с заданными настройками.![](https://habrastorage.org/getpro/habr/post_images/eac/2c1/d82/eac2c1d82bca118a10729737246716ad.png)
Сборка
Примечание №6. Процесс сборки может занять очень много времени. Но, в зависимости от возможностей вашего компьютера, вы можете изменить число потоков, использующихся при сборке, настраивая параметры «BitBake parallel threads» и «Make parallel threads» в окне настроек Hob.
![](https://habrastorage.org/getpro/habr/post_images/4db/6ed/50d/4db6ed50df50b01d2d3d53010637994a.png)
Настройка количества потоков, использующихся при сборке
Примечание №7. И, наконец, при использовании Hob, у вас есть возможность выбрать, какие пакеты вы хотите включить в образ, который планируете собрать. Для того, чтобы это сделать, перед началом сборки образов, нажмите на кнопку «Edit image recipe».
![](https://habrastorage.org/getpro/habr/post_images/492/fdb/392/492fdb392a4e3d39384fefb989689c13.png)
Переход к настройке состава пакетов, включаемых в образ
В появившемся окне выберите пакеты, которые хотите добавить в образ.
![](https://habrastorage.org/getpro/habr/post_images/009/cb8/1ac/009cb81ac2cc07b7580ce5b11eac4b01.png)
Выбор пакетов
Когда процесс сборки образов завершится, вы можете тут же их опробовать! Для этого нажмите на кнопку «Run image». Hob запустит QEMU с только что собранным образом qemux86.
![](https://habrastorage.org/getpro/habr/post_images/6cd/184/cb0/6cd184cb094f040206c1f01d61a14cd3.png)
Образ собран и готов к запуску
В самом начале запуска система попросит задать пароль суперпользователя.
![](https://habrastorage.org/getpro/habr/post_images/8e4/409/cef/8e4409cef6971f598249aabb2b0c4b37.png)
Ввод пароля
Запустится ещё одно окно командной строки UNIX. В нём можно наблюдать за индикатором загрузки на фоне логотипа Yocto Project.
![](https://habrastorage.org/getpro/habr/post_images/f60/4c8/541/f604c854189634787440afe5561a84bd.jpg)
Загрузка
После загрузки вы можете войти в учётную запись root только что созданного образа Yocto. Помните о том, что, добавив параметр отладки (debug-tweak) в переменную EXTRA_IMAGE_FEATURES в файле conf/local.conf, вы сможете входить в систему как root-пользователь без пароля. В противном случае нужно будет задать пароль для root-пользователя в рецепте BitBake перед сборкой образа.
![](https://habrastorage.org/getpro/habr/post_images/285/ae1/331/285ae1331b162d63bf06ec46045c5233.png)
Вход в систему
Теперь всё готово для того, чтобы приступить к экспериментам с виртуальной машиной QEMU, на которой работает Yocto Linux.
Примечание №8. После сборки образа Yocto по методике, представленной выше, на диске будет занято 89,8 Гб.
![](https://habrastorage.org/getpro/habr/post_images/836/a53/0ac/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 и другие. Удачных экспериментов!
Поделиться с друзьями
Комментарии (10)
nikolay_karelin
24.06.2016 12:42+1Немного не в тему, но аж свербит вопрос: а где взять в хорошем качестве выкройку Тукса, которая в начале статьи?
hoary
24.06.2016 12:43Общепринятым способом указывать, что команда должна выполняться от имени суперпользователя, является знак решетки "#" в начале команды. В противном случае в начале команды указывается знак доллара "$".
JackMonterey
Hob хорош только для первого знакомства: «ага, образ собрался… и что там такое?», больше он никогда и не для чего не нужен. И его уже исключили из Yocto, начиная с 2.1, вместо него теперь тостер, который фактически представляет из себя билд-сервер.
yocto раскрывается в полной красе, когда создаешь свой дистрибутив: создаешь свой слой, в котором и ведется все работа, начиная с дополнений образов по-умолчанию и заканчивая рецептами новых пакетов. Безумно удобная штука, можно собрать как совсем мелкий образ, так и жирненький, с Х и браузером… На git.yoctoproject.org есть куча слоев об большинства крупных вендоров, и это сильно расширяет набор доступных пакетов
очень советую поставить авто дополнение для битбэйка: github.com/sergioprado/bitbake-bash-completion
uSasha
Я Hob не использовал, сразу начал с Toaster-а.
Действительно у него шире возможности?
Я некоторых вещей не нашел, например задавал в каком виде я хочу получить rootfs уже в текстовом редакторе.