Установка гостевой операционной системы на удалённый headless Linux-сервер под VirtualBox
Invite pending
Нехватка физического компьютера вынудила искать возможность установить 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.
Задача – создать виртуальную машину с минимальным оборудованием и установить на неё операционную систему. В наличии есть 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.