Внимание! Прочитайте, пожалуйста, текст в правой колонке (внизу).
Внимание! Прочитайте, пожалуйста, текст в правой колонке (внизу). Внимание! Прочитайте, пожалуйста, текст в правой колонке (внизу). Homepage Карта сайта Версия для печати

Джентльменский набор Web-разработчика   Ларри Уолл о Perl6   Наблы Система Orphus
 

35. Чиним Windows своими руками

[23 октября 2003 г.] обсудить статью в форуме

Чайник 

Применяя советы из этой наблы, пристегнитесь ремнями безопасности. По крайней мере, не пытайтесь что-то делать, не сделав предварительно бэкап того, что изменяете. Я не буду приводить здесь ни скриншотов, ни точных рекомендаций (вроде «откройте Панель управления, там будет такая синяя-синяя иконка, подведите к ней мышь и нажмите левую кнопку, затем отпустите...»). Надеюсь, те люди, которым будет полезна данная набла, сразу же об этом догадаются.

Речь в данной набле пойдет о том, как можно «починить сломавшийся Windows», не запачкавшись при этом машинным маслом по самые уши. Особенно советы помогут тем людям, которые рискнули установить себе на домашнюю машину Windows 2003 Server, не подозревая, какие проблемы ждут их с драйверами. К сожалению, слух о том, что Windows 2003 — это всего лишь усовершенствованная Windows XP, на практике оказывается несколько преувеличенным. Может, конечно, они что-то там и усовершенствовали, но огромное число драйверов и устройств, прекрасно устанавливающихся на XP и работающих там без проблем, «взбрыкивают» в Windows 2003. К счастью, чаще всего удается заставить их работать так, как надо, однако это бывает сопряжено с ручными правками Реестра, а подчас — и DLL-файлов в бинарном редакторе (надеюсь, у вас до этого не дойдет).

Лирическое отступление 
На service pack надейся, да сам не плошай.

Например, у меня были проблемы со следующими драйверами и устройствами (достаточно распространенными, заметьте):

  • CD-RW TEAC CD-W552E: DirectCD не заработал вообще — ни от Ahead Nero, ни от Adaptec. Более того, после деинсталляции этого неправильно работающего DirectCD возникли проблемы со встроенным в Windows драйвером CDROM-а (об этом речь ниже).
  • Creative Sound Blaster Live Value: драйверы от Microsoft не поддерживают 4-колоночный режим. Драйверы же от Creative работают, но безбожно глючат: приводят к «синему экрану», конфликтуют с другой аппаратурой в системе.
  • GeForce2 MX (S/U/M/A Platinum, хотя я не знаю, что это означает): проблемы с TV-OUT решились перебором всевозможных версий драйверов, начиная от самого нового вниз. Подошел только где-то третий или четвертый.
  • Digit@l Ways MPIO DMP Player (USB): драйвер, работающий в XP, не подошел (вернее, он по сути работал, но все время выдавал сообщение при загрузке, что не работает). Решилось установкой самой новой версии MPIO Manager с сайта разработчика. При этом, как ни странно, исчезли конфликты со службой NetBT от Permeo Security Driver (прозрачный доступ через socks-туннель).
  • Microsoft Help and Support (helpsvc) — встроенная служба Microsoft: вдруг перестала работать. Удалось починить (см. ниже).
  • Было что-то еще, но уже сейчас и не вспомнить.

При этом грешить на оборудование не приходится: плата от ASUS, процессор Intel P4 2.4 Ghz, охлаждение и блок питания нормальные (специально брал с запасом прочности).

Караул! Все сломалось.

Что делать, если какой-то драйвер Windows установился и не заработал, а затем не хочет удаляться (или же удалился, но не полностью)? Поставить стандартный драйвер от Microsoft не удается: пишутся всевозможные ошибки, начиная от «не найдено устройство» до «указанный файл не найден», причем имя файла или устройства не указывается. Система глючит, падает и вообще ведет себя по-хамски.

Переставлять Windows — это из пушки по воробьям. Чаще всего ведь как бывает: под фразой «у меня Windows начала глючить, надо переставлять» скрывается действительность: «проблемы с каким-то одним драйвером, все остальное же работает нормально». И из-за этой, извините, поганой овцы переустанавливать весь Windows? Тогда можно еще и компьютер новый купить — авось поможет.

Лирическое отступление 
Приезжает «новый русский» в автосалон:
— Хочу купить новый «Мерседес».
Продавец:
— Если не ошибаюсь, вы же на прошлой неделе покупали один?..
— Да, но придется его заменить новым.
— Почему?..
— А там уже пепельница полная.

Вольтметр, молоток, шило, плоскогубцы

Пытаться решить проблему вслепую — как протирать стекло машины, когда она не заводится, в надежде, что это поможет. Так что для начала нужно запастись инструментами: утилитами для диагностики в реальном времени. Они помогут понять, что происходит, где, когда и в каком количестве.

Все необходимые утилиты доступны на этом сайте: http://sysinternals.com/ntw2k/utilities.shtml.

Там их очень много (и большинство — очень полезные), но нам пока пригодятся только следующие инструменты:

  • Filemon, или File Monitor — амперметр Windows. Это — утилита, которая в реальном времени показывает, какой процесс к какому файлу обращается, сколько и куда пишет, что пытается открыть. С ее помощью, например, можно понять, кто же у вас все время «крутит диск», даже когда компьютер вроде бы ничем не занят. Утилита позволяет вести журнал и для выборочных процессов, а не для всех подряд. Например, вас может не интересовать, что делает explorer.exe или far.exe — ну так укажите в настройках фильтра, что активность данных программ вас не интересует.
  • Regmon, или registry Monitor — вольтметр Windows. Все то же самое, что и в «Филимоне», однако касательно Реестра. Показывает, кто, что и откуда читает, пишет или проверяет.
  • Process Explorer — молоток с оптическим прицелом. С его помощью можно разнести процессы в пух и прах, а можно — просто посмотреть, кто кого «родил» и кто чей «потомок» (имеются в виду, конечно, процессы). То есть, программа показыват дерево процессов. Что самое главное, она указывает также, какие файлы каким процессом открыты, какие библиотеки используются и т. д. Вдобавок ко всему, если процесс умирает, он не просто удаляется из окна программы, а вначале подсвечивается красным — крайне удобно! Правда, исправлять ошибки с ее помощью тяжело, уж больно быстро все происходит в системе, для этого лучше применять Filemon. Зато, например, она может прибивать или менять приоритет у процессов, для которых стандартный менеджер процессов Windows выдает «Отказано в доступе».

Также пригодятся следующие программы (с других сайтов и не сайтов):

  • Regedit — шило Windows. Эта программа есть в любом дистрибутиве Windows, называется regedit.exe. Позволяет править Реестр вручную.
  • Far Manager — плоскогубцы. К нему нужны следующие плагины: Registry Browser, Service Manager, Startup Manager. Эти плагины часто позволяют делать то, что встроенные в Windows утилиты не умеют. Например, Service Manager может добавлять и удалять службы и устройства, а Startup Manager в удобном виде показывает, что и где запускается при загрузке машины.

История первая

Расскажу про реальный случай. В Windows 2003 Server я установил Adaptec DirectCD, а он не работает (пишет что-то о несовместимости устройства). После деинсталляции DirectCD при загрузке пишется: «Найдено новое устройство: CDROM» (без указания типа — просто CDROM). Производится попытка его установить, однако ничего не выходит, потому что «Устройство не работает». Чуть поковырявшись, можно «поймать» и еще одну ошибку при инсталляции драйверов: «Файл не найден».

В результате на машине «пропал» CDROM. И ничего не помогает. Катастрофа? Катастрофа.

Можно посмотреть глазами на файл cdrom.inf, определить, какие SYS- и DLL-файлы он использует и свалить их в кучу, взяв оригиналы из дистрибутива Windows. Для этого удобно использовать плагины Far: ISO viewer и плагин, позволяющий входить в compress-архивы (это такие файлы с расширением, оканчивающимся на подчерк), как в директории. Затем подсовываем все это хозяйство Мастеру настройки оборудования в ответ на просьбу указать путь к драйверу. К сожалению, такой способ не помогает.

Иногда перед тем, как устанавливать CDROM, Windows находил «настоящий» привод CDROM (у меня TEAC) и пыталась ставить его, но у нее все равно ничего не получалось: ведь она не может поставить даже стандартный CDROM.

Я удалил CDROM и убедился, что он действительно удалился (можно даже было вынуть кабель и перезагрузиться). Далее я запустил FileMon и зашел в Мастер оборудования. Посмотрел, какие файлы он пытается открыть, читать и писать. На этом этапе я обнаружил, что в файле C:\Windows\setupapi.log ведется подробный лог всех ошибок. Я открыл его, посмотрел, что пишется. В моем случае там было что-то о том, что не найден файл от Adaptec, и указывалось его имя. Я пошел в редактор реестра, нашел, где это имя встречается, и аккуратно его удалил. Вуаля! — все заработало.

Даже если бы лог и не велся, то все равно легко было бы понять, какой же «Файл не найден». Ведь Filemon пишет, к каким файлам были попытки обращения и чем они закончились. Ну и, конечно, не стоит пренебрегать Гуглом — правда, часто в нем бывает очень трудно найти решение проблемы, уж очень общие ключевые слова в ней (типа «windows», «cdrom» и т. д.).

И еще ссылка, которая, правда, мне не помогла, но я все же выполнил то, что там было описано: http://www.techimo.com/forum/t20963.html.

История вторая

Не запускалась стандартная служба «Help and Support» (helpsvc). Она, например, используется при нажатии на кнопку «Устранение неполадок» или просто Пуск — Справка и поддержка. При запуске писалось, что «Не удается найти библиотеку». Опять же, какую именно, не упоминалось нигде. Как выяснилось, даже логов, где бы это можно посмотреть, не было. Когда именно она сломалась, я уже и не помню. Но сломалась.

Я запустил Filemon и увидел, что при старте служба зачем-то хочет писать в директорию со странным именем C:\Windows\system32\%WINDIR%\... (и еще в десяток папок с упоминанием %WINDIR%; легко видно, что все эти папки из PATH). Зайдя в System32, я действительно обнаружил там поддиректорию %WINDIR%. Ясно, что, если программист не был сумасшедшим, он не стал бы давать нормальной папке такое имя. Вероятнее всего, он хотел, чтобы все записывалось в C:\Windows, но где-то допустил промах, и в результате переменная окружения WINDIR не подставляла свое значение, не «разворачивалась».

Самое простое решение — сделать символьную ссылку с именем %WINDIR% (благо NTFS) — опять же, при помощи Far (Alt+F6). Но интереснее другой путь. Запускаем Regmon и смотрим, что и где в Реестре читается во время запуска службы. Находим один-единственный ключ, где упоминается %WINDIR%. Правим его: вставляем C:\Windows. Перезагружаемся (зачем-то пришлось перегрузиться — видимо, ключ читается только при старте) и убеждаемся, что все заработало, как надо.

Потуги на итоги

Так в чем же «мораль сей басни такова»? А вот она: Windows не дураки писали, и в ней все прекрасно настраивается. Надо просто чинить правильными инструментами. Ну а тот факт, что многие этого не умеют, свидетельствует именно о надежности Windows (вопреки расхожему мнению). В самом деле, если бы система была ненадежная, то все бы волей-неволей научились ее чинить. Например, нельзя пользоваться Unix, не обладая достаточными знаниями ее архитектуры. В то же время, Windows применяют везде, это самая популярная ОС, и популярна она как раз во многом благодаря своей производительности, надежности и неприхотливости.

Ключевые слова этой наблы (чтобы лучше проиндексировалась поисковиками): CDROM cdrom.sys cdrom.inf cdralw2k.sys c:\windows\system32\drivers\cdralw2k.sys redbook.dll cdr4_2k.sys storprop.dll Adaptec Direct CD Easy CD Creator Nero File not found

обсудить статью в форуме

 
Рекламный блок
   

На странице:
    35. Чиним Windows своими руками
Караул! Все сломалось.
Вольтметр, молоток, шило, плоскогубцы
История первая
История вторая
Потуги на итоги

Важное объявление:
    автор категорически против копирования и распространения в Интернете всех статей «Куроводства» с возрастом, меньшим 6 месяцев. Печальный опыт «расползания» чрезвычайно устаревших ошибочных версий статьи про Apache действительно объясняет такое решение.

Орфография на «Куроводстве»:
    если вы заметили орфографическую, стилистическую или другую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Выделенный текст будет немедленно отослан вебмастеру, а Вы даже ничего и не заметите — настолько быстро все произойдет.

На заметку:
    если вы уже вскипели насчет дизайна этой страницы, то присмотритесь повнимательнее к названию, почитайте FAQ, сходите по лебедевским местам, как это уже предлагалось выше. Можно ли считать пародию плагиатом? Надеюсь, что нет.

Параметры этой страницы
   
GZip

Ссылки от спонсоров
   


Дмитрий Котеров | 23 октября 2003 г. ©1999-2016 | Генеральный спонсор: Хостинг «Джино» | Контакт Вернуться к оглавлению