- PVSM.RU - https://www.pvsm.ru -
Перенёс Windows Server 2022 из облака на свой компьютер и застрял на видеодрайвере. С базовым адаптером Microsoft получал только 1280×1024. После одной из попыток поставить дрова вообще остался с чёрным экраном. Уже смотрел в сторону T400 или RX 580, но решил сначала разобраться с тем, что есть.
Компьютер у меня на X99: Xeon E5-2697 v4, 64 ГБ памяти и старая Radeon R7 240. Монитор подключён по HDMI. Под Windows 11 эта карта работала, поэтому сразу покупать другую не хотелось.
В итоге выручили дрова, которые лежали в старой Windows на соседнем разделе. Версия оказалась ещё 2019 года. С ней Server выдал 3840×2160 при 30 Гц и нормально загрузился после перезагрузки. Ни карту, ни её прошивку менять не пришлось.
В облаке у меня стоял Windows Server 2022 с двумя дисками. Я скачал оба образа в QCOW2 и по очереди развернул их на своём компьютере. Места для всех промежуточных файлов сразу не хватало.
Схема переноса была такая: QCOW2 перевёл в VHDX, подключил его для чтения, снял содержимое нужного раздела в WIM и восстановил на подготовленный раздел своего диска. Потом настроил загрузчик и буквы дисков. Старую Windows 11 оставил — если Server не загрузится, будет откуда чинить.
Она пригодилась довольно быстро. Но ещё до проблем с дровами я наткнулся на два пункта загрузки для одного накопителя: UEFI OS и Windows Boot Manager. Через первый получал ошибку MainFrame.xml, через второй Server загружался. Дальше выбирал Windows Boot Manager.
Неудачная попытка была с AMD 27.20.20913.2000. Драйвер поставился принудительно, а рабочего стола после этого не было. Просто чёрный экран и ожидание загрузки. В журналах повторялись ошибки dwm.exe — процесса, который отвечает за отображение окон. Сам пакет оказался с правленым INF и заново подписанным каталогом.
Загрузился в запасную Windows 11 и отключил этот драйвер в реестре установленного Server. После этого Server снова показал рабочий стол, уже на базовом адаптере Microsoft. Правда, в выборе разрешения был один-единственный пункт: 1280×1024. Монитор определялся как универсальный.
Так хотя бы можно было продолжать возиться с системой. Но оставлять такое разрешение на этом мониторе я не собирался.
Полез в настройки прошивки платы. В разделе CSM переключил Video с Legacy на UEFI, а Boot option filter поставил в UEFI only. После перезапуска изображение пропало уже при включении компьютера. Вернул всё обратно.
Тут я поменял сразу два параметра, так что какой именно помешал — не выяснил. В результате оставил CSM включённым, видео в Legacy, а загрузку — UEFI и Legacy. Рабочие дрова потом поставились с этими настройками.
Ещё проверил параметры загрузки Windows. Отключил оставшийся BASEVIDEO, перезагрузился — те же 1280×1024. Попробовал отдельный запуск с highestmode, тоже без изменений. Этот параметр разрешает загрузочным приложениям использовать наибольший графический режим, доступный через прошивку; вот его описание у Microsoft [1]. У меня он не помог. Временную загрузочную запись после проверки убрал.
Дальше посмотрел, какой драйвер сохранился в прежней Windows 11. В её хранилище нашлась папка:
...System32DriverStoreFileRepositoryu0346830.inf_amd64_35731e557194973d
Там лежал AMD 26.20.12028.2 от 16 августа 2019 года. Исходный INF — u0346830.inf. В журнале старой Windows была запись, что этот пакет использовался для моей карты. Раздел с Windows 11 в тот момент был виден из Server.
Заодно выяснилось, почему искать просто «драйвер для R7 240» недостаточно. Карта может быть указана в INF, но нужного раздела для Server там не окажется. Например, в проверенном пакете 27.20.1034.6 моя карта была, однако разделы предназначались для клиентской Windows. У Crimson 17.7.1 для Windows 8.1 нужный идентификатор тоже нашёлся, но раздел для Windows 10 оказался пустым.
В пакете 2019 года был точный идентификатор моей карты:
PCIVEN_1002&DEV_6613&SUBSYS_80941462
И раздел NTamd64.10.0...16299, который Server мог выбрать. Ограничения ProductType=1 в нём не было. Это обозначение клиентской Windows; подробнее про такие строки можно прочитать в документации Microsoft [2].
Проверил подпись каталога — Microsoft Windows Hardware Compatibility Publisher. Подпись была действительной, INF соответствовал каталогу. Этот пакет не пришлось править или подписывать заново.
После предыдущего чёрного экрана сначала сделал копию ветки реестра SYSTEM и сохранил сведения об установленном драйвере. Найденный пакет добавил через PnPUtil, пока без установки на карту. Windows приняла пакет и показала его как наиболее подходящий для её аппаратного идентификатора.
Ниже команды с условным путём ...DriversR7-240. В этой папке должен быть весь пакет с вложенными файлами, не один INF. Запускать нужно от администратора.
Сначала добавление пакета:
pnputil /add-driver "...DriversR7-240u0346830.inf"
Когда пакет проверен и есть возможность откатиться — установка:
pnputil /add-driver "...DriversR7-240u0346830.inf" /install
Параметры команды описаны в справке PnPUtil [3]. Файлы вручную в работающую Windows я не подкидывал, установку делала сама система.
На случай нового чёрного экрана заранее поставил задачу от имени системы: через десять минут удалить новый пакет, если я не отменю откат. Перед удалением она сверяла имя пакета и его контрольную сумму. У меня пакет получил имя oem0.inf. На другом компьютере этот номер может принадлежать другому драйверу.
Тут я сам себе добавил работы: изображение появилось, но откат вовремя не отменил. Таймер сработал и удалил драйвер. Поставил тот же пакет ещё раз, проверил рабочий стол и убрал задачу. Заодно убедился, что этот откат у меня работает. Запасную Windows всё равно оставил — на случай, если компьютер зависнет целиком.
В диспетчере появилась AMD Radeon R7 240, версия драйвера — 26.20.12028.2, ошибок устройства нет. Монитор определился как P27A2V. Разрешения стали доступны нормальные: 3840×2160 при 30 Гц, а также 2560×1440 при 60 Гц.
В dxdiag проверил 3840×2160, 32 бита, 30 Гц. Там же были WDDM 2.6 и включённое ускорение Direct3D. Сам монитор сообщал предпочтительный режим 4К при 60 Гц, но у меня для 4К доступны 30 Гц. С этим отдельно пока не разбирался.
После этого перезагрузил компьютер. Server поднялся с тем же драйвером и разрешением, рабочий стол работал. Примерно через час после запуска посмотрел журналы — новых падений графики не было. Игры и тяжёлую нагрузку я не проверял. На этом компе мне это не нужно было. Цель была вернуть нормальную картинку и убедиться, что после перезагрузки снова не будет чёрного экрана.
Покупку другой карты пока отложил. Старую Windows тоже не удалял: через неё получилось и откатить неудачные дрова, и найти рабочие. Если у вас похожая история, посмотрите, какой пакет раньше работал с вашим железом. В моём случае это оказался 26.20.12028.2, без переделки INF и без отключения проверки подписей.
Автор: spbmolot
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/windows/461699
Ссылки в тексте:
[1] его описание у Microsoft: https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/bcdedit--set
[2] документации Microsoft: https://learn.microsoft.com/en-us/windows-hardware/drivers/install/combining-platform-extensions-with-operating-system-versions
[3] справке PnPUtil: https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/pnputil-command-syntax
[4] Источник: https://habr.com/ru/articles/1104302/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1104302
Нажмите здесь для печати.