Парамедицина для Windows. Эпизод I: Жизнь без «синей смерти»
АрхивПолезняшки (архив)Ненадежность Windows давно уже стала притчей во языцах, но в реальности для поддержания ее работоспособности требуется не так уж много усилий. В этой статье — причины «болезней» и методы «лечения» Win9x.
Paramedical — относящийся к среднему медицинскому персоналу
(англо-русский словарь)
В среде авторитетной компьютерной общественности утверждение о ненадежности и нестабильности операционных систем Win9x стало уже аксиомой. Наиболее радикальные поклонники альтернативного программного обеспечения распространяют эти же выводы и на NT, резюмируя свое отношение к продукции Microsoft призывом die'ть дуба. Не будучи фанатом Windows, осмелюсь однако на основании личного опыта утверждать, что не все столь однозначно, и для «укрощения строптивой» требуется совсем немного усилий и, тем более, нервов. Хотя я знаком с оригиналами, переустанавливающими систему раз в квартал, а то и чаще, но когда у некоторых из них наконец лопается терпение и начинается поиск причин регулярных крахов, то собственно к Windows чаще всего остаются претензии преимущественно философского плана — в форме «было бы хорошо, чтобы…».
Лично у меня последние полтора года живет русский Win98SE, 4.10.2222А. Мой компьютер одновременно и рабочая лошадка (хотя программированием я теперь занимаюсь эпизодически), и испытательный полигон, и делопроизводитель, и игротека. В таких условиях проблемы должны появляться постоянно. После многих «испытаний» не только выскакивал экран «синей смерти», но система в принципе отказывалась грузиться даже в безопасном режиме (Safe Mode). И все же простые рецепты, о которых речь пойдет далее, позволяли вернуть работоспособность компьютеру в кратчайшее время без переустановки и потери данных. Согласен, что для профессионального программирования Win9x малопригодна, так ее никто для этого и не продает.
Хотя выход WinXP должен прекратить существование линии Win9x/Me, но требуемый upgrade железа и традиционное ожидание работоспособных ServicePack'ов наверняка растянут «вымирание» старых ОС на год–два. Поэтому основное внимание в дальнейшем изложении будет уделено Win98. WinMe меня мало привлекает. Во-первых, в ней резко увеличен расход оперативной памяти — где-то процентов на 20–30, — прироста же быстродействия я что-то не заметил. Во-вторых, DOS «исключена» из нее неудобным способом — а во многих случаях без DOS для реанимации системы не обойтись. Общий же подход к сохранению работоспособности и восстановлению остается одинаковым, нужно только учесть, что в Me добавлены дополнительные средства автоматического резервирования и восстановления. Win98 по наследству от MS DOS достались очень скудные средства диагностики и исправления возникающих ошибок. SCANDISK (тест диска и файловой системы) да SCANREG (проверка Registry) — вот, пожалуй, и все, что можно вспомнить на «Брейн-ринге». За дополнительную минуту обсуждения можно обнаружить протокол загрузки в Logged-режиме и утилиту контроля целостности системных файлов (SFC). Есть еще Доктор Ватсон, но его услугами мне воспользоваться не довелось — в критической ситуации почему-то всегда о нем забывал. Надо полагать, полный список диагностических утилит доступен в программе «Сведения о системе» (рис. 1), вызываемой через Пуск—>Программы—>Стандартные—>Служебные—>Сведения о системе.
Рис. 1. Диагностические утилиты Win98
Информация же о происходящих сбоях просто раздражает. Из окна «недопустимая операция» (рис. 2) или экрана «синей смерти» понять причину краха невозможно, а «обратиться к разработчику» получается далеко не у всех.
Рис. 2. «Недопустимая операция»
С таким арсеналом весьма затруднительно определить даже характер истинного виновника происходящих сбоев: к примеру, это ошибка ПО или аппаратный сбой? Для грубых «глюков» железа существуют более-менее объективные признаки: крах системы в случайные моменты времени, отсутствие привязки к определенным задачам, реакция компьютера только на «жесткий сброс» (Reset). Но мне приходилось видеть, как разогнанный компьютер намертво вышибало при запуске Word из Office 95 (без разгона процессора все работало нормально), а замена RICHED32.DLL на более новую версию исключила ошибку. Рулетка…
Кстати, если уж вы разгоняете компьютер, то позаботьтесь об охлаждении: поставьте на процессор вентилятор помощнее, в корпусе добавьте еще один, поставьте программный «охладитель», например, Amn Refrigerator, подкорректируйте настройки BIOS — может, система и будет нормально работать. А то ведь компьютер превращается в кипятильник, а «очумелые ручки» матерят Microsoft.
Потому диагностику системы нужно начинать (впрочем, параллельно с антивирусным контролем) с приведения параметров железа к номинальным: возврат завышенных режимов к паспортным и установка BIOS в Fail-Safe (или Default) режиме. Несмотря на банальность такого совета, в значительном количестве случаев из моей практики проблемы на этом заканчивались. Нелишней бывает проверка надёжности крепления разъемов и шлейфов. К примеру, однажды причиной хронического зависания стал легкий перекос IDE-шлейфа на ZIP-drive, при этом запись/чтение происходили без проблем.
В общем случае, если перед манипуляциями с железом не пренебрегать прилагаемыми к нему инструкциями, да ещё поискать дополнительную информацию в Сети (к примеру, на "Русских документах", InfoCity или Компьюферре) или же в магазине, то откровенно дурацких ситуаций всегда можно избежать. Да и на ремонте здорово сэкономите.
Помимо обычных неисправностей hardware, значительная группа проблем возникает из-за конфликтов устройств по поводу аппаратных ресурсов: прерываний (IRQ) и адресного пространства. IRQ обеспечивают согласованную работу всех устройств и устранение конфликтов при использовании ими общих ресурсов: например, системной шины или процессора. Современные стандарты BIOS – Plug-and-Play (P&P) и Advanced Configuration and Power Interface (ACPI) — в большинстве случаев обеспечивают правильное автоматическое распределение ресурсов. Но разновидностей железа становится все больше, и полностью согласовать между собой варианты BIOS, устройств и Windows практически нереально.
Заморочки из-за этого возникают самые разные: от невозможности (пере)установить систему до сбоев в работе программ. Чаще всего какое-то устройство просто не работает, что можно увидеть на вкладке «Система» Панели управления (Пуск—>Настройка—>Панель управления—>Система) (рис. 3).
Рис. 3. Сетевая плата отключена
Для устранения конфликтов нужно выделить требуемое устройство, далее выбрать Свойства—>Ресурсы и, отключив (при наличии) автоматическую настройку, изменить параметры, указанные в списке конфликтов. Необходимо также учитывать, что по своим конструкционным особенностям не все устройства и не во всех режимах могут использовать любые свободные ресурсы. Поэтому, если конфликты не обнаружены, а желтый значок не исчезает, вспомните о соответствующем описании.
Setup Windows полагает, что все новые (с конца 1999 г.) версии BIOS поддерживают ACPI, и по умолчанию устанавливает соответствующее ядро. При необходимости (срыв установки, невозможность устранить конфликты или получить доступ к какому-то оборудованию) существует вариант принудительной установки в режиме P&P с помощью ключа setup/p i (для ACPI соответственно setup/p j). При наличии опции ACPI/APM (P&P) в BIOS ее нужно переключить в соответствующее положение (не забывайте об инструкции к материнской плате). Для гарантии рекомендуют удалять Реестр (Registry).
Кстати, гораздо чаще срыв (пере)установки происходит из-за включенной в BIOS опции «Предупреждение о вирусах» (Virus warning). В таком режиме происходит контроль за доступом к главной загрузочной записи (MBR), и пользователю выводится предупреждение с требованием подтвердить операцию. Окно запроса видно только в текстовом режиме, а многие уже и не догадываются, что это такое. Поэтому не забывайте отключать режим предупреждения о вирусах перед (пере)установкой Windows. Впрочем, если забудете и столкнетесь в начале установки с долго висящим пустым экраном (без обращения к диску), то нажмите несколько раз клавишу «Y». Скорее всего, Setup получит желаемый доступ к MBR и спокойно продолжит работу.
Тема железа неисчерпаема, но лично мне гораздо более по душе ситуация, когда к аппаратной части претензий нет. Заковыристых проблем с софтом и без того хватает. Архитектурные особенности Windows, в частности, модель компонентных объектов (COM), не позволяют однозначно разделить ПО на системное и прикладное обеспечение, как это было ранее и пока еще есть в других системах. «Где начинается полиция? И где кончается Беня?», совершенно непонятно. Плюс к тому, в состав дистрибутивов самых разных программ часто включаются базовые разделяемые библиотеки, например, MFC. Нормальные установщики не заменяют новые версии разделяемых модулей, уже присутствующие в системе (WINDOWS\SYSTEM). Если же есть острая потребность в старых библиотеках, то квалифицированные разработчики помещают их в папку с устанавливаемой программой. Так, например, MATLAB версии 5.11 почему-то не может работать с mfc42.dll версии 6 и преспокойно использует версию 5, не влезая в калашный ряд других программ. К сожалению, такой подход — скорее исключение, и добавление в паутину связей Windows любой программы может привести к самым неожиданным результатам (правило «Большие программы похожи на спагетти. Тянешь в одном месте — что-то шевелится в другом» в Гарварде не изучали).
Поэтому, прежде чем устанавливать любую программу, посмотрите на дату ее выпуска. Если ПО старше текущей версии ОС, лучше поищите версию поновей, потому как гарантий не даст никакой brandname. Крупные software-корпорации все же разрабатывают свое ПО с учетом заветов Microsoft: не используй недокументированные функции, или закладывают резервные варианты выполнения нужных действий. Опять же, они имеют доступ к первичной информации и могут вовремя выпускать исправления. У разработчиков ПО «а-ля фри» проблем гораздо больше, и поддерживать свое творение они могут, только заняв устойчивое экономическое положение.
Есть ещё одна особенность: если вы обновляете или переустанавливаете систему, то «правильные» старые программы сохраняют свою работоспособность. Но если вы попытаетесь использовать их на «чистой» системе, то могут появиться самые разные проблемы из-за перезаписи важнейших разделяемых библиотек. Лучшим решением остается работа с новыми версиями.
Во многих случаях при инсталляции устаревшего софта система ограничивается переходом в нестабильное состояние с хроническим появлением «запрещенной операции» (см. рис. 2). В WinMe должна работать система защиты критических файлов, автоматически восстанавливающая замененные или по недоразумению удаленные. В Win98 существует программа проверки и восстановления системных файлов — SFC (рис. 4). Она устанавливается без уведомления в каталог WINDOWS\SYSTEM, и о ней знают не все пользователи.
Рис. 4. Начальное окно sfc.exe
В задачи SFC входит поиск и восстановление важных для сохранения работоспособности системы файлов. Настройки программы позволяют определить круг анализируемых папок и файлов, метод восстановления и место хранения файла данных проверки.
При расхождении сохраненной информации о файле с его текущим состоянием пользователю предлагается восстановить статус-кво, подтвердить либо проигнорировать изменения (рис. 5).
Рис. 5. Обнаружен измененный файл
В процессе работы у вас часто будет возникать необходимость понять, откуда взялся программный модуль и для чего он предназначен. Любой исполняемый файл (exe, dll, vxd и др.) от приличного производителя содержит в себе краткую информацию о назначении, версии и некоторых других свойствах. Получить ее можно с помощью контекстного меню (выделить файл в папке—>правая кнопка мыши—>Свойства—>Вкладка «Версия») (рис. 6).
Рис. 6. Краткая информация об исполняемом модуле
Отсутствие этих сведений – повод для тщательного анализа, особенно когда такой файл прописан для автозагрузки (подробную методику поиска автоматически и скрытно выполняемых файлов см. в статье «Кто хозяйничает в моем компьютере?») Конечно, злонамеренный код скорее всего содержит ложные данные, но если он подменяет «правильную» программу, то сообщение SFC упростит его обнаружение.
SFC позволяет также восстановить любой одиночный файл. Это может пригодиться, если «недопустимая операция» выскакивает слишком часто и ссылается на один и тот же модуль, генерирующий ошибку.
Вторая группа программных проблем опять же связана с железом. Это установка неподходящих драйверов. Некоторые пользователи почему-то уверены, что всё обеспечение с прилагаемых к компьютеру дисков должно быть обязательно установлено. Но здесь еще более жестко действует то же правило, что и для остального софта: проверь дату выпуска. Хотя Microsoft в каждой версии вносит какие-то изменения в правила работы драйверов, но Windows довольно вяло сопротивляется внесению устаревшего кода. В крайнем случае, предупредит мелким шрифтом, что ПО может не подойти, и всю ответственность пользователь берет на себя. И поскольку драйверы работают в очень уязвимой области операционной системы, то последствия их ошибок могут быть более чем печальными: полный крах системы и/или потеря информации (свят… свят… свят…). Если вам повезет, то при загрузке сработает драйвер агента автоматического обхода ошибок (см. на рис. 1), и вы получите сообщение с указанием на непригодный модуль (не видел ни разу). К сожалению, на «автоматику» надежда слабая, до диагностики дело может просто не дойти, и головную боль вы обеспечите себе своим собственным умом (а вот это встречаю регулярно).
Устанавливая драйверы от производителя, обратите внимание на то, как они поступают с программами Microsoft. Я однажды столкнулся с тем, что при установке некоторых новых драйверов для звуковой карты ESS происходит полное(!) удаление ссылок на редмондовские разработки из базы данных драйверов. Даже деинсталлятор специальный в комплекте есть. При этом стоит одна карта, а удаляются почти все доступные типы. И когда поперли баги, то возвратиться к «родным» Windows-драйверам без переустановки системы не удалось (наверное, можно было бы поискать необходимый inf-файл в дистрибутиве, но знать бы в нужное время, как он называется…).
Если же вы приобрели «уникальное» оборудование, которое работает только со своими собственными драйверами, то ищите надлежащую их версию, а не хулите понапрасну Билла Гейтса. В любой другой ОС лучше не будет.
Некоторые варианты полного краха будут рассмотрены во второй части «Парамедицины», а сейчас обратимся еще к одной теме: злоупотребление новизной. Вовсе не обязательно тащить к себе на компьютер свежеиспеченные бета-версии программ. Они для того и предназначены, чтобы создавать проблемы. Хотите стать бета-тестерами — пожалуйста, но будьте готовы к «суровым будням» хронических зависаний, недопустимых операций и синих экранов. Хотите работать — пользуйтесь проверенным софтом. Хуже бета-версии может быть только старая бета.
Отдельную группу риска (ну о-о-чень большую) образуют «крякнутые» программы. Здесь претензии к качеству работы вообще неуместны. As is. Но «сообщество за бесплатное ПО» быстро реагирует на уловки «толстосумов от software», поэтому при возникновении проблем с временно позаимствованными правами ищите новые кряки в соответствующих закоулках Сети.
Значительным источником неприятностей становятся ошибки в служебных областях диска и ошибки файловой системы. Потерянные кластеры (дисковое пространство, помеченное как занятое, но не принадлежащее какому-либо файлу или каталогу), пересечение файлов, ошибки в таблицах распределения файлов (FAT) и именах – всё это замедляет работу компьютера и «провоцирует» систему на новые сбои. Для поддержания порядка на диске Microsoft предлагает SCANDISK (DOS и Windows версии). Достаточно много утилит производится независимыми разработчиками. Я лично предпочитаю Norton Disk Doctor (NDD), несмотря на его неоднозначную репутацию.
Такие программы работают с крайне чувствительной и важной информацией. Достаточно сказать, что один неправильный байт в главной загрузочной записи может лишить вас доступа ко всему диску. Поэтому нелишними будут следующие ограничения: никогда не разрешать исправления в автоматическом режиме, а при обнаружении ошибок в критических областях диска — MBR, загрузчик (Boot record), FAT — немедленно делать копию данных и только потом приступать к «починке». Впрочем, регулярное резервирование информации — это единственный надежный способ ее сохранения в аварийной ситуации, причем в любой ОС (примеры – в статье «Особенности национального копирования»).
Регулярная дефрагментация диска не относится к критическим операциям, но улучшает самочувствие Windows. При этом ей важнее всего иметь непрерывный свободный кусок пространства где-то на 300–500 МБайт, чтобы не резать на части файл подкачки (swap) и временные файлы, образуемые многими программами. Если позволяют ресурсы, сделайте файл подкачки постоянным. Опять же, вместо стандартной утилиты дефрагментации DEFRAG я предпочитаю Norton Speed Disk — он более функционален и работает гораздо быстрее.
А не слишком ли много правил и ограничений? Ну, в ГАИ-ГИБДД их еще больше, а ведь ездим. Нам не дано улучшить Windows, но можно легко ее не ухудшать. Необходимые профилактические мероприятия по времени занимают один-два пасьянса, и не каждый день. Добавьте здравый смысл, основанный на знании, — и вы на собственном опыте убедитесь, что компьютер ДЕЙСТВИТЕЛЬНО предназначен для облегчения вашей жизни.