четверг, 15 мая 2014 г.

Установка Windows 2003 Server на недорогом VPS-хостинге

Понадобился мне на днях виртуальный сервер под Windows, работающий круглосуточно и находящийся на стабильном канале. Быстрый поиск по сайтам натолкнул на сервис где с большим отрывом по цене выделялась компания ITL DC 

На минимальном тарифе дают 1-ядерную виртуалку под KVM-QEMU c 15 Гб HDD, 512 Мб памяти и неограниченным трафиком. Данные параметры подходят под минимальные требования 2008r2, а 2003 сервер – будет просто летать.

Триального доступа к своим сервисам провайдер не дает, но можно заказать виртуалку сроком на 1 день, я так и сделал, чтобы поиграться. Следует отметить, что провайдер меряет сутки не от момента оплаты, а по концу дня своего местного времени, и виртуалка, оплаченная в обед «превратилась в тыкву» в 1 час ночи по Москве, хотя я рассчитывал ее покрутить еще и утром.

Преконфигурированными для данной конфигурации VPS доступны только линуксы – при попытке выбрать Windows получаем «For the OS 'Windows-Server-2008-R2-Web' at least 768 MiB of RAM is required», что не является правдой.
Меня же интересует Windows 2003 Server, который, увы никак не доступен на данном провайдере – ни среди готовых шаблонов, ни среди образов компакт-дисков. Конечно, можно написать, чтобы они добавили ISOшку, да еще и интегрировали туда драйвера virtio (иначе 2003 сервер не увидит жесткий диск), но это не наш метод.
На всякий случай выбираю шаблон с 32-битным Linux, тк 2003 сервер будет 32-битным.

Для установки 2003 сервера мы пойдём таким путем: разбиваем HDD на 2 части, в начале диска – 5 Гб раздел NTFS, он «примет» на себя Windows 2003. На вторую половину – ставится любая доступная операционка, из-под которой копируются установочные файлы Windows 2003 на первый раздел, первый раздел делается активным – и profit. После завершения установки Windows 2003 второй раздел можно будет удалить. В качестве «буферной» OS я использую windows 2008 r2, тк ее ISO образ доступен для монтирования. Но подойдет и любая другая OS, главное, чтобы была возможность из-под нее создать совместимый с Windows 2003 код MBR и бутсектор первого раздела.

Для начала включаем загрузку виртуалки с CD-ROM. Для этого идем в Virtual machines / Disks, Edit:










И выбираем Boot Priority = 2. CD-ROM будет иметь boot priority = 1. Так же видим, что шина диска у нас жестко прошита как virtio, а не hda, то есть, Windows штатно диск не увидит.

Далее добавляем ISO образ Windows 2008 r2:











И удостоверяемся, что Boot Priority = 1
Сперва, когда я завел пробную виртуалку, я игрался на европейском сервере, там в списке ISO образов были доступны Windows 2012 Server, CentOS, RedHat и другие системы. Сейчас пересоздал виртуалку на американском – тут почему-то доступна только 2008r2.

Вторым CD-ROM добавляем диск virtio-win-0.1-74.iso, это драйвера KVM. Ему Boot Priority ставим в 3, тк грузиться с него не собираемся.
После этого подключаемся к консоли VM, запоминаем IP адрес машины, шлюз и маску, и перезагружаем. Как только машина перезагрузится – консоль отключается и приходится судорожно лупить по кнопке рефреша страницы, чтобы успеть увидеть экран начальной загрузки и нажать на клавишу:



















Далее грузимся в инсталлятор Windows. Экран отрисовывается жутко медленно, курсор мыши «двоится», но это привычная ситуация для тех, кто работал с первыми версиями iLO на старых серверах HP. Так что все дальнейшее управление установкой делаем с клавиатуры J

Следуем мастеру установки до момента разбивки дисков. Какую именно версию 2008 r2 будем ставить - непринципиально, главное, не core mode.
Вполне естественно, что инсталлятор не видит HDD, для этого подсовываем ему драйвера со второго CD-ROM:
























Нам подойдут драйвера windows 7 / AMD64, нужен только RedHat VirtIO SCSI Controller.

После их добавления Windows увидит диск. Необходимо его переразбить. Разбивку дисков следует делать из командной строки, так как GUI создаст совершенно ненужный 100-мб раздел, который в дальнейшем будет мешать. Для этого жмем SHIFT+F10 и далее diskpart:























Очищаем диск от разделов которые на нем были, создаем разделы на 5 гб и на все оставшееся место, форматируем оба в NTFS и на всякий случай делаем второй раздел активным.

Затем в инсталляторе жмем на Refresh и выбираем второй раздел для установки на него системы. Система ставится довольно быстро, после завершения установки необходимо ей установить драйвер на сетевую карту, прописать IP адрес, шлюз и маску. После чего включаем RDP и заходим на машину через нормальный MSTSC.

Теперь почти все готово для установки Windows 2003. Записываем на эту виртуалку ISO образ Windows 2003 (я по своей MSDN подписке загрузил первый диск от 2003 r2):

























Как видно из скриншота - скорость загрузки весьма достойная.

Далее ставим FAR Manager, n-Lite и загружаем http://www.linux-kvm.com/sites/default/files/viostor.iso.

С помощью FAR из viostor.iso в пустую папку распаковыываем файл txtsetup.oem (только его одного, тк остальные драйвера там старые), и создаем рядом с ним папку i386, а в ней подпапку Win2003. В эту папку копируем файлы VIOSTOR.CAT, VIOSTOR.INF, VIOSTOR.SYS из папки \WNET\X86\ с все еще замонтированного диска драйверов virtio-win-0.1-74.iso. То есть, в итоге должна получиться такая структура:









Тем самым мы подготовили структуру с драйвером диска для текстового режима инсталляции windows 2003. Никаких других папок и файлов в данной структуре присутствовать не должно! Даже в последней версии N-Lite имеется баг - он в таком случае некорректно интегрирует драйвера текстового режима в образ.

Тем же FAR-ом распаковываем ISO образ 2003 сервера и запускаем N-Lite.
В N-Lite указываем путь до распакованного образа, в Integrate нажимаем Drivers, далее Insert Single Driver. По какой-то причине в последних версиях N-Lite скрыли возможность выбора файла txtsetup.oem, в фильтре оставили только *.inf. Поэтому руками в окне поиска файла пишем *, выбираем наш txtsetup.oem и подтверждаем, что это text-mode driver:





























Затем добавляем из этой же папки драйвер \i386\Win2003\VIOSTOR.INF уже как обычный PNP драйвер. Должно получиться вот так:























Далее жмем Next и N-Lite добавляет драйвера в образ. Он это делает не совсем корректно, поэтому необходимо вручную скопировать файл VIOSTOR.SYS в папку i386 сделанного дистрибутива.

Далее в FAR или CMD переходим в папку i386 сделанного дистрибутива и запускаем команду:

winnt32.exe /tempdrive:d /syspart:d /makelocalsource /noreboot

Это запустит первую фазу инсталлятора Windows 2003 Server, подготовит заданный раздел к загрузке и дальнейшей установке после ребута.

























По завершении копирования файлов – данное окно просто закроется.

После закрытия окна установки обязательно следует удалить файл D:\$WIN_NT$.~BT\migrate.inf – в противном случае 2003 сервер «запомнит», что диск, куда он устанавливался имел букву D:, а нам желательно, чтобы системный диск был C:

Теперь последний подготовительный шаг – необходимо первый раздел (то есть, раздел со свежеподготовленной инсталляцией Windows 2003, диск D:) сделать активным, чтобы загрузка OS пошла с него:



















После этого ребут – и снова смотрим на консоль. Если все сделано корректно – пойдет загрузка установки Server 2003.























После завершения инсталляции необходимо «подсунуть» драйвер сетевой карты. Драйвер лежит на диске virtio-win-0.1-74.iso, в папке \XP\X86\. Если делать автопоиск драйверов по диску - будет взят драйвер от висты, который не заработает.

В установленной Windows 2003 c управлением мышью через веб-консоль провайдера дела обстоят еще хуже, чем были ранее в 2008 r2. К счастью, кнопки TAB, Enter и стрелки работают нормально и позволяют запустить диспетчер устройств и назначить ИП адрес на сетевую карту. Надо было сразу в N-Lite добавить драйвера на сетевую карту и прописать там же настройки IP-адреса.

Если где-то при интеграции драйверов допустили ошибку (например, Windows 2003 падает в синий экран с кодом 0x0000007B) – можно восстановить загрузку 2008 r2, загрузившись с компакт-диска 2008 r2, дойдя в мастере установки до загрузки драйверов HDD, далее по SHIFT+F10 через Diskpart выбрать вторую партицию, сделать ее активной и перезагрузиться. 

Когда все заработало - остается последний шаг: удаление старого раздела с Windows 2008 r2 и расширение диска с 2003 на полученное место. Это можно сделать несколькими способами, лично я делал diskpart-ом, загрузившись с диска от Windows 2008 r2.

А теперь - скриншот, ради чего это все затевалось:




































400 мб свободной памяти и 13 Гб диска. С этим уже вполне можно жить.

2 комментария:

  1. Спасибо за статью. Использовал. Еще информация по етой теме на http://uanic.name/

    ОтветитьУдалить