virtualbox python 2 x support что это

LXF120:VirtualBox

Подписка на печатную версию Весь 2015 год (12 номеров) Первое полугодие (6 номеров) Второе полугодие (6 номеров) Подписка на электронную версию Весь 2015 год (12 номеров) Первое полугодие (6 номеров) Второе полугодие (6 номеров) Подшивки старых номеров журнала (печатные версии) Весь 2014 год (12 номеров) Первое полугодие (6 номеров) Второе полугодие (6 номеров)

Виртуальные машины Автоматизируем ру­тинные операции через сценарии на Python

Содержание

VirtualBox: Python управляет

В широком спектре доступных решений для виртуализации продукт VirtualBox (http://www.virtualbox.org) от Sun Microsystems занимает достойное место. Это высокопроизводительное решение с открытым кодом, работающее на Linux, Windows, Mac OS X, Solaris и FreeBSD, позволяет запускать самые различные гостевые ОС со скоростью, близкой к скорости реального оборудования. Одним из интересных свойств данного продукта является полная открытость всех интерфейсов, то есть возможность взаимодействовать с VirtualBox из приложений, написанных на популярных языках программирования. Официально поддерживаются C, C++, Java, Perl и Python, но можно использовать и любой другой язык, для которого реализован вызов SOAP-методов.

Я разрабатывал поддержку Python в VirtualBox, и хотел бы поподробнее рассказать о различных тонких моментах и интересных элементах функциональности. Чтобы разговор был более предметным, рекомендую скачать последнюю версию VirtualBox 2.2 для вашей операционной системы, а также SDK VirtualBox с http://www.virtualbox.org/wiki/Downloads (требуется бесплатная регистрация). Желательно также установить хотя бы одну виртуальную машину, чтобы нам было чем управлять.

Как это работает

Внешние интерфейсы VirtualBox описаны в документации к SDK (на английском языке), а XML-файл bindings/VirtualBox.xidl предоставляет полную информацию об устройстве API. Кроме этого, может быть интересно исследовать исходные коды примеров, поставляемые с SDK.

Доступ к внешним интерфейсам технически осуществляется двумя способами: через непосредственный вызов методов COM, XPCOM (компонентной технологии, происходящей от Mozilla) или через SOAP (то есть специально сформированные HTTP-запросы, обрабатываемые сервером vboxwebsrv). Первый вариант гораздо быстрее, и предоставляет доступ к более широкой функциональности: например, уведомлениям об изменении состояния. К сожалению, он требует, чтобы вызывающий процесс и VirtualBox выполнялись на одной машине, что может быть не всегда удобно. Второй способ позволяет использовать удаленные сервера, но имеет ограничения по функциональности и производительности, а также требует запуска специального приложения на каждом из серверов.

Оболочка VirtualBox: с виду невзрачная, но мы дополним ее новыми возможностями.

Интерфейсы для Python разрабатывались таким образом, чтобы по возможности скрыть это различие и использовать один и тот же код для различных сценариев доступа. Тем не менее, данная статья будет в основном посвящена Python и XPCOM.

В качестве примера нетривиального приложения, использующего VirtualBox из Python, рассмотрим интерактивную оболочку, поставляемую в комплекте с SDK. Один и тот же сценарий (shellcommon.py) может работать как через SOAP, так и на локальной машине. Вся разница в инициализационном коде (vboxshell.py), который отличается для COM, XPCOM и режима web-сервиса (SOAP). Если вы работаете в Linux или Solaris, перед использованием необходимо установить переменную VBOX_PROGRAM_PATH следующим образом:

Здесь /opt/VirtualBox – это название директории, в которую установлен VirtualBox в вашей системе. Также, если SDK находится в /opt/VirtualBox-sdk, переменная PYTHONPATH должна быть установлена как

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

и вы увидите приглашение, как на рисунке. Чтобы получить список команд, известных оболочке, наберите help. Можете поэкспериментировать в свое удовольствие.

Расширяем оболочку

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

Откроем shellcommon.py в редакторе и добавим строчку

к массиву commands. Она просто зарегистрирует нашу команду в списке известных оболочке.

Теперь надо реализовать действия, выполняемые при вызове makevm, то есть написать тело функции makevmCmd(), на которую мы ссылаемся выше.

Переменная ctx содержит контекст исполнения, откуда можно получить объекты класса VirtualBox и Session, а также доступ к константам. Пример использования контекста можно найти в коде shellcommon.py. Для команды makevm нам надо получить доступ к объекту vb, представляющему собой экземпляр запущенной виртуальной машины VirtualBox.

Далее следует найти или создать подключить к VirtualBox ISO-образ, а также определить (или, при необходимости, создать) виртуальный жесткий диск, на который мы будем устанавливать нашу гипотетическую систему:

Как можно видеть, генерация образа жесткого диска происходит в несколько этапов: сначала мы создаем устройство вызовом createHardDisk(), указав желаемый тип (VDI, родной для VirtualBox формат) и путь в файловой системе хост-ОС, затем выделяем под него 4 ГБ методом createBaseStorage() и ждем завершения этой операции. Наконец, винчестер регистрируется в системе методом openHardDisk().

Ключ на старт!

Давайте будем для определенности считать, что мы тестируем сборки Ubuntu. Виртуальные машины с предустановками для этого дистрибутива будем создавать в каталоге /tmp/MyUbuntu. Для этих целей нам потребуется сессионный объект – Session.

Этот код не должен вызывать затруднений. Мы получаем сессионный объект через контекст, создаем виртуальную машину, расположенную в /tmp/MyUbuntu, с указанным пользователем именем и типом гостевой ОС ‘Ubuntu’, и регистрируем ее. Наконец, мы запоминаем уникальный идентификатор машины и выводим его на консоль.

Полученная нами виртуальная машина не имеет нужной периферии – исправим этот факт, смонтировав наш DVD-образ и подключив к ней жесткий диск. Обратите внимание на первую строку – перед изменением виртуальной машины необходимо получить на нее блокировку, чтобы исключить конфликты одновременного обращения.

В данном случае мы подсоединяем жесткий диск к виртуальному контроллеру IDE. Можете выбрать SATA или SCSI – это непринципиально.

Теперь все готово к работе – осталось только запустить виртуальную машину, терпеливо дождаться ее остановки и завершить сеанс.

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

И много чего еще

Готовая виртуальная машина с Ubuntu — одной командой: при желании можно даже на Enter не нажимать.

Давайте протестируем созданную нами команду. Запустите оболочку и введите

Вы увидите виртуальную машину, готовую установить новую ОС. Более того, мы можем использовать команду оболочки guest и начать инсталляцию, не переключая окна.

Здесь мы эмулируем двойное нажатие на клавишу Enter путем отправки гостевой системе соответствующих скан-кодов. Подробнее про скан-коды клавиатуры можно прочесть по адресу: http://www.quadibloc.com/comp/scan.htm. Домашнее задание: измените команду так, чтобы перед установкой автоматически выбирался русский язык.

Вы также можете эмулировать любые движения мыши; например,

сдвинет мышь на 20 пикселей вправо и вниз. Полный список методов взаимодействия с гостевой ОС можно получить в документации к интерфейсу IСonsole, идущей в комплекте с SDK VirtualBox.

Но и это еще не все. Оболочка позволяет выполнить любой код Python, использующий API VirtualBox: для этих целей предназначена команда eval. Например,

напечатает MAC-адреса первой сетевой карты всех виртуальных машин.

Как можно видеть, достаточно простые и интуитивно понятные вызовы функций позволяют выполнять весьма сложные операции над виртуальными машинами, и использовать все мощь VirtualBox.

На текущий момент управление VirtualBox из Python возможно на хостах Linux, Solaris и Mac OS X; начиная с 3.0, будет реализована поддержка Windows. Еще раз обращаю ваше внимание на то, что аналогичные интерфейсы можно использовать через SOAP на всех платформах, которые поддерживаются VirtualBox.

Источник

Внутри виртуальной машины Python. Часть 1

Оглавление

Введение

Язык программирования Python существует уже довольно давно. Разработка первой версии была начата Гвидо Ван Россумом в 1989 году, и с тех пор язык вырос и стал один из самых популярных. Python используется в различных приложениях: начиная от графических интерфейсов и заканчивая приложениями для анализа данных.

Цель этой статьи — выйти за кулисы интерпретатора и предоставить концептуальный обзор того, как выполняется программа написанная на Python. В материале будет рассмотрен CPython, потому что на момент написания статьи он является наиболее популярной и основной реализацией Python.

Python и CPython используются в этом тексте как синонимы, но при любом упоминании Python имеется ввиду CPython (версия python, реализованная на C). К другим реализациям относится PyPy (python, реализованный в ограниченном подмножестве Python), Jython (реализация на Виртуальной машине Java) и т.д.

Мне нравится делить выполнение Python-программы на два или три основных этапах (указанных ниже), в зависимости от того, как вызывается интерпретатор. Эти этапы будут в разной степени охвачены в данной статье:

Этот материал предназначен для всех, кому интересно узнать, как работает виртуальная машина CPython. Предполагается, что пользователь уже знаком с python и понимает основы языка. При изучении строения виртуальной машины нам встретится значительное количество C-кода, поэтому пользователю, который имеет элементарное понимание языка C, будет легче разобраться в материале. И так, в основном, что потребуется для ознакомления с этим материалом: желание узнать больше о виртуальной машине CPython.

Эта статья представляет собой расширенную версию личных заметок, сделанных при исследовании внутренней работы интерпретатора. Существует много качественного материала в PyCon видео, школьных лекциях и данном блоге. Моя работа не была бы закончена без этих фантастических источников знаний.

В конце этой книги читатель будет в состоянии понять тонкости того, как интерпретатор Python выполняет вашу программу. Это включает в себя различные этапы выполнения программы и структуры данных, которые имеют решающее значение в программе. Для начала, мы рассмотрим с высоты птичьего полета то, что происходит при выполнении тривиальной программы, когда интерпретатору передаётся имя модуля в командной строке. Исполняемый код CPython может быть установлен из исходников, следуя Руководству Python разработчика.

В данной книге используется версия Python 3

Взгляд с высоты в 30 000 футов

В этой главе рассказывается о том, как интерпретатор выполняет Python программу. В последующих главах мы рассмотрим различные части этой «головоломки» и предоставим более подробное описание каждой части. Независимо от сложности программы, написанной на Python, данный процесс всегда одинаков. Прекрасное объяснение, данное Янивом Акниным в его серии статей о Python Internal, задаёт тему нашего обсуждения.


Рисунок 2.1: Поток во время выполнения исходного кода.

Исполняемый файл python — это обычная С-программа, поэтому при его вызове происходят процессы похожие на те, которые существуют, например, в ядре ​​linux или простой программке «hello world». Потратьте минуту своего времени, чтобы понять: исполняемый файл python — это просто еще одна программа, которая запускает вашу собственную. Такие «отношения» существуют между языком Cи и ассемблером (или llvm). Стандартный процесс инициализации (который зависит от платформы, где происходит выполнение) запускается, когда вызывается исполняемый файл python с именем модуля в качестве аргумента.

Эта статье предполагает использование операционной системы на основе Unix, поэтому некоторые особенности могут отличаться на Windows.

Язык C во время запуска выполняет всю свою «магию» инициализации — загружает библиотеки, проверяет/устанавливает переменные среды, а после этого, основной метод исполняемого файла python запускается так же, как и любая другая C-программа. Пайтоновский main исполняемого файла находится в ./Programs/python.c и выполняет некоторую инициализацию (такую ​​как создание копий аргументов командной строки программы, которые были переданы в модуль). Затем функция main вызывает функцию Py_Main, расположенную в ./Modules/main.c. Она обрабатывает процесс инициализации интерпретатора: анализирует аргументы командной строки, устанавливает флаги, читает переменные среды, выполняет хуки, занимается рандомизацией хеш-функций и т.д. Также вызывается Py_Initialize из pylifecycle.c, который обрабатывает инициализацию структур данных состояния интерпретатора и потока — это две очень важные структуры данных.

Рассмотрение объявлений структур данных интерпретатора и состояний потоков позволяет понять, зачем они нужны. Состояние интерпретатора и потока — это просто структуры с указателями на поля, которые содержат информацию, необходимую для выполнения программы. Данные состояния интерпретатора создаются через typedef (просто думайте об этом ключевом слове в C, как об определении типа, хотя это не совсем так). Код этой структуры приведён в листинге 2.1.

Листинг 2.1: Структура данных состояния интерпретатора

Любой, кто достаточно долго использовал язык программирования Python, может узнать несколько полей, упомянутых в этой структуре (sysdict, builtins, codec).

Листинг 2.2: Часть структуры данных состояния потока

Структуры данных интерпретатора и состояния потока обсуждаются более подробно в следующих главах. Процесс инициализации также устанавливает механизмы импорта, а также элементарный stdio.

Если вы уже просмотрели исходный код, то наверняка столкнулись с Py_INCREF и Py_DECREF. Это функции управления памятью, которые мы позже обсудим подробно. CPython управляет жизненным циклом объекта с помощью подсчета ссылок: всякий раз, когда создается новая ссылка на объект, значение увеличивается через Py_INCREF. Аналогично, когда ссылка выходит из области видимости, то счётчик уменьшается с помощью функции Py_DECREF.

Python предоставляет набор функций, которые можно использовать для изучения реальных объектов кода. Например, простая программа может быть скомпилирована в объект кода и дизассемблирована для получения opcode-ов, которые выполняются виртуальной машиной python. Это показано в листинге 2.3.

Листинг 2.3: Дизассемблирование функции в Python

Заголовочный файл ./Include/opcodes.h содержит полный список всех инструкций/опкодов для виртуальной машины Python. Opcode-ы довольно просты. Возьмем наш пример из листинга 2.3, который имеет набор из четырех инструкций. LOAD_FAST загружает значение своего аргумента (в данном случае x) в стек значений. Виртуальная машина python основана на стеке, поэтому значения для операций опкодов «достаются» из стека, а результаты вычислений помещаются обратно в стек, для дальнейшего использования другими опкодами. Затем BINARY_MULTIPLY извлекает два элемента из стека, выполняет двоичное перемножение обоих значений и помещает результат обратно в стек. Инструкция RETURN VALUE извлекает значение из стека, устанавливает возвращаемое значение для объекта в это значение и выходит из цикла интерпретатора. Если посмотреть на листинг 2.3, то ясно, что это довольно сильное упрощение.

Текущее объяснение работы цикла интерпретатора не учитывает ряд деталей, которые будут обсуждаться в последующих главах. Например, вот вопросы на которые мы не получили ответа:

И так, мы рассмотрели «на высоком уровне» описание процессов, которые происходят в исполняемом файле Python при запуске какого-то скрипта. Как отмечалось ранее, остается много вопросов, на которые еще предстоит ответить. В дальнейшем мы углубимся в изучение интерпретатора и подробно рассмотрим каждый из этапов. И начнём мы с описания процесса компиляции в следующей главе.

Источник

Установка VirtualBox с операционной системой Ubuntu на Windows 10

На сегодняшний день существует много программных продуктов, позволяющие использовать виртуализацию для различных операционных систем. Наиболее интересным продуктом является программа VirtualBox, которую выпускает и поддерживает корпорация Oracle.

Эта программа распространяется по лицензии GNU GPL, что дает право использовать ее абсолютно бесплатно. Главной задачей VirtualBox является виртуализация операционных систем, то есть с помощью программы вы создаете виртуальную машину, на которой запускаете ОС. В данной статье мы подробно рассмотрим установку VirtualBox на новейшую операционную систему компании Microsoft — Windows 10.

Загрузка и установка VirtualBox на Windows 10

Для скачивания VirtualBox откройте любой установленный браузер в Windows 10 и перейдите по адресу www.virtualbox.org/wiki/Downloads. Перед вами откроется страница загрузки программы.

В данный момент VirtualBox 5.0.8 является самой новой версией программы и полностью совместима с Windows 10. Поэтому смело скачивайте эту версию, на которую ссылка находится в пункте «VirtualBox 5.0.8 for Windows hosts». После загрузки запустите инсталляционный файл, после чего откроется окно установки программы.

Нажимаем кнопку Next > и переходим к окну, где вам будет предоставлен выбор трех устанавливаемых компонентов:

Первый компонент отвечает за поддержку USB устройств, подключаемых к виртуальному компьютеру. Второй компонент отвечает за поддержку сети в такой машине, с его помощью создаются виртуальные сетевые адаптеры и устанавливаются драйвера для взаимодействия виртуальных адаптеров с физическими. Третий компонент устанавливается для поддержки скриптов, которые создаются на языке программирования Python.

Главной задачей скриптов является автоматизация задач в виртуалке. Также при нажатии кнопки Browse можно задать расположение установки исполняемых файлов.

Следующее окно позволит создать ярлыки на рабочем столе и в меню пуск, а также позволит ассоциировать файлы виртуальных машин для работы в VirtualBox.

Начнется процесс инсталляции программы на компьютер, который займет пару минут.

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

Установка виртуальной машины на windows 10

Вначале вы должны решить, для какой операционной системы создается виртуальная машина. Поэтому для начала подготовим образ ОС для инсталляции в нашу машину. Для примера мы возьмем образ бесплатной ОС Linux Ubuntu, который можно загрузить по адресу www.ubuntu.com/download/desktop. Выберем 32 битный образ Ubuntu и скачаем его на локальный диск ПК. Самым последним релизом Ubuntu является версия 15.10.

Теперь разберемся с таким наболевшим вопросом, как установить виртуальную машину на Windows 10. Для этого запускаем VirtualBox и нажимаем кнопку «Создать». В появившемся окне создаем имя виртуальной машины. Тип системы выбираем Linux, версию Ubuntu и переходим к следующему шагу.

Теперь укажем объем памяти, выделяемой для нашей виртуальной машины.

Следующим шагом будет создание виртуального диска, поэтому выбираем «создать новый виртуальный диск», нажимаем кнопку Создать и переходим к следующему окну.

Укажем тип нашего жесткого диска, поставив галочку «VDI».

Создадим динамический жесткий диск, который будет заполняться по мере записи на него информации, затем нажмем клавишу Next

Все, наша виртуальная машина создана, в настройках которой можно изменять объем памяти, подключать и редактировать виртуальные жесткие диски, редактировать конфигурацию и настройки сети, задавать объем памяти видеоадаптера, а также задавать опции нагрузки на ваш процессор. Это лишь малая часть описанных настроек. Установив VirtualBox, вы сможете более подробно разобраться во всех тонкостях настройки конфигурации машины.

Как вы уже поняли, система начнет грузиться с выбранного нами образа.

Далее идет стандартная установка операционной системы, при которой вам предстоит выбрать жесткий диск, часовой пояс, раскладку клавиатуры, а также задать имя компьютера и пользователя. То есть дальнейшая установка пойдет так, как будто вы ставите Ubuntu на чистый компьютер.

После установки вы сможете использовать виртуальную машину как отдельный компьютер и использовать все возможности ОС Ubuntu, которые отсутствуют в Windows 10.

В VirtualBox можно настраивать конфигурацию на установленной виртуальной машине. Например, если вашему виртуальному компьютеру не хватает оперативной памяти, то ее можно быстро увеличить, перейдя в настройки виртуалки. Попасть в меню настройки можно при помощи нажатия кнопки «Настройки», предварительно выбрав редактируемую виртуалку.

В меню настройки вы увидите десять пунктов:

Первый пункт позволяет изменять имя ВМ и тип операционной системы.

Второй позволяет изменять объем виртуальной памяти и порядок загрузки носителей информации. Также в этом пункте можно редактировать настройки процессора, выбирать количество ядер для вашей ВМ и включать поддержку технологии аппаратной виртуализации Intel-VT и AMD-V.

С помощью третьего пункта можно изменять объем памяти виртуального видеоадаптера и включать 3D-ускорение.

Пункт «Носители» дает возможность конфигурировать SATA/IDE носители информации и добавлять новые.

«Аудио» позволяет выбрать тип виртуальной звуковой карты.

Пункт «Сеть» может изменять конфигурацию сети, тип сетевого адаптера, а также позволяет подключать новые адаптеры.

Меню «COM-порты» позволяет использовать последовательный COM-порт и изменять его настройки.

С помощью меню «USB» можно включить контроллер USB и выбрать его тип, кроме этого можно добавлять, удалять и редактировать новые устройства USB.

Добавление общей папки

«Общие папки» дают возможность создавать общие директории между ВМ и физической системой. С помощью меню «Интерфейс пользователя» можно настроить интерфейс окна, в котором запущена ВМ.

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

/buffer где, как вы наверное догадались, «Buffer» — имя папки, которое мы запомнили при выполнении пункта 1 инструкции, а «

/buffer» — путь к только что созданной папке Ubuntu.

Надеемся, что материал, изложенный в статье, поможет вам освоить методы виртуализации операционных систем, и у вас не будет возникать вопроса, как установить virtualbox на windows 10.

Также хочется дать несколько советов перед использованием виртуальных машин.

Перед созданием такой машины убедитесь, что у вас хватит аппаратных ресурсов компьютера для ее запуска. Поэтому для запуска виртуальных машин используйте мощный процессор, который поддерживает технологии аппаратной виртуализации Intel-VT и AMD-V. Также немаловажную роль играет объем оперативной памяти на вашем ПК. Например, если вы создадите виртуальную машину на базе ОС Windows 10, то вам потребуется минимум 2048 Мб оперативной памяти, которая будет выделена из основной системы.

Кроме этого, в VirtualBox можно использовать пакет плагинов Extension Pack, что существенно расширяет функциональные возможности программы и добавляет поддержку новых устройств.

Видео по теме

Источник

Читайте также:  Что такое катаракта глаза простыми словами симптомы и лечение фото
Информ портал о технике и не только