Установка Virt2real SDK — различия между версиями

Материал из virt2real wiki
Перейти к: навигация, поиск
(Новая страница: «Для создания готовых решений на базу Virt2Real необходимо использовать систему сборки встра…»)
 
 
(не показаны 14 промежуточных версий 2 участников)
Строка 1: Строка 1:
Для создания готовых решений на базу Virt2Real необходимо использовать систему сборки встраиваемых дистрибутивов  [http://buildroot.uclibc.org/ buildroot].
+
Основной Virt2real SDK выложен на Github [https://github.com/virt2real/ https://github.com/virt2real]
Все исходные коды проекта можно посмотреть на [https://github.com/organizations/virt2real GitHub]-е.
+
+
=  Что такое buildroot на пальцах =
+
  
Для любой встраиваемой системы (термин не очень подходит для нашего случая, но уже устоялся и применяется в том числе и в контексте пользовательских устройств — ваш телефон или медиа-центр на Андроиде имеет примерно такую же структуру) необходимо три основных программных компонента:
 
* загрузчик (bootloader),
 
* ядро (kernel),
 
* образ файловой системы (FS).
 
  
Все это хозяйство помещается на флешку или в NAND-память устройства и потом, как в одной очень старой книге — загрузчик загружает ядро, ядро цепляет ФС и стартует окружение пользователя. Тут полно нюансов.
 
  
Ядро — это прослойка между железом и софтом. В нем драйверы, управление памятью, планировщики ввода вывода и процессов на исполнение. Интерфейс ядра стандартен и в рамках ветки обычно не меняется. Мы одинаково успешно можем использовать 2.6.32, 2.6.34, 3.0.9 и 3.9.0. Эти версии отличаются — количеством драйверов (количеством поддерживаемого оборудования) и функциональными улучшениями и переработками. Но интерфейс пользовательского окружения — нерушим.
+
== Термины ==
  
Файловая система содержит init-процесс, который
+
'''SDK''' - Software Development Kit - комплект средств разработки.
* запускает системные фоновые службы (демоны),
+
* стартует программную оболочку для консоли.
+
Тут много всего, начиная с библиотек для разработки, заканчивая прикладными утилитами. По сути, это то, что составляет собой дистрибутив — набор ПО для конечного использования. В современных системах место принято экономить, поэтому вместо тонны утилит используется busybox и прочие легкие альтернативы.
+
  
Buildroot — это система построения готовых наборов ПО для встраиваемых систем. Она поддерживает кучу плат и результатом ее работы становятся собранные загрузчик, ядро и образ ФС (или архив, как настроить). Она, если говорить очень обобщенно, содержит набор Makefile-ов и консольной меню для конфигурирования оных.
+
'''SDK Virt2real''' - комплект средств разработки под платформу Virt2real.
  
В общем случае buildroot сам создает toolchains (т.е. собирает кросс-компилятор и прочие утилиты для сборки кода), в частном — может пользоваться готовым. Принцип простой: сначала собираем систему сборки, потом скачиваем исходный код выбранного ПО(скачиваются как tar.gz архивы, так и git и hg-репозитории), собираем, формируем ФС, после чего собираем ядро и дособираем что остается. Никакой исходный код, в т.ч. и ядра в состав buildroot-а не входят. Все скачивается во время сборки.
+
'''DVSDK''' - Digital Video Software Development Kit - SDK видеоподсистемы для процессоров фирмы Texas Instruments
  
Конфигурирование buildroot-a очень похоже на конфигурирование ядра. В корне лежит .config, который и есть текущая настройка. Соответственно, для распределенной работы над сборкой конкретного дистрибутива надо синхронизировать этот файл, например, через систему контроля версий.
 
  
А что если туда надо добавить софт, которого там нет? Тут есть варианты. Первый — мы собираем типовой дистрибутив из того, что есть, а потом руками при помощи кросс-компилятора собираем и подпихиваем нужное ПО (если оно уже собрано — то только подпихиваем) прямо в готовый образ, второй — делаем пакет для buidroot-а, который включаем в конфигурацию. В этом случае надо через систему контроля версий, помимо конфигурационного файла, таскать еще и файлы пакета.
 
  
Теперь что касается ядра. У ядра есть набор возможностей в виде поддерживаемого оборудования и конфигурационный файл. Последний говорит, что именно из ядра мы включаем в сборку. Добавление драйвера в ядро предполагает, что помимо исходного кода будут добавлены изменения в файлы конфигурирования, а при сборке это драйвер будет помечен как необходимый для включения в состав конечного шмата байтиков.
+
== Состав Virt2real SDK ==
  
Ядро может собираться монолитно (т.е. включать в себя полный комплект функций и драйверов) в виде единого uImage, а может быть собрано с подгружаемыми модулями, которые могут загружаться или выгружаться в момент исполнения. Я стороник первого подхода (потому что мы получаем, что весь фарш уже в памяти и не надо ничего дополнительно грузить, а тем более проверять, загружено это или нет), но, как известно, у производителей оборудования зачастую свое мнение, как их дравера должны поставляться в ядро. Поэтому зачастую дополнительные модули идут уже в собранном виде, как было с модулем wi-fi на предсерийных образцах, когда их остается только пристыковать к текущему ядру, чтотак же можно сделать как пакет buildroot-а. Но, разумеется, эта практика не всегда полезна. Например, настройки платы надо собирать жестко в ядро, поэтому дело решается патчами к ядру с последующим пробросом их в репозиторий.
+
SDK Virt2real состоит из нескольких компонентов:
  
= Текущая система сборки =
+
'''Ядро''' (./kernel) - Linux
  
Для того, чтобы разрабатывать под SoC DM365 компания TI предлагает использовать либо коммерческие сервисы и пакеты разработки, как например RidgeRun SDK или MontaVista embedded Linux, так и открытые проекты, которые, как и следовало ожидать, далеки от коммерческих аналогов. Кроме того, помимо особенностей SoC (в нашем случае — наличие на кристалле DSP) в ядре ОС, существует вопрос поддержки этих возможностей в пользовательском окружении. Сюда же можно отнести и аппаратно усиленные аудио-видео кодеки и фильтры обработки изображений, которые поставляются исключительно в виде бинарных модулей, что сильно затрудняет их использование вне заранее оговоренной среды.
+
'''Файловая система''' (./fs) - на базе Buildroot
  
Другая особенность разработки под DM365 в том, что есть открытая версия ядра linux-davinci, которая периодически синхронизируется с основной веткой ядра и в которой наличествует поддержка для всех SoC семейства Da Vinci в большей или меньшей степени.
+
'''Загрузчик''' (./bootloader) - U-Boot
  
На фоне такого «разнообразия» очень сложно осуществить какой-либо однозначный выбор для решения конкретных прикладных задач, поэтому работа ведется во множестве направлений, что можно посмотреть на GitHub-аккаунте Virt2Real. Далее я коснусь разработки в рамках представленного там кода.
+
'''DVSDK''' (./dvsdk)
  
У нас имеются две рабочих версии buildroot-а, которые можно использовать с разными требованиями по уровню устойчивости к провалам.
+
'''Компилятор''' (./codesourcery) - CodeSourcery
  
Первая версия — немного доработанный для Virt2real дистрибутив dm36x-buildroot, развиваемый Френком Ханлетом (Frank Hunleth), который предназначен для сборки Линукса под leopardboard, построенной на том же DM365. Есть предположение, что в основе этой сборки лежит набор патчей к ядру, buildroot плюс сведения о создании загрузочных флеш-накопителей, доведенный до состояния «можно использовать». Мы перенесли этот и смежные репозитории к себе на Github и немного их доработали. Теперь для сборки необходимо выполнить следующую последовательность команд.
+
'''Панель управления''' (она же Админка, она же Вебморда, она же Панель управления) (./adminka) - Самописный веб-интерфейс
  
<pre>
 
sudo apt-get install git-core bison flex g++ gettext texinfo libncurses5-dev pv libssl-dev lzop gawk
 
git clone git://github.com/virt2real/dm36x-buildroot.git
 
cd dm36x-buildroot
 
make virt2real_v1_mass_defconfig
 
make menuconfig
 
make
 
</pre>
 
  
Если нам после процесса сборки потребуется каким-либо образом сконфигурировать ядро (допустим, добавить дополнительные драйверы устройств), то это делается при помощи команды make linux-menuconfig с последующим make.
 
  
Результат выполнения операций (в случае успешной сборки) будет находится в том же каталоге в виде leopardboard-XXXXXXXX.fw, который будет, по сути, zip-архивом, содержащем bootloader-ы и образ файловой системы, готовые для распаковки на флешку. Это делается следующими командами (стоит ли уточнять, что /dev/sdc — это microSD, а промах может быть весьма болезненный)
+
== Системные требования для установки SDK Virt2real ==
  
<pre>
+
1. Операционная система на базе Linux. Проверена работа на системах Ubuntu 10.04 и выше. В остальных дистрибутивах Linux возможно потребуется доработка напильником. В Ubuntu 14.04 замечен [http://forum.virt2real.ru/viewtopic.php?p=19920&sid=9d80391abd645bf1e0c332a46293c9bc#p19920 интересный баг].
sudo -i
+
apt-get install pv
+
umount /dev/sdc1
+
unzip -p leopardboard_25042013.fw install.sh | sh -s - -a leopardboard_25042013.fw -d /dev/sdc -f
+
</pre>
+
  
После завершения процесса устанавливаем карту в Виртурилку, подключаем консоль, загружаемся. С большой долей вероятности можно будет увидеть вполне работоспособную среду. Можно приступать к экспериментам.
+
2. Персональный компьютер. Выбирается по принципу - чем шустрее проц тем быстрее SDK собираться будет.
  
Вторая версия сейчас в процессе разработки, поэтому пользоваться ей пока не рекомендуется.
+
3. Оперативная память - см. пункт 2.
 +
 
 +
4. Свободное место на жёстком диске - чем больше тем лучше. SDK после сборки в почти минимальной конфигурации занимает почти 7 гигабайт.
 +
 
 +
5. Прямые руки
 +
 
 +
6. Пункт 5 из нужного места
 +
 
 +
 
 +
 
 +
== Процесс установки ==
 +
 
 +
1. Перед началом работы с SDK требуется установить некоторый софт
 +
sudo apt-get install git bash make flex bison gcc g++ gettext texinfo u-boot-tools ncurses-dev mercurial \
 +
subversion unzip groff bc dosfstools
 +
Для сборки под архитектурой x86_64 может также потребоваться
 +
sudo apt-get install libc6-i386
 +
 
 +
2. Главный управляющий файл virt2real SDK - Makefile. Пользоваться им очень легко - достаточно скачать Makefile в какой-нибудь каталог, например, /opt/virt2real-sdk (при установке из-под учётки суперпользователя) или /home/{username}/virt2real-sdk (при установке из-под учётной записи обычного пользователя).
 +
 
 +
git clone https://github.com/virt2real/install-sdk.git /opt/virt2real-sdk
 +
 
 +
3. Теперь надо перейти в этот каталог. Далее в инструкции мы будем оперировать только содержимым этого каталога, так что назовём его корневым каталогом SDK.
 +
 
 +
  cd /opt/virt2real-sdk
 +
 
 +
4. В Убунте симлинк /bin/sh по-умолчанию ссылается на /bin/dash, для корректной работы хорошо бы переделать на bash. Делается это следующими командами
 +
 
 +
  rm /bin/sh
 +
  ln -s /bin/bash /bin/sh
 +
 
 +
После этого можно приступать к работе с SDK.
 +
 
 +
Помимо мейкфайла (Makefile) в получившемся каталоге появится несколько шелл-скриптов, служащих для упрощения выполнения типовых операций с SDK.
 +
 
 +
То что вы скачали командой git clone (мейкфайл и несколько шелл-скриптов) не являются SDK как таковым. Это лишь командные файлы, которые позволяют автоматически скачать все нужные компоненты SDK и настроить их.
 +
 
 +
== Скачивание компонентов SDK ==
 +
 
 +
1. Итак, сначала надобно скачать все компоненты SDK, это делается командой
 +
 
 +
  make getsdk
 +
 
 +
Довольно долго будет скачиваться, имейте терпение. После того как всё скачалось, можно конфигурировать и далее в том же духе...
 +
 
 +
2. Загружаем делаем конфигурацию по-умолчанию. Очень важный пункт, без него ничего не соберётся.
 +
 
 +
  make defconfig
 +
 
 +
3. Собираем все компоненты SDK автоматически, поочерёдно
 +
 
 +
  make build
 +
 
 +
Первая полная сборка может занять довольно много времени, наберитесь терпения. На тестовой виртуальной машине первая сборка заняла полтора часа
 +
 
 +
4. После этого в Makefile правим переменную SDNAME, чтобы она содержала название девайса SD карточки, например
 +
 
 +
  SDNAME=/dev/sdc
 +
 
 +
'''!!! АХТУНГ !!!''' Если вы ошиблись буковкой и вместо /dev/sdc вбили, допустим, /dev/sdb - велика вероятность того что установщик затрёт содержимое вашего второго жёсткого диска (если он есть, конечно). Так что трижды проверьте правильное название устройства, которым операционная система определяет вашу флэш-карту.
 +
 
 +
5. Теперь устанавливаем всё на micro-SD карточку
 +
 
 +
  make install
 +
 
 +
 
 +
6. После установки micro-SD карточка будет содержать два раздела - boot и rootfs. Оба они будут смонтированы в подкаталоге images корневого каталога SDK.
 +
 
 +
Можно сразу зайти туда и поправить нужные конфиги, если это требуется. Например, можно сразу исправить параметры подключения Wi-Fi (файл /etc/wpa_supplicant.conf)
 +
 
 +
Далее надо размонтировать флеш-карточку. Для этого в корневом каталоге SDK есть скрипт CARD_UMOUNT.sh Ну или обычной командой umount, кому как удобнее.
 +
 
 +
./CARD_UMOUNT.sh
 +
 
 +
Всё, теперь можно вытаскивать флеш-карточку из компьютера и вставлять в Виртурилку.
 +
 
 +
 
 +
 
 +
== Полный список команд мейкфайла ==
 +
 
 +
показать хелп (список параметров)
 +
make
 +
 
 +
 
 +
самая первая команда, скачивает все необходимые компоненты SDK
 +
make getsdk
 +
 
 +
 
 +
загрузить дефолтные настройки компонентов SDK
 +
make defconfig
 +
 
 +
 
 +
конфигурирование ядра
 +
make kernelconfig
 +
 
 +
 
 +
конфигурирование файловой системы
 +
make fsconfig
 +
 
 +
 
 +
соберать все компоненты
 +
make build
 +
 
 +
 
 +
установить все компоненты на карточку
 +
make install
 +
 
 +
 
 +
очистить всё что было собрано
 +
make clean
 +
 
 +
 
 +
[[Категория:Инструкции]]

Текущая версия на 21:51, 29 мая 2014

Основной Virt2real SDK выложен на Github https://github.com/virt2real


Содержание

Термины

SDK - Software Development Kit - комплект средств разработки.

SDK Virt2real - комплект средств разработки под платформу Virt2real.

DVSDK - Digital Video Software Development Kit - SDK видеоподсистемы для процессоров фирмы Texas Instruments


Состав Virt2real SDK

SDK Virt2real состоит из нескольких компонентов:

Ядро (./kernel) - Linux

Файловая система (./fs) - на базе Buildroot

Загрузчик (./bootloader) - U-Boot

DVSDK (./dvsdk)

Компилятор (./codesourcery) - CodeSourcery

Панель управления (она же Админка, она же Вебморда, она же Панель управления) (./adminka) - Самописный веб-интерфейс


Системные требования для установки SDK Virt2real

1. Операционная система на базе Linux. Проверена работа на системах Ubuntu 10.04 и выше. В остальных дистрибутивах Linux возможно потребуется доработка напильником. В Ubuntu 14.04 замечен интересный баг.

2. Персональный компьютер. Выбирается по принципу - чем шустрее проц тем быстрее SDK собираться будет.

3. Оперативная память - см. пункт 2.

4. Свободное место на жёстком диске - чем больше тем лучше. SDK после сборки в почти минимальной конфигурации занимает почти 7 гигабайт.

5. Прямые руки

6. Пункт 5 из нужного места


Процесс установки

1. Перед началом работы с SDK требуется установить некоторый софт

sudo apt-get install git bash make flex bison gcc g++ gettext texinfo u-boot-tools ncurses-dev mercurial \
subversion unzip groff bc dosfstools

Для сборки под архитектурой x86_64 может также потребоваться

sudo apt-get install libc6-i386

2. Главный управляющий файл virt2real SDK - Makefile. Пользоваться им очень легко - достаточно скачать Makefile в какой-нибудь каталог, например, /opt/virt2real-sdk (при установке из-под учётки суперпользователя) или /home/{username}/virt2real-sdk (при установке из-под учётной записи обычного пользователя).

git clone https://github.com/virt2real/install-sdk.git /opt/virt2real-sdk

3. Теперь надо перейти в этот каталог. Далее в инструкции мы будем оперировать только содержимым этого каталога, так что назовём его корневым каталогом SDK.

 cd /opt/virt2real-sdk

4. В Убунте симлинк /bin/sh по-умолчанию ссылается на /bin/dash, для корректной работы хорошо бы переделать на bash. Делается это следующими командами

 rm /bin/sh
 ln -s /bin/bash /bin/sh

После этого можно приступать к работе с SDK.

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

То что вы скачали командой git clone (мейкфайл и несколько шелл-скриптов) не являются SDK как таковым. Это лишь командные файлы, которые позволяют автоматически скачать все нужные компоненты SDK и настроить их.

Скачивание компонентов SDK

1. Итак, сначала надобно скачать все компоненты SDK, это делается командой

 make getsdk

Довольно долго будет скачиваться, имейте терпение. После того как всё скачалось, можно конфигурировать и далее в том же духе...

2. Загружаем делаем конфигурацию по-умолчанию. Очень важный пункт, без него ничего не соберётся.

 make defconfig

3. Собираем все компоненты SDK автоматически, поочерёдно

 make build

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

4. После этого в Makefile правим переменную SDNAME, чтобы она содержала название девайса SD карточки, например

 SDNAME=/dev/sdc

!!! АХТУНГ !!! Если вы ошиблись буковкой и вместо /dev/sdc вбили, допустим, /dev/sdb - велика вероятность того что установщик затрёт содержимое вашего второго жёсткого диска (если он есть, конечно). Так что трижды проверьте правильное название устройства, которым операционная система определяет вашу флэш-карту.

5. Теперь устанавливаем всё на micro-SD карточку

 make install


6. После установки micro-SD карточка будет содержать два раздела - boot и rootfs. Оба они будут смонтированы в подкаталоге images корневого каталога SDK.

Можно сразу зайти туда и поправить нужные конфиги, если это требуется. Например, можно сразу исправить параметры подключения Wi-Fi (файл /etc/wpa_supplicant.conf)

Далее надо размонтировать флеш-карточку. Для этого в корневом каталоге SDK есть скрипт CARD_UMOUNT.sh Ну или обычной командой umount, кому как удобнее.

./CARD_UMOUNT.sh

Всё, теперь можно вытаскивать флеш-карточку из компьютера и вставлять в Виртурилку.


Полный список команд мейкфайла

показать хелп (список параметров)

make


самая первая команда, скачивает все необходимые компоненты SDK

make getsdk


загрузить дефолтные настройки компонентов SDK

make defconfig


конфигурирование ядра

make kernelconfig


конфигурирование файловой системы

make fsconfig


соберать все компоненты

make build


установить все компоненты на карточку

make install


очистить всё что было собрано

make clean