LXF98:Hardcore Linux

Материал из Linuxformat.

Перейти к: навигация, поиск

Содержание

VirtualBox: Windows в Ubuntu

Запускайте приложения Microsoft под Linux в Ubuntu Feisty при помощи VirtualBox от Innotek и Windows XP – Джек Найт здесь на коне….

Требовалось ли вам когда-нибудь на вашей машине одно или несколько Windows-приложений для решения некоторой задачи? А может, у вас есть клиент, использующий Windows, и вам надо работать с документами MS Project или запускать непосредственно Outlook для совместного использования их календарей MS Exchange? Один из выходов – двойная загрузка, другой – запуск Windows XP в качестве гостевой ОС на виртуальной машине (ВМ); но есть действительно классное решение – угадайте, какое? Бесплатное, по крайней мере для большинства из нас! VirtualBox от Innotek – удивительный продукт, и хотя я на самом деле не проверял его производительность, навскидку кажется, что он значительно превосходит и VMWare Workstation, и Server. Он располагает набором приятных функций и возможностью организовать сетевой мост через беспроводной адаптер ноутбука (нечто прежде немыслимое в VMWare) – чем не продукт-конфетка?

Innotek применяет дуальную схему лицензирования – существуют открытая и закрытая двоичная версии VirtualBox (последняя бесплатна для ознакомления или персонального использования). Более того, у Innonek весьма разумная политика лицензирования для малого бизнеса – по запросу о покупке коммерческих лицензий на две машины я был любезно извещен, что это относится к категории «бесплатно»! Уже в восторге? Ну, это только начало – а вот и убойный довод: при помощи этой штуки можно запускать отдельные приложения Windows на рабочем столе Linux, и они появятся как обычные окна Gnome, KDE (или другие) на вашем X-столе. Прибавьте сюда Beryl/Compiz, и получите весьма впечатляющий инструмент. Качайте с www.virtualbox.org.

Но как заставить все это работать? Что ж, понадобится кое-какая подгонка и на стороне Linux, и на стороне Windows – но результат стоящий, по крайней мере, по моему скромному мнению. В этой статье я проведу вас через настройку моста через беспроводной адаптер на ноутбуке, а продолжу настройкой двух типичных приложений, зависящих от Windows – MS Project и Outlook, чтобы под Ubuntu Feisty они выглядели как родные.

План действий

Вот что мы проделаем на следующих страницах:

  • Кое-что подправим для устранения неприятностей с USB и DVD.
  • Создадим TAP-устройство на сетевом интерфейсе базовой машины (идеально для WLAN-интерфейса ноутбука).
  • Установим персональную/пробную версию VirtualBox от Innotek.
  • Создадим ВМ для Windows XP и настроим ее на использование сетевого TAP-устройства.
  • Установим Windows XP (самые общие моменты).
  • Настроим Windows XP со всеми тонкостями, для безупречной работы.
  • Настроим VirtualBox на работу без ручного вмешательства и автоматический старт.
  • Введем пункты меню для наших приложений-примеров.

В детали установки гостевой ОС я вдаваться не буду: если кто не знает, как это сделать, описание найти легко. Зато приведу простой метод установки самого VirtualBox.

Лично я использую на этом уроке Ubuntu 7.04 (Feisty), но эти инструкции должны отлично работать для dapper или edgy, при мелких изменениях (например, замене всех вхождений слова «feisty» по смыслу). Они должны работать и в Kubuntu; правда, я еще не проделывал мои операции в KDE, чтобы разобраться с отличиями. Машину, где запущен VirtualBox, я буду называть HOST [хост], а запущенные в нем системы – GUEST [гость]. Предполагается, что вы можете запускать командную оболочку и использовать редактор для изменения текстовых файлов. Прежде чем продолжить, познакомьтесь со врезкой Избавляемся от неприятностей.

Настраиваем TAP-устройство

Нам нужно установить пакеты, а именно User Mode Linux Utilities и Proxy Arp Routing Daemon. Для начала убедитесь, что подключен репозиторий universe: в строке-меню Gnome выберите Система > Администрирование > Источники приложений, затем установите галочку Свободное ПО, поддерживаемое сообществом (universe). Теперь откройте терминал и введите:

sudo apt-get install uml-utilities parprouted
 sudo chgrp vboxusers /dev/net/tun

Теперь надо встроить TAP в сетевой адаптер хост-системы. Это особенно полезно для ноутбуков с беспроводными интерфейсами, поскольку WLAN-адаптер обычно получает IP-адрес через DHCP, но гостевая машина не может делать этого – как правило, несколько IP-адресов нельзя получить для того, что в сущности является клонированным интерфейсом. К тому же если беспроводной интерфейс использует защиту WPA, то появление интерфейса-клона, вероятно, заставит WAP (Wireless Access Point – точка беспроводного доступа) заподозрить, что компьютер под атакой. Итак, сделаем вот что: выявим неиспользованные подсети, выберем пару уникальных IP-адресов и присвоим один TAP-устройству, а другой гостевой машине. Неважно, что они фиксированы: адрес хост-машины будет динамическим, и они будут проходить через маскардинг. В итоге гостевая машина будет «просто работать», где бы вы ни получили WLAN-соединение для хоста.

Проще всего создать скрипт для инициализации TAP-устройства и поддержки конфигурации сети. Вот мой вариант:

#!/bin/bash
 # Имя: tapctrl
 # Использование: tapctrl start|stop
 # Обеспечивает: tap для virtualbox во внешней сети, включая беспроводные
 # Аннотация:
 # устанавливает tap-устройство для совместного использования  интерфейса wifi с vbox
 # Описание: создает виртуальный tap-интерфейс, присваивает IP- адрес, настраивает iptables
 # для маскарадинга через устройство по умолчанию
 # и настраивает прокси arp с демоном parprouted для корректной маршрутизации
 # Автор: Jack Knight
 # - Open Source Migrations Ltd, UK (http://www.osml.co.uk)
 # Настраиваем переменные здесь:
 DESC="Virtualbox IP tap"
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
 TUNDEVICE=tap1 # Произвольно, но должно соответствовать устройству, указанному в сетевых настройках VirtualBox.
 LANDEVICE=eth1 # Исправьте, чтобы соответствовало вашему сетевому устройству – может быть eth0, eth1 ath0, wlan1 и т. д.
 IPADDR=172.16.254.254 # Произвольно, но убедитесь, что вы взяли нечто из неиспользуемой подсети
 case "$1" in start|restart|force-reload)
           echo -n "Starting $DESC: "
           tunctl -t $TUNDEVICE -u $USER
           ip link set $TUNDEVICE up
           ip addr add $IPADDR dev $TUNDEVICE
              arp -Ds $IPADDR $TUNDEVICE pub
           iptables -t nat -A POSTROUTING -o $LANDEVICE -j MASQUERADE
           iptables -t nat -P POSTROUTING ACCEPT # Разрешаем работу других интерфейсов
              echo 1 > /proc/sys/net/ipv4/ip_forward
              echo 1 > /proc/sys/net/ipv4/conf/$TUNDEVICE/proxy_arp
              parprouted $LANDEVICE $TUNDEVICE
           ;;
 stop)
              echo -n "Stopping $DESC: "
              iptables --table nat -F
              killall parprouted
              ip link set $TUNDEVICE down 
           ;;
 *)
           N=/etc/init.d/$NAME
              echo "Usage: $N start|stop" >&2
              exit 1
           ;;
 esac
 exit 0

Этот код есть на DVD; если кому-то нужно, у меня также есть более проработанный скрипт, работающий со многими пользователями, виртуальными машинами и устройствами и не опубликованный здесь ради простоты. Не стесняйтесь обращаться за ним ко мне по электронной почте через мой web-сайт.

Установка VirtualBox

К сожалению, поскольку на момент написания VirtualBox еще не попал в основные репозитории Ubuntu, перед установкой пакета придется добавить новый сторонний репозиторий от VirtualBox:

sudo sh -c 'echo "# VirtualBox репозиторий для Ubuntu Feisty Fawn
 deb http://www.virtualbox.org/debian feisty non-free" \
   > /etc/apt/sources.list.d/feisty-virtualbox.list'
 wget http://www.virtualbox.org/debian/innotek.asc -O- | sudo apt-key add -
 sudo apt-get update
 sudo apt-get -y install virtualbox

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

На хост-ситеме Ubuntu нам понадобится механизм совместного использования файлов мирами Linux и Windows. К счастью, VirtualBox имеет для этого встроенный механизм , так что Samba на хост-машине или NFS на обеих сторонах можно не устанавливать. Учтите: совместного использования вашего жесткого диска НЕ получится, пока вы не установите Vbox GuestAdditions в гостевой системе! При создании общих папок гостевая система должна быть выключена.

Общие папки работают только в версии 1.3.8; в версию 1.4.0 вкралась ошибка! Если у вас та самая версия, и вы не хотите возиться с Samba ради совместного доступа, скачайте iso с www.virtualbox.de/download/1.3.8/VBoxGuestAdditions_1.3.8.iso.

Выключите ВМ, смените виртуальный cdrom на этот iso и перезапустите гостевую систему. Установите VirtualBoxGuest Additions, и все должно заработать. Пока что я не слыхал о неприятностях, связанных с «не той» версией гостевых дополнений. Это должно вас временно выручить, до следующей версии, где Innotek, скорее всего, исправит эту ошибку.

Для настройки на стороне хоста, с выключенной гостевой ОС, просто выберите вашу ВМ в окне VirtualBox Manager и нажмите Свойства, а затем Общие папки у нижнего края, как показано на экранном снимке справа, заполните два поля подходящими значениями и нажмите OK. Теперь запустите гостевую ОС и, открыв окно DOS, введите:

net use E: \\vboxsvr\Shared_Folder

и добавьте /Persistent:Yes к этой команде, если хотите сохранить это при перезапуске. Внимание: не ошибитесь в написании vboxsvr – это важно!

Альтернативный метод – открыть окно Проводника Windows и выбрать Сервис > Подключить сетевой диск; вы увидите диалоговое окно, похожее на то, что справа. Тем же манером вставьте подходящие значения и нажмите Готово. Если все в порядке, то появится новое окно Проводника с содержимым каталога хост-машины.

Далее включим RDP-протокол, чтобы разрешить удаленные сессии. Просто щелкните на флажке Enable VRDP Server, как показано в этой колонке ниже.

Настройка Windows XP

Следующие настройки в принципе могут работать и для других версий Windows, не XP, но я не берусь этого утверждать, поскольку не успел протестировать. Нам нужны такие настройки, чтобы наша установленная Windows выводила на экран только панель задач, но не рабочий стол. Для этого поковыряемся в реестре; но учтите, что в Windows XP SP2 доступ к рассматриваемым настройкам ограничен, и обычный пользователь не вправе изменять эту часть – поэтому сперва мы временно присвоим права администратора пользователю, который будет использовать сессию Windows.

Войдите как «Администратор» (или любой другой пользователь с достаточными правами), затем перейдите в нужное место посредством Пуск > Настройки > Панель управления > Пользователи и щелкните на записи, которую хотите использовать для запуска Windows-программ. Щелкните на Изменить тип учетной записи и установите переключатель в Администратор компьютера, затем обратитесь к кнопке Изменить тип учетной записи. Теперь выйдите из-под администратора и войдите как ваш пользователь, запустите regedit32 и найдите следующий ключ:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

Нам необходимо создать новое значение DWORD с именем NoDesktop и присвоить ему значение 1, чтобы Windows отображала только приложение, которое мы хотим запустить, а не весь рабочий стол. Для этого выберите Правка в главном меню, далее Создать и Параметр DWORD и введите имя NoDesktop, затем нажмите Enter. Ключ теперь должен быть выделен, поэтому нажмите вновь Enter, чтобы отредактировать его и установить его значение в 1. По завершении все должно выглядеть как на экранном снимке в конце этой колонки.

Другой вариант – загрузка файла www.osml.eu/files/nodesktop.reg с сервера Open Source Migrations Limited (используйте его на собственный страх и риск). Сохраните его на своем рабочем столе, затем просто дважды щелкните на нем, подтвердите действие, и реестр соответствующим образом изменится.

Теперь вы, вероятно, захотите отнять права администратора у учетной записи, повторив предыдущую процедуру в обратном порядке. Работа в Windows с правами администратора столь же небезопасна, как работа в Linux или Unix от имени суперпользователя, и если у вас нет для нее серьезных причин, выйдите из системы и войдите как администратор, превратите пользователя в обычного, и тогда мы сможем завершить наши другие задачи.

Настройка Windows на автоматический вход.

  • Нажмите кнопку Пуск, выберите Выполнить, введите в окне
control userpasswords2

и нажмите OK.

  • Снимите галочку около Требовать ввод имени и пароля пользователя и нажмите Применить.
  • Появится окно с запросом: под каким пользователем и паролем вы хотите осуществить автоматический вход. Просто введите ранее определенные имя и пароль пользователя.

Установка Гостевых Дополнений VirtualBox.

  • Выберите в главном меню окна вашей ВМ пункт Devices [Устройства], затем щелкните на Install Guest Additions.
  • Отвечайте на вопросы установщика для завершения установки.

Настройка фиксированного IP-адреса, используемого Windows.

  • Перейдите к Пуск > Настройка > Панель управления > Сетевые подключения.
  • Выполните правый щелчок на Подключение к локальной сети и выберите Свойства.
  • Введите IP-адрес, соответствующую маску подсети, адрес шлюза по умолчанию и по крайней мере один DNS-сервер. Вы можете найти

ваш(и) DNS сервер(а), набрав в терминале хост-машины:

cat /etc/resolv.conf

После слов nameserver указаны IP-адреса DNS-серверов. Шлюз по умолчанию должен соответствовать определенному для вашего TAP-интерфейса в /etc/tap.conf. Учтите: IP-адрес должен отличаться от IP Virtual Box, прописанного в файле /etc/tap.conf. Я предлагаю устанавливать IP-адреса, отсчитывая от конца диапазона назад в tap.conf – т. е. от 254 и меньше для каждого TAP-устройства – и от начала диапазона для ваших гостевых машин, например, 172.16.254.1 и больше. Настройте ваш маршрутизатор на выдачу Windows другого IP. У большинства из вас, вероятно, только одно TAP-устройство, так что это не должно быть проблемой.

Включение RDP-соединений в Windows и установка пароля.

  • Нажмите Пуск > Настройка > Панель управления > Система и перейдите на вкладку Удаленные сеансы.
  • Поставьте галочку напротив пункта Разрешить удаленные подключения к этому компьютеру и нажмите OK.
  • В Панели управления щелкните на Пользователи. Выберите пользователя, под которым хотите входить, и нажмите Создать пароль.
  • Введите ваш пароль в появившейся строке и нажмите кнопку Создать пароль. Учтите: этот пароль надо установить обязательно, иначе нормальной работы не будет.
  • Далее, загрузите файл: www.cendio.se/files/thinlinc/seamlessrdp/seamlessrdp.zip и распакуйте его в C:\seamlessrdp.
  • Теперь подготовим Windows XP Pro для разрешения удаленного доступа с глубиной цвета 256 бит.
  • Нажмите Пуск, Выполнить, введите в поле regedit и нажмите OK.
  • В редакторе реестра перейдите к ключу: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
  • В панели справа выделите ключ ColorDepth и щелкните на нем правой кнопкой мыши. Выберите Изменить и измените поле Значение на 4.
  • Или, для удобства, просто загрузите файл: www.osml.eu/files/rdpcolourdepth.reg с сервера Open Source Migrations Limited (используйте на свой страх и риск). Сохраните его на рабочем столе, затем дважды щелкните на нем, подтвердите действие – и реестр будет изменен. На этом завершается настройка на стороне Windows.

Настройка: VirtualBox

Теперь можно настроить VirtualBox на автозапуск при загрузке. Вопервых, мы собираемся запустить вашу машину из командной строки, поэтому в терминале введите:

VBoxManage startvm "WinXPPro" -type vrdp

Замените здесь WinXPPro на имя вашей ВМ. Чтобы Windows всякий раз запускалась без проблем, выполните Система > Параметры > Сеансы и выберите вкладку Запускаемые при старте программы. Щелкните на кнопке Создать, затем скопируйте и вставьте указанную выше команду в текстовое поле и нажмите OK.

Перед запуском новой ВМ необходимо убедиться, что наша нижняя панель сворачивается, иначе в Windows будут не видны кнопка Пуск и системный лоток, и нам это необходимо по крайней мере один раз (а может, и больше): если мы далее в Windows наткнемся на проблемы или для установки новых приложений. Просто щелкните правой кнопкой мыши в пустом месте нижней панели и выберите Свойства, установите флажок Показывать/скрывать кнопки и нажмите OK. Теперь слева и справа на вашей панели есть кнопки с изображением стрелки, позволяющие при нажатии ее спрятать.

Теперь впервые запустим нашу ВМ Windows. В терминале наберите:

rdesktop -rsound -A -s "c:\seamlessrdp\seamlessrdpshell.exe C:\Windows\explorer.exe" <IP-адрес Windows XP>:3389 -u "<Имя пользователя Windows>" -p <Ваш пароль Windows>

Вам нужно будет соответственно изменить переменные. Практически все, но будет виден полный рабочий стол, поскольку Windows необходимо перезагрузить, чтобы все новые возможности заработали. Это немного путано, но сделать так придется, потому что XP не будет воспринимать удаленные подключения, пока вы хоть раз не войдете. Короче, нажмите комбинацию клавиш Ctrl+Esc и выберите Завершить сеанс.

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

Вы должны видеть просто запущенное окно Проводника, а при нажатии одной из вышеупомянутых стрелок на нижней панели Gnome появится кнопка Пуск и т.д.

Теперь мы можем войти в верхнее меню Ubuntu, Система > Параметры > Главное меню и определить важные приложения, без которых вам не жить. Например, для установки Outlook (подразумевается, из Office 2003) вам следует поместить в строку следующую команду:

/usr/bin/rdesktop -rsound -A -s "c:\seamlessrdp\seamlessrdpshell.exe C:\
Program Files\Microsoft Office\OFFICE11\OUTLOOK.EXE" <IP-адрес
Windows XP>:3389 -u "<Имя пользователя Windows >" -p <Ваш пароль
Windows >


Наконец, выключить ВМ можно так:

VBoxManage controlvm "Windows-XP-Pro" savestate

или так:

VBoxManage controlvm "Windows-XP-Pro" acpipowerbutton

для сохранения текущего состояния машины; или имитировать отключение питания. Пора звать к своему монитору друзей – пусть подивятся на ваши подвиги!

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию