Продолжаю цикл публикаций по решению неcтандартных IT-задач. Первая часть посвящалась проблемам сетевого обнаружения Windows 7 и конфликту программного обеспечения Avest с удалённым рабочим столом. Сегодня речь пойдёт о сетевом подключении принтера HP LaserJet Pro P1102 и о модификации драйвера Intel для совместимости с серверной операционной системой.

Часть 3:
Клиент приобрел новый принтер — мыльницу для печати малого количества документов. Имя сему творению HP LaserJet Pro P1102. После установки данного устройства как сетевого принтера оказалось, что через службы удаленного рабочего стола (RDS на базе Windows Server 2008 R2) невозможна печать. Принтер корректно пробрасывался в удаленную сессию, на него можно было отправлять задания, но он ничего не печатал. Как с компьютера, куда подключено напрямую, так и с других. На другие принтеры организации печать была возможна. Диагностика проблемы осложнялась тем, что компьютер, выступавший в роли “сервера печати” имел Windows XP на борту. Несмотря на то, что там был установлен пакет .NET Framework 3.5, я решил переустановить принтер на компьютер с Windows 7.

Однако, проблему это не решило. Долгие поиски в google привели к интересному решению — как оказалось для данной серии принтеров на сайте есть отдельные драйверы для XPS формата (зеркало). Именно с ними счастливым обладателям данных принтеров удастся воспользоваться технологией Easy Print. Люди, пользующиеся PCL версией драйвера, стройными рядами идут еще куда- то. При чем здесь XPS вы спросите? И я спрошу.

Часть 4:
Задумав протестировать на домашнем компьютере работу Windows Server 2008 R2 с последующей установкой роли Hyper-V, я столкнулся с неожиданным препятствием: операционная система не желала видеть сетевую карту моего компьютера. Причем, Windows 7 (да и Windows 8) работали с моей сетевой картой замечательно.

Первое подозрение пало на то, что материнская плата на моем компьютере – обычная домашняя платформа от Intel – DZ68DB и корпорация Intel довольно строго относится к сегментации продуктов.

Например, один из компьютеров в офисе был взят для тестирования Windows Server 2008. Он был собран на базе “домашней” материнской платы и при поиске драйверов оказалось, что Intel официально отказывается предоставлять драйверы для серверной ОС.

Отличие данной ситуации было во- первых, в том, что драйверы под Vista\Sever 2008\Win7 были на официальном сайте, во- вторых, родная программа установки драйверов не отказывалась их устанавливать, а отказывалась обнаруживать сетевую карту.

Я сразу хочу уточнить, что цель моей заметки не призыв использовать “домашние” материнские платы как серверное решение, а лишь описание попытки решить возникшую проблему. Учитывая повсеместно существующую экономию и “стандартизацию” вполне возможно, что вы можете столкнуться с такой же проблемой в сегменте серверов “super low end”.

Итак, имеется встроенная сетевая карта Intel(R) 82579V Gigabit Network Connection. После установки Windows Server 2008 R2 она осталась единственным устройством, которое не захотело работать с оригинальными драйверами с диска. Попытки установить драйвер прямой установкой INF-файла, распаковкой и попыткой предложить системе распакованный драйвер, скачать и установить различные версии этого драйвера окончились неудачей. Самым непонятным, в данной ситуации, было то, что драйверы вроде как устанавливались, но устройство оставалось неопознанным. Оригинальная программа установки завершалась с ошибкой: “Сannot install driver: no Intel adapters are present “. То есть программа не видела самого устройства.

Пришлось искать решение проблемы в Интернет. Как ни странно похожие проблемы испытывали и другие обладатели продукции Intel(не только конкретно взятой сетевой карты). В одном из форумов я нашел вариант решения проблемы с модификацией драйверов. Так как компания Microsoft все еще использует INF-файлы для установки драйверов (для истории предлагаю Вам разобрать дистрибутив Windows 98- вот где было засилье INF-файлов!) и так как мне пришлось с ними работать, я не нашел сложным этот способ.

Возьмем оригинальную часть файла драйвера e1c62x64.INF:

[Manufacturer]
%Intel%     = Intel, NTamd64.6.1, NTamd64.6.1.1
[Intel]
[Intel.NTamd64.6.1.1]
; DisplayName                   Section              DeviceID
; -----------                   -------              --------
%E1502NC.DeviceDesc%            = E1502.6.1.1,       PCI\VEN_8086&DEV_1502
%E1502NC.DeviceDesc%            = E1502.6.1.1,       PCI\VEN_8086&DEV_1502&SUBSYS_00011179
%E1502NC.DeviceDesc%            = E1502.6.1.1,       PCI\VEN_8086&DEV_1502&SUBSYS_00021179
%E1502NC.DeviceDesc%            = E1502.6.1.1,       PCI\VEN_8086&DEV_1502&SUBSYS_80001025
%E1503NC.DeviceDesc%            = E1503.6.1.1,       PCI\VEN_8086&DEV_1503
%E1503NC.DeviceDesc%            = E1503.6.1.1,       PCI\VEN_8086&DEV_1503&SUBSYS_00011179
%E1503NC.DeviceDesc%            = E1503.6.1.1,       PCI\VEN_8086&DEV_1503&SUBSYS_00021179
%E1503NC.DeviceDesc%            = E1503.6.1.1,       PCI\VEN_8086&DEV_1503&SUBSYS_04911025
 
[Intel.NTamd64.6.1]
; DisplayName                   Section        DeviceID
; -----------                   -------        --------
%E1502NC.DeviceDesc%            = E1502,       PCI\VEN_8086&DEV_1502
%E1502NC.DeviceDesc%            = E1502,       PCI\VEN_8086&DEV_1502&SUBSYS_00011179
%E1502NC.DeviceDesc%            = E1502,       PCI\VEN_8086&DEV_1502&SUBSYS_00021179
%E1502NC.DeviceDesc%            = E1502,       PCI\VEN_8086&DEV_1502&SUBSYS_80001025

Для начала надо знать, что нужная нам сетевая карта имеет код устройства 1503. Изучив приведенные секции, мы видим, что почему- то разработчики обделили ее вниманием для версии операционной системы 6.1, но не пожалели чернил для версии 6.1.1. Я могу только предположить, что 6.1.1 означает Win7\2008R2 с SP1. Но, по всей видимости, установщик драйверов Windows Server 2008R2 SP1 RTM еще “не был в курсе” такой нумерации и пробовал искать драйверы только для версии 6.1.

Кстати довольно интересно наблюдать названия секций INF-скрипта вроде Intel.NTamd64 – представляете как скрипят зубами маркетологи Intel ? Хотя, это всего лишь дань тому времени когда AMD первой представила широко доступные 64 битные процессоры.

Дальнейшие действия выглядят очевидными- есть два варианта- либо добавить в секцию [Intel.NTamd64.6.1] все записи %E1503NC.DeviceDesc%, либо отредактировав строку из секции [Manufacturer] до вида

%Intel%     = Intel, NTamd64.6.1.1.

Второй вариант я не проверял, а вот первый сработал на ура- исправленный драйвер установился и сетевая карта заработала. Однако во вкладке свойств сетевой карты я не увидел всех “вкусностей” которые предоставляли оригинальные драйверы, в том числе свойств VLAN.

Недолго думая я запустил оригинальную программу установки драйвера, и о чудо ! – уж теперь то она увидела, что есть такая сетевая карта и соизволила установить “правильные” драйверы. Результат виден на картинке:

Записки системного администратора 2
Добавлю, что позже я увидел возможную причину того, что драйвера пришлось устанавливать 2 раза – при копировании записей вида

%E1503NC.DeviceDesc%            = E1503.6.1.1,       PCI\VEN_8086&DEV_1503

возможно надо было удалять цифры .6.1.1 из = E1503.6.1.1, поскольку это значение обозначает секцию установки, и существует такая секция E1503 в которой производиться довольно много действий.

В заключение я хотел бы сказать, что общая ситуация с драйверами устанавливаемыми через INF-файлы достаточно небезопасная. Да, эти драйверы распространяются вместе с CAT- файлами, которые защищают от несанкционированных изменений. Но INF-файл по-прежнему можно выполнить, если проигнорировать предупреждение системы безопасности о том, что файл не подписан. А кого это когда останавливало? Через INF- файл можно установить драйвер в систему, добавить записи в реестр и скопировать файлы в системные папки. Т.е. сделать все что угодно. Причем, все вредные действия можно спрятать в “полезном” файле драйвера. Не далее, как пару месяцев назад, я искал драйвер для беспроводной карты своего ноутбука и прочел следующее: из-за отсутствия сертификации на стандарт wifi 802.1N для России некоторое время поставлялись решения wifi с драйвером урезанным до категории G. Правда это или нет, я не знаю, но там же предлагалось скачать “разблокированный” драйвер. Как вы думаете, какой драйвер скачал я?

Оригинал статьи.