Pull to refresh

Установка гостевой операционной системы на удалённый headless Linux-сервер под VirtualBox

Нехватка физического компьютера вынудила искать возможность установить Windows сервер на виртуальную машину на удалённый сервер. Всё прошло успешно и теперь я хочу поделиться рецептом в надежде, что это кому-то пригодится, а также увидеть в комментариях объяснения почему я дурак и как это нужно было сделать на самом деле.
Задача – создать виртуальную машину с минимальным оборудованием и установить на неё операционную систему. В наличии есть ssh (Putty) и VPN на целевую систему. В качестве целевой системы выступает CentOS 6.3

Как и ожидалось, в VirtualBox есть утилита командной строки, которая полностью покрывает все потребности по управлению виртуальными машинами. Это – VBoxManage. В Windows она описана в хелпе, в Linux она выдаёт справку при запуске без параметров.
1) Установка VirtualBox.
Поскольку VirtualBox поставляется с модулями ядра в исходном коде, для их компиляции нужен dkms, который не входит в стандартную поставку CentOS, но его можно установить с репозитория epel:
# rpm -i ftp.colocall.net/pub/epel/6/i386/epel-release-6-8.noarch.rpm
#yum install dkms

Устанавливаем еще нужные пакеты:
#yum install kernel-headers kernel-devel
Устанавливаем репозиторий VirtualBox
# cd /etc/yum.repos.d/
# wget download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo
Устанавливаем
#yum install VirtualBox-4.2
Из-за того, что во время установки производится компиляция ядра, процесс может затянуться.
2) Создаём виртуальную машину.
# mkdir /var/vbox
#VBoxManage createvm --name RServer --ostype Windows2008_64 --register --basefolder /var/vbox/
RServer – имя машины, --register позволит нам в последующих командах использовать имя машины вместо указания полного пути.
Полный список возможных типов операционных систем можно посмотреть командой:
# VBoxManage list ostypes
Добавляем Ethernet-адаптер:
#VBoxManage modifyvm RServer --nic1 bridged
#VBoxManage modifyvm RServer --bridgeadapter1 eth1
Устанавливаем размер памяти и чипсет:
#VBoxManage modifyvm RServer --memory 2048
#VBoxManage modifyvm RServer --chipset ich9
Acpi нужен для того, чтобы можно было управлять виртуальной машиной, посылая ей нажатия кнопок Power и Sleep, ioapic нужен для многопроцессорных конфигураций:
#VBoxManage modifyvm RServer --acpi on
#VBoxManage modifyvm RServer --ioapic on
Если нужно, добавляем процессоров:
#VBoxManage modifyvm RServer --cpus 2
Добавляем AHCI и IDE контролеры:
#VBoxManage storagectl RServer --add sata --name sata --bootable on
#VBoxManage storagectl RServer --add ide --name ide --bootable on
Создаём виртуальный диск 300 Gb:
#VBoxManage createhd --filename /var/vbox/RServer/disk0 --size 307200 --variant Fixed
Создаётся диск сразу нужного размера, если нужно, чтобы диск при надобности увеличивался в размерах, убираем модификатор “--variant Fixed ”
Подключаем диск к AHCI контролеру:
#VBoxManage storageattach RServer --storagectl sata --type hdd --port 0 --device 0 --medium /var/vbox/RServer/disk0.vdi
Подключаем iso-образ дистрибутива:
#VBoxManage storageattach RServer --storagectl ide --type dvddrive --port 0 --device 0 --medium ~/iso/ windows_server_2008.iso
Для того, чтобы иметь доступ к консоли виртуальной машины нам VirtualBox extension pack, скачиваем и устанавливаем:
# wget download.virtualbox.org/virtualbox/4.2.8/Oracle_VM_VirtualBox_Extension_Pack-4.2.8-83876.vbox-extpack
# VBoxManage extpack install ~/Oracle_VM_VirtualBox_Extension_Pack-4.2.8-83876.vbox-extpack
Указываем параметры виртуальной консоли
#VBoxManage modifyvm RServer --vrde on --vrdeport 5000 --vrdeaddress 192.168.1.1
Излишне говорить, что ip-адрес должен быть одним из адресов вашего удалённого Linux-сервера.
Теперь можно запускать виртуальный компьютер:
#VBoxManage startvm RServer --type headless
Теперь мы можем любым RDP-клиентом, например mstsc, подключиться по адресу 192.168.1.1:5000 и приступить к установке операционной системы. Должен предупредить, что курсор мыши, мягко говоря, до установки гостевых ведёт себя безобразно, так что запаситесь спокойствием.
После установки операционной системы подключаем диск с гостевыми дополнениями
#VBoxManage storageattach rtesrv --storagectl ide --type dvddrive --port 0 --device 0 --medium /usr/share/virtualbox/VBoxGuestAdditions.iso
и запускаем установку файла, соответствующего операционной системе. Как это ни странно бы звучало, но в гостевых дополнениях для Linux используются модули ядра, так что нужно также установить dkms.
3) Этап третий – автозапуск и автостоп виртуальных машин.
Создаём каталог для автозапуска.
#mkdir /var/vbox/DB
Если нужен автозапуск для нескольких пользователей, нужно дать им право на запись в этот каталог
Указываем, что будем его использовать
#VBoxManage setproperty autostartdbpath /var/vbox/DB
Создаём файл cat /etc/default/virtualbox с таким содержимым

VBOXAUTOSTART_DB=/var/vbox/DB
VBOXAUTOSTART_CONFIG=/etc/vbox/vboxautostart.cfg
SHUTDOWN_USERS=root
SHUTDOWN=savestate

Переменная SHUTDOWN может также иметь значение poweroff или acpibutton.
Создаём файл /etc/vbox/vboxautostart.cfg с содержимым

default_policy = allow

Устанавливаем нашей виртуальной машине свойство автозапуска:
# VBoxManage modifyvm RServer --autostart-enabled on
Запустить автостарт можно командой
# /etc/init.d/vboxautostart-service start
Остановить —
# /etc/init.d/vboxdrv stop_vms
Обратите внимание, что автостарт и автостоп не связаны, если при автостарте запускаются виртуальные машины со свойством --autostart-enabled on, то при автостопе останавливаются все виртуальные машины пользователей, явно перечисленных в SHUTDOWN_USERS.
4) Заключение
Одним словом я доволен, у меня дома на AMD E350 c 6 GB памяти достаточно шустро крутятся две ненагруженные виртуальные машин с Windows и Linux и Windows сервер кажется быстрее чем запущенный на реальном железе на десктопе с Atom.
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.