Search
Write a publication
Pull to refresh

VirtualBox на Ubuntu Server, разные консоли — разные системы

Давно витала в голове идея запускать несколько полноценных десктопных систем на одном железе одновременно. К сожалению на практике без софта для виртуализации никуда. Одно огорчает в этом случае: виртуальные машины запускаются на хосте и доступ к их консолям можно получить исключительно через софтовую оболочку виртульной машины, что несколько портит впечатление о «полноценности и независимости».

Зачем это все?

У меня дома есть Acer Aspire Revo 3610, на нем установлена Ubuntu Server 10.10 и медиацентр XBMC. Хотя у меня вдобавок есть ноутбук, периодически возникает необходимость поработать на винде, с большим экраном, и сидя за столом. Перезагрузиться? Но так не интересно. К тому же Ubuntu еще и интернеты по WiFi раздает соседям на халяву и i2p узлом работает.

Итак, определимся с целями:
1. Хост-система должна быть маленькой и незаметной;
2. Платформа для виртуализации должна разворачиваться на любом железе, в т.ч. без аппаратной виртуализации;
3. Виртуальные машины должны стартовать автоматически, при этом нужна возможность в любой момент переключаться на их консоли находясь перед монитором хоста;
4. Все должно быть бесплатно.

Выбор платформы

Первое что приходит в голову — воспользоваться готовой бесплатной платформой для виртуализации, например Citrix Xen Server или VMware ESXi. Однако эти продукты нацелены на серверный сегмент и неудовлетворяют второе и третье условия. Бесплатные платформы Microsoft Virtual PC и VMware Server не удовлетворяют первое и третье условия. QEMU мощная вещь, однако мне не удалось запустить виртуальные машины без аппаратной виртуализации. В результате мой выбор пал на Oracle VirtualBox.

Настройка хост-системы

Как я уже сказал у меня установлена Ubuntu Server 10.10 и XBMC на ней. Следовательно у меня уже установлены драйвера видео и звука: http://wiki.xbmc.org.
Установим VirtualBox, по инструкции с оф. сайта: http://www.virtualbox.org.
Поскольку графической среды у нас нет, создавать машины придется руками. Однако после я пришел к выводу, что проще создать машину используя GUI на другом компьютере и скопировать ее на хост. Конфигурация машины хранится в XML-файле, ее легко править руками, однако, если возникает такая необходимость машину надо сначала остановить, разрегистрировать VBoxManage unregistervm name, а затем зарегистрировать вновь VBoxManage registervm filename. Иначе изменения внесенные вручную не сохранятся.
При создании виртуалок необходимо включить встроенный RDP сервер VBoxManage modifyvm --vrde on --vrdeport hostport [--vrdeaddress hostip].
Поскольку виртуалки будут запускаться в качестве службы, все манипуляции с ними надо делать под рутом.

Создаем службы

Для автоматического запуска вуртуальной машины создадим службу. Для этого надо написать конфигурационный файл с ".conf" на конце и положить его в "/etc/init". Отличный мануал по upstart: http://upstart.ubuntu.com.
Мой конфиг выглядит следующим образом:
#/etc/init/vbox-winxp.conf
description "VBox VM WinXP"
author "EoF"

start on filesystem
stop on runlevel [!2345]

pre-stop script
VBoxManage controlvm WinXP acpipowerbutton
sleep 30
end script

exec VBoxHeadless --startvm WinXP


Консоль

Итак у нас уже есть виртуальная машина, которая автоматически стартует при запуске хоста и так же автоматически корректно завершает работу. Осталось всего ничего — наладить консоль. Для автоматической инициализации консоли при старте виртуалки также зарегистрируем службу.
#/etc/init/vcon-winxp.conf
description "Сonsole for VBox VM WinXP"
author "EoF <>"

start on started vbox-winxp

respawn
exec xinit /usr/bin/xfreerdp 127.0.0.1:3389 -f -- :2


Можно заметить что консоль виртуальной машины — это ни что иное как запущеный RDP-клиент в виртуальной консоли хоста. Можно использовать rdesktop, однако из коробки у него проблемы с русской раскладкой. xfreerdp можно поставить из репозитория Ubuntu, однако там не самая свежая версия и у меня она никак не хотела разворачиваться на все 1920x1200 моего монитора. Вылечилось установкой последней версии из репов Debian.

Заключение

В целом получилось неплохо и почти то, что я хотел. Почти, потому как видео через RDP всеже тормозит (хотя может все потому, что у меня Atom, а не Core i7?). Ctrl-Alt-F7 = XBMC, Ctrl-Alt-F8 = Винда. Товарищ подкинул идею брать картинку виртуалки через API VirtualBox по VNC. Однако я пока ничего не накопал в этом направлении.
Планирую разобраться как выводить консоль виртуалки на один монитор, а XBMC на другой. Об этом в следующий раз.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.