Как стать автором
Обновить

«Одомашнивание» Windows Server 2003


Доброго времени суток уважаемые читатели. В этой статье я хотел бы рассказать вам о том, как я «приручил» на своем домашнем PC серверную операционную систему от Microsoft, о том зачем я пошел на это безумие, с какими проблемами я столкнулся и как я с ними боролся.

Начнем с лирики. На дворе стоял октябрь 2010 года. В кошельке завалялись лишние 1300 российских рублей, на которые я решил купить планочку памяти DDR3 на 2 гб. Придя домой и поставив ее к уже имеющимся 2Гб, я был немного разочарован красовавшейся цифрой 3.25 в свойствах системы Windows XP SP3. «Погуглив» на эту тему я узнал что такое расширение физических адресов (PAE) и почему оно криво реализовано в установленной на моей машине ОС (для тех кто не знаком можно прочитать тут). Я задался вопросом смены ОС. Не то чтобы мне уж так сильно нужны были 4 гигабайта оперативной памяти, это скорее было дело принципа. Vista x64 и Windows XP x64 были отсеяны по ряду причин. Оставалось выбрать между Windows Server 2003 32-bit и Windows 7 x64 (*nix религия не позволяла поставить). 64-битную ОС ставить если честно не хотелось, да и семерка в то время была немного сыровата, и кое какое ПО к которому я сильно привык там не работало даже в режиме совместимости. И так, выбар пал на Windows Server 2003 32-bit. Майкрософт выпускает ее в 4 модификациях: Enterprise Edition, Standart Edition, Web Server, Datacenter Edition. Все они отличаются количеством поддерживаемой оперативной памяти и процессоров. Windows 2003 Web Server вроде бы не распространяется отдельно. Самой распространенной в интернете (точнее на трекерах) оказалась версия Enterprise, которая поддерживает до 32 гигабайт ОЗУ и до 8 процессоров. Что ж, вполне подходило к моим требованиям. Дистрибутив Windows Server 2003 R2 SP2 Enterprise Edition был успешно скачан и записан на болванку CD-R (что было сделано зря, но обо всем по порядку).
На этом лирика закончилась, переходим к трудностям, возникшим при экслуатации.

  1. Первая проблема возникла еще до установки ОС. Дело в том что у меня на машине установлен RAID из двух жестких дисков SATA-2. Все современные сборки Windows XP уже давно имеют в своем составе вшитые драйвера для большинства устройств, в том числе и для RAID-контроллеров, поэтому с данной проблемой я ранее не встречался. В пустую потреченную болванку CD-R конечно жалко, но куда деваться. Floppy привода в моей машине отродясь не было, поэтому пришлось вшивать драйвера прямо в дистрибутив. На помощь пришла программа nLite. Вместе с драйверами был вшит лицензионный номер (или как он там называется). Новый дистрибутив был записан на CD-RW (а вдруг еще чего). На этот раз программа установки обнаружила диски и ОС была успешно установлена. После запуска в свойствах системе красовалась надпись «3.99 Гб ОЗУ». Что ж, самолюбие удовлетварено, двигаемся дальше.


  2. Для того чтобы ОС была пригодна к работе на домашней машине была найдена программа Win Server 2003 Optimize Tool. С помощью нее были включены службы звука (Windows Audio), включены темы, включен автоматических вход в систему и еще некоторые приятные «плюшечки». Работа с ОС стала все больше напоминать работу с Windows XP.


  3. Я хорошо знал что драйвера на 2k3 должны были подойти от XP, однако переживал за драйвера под звук (у меня полупрофессиональная внешняя звуковая карта ESI UMG 96) и под видео (Geforce GT 9400). Вообщем-то все обошлось, все имеющиеся на тот момент устройства завелись с полоборота. Для активизации DirectDraw и Direct3D пришлось включить аппаратное ускорение и включить совмещение записи (не обращайте внимание на скрин, на момент написания статьи в машине стоит видеокарта на чипсете от AMD).


  4. При установке DirectX 9 у меня возникли проблемы (если честно не помню какие, извиняйте, все таки 2 года прошло). Решить проблему «родными» способами не получилось.На помощь пришла вот эта раздача с рутрекера. Дистрибутив скопировал файлы и вауляля, CS 1.6, первая Mafia, Готика 3, видео (в том числе HD) запускались и работали без проблем и тормозов.

  5. Еще одна неприятность была связана с антивирусом. Дело в том, что мне очень нравиться антивирус касперского, и другие антивирусы я на дух не переношу. Однако запустив Kaspersky Internet Security 2011, я получил сообщение о том, что данная версия антивируса не может быть установлена на серверную ОС. Не шипко мне хотелось ставить серверную версию антивируса, учитывая то что у меня лицензия на KIS 2011. Решение было найдено на одном из трекеров. Там я скачал «прохаченный» дистрибутив KIS 2011, в котором очевидно была взломана программа установки. Дистрибутив легко встал и заработал на моей машине.


  6. Еще одна неприятная проблема поджидала меня после установки QIP 2005. Компьютер подвисал секунд на 15-20 после получения всплывающего сообщения (ну знаете такая штуковина желтенькая в правом нижнем углу). Путем экспериментов было выяснено что подвисала языковая панель. С чем это было связано я так и не выяснил. Неприятность решил просто: «Нет панели – нет проблем». Однако как определить какая раскладка клавиатуры используется? Немного поискав в интернете замену языковой панели я выяснил, что в Windows 98 для отображения текущей раскладки использовалась утилита internat.exe. Покапавшись в куче старых болванок, я нашел дистрибутив 98 винды (что-то из серии «Золотой СОФТ»). Утилита была успешно найдена на диске и помещена в автозагрузку. Получилось вполне юзабельно, как будто там и была всю жизнь.


  7. Windows 2003 Server по-умолчанию не поддерживает файловую систему exFat, которая актуальна, например, для флеш-носителей. Исправляется обновлением WindowsServer2003-KB955704-x86-RUS.exe.

  8. Подключив к машине внешний жесткий диск я не обнаружил его в «Моем комьютере», хотя устройство успешно обнаружилось. Флешки до этого вполне хорошо читались. Утилита «Управление дисками» показала, что область диска не размечена. Оказалось что в системе отключено автоматическое монтирование дисков. Включить его можно с помощью реестра, поменяв значение параметра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MountMgr\NoAutoMount c 1 на 0.

  9. Обрадовавшись что драйвера от XP c легкостью ставяться на 2k3, я без задней мысли купил веб-камеру Logitech C510. Однако программа установки драйверов охладила мой пыл, явно дав понять что на эту ОС она устанавливаться не будет. Гугл не помог, и на офф. сайте Logitech тоже никакой информации по этому поводу я не нашел.

    Что ж, на гугл надейся, а сам не плошай. В ход пошла тяжелая артиллерия под названием IDA Pro, благо опыт дизассемблирования был. В ходе исследования дизассемблированного кода, я выяснил что проверка ОС выполняется с помощью API функции GetVersionEx. MSDN нам говорит о том что функция принимает один параметр – указатель на структура типа LPOSVERSIONINFOW. Каким-то образом нужно было «подсунуть» в структуру значения, соответствующие Windows XP. С отладчиком заморачиваться не хотелось, хотя оно было бы проще. Вместо этого я решил изменить таблицу импорта и подсунуть вместо оригинальной функции GetVersionEx мою собсвенную. Для этого я создал Win32-проект типа DLL в VisualStudio, добавил свою функцию myGetVersionEx, и заменил в программе установки адрес функции GetVersionEx на адрес функции myGetVersionEx (точнее на ее указатель).

    define Base__OFFSET (0x01000000)//базовый адрес модуля
    #define GetVersionExW__OFFSET (0x01001230)// адрес функции в таблице импорта
    #define ModuleName L"lws210_full.exe"
    
    typedef BOOL(WINAPI *PFN_MyGetVersionExW)(LPOSVERSIONINFOW);
    
    BOOL WINAPI MyGetVersionExW(__inout LPOSVERSIONINFOW lpVersionInformation);
    
    PFN_MyGetVersionExW pfnMyFunc = MyGetVersionExW;
    
    BOOL WINAPI MyGetVersionExW(__inout LPOSVERSIONINFOW lpVersionInformation)
    {
    	BOOL bResult=GetVersionExW(lpVersionInformation);
    	lpVersionInformation->dwMinorVersion=1;
    	return bResult;
    }
    
    __declspec(dllexport)  BOOL DoDetour()
    {
    	HMODULE hModule = GetModuleHandleW(ModuleName);
    
    	if (!hModule)
    		return FALSE;
    
    	DWORD dwOldProtect = 0;
    	PBYTE pb = (PBYTE) hModule+ (GetVersionExW__OFFSET-Base__OFFSET);
    	if(!VirtualProtect(pb, 4, PAGE_EXECUTE_WRITECOPY, &dwOldProtect))
    		return FALSE;
    
    	*(PBYTE*)(pb) = (PBYTE)pfnMyFunc;
    	return TRUE;
    }
    
    BOOL APIENTRY DllMain( HMODULE hModule,
                           DWORD  ul_reason_for_call,
                           LPVOID lpReserved
    					 )
    {
    
    	switch (ul_reason_for_call)
    	{
    		
    		case DLL_PROCESS_ATTACH:
    			if (!DoDetour())
    				return FALSE;
    			break;	
    		case DLL_THREAD_ATTACH:
    		case DLL_THREAD_DETACH:
    		case DLL_PROCESS_DETACH:
    			break;
    	}
    
    	return TRUE;
    }
    


    С помощью setdll.exe «пришпилил» мою dll-ку к exe-шнику программы установки и вауляля, драйвера поставились. Skype нашел камеру, звук и изображение прекрасно передавались. Все бы ничего, но вот в других программах при попытке выставить камере разрешение свыше 800х600 (камера держит 720p) все наглухо зависало. На сайте майкрософта я вычитал что в 2003 сервере нет поддержки HD-камер. Правда или неправда я разбираться не стал, все равно Skype больше чем 800х600 не поддерживает, а в других целях я камеру не использую.

  10. После поступления в аспирантуру я решил купить себе принтер, мало ли там статьи печатать, или того лучше диссертацию. Выбор пал на MФУ Brother DCP-7032R (аналог 7030R, только другого цвета). На сайте в списке поддерживаемых операционных систем значились Windows XP / Windows 2003 (Printer Only) / … Надпись «Printer Only» меня насторожила, но после веб-камеры мне было уже не страшно :-). Вообщем производитель не обманул. Действительно, драйвера отказались ставиться, в том числе и на принтер.

    На принтер драйвера удалось завести только вручную из диспетчера устройств. Сканер заводиться отказался. Фокус проведенный с драйверами под веб-камеру не прошел. Видимо программа установки использует более сложные алгоритмы определиня ОС, разбираться с которыми мне, если честно, было лень. Я решил пойти немного другим путем. Я установил на виртуальную машину Oracle VirtualBox Windows XP и перекинул в гостевую систему по USB устройство. Поставил там драйвера для МФУ. И принтер, и сканер успешно заработали. Не очень удобно, но сканером я пользуюсь крайне редко, поэтому такое решение меня вполне устроило.

  11. Как я уже упоминал ранее, в момент написания статьи видеокарта от NVIDIA была поменяна на видеокарту от AMD (Gigabyte HD 6770). С установкой драйверов пришлось немного помучаться. Программа установки запускалась, процесс установки прекрасно шел, и после него даже выводилось сообщение что все прекрасно установлено, однако никаких драйверов в системе не появлялось. Полазив по форумам я нашел решение. Оно оказалось достаточно тривиальным. Нужно было запустить драйвера в режиме совместимости с XP. После этого все нормально установилось. После установки пришлось включить аппаратное ускорение и включить совмещение записи (см. пункт 3), чтобы активизировать функции Direct3D и DirectDraw.



Эпилог. Вот уже больше года на моей машине установлена Windows 7 x64. Мне просто надоели постоянные «сюрпризы» Win 2k3. Но я вполне доказал что ее можно использовать в домашних условиях. По субъективному мнению она работает стабильнее Windows XP и дает ряд преимуществ: полноценная поддержка PAE, всякие полезные серверные фичи типа встроенного маршрутизатора, отсутствие орграничения на количество полуоткрытых соединений (в отличии от тех же XP и Seven), что полезно для любителей торрент-клиентов и избавляет от использования программы Half-open limit Fix.


Спасибо всем кто дочитал пост до конца.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.