Введение 3
1. Микрокомпьютеры и виртуализация 5
1.1. Микрокомпьютеры 5
1.2. Виртуализация 7
1.3. Порты ввода-вывода общего назначения 13
2. Оборудование и программная платформа 15
2.1. Физическое оборудование 15
2.2. Операционная система 17
3. Приложение для виртуализации портов ввода-вывода общего назначения 20
3.1. Требования к приложению и сценарии его использования 20
3.2. Архитектура приложения 21
3.3. Подготовка системы к работе 22
3.4. Описание компонентов системы 25
Заключение 34
Глоссарий 35
Список использованных источников 38
Приложения
В последние годы микрокомпьютеры переживают второе рождение: современные технологии позволяют создать компьютеры, выполненные на одной печатной плате размером с кредитную карту, при этом по мощности сравнимые с персональными компьютерами предыдущих поколений.
Одной из таких реализаций является компьютер RaspberryPi, первая версия которого создана в 2011 году. С его помощью можно выполнять самые разные действия: реализовать систему потоковой передачи музыки на гаджет, играть в игры, изучать программирование, связать компоненты «умного дома», управлять роботом или беспилотным летательным аппаратом и многое другое. Большинство перечисленных задач решается
использованием портов ввода-вывода общего назначения, которыми оборудован RaspberryPi. Эти порты позволяют управлять произвольными устройствами.
Для упрощения процесса разработки и более эффективного использования ресурсов устройства, все чаще применяются технологии контейнерной виртуализации, когда для каждого приложения создается отдельный экземпляр операционной системы с преднастроенным набором программного обеспечения и конфигурационных файлов [8].
Обзор текущего состояния проблемы показал, что на данный момент не существует системы, позволяющей производить манипуляции и
осуществлять доступ к физическим портам ввода-вывода общего назначения из виртуального контейнера, что делает актуальной данную работу. Существующие решения, работающие с портами ввода-вывода общего назначения, позволяют лишь реализовать их эмуляцию и симуляцию, но не доступ к физическим портам.
Цели работы:
• Выбрать платформу (операционная система, система виртуализации,
сервер приложений) для реализации приложения, позволяющего
осуществлять доступ к физическим портам ввода-вывода общего назначения из виртуальных конейнеров;
• Спроектировать архитектуру вышеуказанного приложения;
• Разработать приложение.
В результате выполнения данной работы была разработана и спроектирована архитектура серверного приложения
«RaspberryPiGPIOvirtualization» для платформы RaspberryPimodel 3Ви операционной системы UbuntuServer, позволяющее работать с физическими портами ввода-вывода общего назначения из виртуальных контейнеров.
В процессе выполнения работы были решены следующие задачи:
• выбрана платформа для реализации приложения;
• спроектирована архитектура приложения;
• разработано приложение и провести его тестирование.
В приложении реализованы следующие функции:
• предоставление доступа к управлению физическими портами ввода- вывода общего назначение из непривилегированного контейнера LXD;
• при запуске контейнера имеется возможность указать соответствие виртуальных портов к другим физическимпортам;
• имеется возможность создания правил, чтобы ограничивать определенным виртуальным контейнерам доступ к определенным портам;
• порты, доступ к которым ограничен, эмулируются так, чтобы пользователь внутри контейнера не понял, что на самом деле он работает с эмулированным портом;
• все ошибки, которые возникают на физическом порту, транслируются в виртуальный контейнер;
• контейнеры запускаются и останавливаться по команде на API- интерфейс приложения.