26.05.13

запуск virtualbox в другой tty

#Вот этот полезный алиас запускает virtualbox с машиной XP на отдельной виртуальной консоли, 
в отдельном экземпляре X-сервера, очень удобно и выглядит будто машина запушена на 
реальной аппаратуре
 
alias startXP="xinit /usr/bin/VirtualBox --startvm \"WinXP\" --fullscreen -- /usr/bin/Xorg :1"




Те, кто работает админом и занимается тех.поддержкой пользователей в крупных конторах, часто сталкиваются с необходимостью держать на рабочей машине Windows наряду с любимой ОС — в данном случае Debian GNU/Linux. Задачи, вынуждающие ставить винду могут быть разными. Средства тоже: кто-то ставит VMWare, кто-то qemu, я пользуюсь VirtualBox. В общем виртуальными машинами сейчас никого не удивить. Я хочу поделиться с людьми небольшим, но очень удобным финтом.

VirtualBox, как большинство современных VM умеет работать в так называемом headless-режиме, то есть без графической оболочки. Для доступа к консоли гостевой ОС в этом случае используется протокол VRDP.
Что мне не нравится в дефолтной схеме использования виртуальной машины. В процессе работы иногда приходится перезапускать иксы. И, как следствие этого, умирает виртуальная машина. Потом она снова нужна, снова ее запускаем, ждем когда загрузится винда — довольно муторно. Для решения этой проблемы я сделал следующее. В файл /etc/rc.local дописал следующие строчки:

su rigid -c "VBoxHeadless -a 127.0.0.1 -s WinXP" &
X :1 vt08 &
DISPLAY=":1" rdesktop-vrdp -f localhost &


Что делают эти строки. Сначала запускается сам VirtualBox в headless режиме с образом WinXP. При этом VRDP биндится только на локальный адрес 127.0.0.1 — чтобы нельзя было подключиться к морде мирт.машины извне. Затем запускается вторая копия X-сервера на восьмой консоли. И, наконец, в окружении только что запущенного X-сервера запускается VRDP-клиент в полноэкраннном режиме и подключается к уже запущенной машине.

Что в итоге я получил.

  • Виртуальная машина не привязана к моей рабочей X-сессии, можно перезапускать иксы сколько вздумается, не прерывая работу вирт.машины.
  • Морда винды рисуется на отдельную консоль в полноэкранном режиме. Есть возможность быстро переключаться между виндовой и гномьей сессиями стандартными сочетаниями: Ctrl-Alt-F7 и Ctrl-Alt-F8


Таким образом можно запустить не одну а несколько гостевых систем и повесить их морды на разные консоли (VBoxHeadless умеет менять порт, на который биндится). Кроме того, таким же образом можно запустить гостевые системы на отдельном мощном сервере, а на своей рабочей станции только рисовать к ним морды. В общем, насколько хватит фантазии.