Те, кто работает админом и занимается тех.поддержкой пользователей в крупных конторах, часто сталкиваются с необходимостью держать на рабочей машине 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 умеет менять порт, на который биндится). Кроме того, таким же образом можно запустить гостевые системы на отдельном мощном сервере, а на своей рабочей станции только рисовать к ним морды. В общем, насколько хватит фантазии.
PS. Опубликовал из песочницы, просьба ногами сильно не бить. Но здоровая критика, естественно, всегда приветствуется ;)
комментарии (47)
Offtopic: спасибо за первый плюс :)
вопрос? а почему такая версия старая 1,6? /me юзаем уже 3,0 \m/ =)
поэтому драйвера nVidia не скачиваются заново при смене ядер!
папе Debian уважение!
а то:
bash: rigid: команда не найдена
rdesktop-vrdp: команда не найдена
aptitude search ничего умного не сказал
Для управления виртуалкой можно использовать обычный rdesktop.
А rdesktop-vrdp поставляется вместе с самим VirtualBox'ом, он позволяет работать с USB-устройствами.
С использованием VRDP таких проблем не возникло — все завелось из коробки, как говорится.
Кроме того, через VRDP можно получить доступ к консоли гостевой ОС еще до того, как эта самая гостевая ОС станет в состоянии предоставлять сервис RDP или SSH.
пашет VBoxHeadless -s WinXP, но тогда я законнектиться не могу, хост вообще гостей не пингует.
а пинговать ничего не надо VBoxHeadless поднимает VRDP-сервер на локальной хост-машине. то есть rdesktop-vrdp надо натравливать на localhost.
VBoxHeadless биндит свой VRDP-сервер по дефолту на 0.0.0.0:3389.
Возможно, что Ваша вирт.машина по какойто причине не стартовала. Мжно проверить:
rigid@rigid-laptop:/$ VBoxHeadless -s test
VirtualBox Headless Interface 3.0.0
© 2008-2009 Sun Microsystems, Inc.
All rights reserved.
Listening on port 3389
В соседней консоли:
rigid-laptop:/# netstat -lpn46 |grep 3389
tcp 0 0 0.0.0.0:3389 0.0.0.0:* LISTEN 11784/VBoxHeadless
Как видим, виртмашина запущена и VRDP-сервер ждет подключений.
пойду шаманить с вбоксом…
Действительно, полет нормальный. Теперь бы подумать как на второй моник запустить вторую виртуалку :)
f3ath@a1 ~ $ grep -i toolbar .VirtualBox/Machines/WinXP/WinXP.xml
<ExtraDataItem name=«GUI/MiniToolBarAutoHide» value=«on»/>
f3ath@a1 ~ $
<ExtraDataItem name=«GUI/ShowMiniToolBar» value=«no»/>
1280+1280 = 2560
max(800, 1024) = 1024
итого: 2560x1024
Както так наверно…
Кстати, а что мешает в тех иксах, которые будут обслуживать vrdp-сессию, перед запуском клиента запустить xrandr, который отстроит все, как надо, на два монитора? Или vrdp-клиент в этом случчае не растягивается?
А так, да неплохо. Но мне хватает переключения между виртуальными столами, на одном из которых висит виртуалка.
Иксы не так часто перезапускаю, кстати в виртуалбоксе можна замораживать гостевую систему, так что после перезапуска она просыпается за пару секунд.
А shared clipboard, это как раз та фича, которой я готов пожертвовать :)
и я так и не понял на кой черт сразу запускать rdp? Ну запустили в headless и пускай себе висит. Надо будет зайти в винду — в иксах ткнули в rdp и зашли. Закончили работать — вырубили rdpviewer (или что там у вас). Слишком жирновато и неудобно отдельные иксы для одного rdp-просмотрщика запускать (например, буфер обмена не синхронизируется).
есть не очень современная машина (в процессоре нет поддержки бита виртуализации), но «с гигабайтами RAM» (2)
т.е. egrep 'vmx|svm' /proc/cpuinfo
машина используется как dev/testing сервер
как и с помошью чего запустить под CentOS 5.2 без установки WINE/XFree/XOrg Windoze XP SP3 (IE7 или IE8)?
и соответственно увидеть виндовый рабочий стол из консоли???
или это фантастика?!
Получите свой плюс в карму :)
Хотелось бы узнать как поставить кастомное разрешение в виртуалке? Вычитал где-то про
$ VBoxManage getextradata «WinXP» «CustomVideoMode1» «1440x900x32»
но решение, увы, не рабочее :(