Обзор интерфейса управления виртуальной машиной VirtualBox
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем подготовку к изучению операционной системы Linux. Ранее мы скачали и установили VirtualBox на Windows и поговорили про дистрибутив Linux Mint, а затем и установили его на виртуальную машину VirtualBox. Давайте теперь изучим интерфейс VirtualBox, который позволяет управлять виртуальной машиной, ведь она почти как настоящая и имеет свои характеристики и особенности, а затем уже приступим к знакомству с Linux.
Здесь у нас будет три части и для начала мы поговорим про запуск, остановку и выключение виртуальной машины, это очень важно, поскольку, например, если выключать неправильно виртуальную машину, то могут произойти неприятности аналогичные тем, какие происходят на реальных машинах при неправильном выключении, также мы рассмотрим вопросы приостановки и запуска виртуальной машины. Во второй части будет обзор важных элементов, которые позволяют управлять и просматривать состояние виртуальной машины. А в завершении мы поговорим об удалении виртуальной машины из VirtualBox и посмотрим на файлы виртуальной машины.
Запуск, остановка и выключение виртуальной машины
Содержание статьи:
Изначально я хотел рассказать про интерфейс управления виртуальной машиной VirtualBox в предыдущей публикации, где мы говорили о том, как установить Linux Mint в качестве гостевой операционной системы VirtualBox в Windows 10, но публикация вышла и без того объемной (более 2500 слов). Поэтому я вынес тему работы с виртуальной машиной в отдельную публикацию. Здесь не будет тонкостей и мелких деталей, но ознакомившись с материалом у вас будет представление о возможностях VirtualBox
Начнем с запуска виртуальной машины VirtualBox. На изображении ниже показан проводник и главное окно VirtualBox. Чтобы запустить виртуальную машину, выберете ее в проводнике нажмите кнопку запустить.
Запускаем виртуальную машину в VirtualBox
Когда виртуальная машина запустится, наступает время разговора про устройства ввода. У нас их два вида: устройства ввода типа мышь (в эту группу входят и тачпады) и клавиатура. Дело всё в том, что эти самые устройства ввода в один момент времени могут работать либо в основной операционной системе (у меня это Windows), либо в гостевой операционной системе (у меня это Linux Mint).
Передача устройств ввода от основной системы к гостевой называется захватом, у меня это дело происходит автоматически, то есть происходит автозахват мыши и клавиатуры при переходе к окну гостевой операционной системы (я не разбирался с тем, как настроить этот самый автозахват, поэтому не подскажу, как это сделать), но если у вас автозахват не работает, то для ручного захвата и передачи устройств ввода гостевой операционной системе используйте специальную host-клавишу, в качестве host-клавиши в VirtualBox по умолчанию используется правый Ctrl.
Нажимая правый Ctrl вы можете передавать устройства ввода между виртуальной и основной машиной. Перейдя в гостевую операционную систему, попробуйте нажать сочетание клавиш Ctrl+Alt+Delete. Немного странно, но это сочетание сработало для вашей основной ОС.
Но ведь мы хотели, чтобы Ctrl+Alt+Delete сработала в Linux, а не в Windows. Все дело в том, что некоторые сочетания клавиш будут отправлять сигналы основной ОС, а не гостевой (все зависит от того, какая система основная, а какая гостевая). Для некоторых сочетаний клавиш в интерфейсе VirtualBox есть альтернативы (в том числе и для Ctrl+Alt+Delete), чтобы вызвать экран блокировки в Linux и послать нужный сигнал в гостевую ОС воспользуйтесь пунктом меню «Ввод»-> «Клавиатура» -> из списка выберете нужной сочетание клавиш.
Некоторые горячие клавиши для виртуальной машины будут работать только из меню VirtyalBox
Если перейдете в пункт «Настроить клавиатуру», то сможете задать нужные сочетания клавиш для различных сигналов, которые будут работать только в гостевой операционной системе VirtualBox.
Или можно задать альтернативные горячие клавиши, которые будут работать только в гостевой ОС
Теперь давайте поговорим о выключении виртуальной машины и завершении работы в гостевой ОС, это очень важно, поскольку при неправильном выключении вы можете навредить своей виртуальной машине и похерить свой виртуальный жесткий диск или нарушить файловую систему гостевой ОС, все прям как в жизни.
Сначала о том, как не стоит завершать работу гостевой ОС. Конечно же, не стоит убивать процесс приложения VirtualBox в основной ОС, вы, конечно же, таким образом завершите работу виртуалки и освободите ресурсы компьютера, но это будет похоже на аварийное отключение питания для реальной машины.
Не стоит жать крестик в правом верхнем углу, а затем из появившегося меню выбирать пункт «Выключить машину». Это действие аналогично тому, как если бы вы выключили реальный компьютер путем нажатия и удержания кнопки подачи питания/включения на вашем системном блоке или ноутбуке.
Один из не очень правильных способов выключения виртуальной машины в VirtualBox
А теперь о правильных способах завершения сеанса работы с гостевой системой и выключения виртуальной машины VirtualBox. Во-первых, можно нажать крестик в правом верхнем углу и затем выбрать пункт «Послать сигнал завершения работы». Во-вторых, можно воспользоваться пунктом «Машина» в верхнем меню.
Управление состоянием виртуальной машины в VirtualBox
Чтобы выключить виртуалку выбирайте пункт «Завершить работу». Чтобы высвободить ресурсы, отданные виртуальной машине, но не завершать ее работу, выбирайте пункт «Приостановить», а чтобы выполнить перезагрузку виртуальной машины, нажмите на пункт «Перезапустить».
Кстати говоря, VirtualBox из своего меню не всегда может послать корректный сигнал о завершении работы для гостевой операционной системы (все зависит, собственно, от операционной системы, версии ядра или дистрибутива), но это не беда, виртуальная машина будет выключена и в том случае, если вы завершите работу гостевой операционной системы так, как будто вы выключаете настоящий компьютер. В Linux Mint это делается следующим образом.
Нажимаете на кнопку в левом нижнем углу экрана, которое вызывает меню, аналогичное меню Пуск в Windows, в котором нажимаете на значок выключения, после этого у вас появится меню с несколькими кнопками.
Альтернатива меню «Пуск» в операционной системе Linux Mint с окружением Xfce
Я думаю понятно, что для выключения виртуальной машины, нужно нажать на кнопку с текстом «Выключить». Таким образом вы корректно завершите работу с гостевой ОС и выключите виртуальную машину.
Завершаем работу виртуальной машины средствами гостевой операционной системы
Интерфейс управления виртуальной машиной
Рассмотрим оставшиеся пункты меню. С разделом «Справка» всё понятно, им пользуются те, кто хочет быстро изучить все возможности VirtualBox. Далее у нас идет раздел «Устройства».
Меню управления устройствами виртуальной машины в VirtualBox
Здесь можно получить информацию о устройствах, позволяющих связываться гостевой ОС с внешним миром (оптические диски, USB, сеть), а также настроить то, как гостевая ОС будет работать с основной ОС (Общие папки, общий буфер, драг эн дроп).
Пункт меню «Вид» создан исключительно для вашего удобства. Здесь можно настроить отображение окна вашей гостевой ОС именно так, как хочется вам или как вам удобно в тот или иной момент времени.
Меню для настройки отображения экрана гостевой операционной системы
Попробуйте изменить отображение окна гостевой операционной системы и выберете тот режим, который будет удобен вам. Если в одном из видов у вас пропадет верхнее меню, то для переключения к другому виду воспользуйтесь сочетанием клавиш правый Ctrl+Home или, чтобы вернуться в оконный режим, нажмите правый Ctrl+C.
Во вкладке «Файл» самым интересным пунктом является «Настройки», здесь можно изменить настройки для всего VirtualBox.
Содержимое вкладки файл в интерфейсе управления VirtualBox
Более подробно я вдаваться не буду. Рассмотрим оставшихся три пункта во вкладке «Машина» (ранее мы уже поговорили про Приостановить, Запустить и Завершить работу).
Пункт «Настроить» перенесет нас в настройки текущей виртуальной машины, их мы смотрели в прошлой публикации. А вот пункт «Показать информацию о сессии…» позволяет получить данные о том, как сконфигурирована и как работает в данный момент гостевая ОС с основной операционной системой, а также здесь можно получить информацию о том, как виртуальная «видит» железо реального компьютера и его конфигурации.
Информация о текущей сессии виртуальной машины VirtualBox
Есть здесь и интересная возможность в виде «Сделать снимок состояния». Это возможность позволяет запомнить состояние машины в текущий момент (в том числе и то, какие приложения запущены и что происходит в этих приложения в данный конкретный момент времени). Чтобы увидеть, как это работает, давайте запустим два редактора: графический, в котором я нарисовал кривую линию и текстовый, в котором я написал фразу «Привет!».
Когда мы делаем снимок состояния, VirtualBox запоминает всё, что творится в виртуальной машине
Теперь сделаем снимок состояния и назовем его Снимок 1.
Имя снимку состояния виртуальной машины желательно давать осмысленное
Как только вы нажмете «Ок», VirtualBox начнет сохранять текущее состояние. Теперь закройте окно гостевой ОС, воспользовавшись крестиком в правом верхнем углу, обратите внимание: в окне завершения появился пункт, который позволяет откатит машину к тому состоянию, которое мы сохранили.
К сохраненному состоянию можно откатиться вот так
Но мы просто выключим машину. Вернемся в основное окно VirtualBox, обратите внимание на проводник справа: виртуальная машина Mint 2 получила подпись Снимок 1.
В менеджере виртуальных машин произошли небольшие изменения
Ну а в правом верхнем углу есть пункт меню «Снимки», который позволяет управлять снимками выбранной виртуальной машины. Кстати, если просто запустить виртуальную машину, то произойдет обычный запуск, а чтобы виртуальная машина загрузилась в том состояние, в котором мы ее сохранили, нужно сперва выбрать нужный снимок, нажать на камеру с синей стрелкой и нажать на кнопку «Восстановить».
Пробуем восстановить состояние виртуальной машины по сделанному снимку
Чтобы загрузка гостевой ОС происходила с восстановление к тому состоянию, в котором мы сохранили, нужно нажать кнопку «Восстановить
»И только потом запускать виртуальную машину, в моем случае это Mint 2. Обратите внимание: VirtualBox показывает ход восстановления, и мы видим экран в том состояние, в котором он был во время снимка.
Идет процесс восстановления состояния виртуальной машины
Стоит отметить, что процедура восстановления из снимка занимает несколько большее время, чем загрузка, и вы не сразу получите управление над своей гостевой ОС.
Последнее, о чем я хотел бы рассказать в этой части – это про индикаторы, расположенные в правом нижнем углу экрана VirtualBox, они сообщают о состоянии различных устройств виртуальной машины.
Индикаторы устройств виртуальной машины в VirtualBox
Описывать я их не буду, поскольку при наведении курсора мыши на ту или иную иконку, вы получите подробную всплывающую подсказку.
Как удалить виртуальную машину из VirtualBox
Нам осталось узнать, как удалить виртуальную машину VirtualBox. Но для начала я хотел бы показать, где хранятся файлы виртуальной машины, по умолчанию в операционных системах семейства Windows они хранятся вот по этому пути: C:\Users\username\VirtualBox VMs, где username – это имя пользователя Windows. На рисунке ниже показано содержимое этой папки: две папки с именами Mint и Mint 2, как вы догадались, имена папок соответствуют именам виртуальных машин.
Папка, в которой VirtualBox хранит файлы виртуальных машин
Давайте заглянем папку с именем Mint 2, см. скриншот ниже.
Вот так выглядит содержимое виртуальной машины с именем Mint 2
В папке Logs содержится несколько файлов, все эти файлы текстовые, изучив все эти файлы, можно понять, что происходило с виртуальной машиной за все время ее существования. Папка Snapshots хранит в себе файлы, с помощью которых VirtualBox возвращает виртуальную в то состояние, в котором она была в то время, когда мы делали снимок. Ну а файл Mint 2 с иконкой красного куба – это как раз и есть наш виртуальный жесткий диск, который мы форматировали в процессе установки Linux Mint. Два оставшихся файла содержат разметку жутко похожую на xml для отображения интерфейса управления виртуальной машиной.
Понятно, что удалить виртуальную машину можно просто удалив соответствующую папку, но это будет не совсем корректно. Поэтому для удаления давайте вернемся в главное меню VirtualBox и кликнем правой кнопкой мыши по виртуальной машине с именем Mint 2, появится контекстное меню.
Контекстное меню для работы с виртуальной машиной
Выберем пункт «Удалить». Появится меню с предупреждением, в котором можно отказаться от удаления, удалить виртуальную машину только из проводника VirtualBox (пункт «Убрать из списка», в этом случае файлы самой машины останутся) и полностью удалить виртуальную машину, для этого надо нажать «Удалить все файлы».
Мы удалили виртуальную машину как с проводника в VirtualBox, так и с компьютера в целом, в этом можно убедиться, если зайти в папку: C:\Users\username\VirtualBox VMs, теперь здесь не будет папки Mint 2.
На этом подготовительная часть закончена и уже в следующей публикации мы начнем знакомиться с эмулятором терминала и командной оболочкой bash.
Я хочу продолжить выпускать уроки по Linux Mint и командной оболочке bash
Если это так, то ваше желание совпадает с моим. Но мне от вас нужна небольшая помощь! Дело всё в том, что весь мой контент доступен полностью и абсолютно бесплатно в блоге и на канале YouTube. Создание контента — это работа, отнимающая много сил и энергии (благо, она мне нравится и пока я готов ей заниматься), оплату с вас за эту работу я не прошу, но прошу помочь распространить этот контент и поддержать мой канал и группу Вконтакте. Поэтому, если вы хотите, чтобы видео выходили чаще, лучше и больше, то можете мне помочь один из нескольких способов, указанных ниже, это нетрудно, но очень мотивирует и помогает:
- Оставьте ссылку на мой сайт, канал, группу в ВК, отдельное видео у себя на странице в соц. сетях или на своем сайту.
- Вступите в группу в ВК: https://vk.com/zametkinapolyah.
- Подпишитесь на мой YouTube-канал: https://www.youtube.com/user/zametkinapolyahru.
- И самое эффективное: после просмотра видео не забудьте написать отзыв в комментариях на YouTube и поставить лайк видео, опять же, на YouTube.
Замечу, что все мои видео уроки появляются сперва на YouTube, там вы их увидите быстрее всего.
Если вы считаете, что я вам помог и хотите меня отблагодарить материально, то можете воспользоваться реквизитами, указанными ниже. Все вырученные с доната деньги пойдут на улучшение качества видео, например, я возьму хороший USB микрофон, это будет как приятное дополнение к Full HD.
WMR: R288272666982
WMZ: Z293550531456
Яндекс.Деньги: 410011531129223
zametkinapolyah.ru
Как удалить виртуальную машину в VirtualBox, когда жесткий диск, на котором был установлен файл VDI, удален?
Удалите файлы VM на жестком диске. Они расположены по умолчанию в C:\Users\YOUR_NAME\.VirtualBox\Machines
.
После удаления вы все равно получите странные сообщения erros в Virtualbox. Это связано с тем, что некоторая информация о ваших vms находится внутри C:\Users\YOUR_NAME\.VirtualBox\VirtualBox.xml
.
Если вы не возражаете потерять какую-либо глобальную конфигурацию в своем VirtualBox, просто удалите этот файл. Virtualbox создаст другой, если он не существует.
Если вы просто хотите удалить определенную виртуальную машину, вам нужно отредактировать Virtualbox.xml
в каком-то редакторе xml (блокнот в порядке. Notepad ++ лучше, поскольку он имеет подсветку синтаксиса).
Вы найдете эти поля:
<MachineRegistry>
<MachineEntry uuid="UUID" src="Machines\MACHINE_NAME\MACHINE_NAME.xml"/>
</MachineRegistry>
<MediaRegistry>
<HardDisks>
<HardDisk uuid="UUID" location="HardDisks\DISC_NAME.vdi" format="VDI" type="Normal"/>
</HardDisks>
<DVDImages>
<Image uuid="UUID" location="C:\IMAGES\IMAGE.iso"/>
</DVDImages>
<FloppyImages/>
</MediaRegistry>
Удалите MachineEntry с нужной виртуальной машины. Если у вас только одна виртуальная машина и вы хотите удалить все, просто оставьте теги пустыми. Например:
<MachineRegistry/>
<MediaRegistry>
<HardDisks/>
<DVDImages/>
<FloppyImages/>
</MediaRegistry>
… и все готово. Я просто тестировал все здесь, и он работает безупречно. Если вы хотите избежать проблем, создайте резервные копии файлов конфигурации xml из VirtualBox и определенных виртуальных машин.
(Я не упоминал о моментальных снимках, но я считаю, что это тот же принцип.)
ubuntugeeks.com
Как удалить виртуальную машину в VirtualBox, когда жесткий диск, на котором был установлен файл VDI, удален?
Удалите файлы VM xml на жестком диске. Они по умолчанию расположены в C:\Users\YOUR_NAME\.VirtualBox\Machines
.
После удаления вы все равно получите странные сообщения erros в Virtualbox. Это связано с тем, что некоторая информация о ваших vms находится внутри C:\Users\YOUR_NAME\.VirtualBox\VirtualBox.xml
.
Если вы не возражаете потерять какую-либо глобальную конфигурацию в своем VirtualBox, просто удалите этот файл. Virtualbox создаст другой, если он не существует.
Если вы просто хотите удалить определенную виртуальную Virtualbox.xml
, вам нужно отредактировать Virtualbox.xml
в каком-либо редакторе xml (блокнот в порядке, notepad ++ лучше, поскольку он имеет подсветку синтаксиса).
Вы найдете эти поля:
<MachineRegistry> <MachineEntry uuid="UUID" src="Machines\MACHINE_NAME\MACHINE_NAME.xml"/> </MachineRegistry> <MediaRegistry> <HardDisks> <HardDisk uuid="UUID" location="HardDisks\DISC_NAME.vdi" format="VDI" type="Normal"/> </HardDisks> <DVDImages> <Image uuid="UUID" location="C:\IMAGES\IMAGE.iso"/> </DVDImages> <FloppyImages/> </MediaRegistry>
Удалите MachineEntry из желаемой виртуальной машины. Если у вас только одна виртуальная машина и вы хотите удалить все, просто оставьте теги пустыми. Например:
<MachineRegistry/> <MediaRegistry> <HardDisks/> <DVDImages/> <FloppyImages/> </MediaRegistry>
…и вы сделали. Я просто тестировал каждый здесь, и он работает безупречно. Если вы хотите избежать проблем, создайте резервные копии файлов конфигурации xml из VirtualBox и определенных виртуальных машин.
(Я не упоминал о моментальных снимках, но я считаю, что это тот же принцип.)
www.bilee.com
Опыт использования виртуализации на VirtualBox / Habr
Уровень: начинающимВведение
Несколько лет назад я начал разбираться с вируализацией, и у меня получились своего рода путевые заметки, которые я сейчас оформил и выкладываю сюда. Никаких откровений тут не будет, статья адресована начинающим админам. Задача которую я здесь решаю состоит в том, чтобы виртуализовать уже имеющиеся не виртуальные сервера на Linux и FreeBSD.
Причины, по которым я тогда выбрал VirtualBox
Причины представлены ниже:
- Простота использования
- Отличное руководство, подробно описывающее все аспекты работы VirtualBox
- Наличие отличных графического, консольного и web-интерфейса
- Возможность предоставления доступа к консоли гостевой ОС про протоколу RDP
- Удобство использования
Причины, по которым я не выбрал бы его сейчас
- Отсутствие хороших web-морд. Имеющийся web-интерфейс, несмотря на то, что он позволяет совершать с виртуальными машинами большинство требуемых действий (создание, снимки, удаление, создание виртуальных сетей), и реализован очень качественно, обладает следующими ограничениями:
- Не позволяет назначать права на виртуальные машины (предоставления доступа разработчиками по списку только к своим машинам)
- Не позволяет управлять несколькими физическими серверами из одной панели управления
- Не отображает статистику по загрузке сервера
- Пишется сторонними разработчиками, не имеющими отношения к VirtualBox, в их свободное время, из-за чего вызывает опасение возможность прекращения его развития
- Более медленная работа при большом количестве запущенных виртуальных машин по сравнению с KVM.
- Оговорка в лицензии
Подготовка ОС для работы с виртуальными машинами
VirtualBox можно установить практически на любую ОС, однако стабильная работа и все его возможности (например, RDP-подключение к консоли гостевой системы) доступны только на Линуксе, поэтому был выбран Debian Linux. Для самого VirtualBox специальной настройки ОС не требуется, достаточно выделить отдельный раздел для хранения образов дисков гостевых систем и образов установочных дисков для чистой установки гостевых систем.
Однако для управления VirtualBox через Веб-интерфейс (phpvirtualbox) требуется веб-сервер (выбран Apache 2) и PHP 5. В Debian конфигурация по умолчанию PHP 5 и Apache 2 удовлетворяет требованиям phpvirtualbox, специальным образом настраивать ничего не нужно.
Описание конфигурации сервера для виртуалок:
- cервер имеет имя virtbox.site и адрес 10.0.0.7 (кстати, поищите почему не нужно использовать .local)
- Раздел для хранения образов гостевых ос создан на отдельном жестком диске и примонтирован в /srv/vdi
- Установлены пакеты Apache 2 и PHP 5: virtbox# apt-get install apache2 php5
Установка phpvirtualbox
Для Virtualbox существует бесплатный web-интерфейс, реализованный на PHP и использующий встроенную в virtualbox службу удаленного управления virtualbox web service.
Устанавливаем phpvirtualbox:
1. На сайте разработчика смотрим последнюю версию и скачиваем ее на сервер:virtbox# cd /var/www && wget phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-7.zip
2. Распаковываем:virtbox# unzip phpvirtualbox-4.1-7.zip
3. Конфигурируем:virtbox# cd phpvirtualbox-4.1-7.zip && cp config.php-example config.php && vim config.php
4. Прописываем адрес сервера, на котором работает VirtualBox, для удаленных подключений с помощью встроенного в VirtualBox RDP-plugin:var $consoleHost = '10.0.0.7';
Внимание! Для успешных подключений на сервере должны быть открыты входящие порты, по умолчанию начиная с 3389 (TCP), по одному порту на гостевую систему.
5. Настраиваем virtualbox web service, для чего создаем файл /etc/vbox/vbox.cfg со следующим содержанием:VBOXWEB_USER='vbox'
VBOXWEB_HOST=127.0.0.1
VBOXWEB_LOGFILE=/srv/log/vboxwebservice
6. Запускаем virtualbox web service, перед этим нужно убедиться в том, что файл /srv/log/vboxwebservice доступен для чтения и записи пользователю vbox:/etc/init.d/vboxweb-service start.
phpvirtualbox теперь доступен по адресу virtbox.site/phpvirtualbox.
Создание виртуальных машин
Создание виртуальных машины через web-интерфейс достаточно очевидно, нужно нажать в phpvirtualbox кнопку New и следовать инструкциям мастера. Ниже приводится выработанный опытным путем список настроек гостевых систем, достаточный для нормальной работы гостевых Linux и FreeBSD.
- System
- Base Memory: 512 MB
- Processor(s): 1
- Enable PAE/NX: NO — эмуляция поддержки работы с более чем 4 ГБ памяти для 32-битных систем как правило не нужна
- Chipset: PIIX3 — в руководстве ничего не сказано про зависимость быстродействия от типа эмулируемого чипсета, поэтому выбираем по умолчанию
- Extended features
- Enable IO APIC — без включенной эмуляции APIC некоторые клонированные сервера работать не будут
- Hardware clock in UTC time — как правило гостевые системы ожидают системное время в формате UTC, и эта опция отвечает за передачу гостевой ОС времени в UTC, а не в Local time сервера.
- Display: 2 MB — минимально возможное значение, при установке этого значения в 1 MB rdp-подключения работать не будут. При создании новых машин можно оставить значение по умолчанию, предлагаемое phpvirtualbox.
- Storage: где нужно создать образ диска
- Network
- Debian: Virtio — Debian с помощью гостевых расширений умеет понимать, что она работает в виртуальной машине, и использовать виртуальную сетевую карту, что дает очень большой выигрыш в производительности
- FreeBSD: Intep PRO/1000 MT Server network card — для FreeBSD гостевого драйвера сетевой карты нет, поэтому выбираем эмуляцию самой быстрой карты из доступных. Во FreeBSD устройство называется em0.
- Serial ports: Disabled
- USB: Disabled
- Shared Folders: None — возможность VirtualBox предоставлять доступ гостевой системе к файлам хост-системы как правило не нужна, проще воспользоваться scp или sftp
Управление виртуальными машинами
Управление через веб-интерфейс
Управление виртуальными машинами через web-интерфейс тривиально, достаточно выделить нужную машину в phpvirtualbox и выбрать в интерфейсе требуемое действие, например Start, Stop (безусловное выключение, отправка сигнала о нажатии кнопки выключения питания, перезагрузка, сохранение состояние гостевой системы с возможностью впоследствии откатить ее состояние и приостановка работы гостевой системы с сохранением ее памяти на диск и возможностью впоследствии загрузки памяти с диска и продолжения работы).
По щелчку на гостевой системе правой кнопкой машины доступны операции ее настроек, удаления, просмотра логов и т.д.
Также стоит отметить возможность подключения к консоли гостевой системы, что аналогично подключению к реальной машине мыши и клавиатуры. Для этого нужно выделить нужную гостевую систему, выбрать вкладку Console в phpvirtualbox, задать размер экрана (для текстовых режимов работы гостевых ОС достаточно 800х600), нажать Connect и щелкнуть мышью по клиенту удаленного подключения (в котором выводится содержимое консоли гостевой системы). Управлять гостевой системой можно с момента включения.
Управление через консоль
Для управления гостевыми система в VirtualBox используются утилиты VBoxManage и VBoxHeadless, подробное описание которых доступно в руководстве.
Запускать команды нужно от пользователя vbox, под которым работает сам VrtualBox, в случае запуска от другого пользователя или root VirtualBox не сможет найти файлы конфигурации виртуальных машин, которые хранятся в домашней директории пользователя Vbox, и выдаст ошибку.
Для перехода под пользователя vbox нужно сказать:su -s /bin/bash vbox
Оболочку нужно указывать явно, потому что по умолчанию у пользователя vbox стоит оболочка /bin/false.
Ниже для примера приведены команды для включения, выключения и работы с образами дисков.
1. Запуск группы гостевых систем (можно сделать автоматическим при включении и перезагрузке сервера):for M in test1 test2 test3 ; do VBoxManage startvm $M --type=headless ; sleep 30 ; done
Если не указывать sleep 30 некоторые машины могут не запуститься из-за очень интенсивного чтения с жесткого диска сервера при запуске и некоторые гостевые системы решат, что у них ошибка чтения с жесткого диска.
2. Выключение группы гостевых систем (можно сделать автоматическим при включении и перезагрузке сервера):for M in test1 test2 test3 ; do VBoxManage controlvm $M acpipowerbutton ; sleep 30 ; done
Практически все машины понимают нажатие на кнопку выключения питания и смогут корректно завершиться.
3. Создание диска фиксированного размера для гостевой системы:VBoxManage createhd --variant Fixed --size 20000 --format vdi --filename test
4. Преобразование образа диска из формата VirtualBox в формат, понятный другим виртуальным машинам:VBoxManage internalcommands converttoraw test1.vdi test1.raw
Подключение через RDP
К консоли виртуальных машин можно подключиться через RDP. В Windows нужно открыть Пуск->Все программы->Стандартные->Подключение к удаленному рабочему столу и указать адрес virtbox.test и порт, сопоставленный конкретной гостевой системе, который можно посмотреть в phpvirtualbox. Для удобства использования в параметрах подключения можно указать разрешение экрана 1024х768, тогда окно с подключением не будет занимать весь экран и перехватывать системные сочетания клавиш, такие как Alt+Tab.
Важное замечание: возможно одновременное подключение к одной гостевой системе нескольких пользователей. При этом все видят одно и то же, и все совершенные кем-либо действия видны остальным подключившимся. Для включения этой настройки нужно в настройках виртуальной машины в phpvirtualbox в разделе Display на вкладке Remote Display установить галочку Allow Multiple Connections.
Создание снимков гостевых систем
Снимки дают возможность сохранения состояния гостевых систем и возврата к этому состоянию по требованию. Что это означает на практике?
- Можно попробовать различные запросы к базе данных на гостевой системе с возможностью после каждого запроса восстанавливать начальное системы
- Можно попробовать различные конфигурации взаимодействия сервисов на гостевой системе без необходимости вручную откатывать изменения во многих конфигурационных файлах в случае получения нерабочей системы
- И наконец это иногда удобный инструмент создания резервных копий, который позволяет сделать полный снимок рабочей машины и восстановить ее полностью за минимальное количество административных действий. Внимание! Не делайте этого с продукционными машинами.
Для создания снимка через phpvirtualbox нужно:
- Выделить гостевую систему, с которой нужно сделать снимок
- Перейти на вкладку «Snapshots»
- Нажать кнопку «Take Snapshot» (с изображением фотоаппарата)
- Ввести название снимка и комментарий
- Выделить гостевую систему, с которой нужно сделать снимок
- Выключить гостевую систему, нажав «Stop»>«Power Off»
- Перейти на вкладку «Snapshots»
- Выделить снимок, который нужно восстановить
- Нажать кнопку «Restore Snapshot» (с изображением компьютера со стрелкой вверх)
Создание дампа
Debian Linux
Процедуры клонирования и восстановления приведены на примере сервера test1 на котором установлена Debian Linux (любой версии, начиная с 5 Lenny точно). Предполжим, что у нас имеются три раздела с тремя файловыми системами:
/, /var, /usr
Сначала нужно установить dump:aptitude install dump
Далее, для создания дампа клонируемого сервера на Debian необходимо от суперпользователя (root) или с помощью sudo дать следующие команды (как сделать так, чтобы не сдампило дампы, думайте сами):dump 0af test1.root /
dump 0af test1.var /var
dump 0af test1.usr /usr
Здесь:0 -- дамп уровня 0
a -- не делать предположений о размере носителя, на который осуществляется дамп
L -- делать дамп со смотрированной ФС, при этом сначало делается снимок фс, дапм, потом дамп еще раз, чтобы не было поврежденных файлов. Linux так не умеет.
f -- делать дамп в файл вместо ленточного накопителя.
Полученные файлики нужно переложить на сервер с VirtualBox.
FreeBSD
Процедуры клонирования и восстановления приведены на примере сервера test1 на котором установлена FreeBSD (любой версии, начиная с 6 точно). Предполжим, что у нас имеются три раздела с тремя файловыми системами:
/, /var, /usr
Для создания дампа клонируемого сервера на FreeBSD необходимо от суперпользователя (root) или с помощью sudo дать следующие команды (опять напоминаю про дампание дампов):dump 0aLf test1.root /
dump 0aLf test1.var /var
dump 0aLf test1.usr /usr
Здесь:0 -- дамп уровня 0
a -- не делать предположений о размере носителя, на который осуществляется дамп
f -- делать дамп в файл вместо ленточного накопителя.
Анаглогино, полученные файлики нужно переложить на сервер с VirtualBox.
Развертывание дампа
Debian Linux
1. Нужно сделать виртуальную машину, прицепить к ней диск и загрузочный LiveCD Debian.
2. Затем нужно примонтировать получившийся раздел, зачать на него дампы, развернуть их:cd /mnt1 && restore -rf /mnt/test1.root && cd usr && restore -rf /mnt/test1.usr &&
cd ../var && restore -rf /mnt/test1.var
3. Установить загрузчик:grub-install /dev/sda1
.
4. Поправить UUID в /etc/fstab
5. Проверить, чтобы в /boot/grub/grub.cfg
были правильно указаны UUID разделов:search --no-floppy --fs-uuid --set df7f92ba-2877-4b39-8805-966cf9ab52f3
linux /boot/vmlinuz-2.6.32-5-amd64 root=UUID=df7f92ba-2877-4b39-8805-966cf9ab52f3 ro quiet
6. Проверить /var/spool/cron/crontabs, /etc/crontab
и отключить то, что ненужно.
7. Если на восстанавливаемом сервере была включена консоль, то убрать из /etc/inittab
строчку похожую на следующую:T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
, а и из /etc/default/grub
такую:GRUB_TERMINAL=console
(достаточно закомментировать).
FreeBSD
Созданные дампы нужно развернуть на образе диска, выделенного под гостевую систему. В настоящие время поддержка файловых систем UFS используемых во FreeBSD ограниченна, поэтому для развертывания дампов создается виртуальная машина FreeBSD, к ней подключается раздел для хранения дампов, на который с помощью scp и пересылаются дампы с клонируемых серверов. Потом к этой машине подключается образ диска выделенный под гостевую систему, на этом образе создается файловая система FreeBSD и разворачивается полученный дамп.
Далее предполагается, что раздел tmp примонтирован в /mnt, образ диска для гостевой ОС размечен под два слайса, первый из которых примонтирован в mnt1, а второй отдан под swap и не примонтирован. Тогда развернуть дамп можно следующим образом:
cd /mnt1 && restore -rf /mnt/test1.root && cd usr && restore -rf /mnt/test1.usr &&
cd ../var && restore -rf /mnt/test1.var
Здесь && нужно для того, что следующая команда выполнится только в случае успешного завершения предыдущий, и таким образом исключаются ситуации, когда например каталог var не будет создан, переход в него не осуществится и разворачивание дампа произойдет не туда, т.к. разворачивание дампа производится относительно текущей директории.
Необходимые изменения в конфигурации гостевой ОС клонированного сервера
До загрузки гостевую ОС нужно перенастроить для работы в виртуальной машине. Количество требуемых действий как правило минимально и сводится к следующему:
1. Находясь в директории mnt1 (см. выше) удаляем файлы конфигурации загрузчика. Это особенно актуально, если виртуализуем какой-нибудь продукционный сервер, чтобы исключить использование COM-порта в качестве консоли по умолчанию, что приводит к зависанию загрузчика.rm /mnt1/boot.config
rm /mnt1/boot/device.hints
2. Заменить содержимое файла /mnt1/etc/fstab
следующим:/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 2 2
При этом предполагается, что образ диска гостевой ОС разбит на 2 слайса, первый из которых отдан под хранение данных и второй под swap.
3. Если нужно, сказать клонированной системе о необходимости загрузки модуля ядра для работы с эмулированной сетевой картой, для чего нужно в файле /boot/loader.conf добавить строчку if_em_load="YES"
4. Указать клонированное системе выделенный для нее IP-адрес, для чего в /etc/rc.conf
нужно закомментировать строчку текущих настроек сетевого адаптера и добавить новую строчку следующего вида:
ifconfig_em0="inet 10.0.0.8/24"
6. Если клонированному серверу выделяется видимый снаружи IP-адрес, то нужно удалить его настройки, отвечающие за его взаимодействие с другими серверами. Внимание! У клонированного сервера есть все настройки настоящего, поэтому теоретически возможно, что если настройки не удалить, то клонированный сервер будет мешать работе боевой системы. Главное место, которое нужно проверить на FreeBSD-based серверах, находится в /var/cron/tabs/
.
7. Выключить FreeBSD, использованную для разворачивания дампа, и загрузить гостевую систему с клоном сервера. В случае проблем при загрузке возможно, что ядро на системе было пересобрано с измененной конфигурацией, это можно исправить сказав загрузчику загрузить ядро по умолчанию, которое я надеюсь вы сохранили в системе во время пересборки:unload
load boot/kernel.GENERIC/kernel
boot
Для отдачи этих команд необходимо включить гостевую систему, подключиться к ней по RDP и дождаться появления на экране сообщений о том, что можно нажать Enter для указания опций загрузчику.
8. Добавить пользователя для доступа по ssh, зайдя через RDP на клонированный сервер:pw user add username -g wheel && passwd username
Здесь опция -g wheel
добавляет пользователя в группу wheel, члены которой во FreeBSD обладают правом делать sudo и su.
Создание виртуальных сетей
Внутри VirtualBox можно создавать полностью изолированные виртуальные сети. Какие возможности это дает?
Минимизация необходимости перенастройки клонированных серверов
Создание тестовой среды для отработки взаимодействия серверов между собой
Создание виртуальной сети
Чтобы создать виртуальную сеть нужно в phpvirtualbox зайти в свойства гостевой системы, перейти в раздел Network, выбрать в поле «Attached to» опцию «Internal Network», а в выпадающем списке «Name» выбрать требуемую виртуальную сеть. Какие могут возникнуть сложности?
Нужно создать новую виртуальную сеть, а такой опции в интерфейсе нет. Есть два варианта решения:
Попробовать написать имя новой виртуальной сети прямо в выпадающем списке «Name». Однако в этом случае может возникнуть ошибка.
Тогда нужно привязать сетевой адаптер гостевой системы к виртуальной сети через CLI:
sudo su -s /bin/bash vbox
VBoxManage modifyvm test1 --nic1 intnet
Здесь
nic1 — сетевой адаптер гостевой системы, где 1 это его порядковый номер. Количество адаптеров в гостевой системе не ограничено
intnet — виртуальная сеть, название может быть любым. Особенность работы VirtualBox заключается в том, что специально создавать виртуальные сети не нужно, достаточно указать нескольким гостевым системам одну и ту же виртуальную сеть и они окажутся связанными на (эмулированном) физическом уровне автоматически, что аналогично подключению нескольких реальных компьютеров к одному свитчу (коммутатору).
Более подробная информация находится в разделе 8.7.2 Networking setting руководства пользователя.
Управление недоступными снаружи машинами в виртуальной сети
Доступ по RDP
RDP-сервер работает на физическом сервере, поэтому для подключения к любой виртуальной машине справедливо написанное в разделе Управление через веб-интерфейс этой статьи.
Проброс портов
Существует возможность создать в гостевой системе виртуальную сетевую карту с подключением через NAT (реализуемый автоматически средствами VirtualBox) и пробросить (отобразить) произвольный порт гостевой системы на порт сервера VirtualBox. Для того, чтобы сделать это через phpvirtualbox, нужно:
1. Зайти в свойства гостевой системы, перейти в раздел «Network», выбрать в поле «Attached to» опцию «NAT»
2. Раскрыть опции, скрывающиеся в разделе «Advanced» этого же раздела, и нажать там кнопку Port Forwarding
3. В открывшемся окне «Port Forwarding Rules» указать следующие параметры:
4. Нужный протокол, путем щелчка мышью по именованию «TCP» в поле «Protocol»
5. Указать свободный порт на сервере VirtualBox в поле «Host Port»
6. Указать порт гостевой системы в поле «Guest Port».
Больше ничего указывать не нужно. После применения настроек порт гостевой системы станет немедленно (без перезагрузки) доступен через соответствующий порт сервера VirtualBox. Как пример, в случае с пробросом порта ssh (22 TCP) гостевой системы на 2200 порт VirtualBox нужно указать следующие параметры:Параметр Значение
Name ssh (необязательный параметр)
Protocol TCP
Host IP Не указывать
Host Port 2200
Guest Port 22
Guest IP Не указывать
Количество отображаемых портов не ограничено, можно отобразить столько, сколько нужно.
Виртуальный маршрутизатор
В случае создание в VirtualBox группы взаимодействующих гостевых систем без внешних адресов имеет смысл установить еще одну гостевую систему, которая будет играть роль маршрутизатора. Какие цели при этом достигаются?
Конфигурацию сетевых адаптеров клонированных сервером можно не менять. При этом виртуальный маршрутизатор создает для остальных гостевых систем видимость того, что они настоящие и пользуются своими настоящими именами хостов и IP-адресами
К гостевым системам не имеющим ни внешних адресов, ни описанной выше возможности проброса портов, которая работает только в случае использования NAT опции VirtualBox, становится возможен прямой доступ по ssh.
Создание создание виртуального маршрутизатора состоит из следующих шагов:
- Создание гостевой системы
- Установка на гостевую систему любой ОС, которая может играть роль маршрутизатора, например Debian Linux или FreeBSD
- Ввод гостевой системы в виртуальную сеть как описано выше
- Настройка гостевой системы для выполнения функций маршрутизатора
- Подключение к гостевой системе второго виртуального сетевого адаптера в режиме моста с сетевым адаптером сервера VirtualBox
После этого можно пробрасывать порты с виртуального маршрутизатора на гостевые системы без внешних адресов. В случае Linux c iptables для проброса входящих соединений с 2200 порта протокола TCP виртуального маршрутизатора на 22 порт (TCP) гостевой системы без внешнего адреса c внутренним адресом 192.168.0.2 достаточно следующего правила:
iptables -t nat -A ROUTING -p tcp -i eth0 --dport 2200 -j DNAT --to-destination 192.168.0.2:22
При этом предполагается, что виртуальный маршрутизатор настроен правильно и имеет сетевой адаптер, настроенный на работу с виртуальной подсетью в которой находится гостевая система с адресом 192.168.0.2
Доступ по SSH
В соответствии с вышеприведенным примером можно зайти по ssh на гостевую систему без внешнего адреса указав в ssh-клиенте адрес виртуального маршрутизатора и порт 2200. Аналогично можно зайти по scp для передачи файлов на гостевую систему.
habr.com
Запуск VirtualBox в скрытом режиме
Как запустить виртуальную машину VirtualBox так, что бы пользователь этого не увидел?
Зачем это нужно?
Например, виртуальная машина XPprint занимается печатью на старом принтере (да, только под Windows XP).
Есть несколько вариантов.
Используем отдельную утилиту VboxHeadlessTray
Она позволяет обеспечить запуск виртуальной машины в скрытом режиме, иконка появляется в системном трее.
Вот в таком виде
Сайт разработчика www.toptensoftware.com/vboxheadlesstray
Скачиваем утилиту для соответствующей версии VirtualBox
Запускаем, видим нашу работающую машину
Если список VboxHeadlessTray пустой, то:
- или машина не запущена в VirtualBox (или вообще ее там нет)
- или версия VboxHeadlessTray не совпадает с версией VirtualBox
Далее — ОК и наша машина появляется в системном трее. Теперь осталось ее спрятать с панели задач и экрана.
«Go Headless» — вольный перевод «убрать голову». Переход в режим без GUI (и обратно) происходит через перезапуск машины.
Готово — машина тихо работает и сидит в трее.
В скрытом варианте меню почти такое же
только теперь один пункт Open VirtualBox GUI -> открыть графический интерфейс VirtualBox.
GUI — это у нас англ. graphical user interface — на языке программистов это просто ГУЙ 🙂
P.S. И да. У нас же тихий запуск ? Не забудьте выключить звук в гостевой ОС :).
Иначе в процессе загрузки реального ПК услышите две мелодии вместо одной (обидно, да?):
- старт основной ОС Windows 7
- с паузой старт гостевой ОС Windows XP
Но к сожалению не всё хорошо…. Утилита при каждом завершении работы (или выходе из системы) создает в папке Snapshots файл sav с данными системы (оперативной памяти виртуальной машины) перед выходом
На примере Windows XP — это на уровне 100 Мб = за 10 завершений работы системы на диске образуется порядка 1 Гб ненужных файлов. И нигде это внутри не настраивается.
Читаем статью, как это исправить
VirtualBox создает много sav-файлов
Зачем вообще нужна папка Snapshots и файлы sav — читаем в статье
Как сохранить состояние виртуальной машины VirtualBox
Пойдем вторым путем
Запускаем машину VirtualBox как службу Windows с помощью программы VBoxVmService
Качаем на странице разработчика
Из плюсов — нет привязки к конкретной версии VirtualBox. С программой VBoxVmService виртуальная машина запускается как сервис даже без логина пользователя в систему.
Далее, далее….
Видим финишное окно установки
На всё соглашаемся, читаем файл Howto.txt
Краткий вольный перевод:
- Part 1 — проверить, как работают виртуальные машины VirtualBox и все закрыть
- Part 2, Step 1 — запустить установщик (уже сделано)
- Part 2, Step 2 — внести свои параметры в файл VBoxVmService.ini
- Part 2, Step 3 — Reboot your system
Подробнее про параметры.
Переходим в папку с установленной программой (по умолчанию — C:\vms), открываем там файл VBoxVmService.ini и меняем нужные нам параметры.
Ниже описаны обязательные для редактирования настройки:
[Settings]
VBOX_USER_HOME — тут нужно указать путь к папке с виртуальными машинами.
[Vm0]
VmName — указываем имя виртуальной машины;
ShutdownMethod=savestate — метод завершения работы виртуальной машины, которых может быть два:
- «savestate«
- «acpipowerbutton» — вот просто выключение
Первый при выключении сохраняет состояние виртуальной машины, и при включении как бы продолжит её работу, второй является как бы полноценным выключением компьютера
AutoStart — запускать виртуальную машину автоматом при включении компьютера. Возможные варианты — yes и no, в переводе думаю не нуждаются.
Допустим, если целью стоит запуск виртуальной машины с названием XPprint, то файл настроек будет выглядеть следующим образом:
[Settings]
VBOX_USER_HOME=C:\VirtualBoxMy
RunWebService=no
PauseShutdown=5000
[Vm0]
VmName=XPprint
ShutdownMethod=acpipowerbutton
AutoStart=yes
После сохранения файла и перезагрузки видим в трее
XPprint запущена. В службах уже ничего корректировать не надо — служба в автоматическом режиме.
А как собственно в машину попасть? Интерфейс же не запущен.
Мы можем зайти в машину:
Конечно, достаточно чудно бегают пакеты TCP для доступа к гостевой машине (с использованием RDP).
С хостовой машины через реальный сетевой адаптер пакет идет на роутер, он их отправляет на «нарисованный» сетевой адаптер гостевой машины (хм, а виртуальный сетевой адаптер сделан на базе реального хостовой машины — т.е. фактически и физически пакет TCP возвращается обратно по тем же самым проводам витой пары в ту же самую сетевую карту), и в конце концов пакет попадает в гостевую машину (которая «нарисована» внутри реальной хостовой машины).
Пикассо отдыхает…. Достаточно сильный уровень абстракций….
Осталось попробовать самый простой вариант
Запуск виртуальной машины VirtualBox в фоновом режиме
У кнопки «Запустить» есть несколько вариантов, в том числе и фоновый режим без интерфейса
Запускаем в фоновом режиме нужную машину, при необходимости обращаемся к ней через удаленный рабочий стол RDP (необходимо заранее на нашей машине настроить сеть).
А где здесь тихий режим запуска? Это же надо открыть менеджер VirtualBox и руками запустить машину? Можно — но не нужно.
VirtualBox умеет работать в режиме командной строки.
Вот список основных команд:
- Для того, чтобы посмотреть список существующих виртуальных машин, нужно выполнить
VBoxManage list vms
список будет примерно таким
"XPprint" {9637154d-3e3c-46eb-9f5c-645d62b54}
"ubuntu" {d66e0cef-3f19-451f-87a3-4f9ecce6f}
- Запустить какую-либо машину
VBoxManage startvm XPprint
- Запустить без графического окна, в фоне, только для удаленного подключения, нужно указать опцию type как headless
VBoxManage startvm XPprint --type headless
- Выключение виртуальной машины
VBoxManage controlvm "XPprint" poweroff
- Сохранение состояния и выключение
VBoxManage controlvm "XPprint" savestate
машина сохранит состояние и выключится.
Для тихого запуска нам нужно всего лишь сделать батник (файл с расширением bat) и положить его в автозагрузку Windows. При старте системы будет стартовать и виртуальная машина в фоне без пользовательского интерфейса.
Вот пример такого bat-файла
Да — просто Блокнот и команды, знакомые с детства.
Выходим из системы и снова заходим под любым пользователем.
Машина прекрасно стартует.
Да — и не забудем — у нас все-таки скрытый режим, не будем беспокоить пользователя лишними черными окнами, bat-файл будет выглядеть вот так
@echo off cd C:\Program Files\Oracle\VirtualBox VBoxManage.exe startvm XPprint --type headless
@echo off — отключить режим вывода команд на экран (кто там DOS помнит?). Символ @ перед командой echo используется для того, чтобы на экран не выводился и текст самой команды.
Еще почитать:
VirtualBox
VirtualBox (Oracle VM VirtualBox) — система виртуализации предназначенная для создания виртуальной машины с параметрами железа реального компьютера, на которой можно запускать любую операционную систему. Последняя версия 5.2. Сайт компании www.virt…
Автоматический перехват порта USB VirtualBox
VirtualBox умеет при старте забирать себе порт usb с нужным устройством. Например, мы используем usb-принтер (или хотим использовать флешку), который работает только под Windows XP. Заберем порт с подключенным принтером от основного ПК (естественно, принте…
Запуск VirtualBox для нескольких пользователей
Будем использовать VirtualBox для нескольких пользователей ПК. По умолчанию VirtualBox создает папку с машинами в разделе одного пользователя. Создадим папку, куда имеют доступ все пользователи ПК и укажем ее в настройках. Например C:\VirtualBox…
Как сохранить состояние виртуальной машины VirtualBox
Что такое Snapshots on VirtualBox? Даже целая папка на диске есть. Это папка, в которой хранятся все сохраненные состояния виртуальной машины VirtualBox Сохраняем состояние виртуальной машины VirtualBox Выбираем нужную машину и заходим…
Настройка сети VirtualBox
Виртуальную машину VirtualBox можно использовать как реальный ПК с сетевым адаптером. Переходим в настройки сети VirtualBox Не подключен — в данном режиме адаптер присутствует в гостевой системе, но ведет себя так, как будто сетевой каб…
Общая папка VirtualBox для основной и гостевой ОС
Будем создавать общую папку в основной системе и в виртуальной машине. Нам нужно как-то видеть файлы реальной системы из виртуальной машины. Для этой цели необходимо настроить общую папку (или несколько общих папок). Заходим в устройства, выби…
Установка VirtualBox и создание машины
Будем устанавливать Windows 10 с помощью VirtualBox Зачем? Например, у нас нет современного процессора, который хочет Windows 10, но у нас есть XEON 771 . Он поддерживает виртуализацию и позволит нам создать правильный «нарисованный» процессо…
comphome.ru
VirtualBox Tips`n`Tricks: Неочевидные трюки использования виртуальной машины
Содержание статьи
Если хоть раз попробуешь установить Linux под VirtualBox’ом, может сложиться впечатление, что это очень простой инструмент. Интерфейс виртуальной машины не содержит ничего лишнего, а работа с приложением предельно понятна и прозрачна. На самом же деле под этой простотой скрывается масса дополнительных возможностей, которая нужна далеко не всем. Но эта история не про нас.
Работая с VirtualBox’ом каждый день, открываешь для себя все новые и новые фишки. Например, недавно, когда мне понадобилось отснифать весь трафик виртуальной машины, оказалось, что необязательно использовать сниффер: для этого есть встроенная опция в самой программе. А встроенный API, как оказалось, за последние полтора года сильно шагнул вперед, и я буквально за часик разобрался и сварганил скрипт, который автоматически выполнял нужные мне действия внутри гостевой системы. Сегодня мы решили аккумулировать свой опыт и составить несколько полезных и подчас неочевидных приемов работы с VirtualBox, к которым нам нередко приходится прибегать.
Трик 1. Управляем виртуальными машинами через RDP
Удаленный доступ — это то, что я использую каждый день. С этой стороны особенно приятно, что к любой виртуальной машине VirtualBox можно удаленно подключиться и комфортно работать с ней, используя стандартный протокол RDP (Remode Desktop Protocol). Подойдут любые знакомые клиенты: виндовая утилита mstsc или, например, никсовый FreeRDP (www.freerdp.com). Для каждой виртуальной машины выделяется отдельный порт, поэтому нет никакой проблемы, чтобы запустить на хостовой машине сразу несколько виртуалок и в случае необходимости обращаться к любой из них. Соответственно, все, что нужно для подключения — это указать IP-адрес хостовой машины с нужным портом. Стандартный виндовый клиент вызывается по команде mstsc. Под никсами выполнить подключение не менее просто через rdesktop, который в любом современном дистрибутиве установлен по умолчанию:
rdesktop host_system_ip:port
Включить доступ по RDP и назначить порт можно в настройках каждой виртуальной машины на вкладке «Удаленный дисплей». Для виртуалки с виндой можно оставить порт по умолчанию 3389 (имей в виду, что он может быть занят непосредственно серверо м RDP хостовой машины), а для машины с никсами — 3390 и т.д. Если планируется несколько одновременных подключений, необходимо активировать соответствующую опцию. Помимо этого здесь настраиваются параметры авторизации.
Самый небезопасный метод — полностью отключить процедуру аутентификации, но в этом случае доступ к виртуалке получит любой желающий. Вместо этого можно выбрать авторизацию через аккаунты хостовой системы или учетные записи гостевой системы. Для того, чтобы данные было невозможно отснифать, любая RPD-сессия шифруется с помощью симметричного RC4 алгоритма с 128-битным ключом, который меняется каждые 4096 отправленных пакетов.
Трик 2. Устанавливаем веб-морду
Чтобы иметь доступ к виртуальным машинам извне, на домашнем роутере мне приходится пробрасывать порты для каждой из них.
Все хорошо ровно до того момента, пока не окажешься в сети, где админ режет весь подозрительный (с его точки зрения) трафик, и попытки подключения по RDP летят в тартарары. К счастью, старый добрый протокол HTTP разрешен везде, и этим фактом нельзя не воспользоваться. Мы уже когда-то рассказывали о веб-интерфейсе для управления виртуальной машиной с помощью VirtualBox Web Console (code.google.com/p/vboxweb). Ныне этот проект не развивается и не поддерживается, но зато он был взят за основу актуального решения phpVirtualBox (code.google.com/p/phpvirtualbox). По сути, это точная копия интерфейса десктопной версии VirtualBox, но реализованная на PHP и AJAX. Получается, что из любого места, имея под рукой лишь браузер, можно обратиться к серверу с установленным phpVirtualBox и получить доступ к свои виртуальным машинам. Блеск.
1. Для работы phpVirtualBox необходим запущенный на хостовой машине демон vboxwebsrv (он распространяется вместе с VirtualBox). На никсовых машинах он, как правило, располагается в папке /usr/bin. Под виндой он находится в папке с VirtualBox, то есть, скорее всего, в C:\Program Files\Oracle\VirtualBox. Важный момент: программа должна быть запущена под тем же пользователем, что и сам VirtualBox. Лучше всего отключить весь вывод программы, в противном случае будет сильно страдать производительность.
"C:\Program Files\Oracle\VirtualBox\vboxwebsrv.exe"
>nul
2. Далее нам понадобится любой работающий веб-сервер с PHPинтерпретатором. Чтобы не париться с настройкой, можно взять готовую сборку XAMP или XAMPPLite (www.apachefriends.org). Файлы из архива phpVirtualBox необходимо разместить в папке htdocs.
3. В завершение необходимо прописать некоторые настройки VirtualBox’а в файле config.php, назначив новые значения для переменных $username, $password, $location. Все. После этого можно попробовать открыть админку (http://<ip-адрес сервера>:<порт>) и убедиться, насколько все здорово работает. На сайте VirtualBox можно скачать SDK разработчика, в котором помимо прочего находятся исходники RDP-клиента, реализованного на Flash’е. Технология называется RDP Web Control и позволяет прямо из вкладки браузера управлять виртуальной машиной так же, как через любой RDP-клиент. Разработчики phpVirtualBox, само собой, встроили RDP Web Control в свою оболочку. Так что через веб-оболочку доступно не только управление настройками виртуальных машин, но и полноценная работа с ними. Это очень круто!
Трик 3. Управляем ВМ через консоль!
Но удаленный доступ — это не все, что нужно для эффективного использования виртуальных машин. Еще одна важная часть — возможность автоматизации. К счастью, в VirtualBox никто не обязывает тебя использовать GUI-интерфейс. Любые действия можно выполнить через консольную утилиту администрирования VBoxManage.exe и использовать ее в любых своих сценариях. Можешь попробовать ввести команду «VBoxManage list vms» — получишь в консоли список всех существующих виртуальных машин, их имена и идентификаторы UUID:
Oracle VM VirtualBox Command Line Management Interface Version 3.2.10 (C) 2005-2010 Oracle Corporation All rights reserved.
"MacOS" {5f74df26-8f93-4f18-b120-da107a5e0a9c}
"macox" {8385d552-b41e-4ffd-add0-3b8795e53f46}
"ubuntu" {09e0b578-3668-4492-92d2-7fa5fb21c911}
"vista" {27b526c2-6bca-4cfe-ace8-703b803670a8}
"xp" {521f3a25-68c7-44e7-a28f-0c60ee87295e}
Хочешь запустить одну из них прямо из консоли? Ничего сложного: отдаем соответствующую команду, указав имя нужной виртуалки — «VBoxManage.exe startvm xp». Верный способ получить справку о том, какие команды доступны, и как их использовать — запустить приложение без параметров. Разработчики гарантируют, что консольная версия ничем не уступает GUI-оболочке, и любые действия с виртуальными машинами можно с не меньшим успехом выполнить через VBoxManage. Выше я упоминал SDK для разработчиков, который обновляется с каждой новой версией VirtualBox и выкладывается на официальном сайте.
Программа предоставляет мощнейший API для управления виртуальными машинами. Система встроенных вызовов такова, что использовать ее можно из самых разных языков программирования: существуют привязки (то есть специальные модули) для Java, Python и других языков. В качестве хорошего примера для старта можно взять из SDK vboxshell.py, в котором через API реализовано несколько полезных опций для управления виртуалками. В том числе запуск программы внутри гостевой ОС, создание скриншота с дисплея виртуальной машины, подключение ISO-образа в качестве CD/DVD-диска, проброс портов из хостовой машины в гостевую ОС и т.д. В прошлом году у нас был материал «Прокачиваем виртуальную машину», где мы уже рассматривали API VirtualBox’а. Тогда из-за отсутствия вызовов для управления поведением гостевой системы (например, запуска приложений) нам пришлось использовать API VMware с более продвинутыми возможностями. Сейчас же API VirtualBox сделала два шага вперед, и мы вполне могли обойтись без использования платной VMware.
Трик 4. Снифаем весь трафик виртуальной машины
Недаром во время установки VirtualBox под винду выводятся предупреждения, что все сетевые подключения будут на небольшое количество времени отключены. Программа устанавливает в систему дополнительные сетевые драйвера и виртуальные сетевые адаптеры. Их можно найти через диспетчер устройств: «VirtualBox Host-Only Ethernet Adapter» — то, о чем я говорю. Весь трафик гостевой системы, конечно же, проходит через эти вспомогательные элементы. И вот за что разработчикам хочется в очередной раз сказать «Спасибо», так это за возможность записать весь трафик напрямую в pcap-файл. Да, для перехвата пакетов можно было воспользоваться и обычным сниффером (причем как под гостевой, так и под хостовой системой), но используя эту встроенную возможность VirtualBox, ты получаешь в распоряжение лог абсолютно всех пакетов, который отправила или получила гостевая ОС. Для включения записи сетевого трафика достаточно двух команд:
VBoxManage modifyvm [your-vm] --nictrace[adapternumber]
on --nictracefile[adapter-number] file.pcap
VirtualBox -startvm [your-vm]
Например, так:
VBoxManage modifyvm "ubuntu" --nictrace1 on
--nictracefile1 file.pcap
VirtualBox -startvm "ubuntu"
В результате в файле file.pcap будет полный дамп трафика, который можно изучить с помощью любого анализатора, например, Wireshark. Важно после всех экспериментов не забыть отключить логирование, иначе pcap-файлы будут разрастаться на диске (особенно если ты решишь скачать под гостевой ОС какие-то тяжелые файлы).
Трик 5. Переносим существующую Windows-систему в виртуальное окружение
Под виртуальной машиной не всегда удобно устанавливать систему с нуля.
Избежать геморроя с установкой и настройкой дополнительного софта можно, если перенести под VirtualBox свою существующую систему. Этот процесс называется миграцией, или P2V (Physical-to-Virtual). В отличие от Linux’а, перенести Windows с одного железа на другое — не такая простая задача. Виной тому ядро и драйверы, которые сильно завязаны на текущее оборудование. Каждый, наверное, сталкивался с ситуацией, когда после подключения системного диска с виндой к другому компьютеру система вместо нормального запуска вываливалась в BSOD. В случае с миграцией на виртуальную машину — ровно такая же ситуация. Разработчики VirtualBox не предлагают специальной утилиты для P2V-миграции, но процесс можно проделать вручную. Итак, пошаговая инструкция:
1. Первым делом понадобится вспомогательная тулза MergeIDE (http://bit.ly/Merge_IDE). По какой-то странной причине Windows запоминает, на каком IDE/ATA-контроллере она была установлена, и вылетает, если контроллер меняется (а под виртуальной машиной он, само собой, будет другим). Проблему можно исправить, поковырявшись в реестре, но чтобы не заниматься этим вручную, достаточно просто запустить BAT-файл MergeIDE.
2. Выключаем компьютер. Теперь наша задача — сделать полный образ жесткого диска. Как вариант — можно загрузиться с LiveCDдистрибутива и воспользоваться любой низкоуровневой утилитой для работы с образами. Идеально подойдет dd.
3. Полученный образ необходимо преобразовать в VDI-образ, который далее мы сможем подключить к VirtualBox. Воспользуемся уже знакомой нам программой VBoxManage:
VBoxManage convertfromraw ImageFile.dd OutputFile.vdi
Все, этот образ можно и нужно подключить к VirtualBox’у с помощью менеджера виртуальных носителей (вызывается хоткеем <Ctrl+D>).
4. Теперь необходимо создать виртуальную машину и подготовить ее к имплантации сложного пациента :). В качестве диска необходимо выбрать только что созданный VDI-образ. Еще один обязательный момент — активация в настройках виртуалки опции «Включить IO APIC».
5. Пробуем загрузить систему. Здесь два варианта: либо все сразу заработает, либо система сразу уйдет в BSOD. Если все пошло по удачному сценарию, можно смело устанавливать Guest Editions и приступать к работе.
6. В противном случае необходимо выключить виртуалку и загружаться с установочного диска Windows. Проходим до места, где указывается раздел для установки, и выбираем вместо полной инсталляции пункт «repair». Установщик сам доставит все необходимые файлы и отконфигурирует винду под новое железо.
Трик 6. Подготовка DualBoot
Но если реальную систему можно подогнать под работу в виртуальном окружении, не получится ли создать универсальный вариант? Чтобы система могла грузиться сама по себе, а в случае необходимости — под виртуальной машиной. Возможно ли такое? Да! Правда, для этого виртуалке необходим доступ «наружу», то есть напрямую к жестким дискам компьютера. В VirtualBox такая возможность называется «raw hard disk access» и предлагается разработчиками с массой предупреждений о том, что это верный способ убить систему. И, кстати, они не шутят :). Еще бы, ведь нарушается целостность понятия изолированной виртуальной системы — она получает доступ вовне. И всетаки, как включить raw hard disk access?
Прямой доступ к дискам (как ко всей поверхности, так и к отдельным разделам) реализован как часть формата дисков для виртуальной машины VMDK. Необходимо создать специальный образ, в котором будет указано, где на самом деле будут храниться данные на физическом диске. Принцип понятен: подключив такой образ к виртуальной машине, ты получаешь доступ к жесткому диску. Проще всего дать виртуалке доступ вообще ко всему жесткому диску:
VBoxManage internalcommands createrawvmdk
-filename /path/to/file.vmdk -rawdisk \\.\
PhysicalDrive0 -register
Это пример для винды. Под линуксом путь к физическому диску, конечно же, будет другим, например, /dev/sda. Создание образа предполагает, что у тебя есть доступ для записи и чтения с указанного девайса. Те же права потребуются для обращения к файлам из виртуальной машины. После создания VMDK-файла остается подключить его к виртуальной машине:
VBoxManage storageattach WindowsXP
--storagectl "IDE Controller" --port 0
--device 0 --type hdd --medium /path/to/
file.vmdk
Если все сделано правильно, виртуальная машина будет грузиться с указанного физического диска. Но это лишь часть работы. Чтобы система работала и под виртуальной машиной, и без нее, придется немного поковыряться. Подробнейшие пошаговые инструкции доступны на форуме VirtualBox: для Windows XP (http://bit.ly/dualbox_xp) и Windows 7 (http://bit.ly/dualboot_w7). Повторяться не будем.
Трик 7. Wi-Fi и вардрайвинг под виртуальной машиной
Используя виртуальную машину, на которой установлен Linux, я не раз сталкивался с ограничениями из-за отсутствия прямого доступа к Wi-Fi-адаптору. Да, сделать инет в гостевой системе через хостовую ОС — не проблема, но использовать беспроводной адаптер со специальными приложениями просто не выйдет.
Поэтому всякий раз, когда была необходимость поэкспериментировать с беспроводными сетями с помощью aircrack’а и kismeta, чтобы послушать эфир или оценить защиту хотспота, приходилось запускать линукс с загрузочной флешки. Проблема эта, как оказалось, легко решаема благодаря возможности VirtualBox обращаться к USB-устройствам напрямую. Другими словами, можно купить за $20 USB’шный Wi-Fi-адаптер (причем сразу на правильном чипсете и с возможностью использовать внешнюю антенну) и сделать так, чтобы гостевая система думала, что он подключен к ней. Конечно, после подключения устройства к компьютеру/ноутбуку девайс определяется и устанавливается в основной системе (в моем случае — Windows). Но если зайти в свойства виртуальной машины и найти там раздел USB, то любое из устройств можно «примонтировать» к гостевой ОС. Для этого нажимаем на кнопку «Добавить новый фильтр» и из контекстного меню выбираем наш USB’шный адаптер. Все, устройство отключится от хостовой ОС и станет доступным в виртуальной машине. Пробуем запустить под Backtrack’ом aircrack и убеждаемся, что все работает. Наконец-то все это стало возможным без перезагрузки в Linux.
Напоследок еще один маленький секрет. VirtualBox, хотя и прочно устанавливается в системе, вполне работоспособен при запуске с флешки. Умельцы заморочились и сделали Portable-версию виртуальной машины и предлагают загрузить ее всем желающим с сайта www.vbox.me.
xakep.ru
Как удалить VirtualBox в 12.04?
Чтобы удалить VirtualBox, я действительно рекомендую запустить эту команду и not заменить *
на что-нибудь (просто запустите его точно так):
sudo apt-get remove virtualbox-\*
Если вы хотите также удалить глобальные файлы конфигурации (это делает not удаление ваших виртуальных машин), выполните именно это:
sudo apt-get purge virtualbox-\*
Этот метод в порядке, но этот способ может быть более тщательным.
Описание
Возможно, у вас установлено несколько пакетов, связанных с VirtualBox. Предполагая, что ваша машина больше не должна быть машиной VirtualBox host или гостевой , все эти пакеты могут идти. Например, в ящике 11.10, который я использую прямо сейчас, для установки доступно 18 таких пакетов (у вашей машины могут быть некоторые или даже все из них или другие пакеты из вашей версии или PPA):
virtualbox virtualbox-ose virtualbox-dbg virtualbox-ose-dbg virtualbox-dkms virtualbox-ose-dkms virtualbox-fuse virtualbox-ose-fuse virtualbox-guest-additions virtualbox-ose-guest-dkms virtualbox-guest-additions-iso virtualbox-ose-guest-utils virtualbox-guest-dkms virtualbox-ose-guest-x11 virtualbox-guest-utils virtualbox-ose-qt virtualbox-guest-x11
Некоторые из них, вероятно, уже не установлены, а некоторые могут быть удалены автоматически в результате удаления других, но некоторые из них не будут.
apt-get
принимает*
символов и рассматривает их как часть регулярного выражения . Это в некотором роде , аналогично тому, как оболочка командной строки обрабатывает*
. Когда используется командаapt-get
,virtualbox-\*
(см. Ниже, почему\
, которая не используется в качестве синтаксиса регулярных выражений) фактически соответствует любому пакету, имя которого содержитvirtualbox
. р>(Будьте осторожны с этим применительно к пакетам с более короткими именами! Например,
wine\*
соответствует каждому пакету сwin
— а не толькоwine
— в любом месте его имени.)Таким образом, вам не нужно вручную расширять
*
. Он может остаться, и он поймает различные связанные пакеты, как описано выше, , а также пакеты с явными версиями в их именах как обсуждался там .Однако сама оболочка , которая выполняет
apt-get
с указанными параметрами командной строки, также принимает подстановочные знаки. Поэтому вы должны escape подстановочный знак (и один из способов сделать это с символом\
перед*
). В противном случае, если ваше выражение соответствует файлу или папке в этом текущем местоположении, оболочка будет указывать свое имяapt-get
, что было бы неправильно.
Что делает чистка з
ubuntugeeks.com