|
||
|
||
Hibernate - как много в этом звуке… муки |
||
Сергей Трошин К большому сожалению всех пользователей персональных компьютеров, среди производителей железа и ПО все еще царит разброд и шатание. Каждый новый компьютерный стандарт рождается в муках и борьбе с конкурирующими фирмами, пытающимися продвигать свои собственные разработки вместо того, чтобы для всеобщей пользы договариваться о единых спецификациях. За примерами далеко ходить не надо - достаточно вспомнить все тот же DVD или безуспешные попытки найти универсальную замену дешевому, но давно изжившему себя флопповоду. Когда подобные дрязги касаются отдельных блоков ПК - это еще пол-беды, гораздо хуже, если четкого следования стандартам не наблюдается среди разработчиков основы компьютера - материнской платы. Так, подавляющее большинство современных материнских плат считаются ACPI-совместимыми. На деле же оказывается, что они поддерживают лишь некоторый набор стандартов этого интерфейса, оставляя за кадром другую часть его рекомендаций. Отчасти именно по этой причине сегодня один из самых часто задаваемых пользователями вопросов - "Почему у меня не работает спящий режим?". Но обо всем по порядку. Не так давно на смену систем с APM - Advanced Power Management (расширенное управление питанием) пришли компьютеры, разработанные с учетом новой спецификации ACPI - Advanced Configuration and Power Interface (расширенный интерфейс конфигурирования ПК и управления питанием). ACPI - не ОС или программа. Это некий межплатформенный интерфейс или набор рекомендаций, так называемых "спецификаций", которые были приняты ведущими компьютерными компаниями (Intel, Microsoft, Toshiba и Phoenix), чтобы добиться стандартизации метода конфигурирования и управления питанием в компьютере и его улучшения. Первоначально акцент был сделан, конечно, на портативные ЭВМ, для которых рациональное управление питанием - одна из главных задач, но с появлением Windows 98 это нововведение коснулось и PC. В сегодняшних моделях компьютеров с помощью ACPI назначаются прерывания и распределяются по различным устройствам ресурсы, информация об их функционировании передается системе, используются различные энергосберегающие режимы. Таким образом, главная задача ACPI - обеспечение взаимодействия между ОС, аппаратными средствами и системным BIOS. Однако по не вполне понятным причинам (все из-за того самого разброда) решается она в действительности не лучшим образом, что особенно ярко проявляется в отношении новомодного энергосберегающего режима Hibernate ("Спячка"). Но для чего, собственно, нужны все эти прибамбасы со снижением потребления электричества? Отчасти это дань усилиям всевозможных экологических организаций и законам, направленным на охрану окружающей среды. Однако для пользователя главное их достоинство состоит именно в УПРАВЛЕНИИ питанием, в возможности очень быстро привести компьютер в работоспособное состояние после длительного перерыва. Согласитесь, чрезвычайно удобно, если система готова пробудиться за нескольких секунд, чтобы принять входящее обращение по телефону или ответить на запрос по локальной сети. В перспективе это дает возможность системе автоматически включать и выключать не только периферийные устройства типа CD-ROM, сетевых плат, жестких дисков и принтеров, но и внешние бытовые приборы, связанные с ПК, типа видеомагнитофонов, телевизоров, телефонов и стереосистем. С помощью этой технологии и сами периферийные устройства могут активизировать ПК. Например, установка кассеты в видеомагнитофон может включить компьютер, который в свою очередь активизирует телевизор и аудиосистему домашнего кинотеатра. Вряд ли есть смысл распространяться о преимуществах, недостатках и особенностях нового стандарта - подробную информацию о взаимосвязанных технологиях ACPI, SIPC и OnNow вы найдете в интернете, например на сайте www.microsoft.com/hwdev. Нас же сейчас интересует только одна сторона этого вопроса - Великая Проблема Спящего режима. Спячка На сегодня имеются два наиболее продвинутых режима энергосбережения. Во-первых, это Suspend to RAM (STR), при котором останавливаются жесткие диски, выключается монитор, мощность, подводимая к большинству компонентов, уменьшается (или снимается совсем), работа CPU приостанавливается - в идеале только RAM остается активной, сохраняя все наработанные до перехода в Suspend данные. Потребление энергии, таким образом, достигает минимума, но при первом же обращении к ПК, например, при движении мышью или входящем звонке он "просыпается" и готов к работе уже через пару секунд. В результате становится возможным во многих случаях избежать длительной и утомительной процедуры загрузки ПК после его полного выключения. Однако если в этом режиме пропадет электропитание или у ноутбука разрядятся батареи, то все данные из памяти будут потеряны. К сожалению, в настольных компьютерах этот режим полностью реализуется не часто из-за того, что многие материнские платы не умеют обесточивать все компоненты ПК по отдельности, поэтому вместо него используется более простой "ждущий режим" (Stand by), при котором питание остается не только на RAM, но и на некоторых других устройствах. Но, дабы избежать неожиданной потери данных при разрядке аккумулятора, в переносных компьютерах появилась более подходящая для ноутбуков функция Suspend to Disk, или Hibernation, - "спящий режим", при переходе в который вся информация из оперативной памяти записывается в специальный файл или раздел на жестком диске, после чего снимается питание со всех узлов ПК без исключения. При последующем включении компьютера после прохождения стандартной процедуры проверки POST происходит не загрузка ОС, а быстрое считывание этого файла, в результате чего "Рабочий стол" системы восстанавливается в том виде, в каком он был перед выключением ПК - запущены все те же приложения и открыты документы, с которыми пользователь работал до перехода в "спячку". Разумеется, времени на пробуждение уходит в этом случае больше, чем при STR, но все равно гораздо меньше, чем на полную загрузку системы и всех используемых приложений. В ноутбуках это достигалось средствами BIOS. С выходом же Windows 2000 и Windows Me спящий режим стал поддерживаться не только BIOS, но и самой ОС (OS-controlled ACPI S4 sleep state, то есть "спящий режим ACPI S4, управляемый ОС", он же Hibernate), при этом для Windows гораздо предпочтительнее ее собственный механизм управления электропитанием, чем то, что дает BIOS. В принципе, спящий режим может присутствовать и на системах с Windows 98, но это происходит очень редко, поскольку здесь, как в случае с ноутбуками, необходима его реализация на уровне BIOS, в котором дело часто ограничивается лишь режимом Stand by. Также желательно, хотя и необязательно, наличие самого ACPI-совместимого BIOS - на некоторых старых системах, оснащенных только APM, Hibernate вполне успешно работает, в частности, если используется Windows 2000, чуть более качественно управляющая этим режимом. В общем, условий много... И вот именно этот граничащий с шаманством спящий режим является самым лакомым куском новой технологии для многих пользователей ПК. Конечно, в Windows Me все равно приходится несколько раз в день полностью перегружать ПК из-за нестабильности ОС и приложений для нее, но вот в Windows 2000 вполне реально месяц-два погружать ПК исключительно в "зимнюю спячку", забыв о его выключении. Если учесть, сколько времени грузится "винтукей", то польза спящего режима очевидна. Таким образом, если ваш ПК достаточно современный, а фортуна не повернулась к вам задом, то режим Hibernate уже присутствует в вашей системе - его надо только включить. Для этого в диалоге "Управление электропитанием" на вкладке "Спящий режим" (Control Panel > Power Options > Hibernation) просто установите флажок, разрешающий использование этого режима. Теперь внимание! Сразу после этого сделайте резервную копию реестра, например, запустив системную утилиту Scanregw.exe, производящую резервирование после проверки реестра на ошибки. Дело в том, что спящий режим также легко потерять, как и включить. Теперь в меню "Пуск" нажмите "Завершение работы" и выберите опцию "Спящий режим" (Start > Shutdown > Hibernate). Компьютер погрузится в сон. Через пару минут (быстрое повторное включение вредно для жестких дисков) попробуйте его разбудить, нажав кнопки на клавиатуре или пошевелив мышью. Повторите эту процедуру несколько раз. Если все благополучно и претензий к этому режиму нет, то дальше читать не обязательно. Если же ПК в целом или отдельные его компоненты ведут себя нестабильно, то вы - мой клиент. Прежде всего рассмотрим такой (очень возможный) вариант, когда в диалоге "Управление электропитанием" вообще нет вкладки, отвечающей за спящий режим. В этом случае отчаиваться не стоит, так как добиться ее появления все-таки можно. Без чего никак Итак, если вкладка "Спящий режим" отсутствует, то, во-первых, посмотрите, установлена ли поддержка ACPI - одно из главных условий полноценной работы Hibernate в вашей системе. Дело в том, что при инсталляции Windows поддержка ACPI автоматически включается только на тех ПК, которые имеют ACPI-совместимый BIOS, известный Windows и выпущенный после 12/01/1999. Для этого откройте "Панель управления", далее "Система" > "Устройства" (Control Panel > System > Device Manager), выберите способ отображения устройств "by connection" ("по подключению") - и если самым первым устройством окажется Advanced Configuration and Power Interface (ACPI) BIOS ("Интерфейс автоматического управления конфигурацией и питанием (ACPI) BIOS"), то ACPI установлен. Другие обязательные условия поддержки спящего режима:
На самом деле все это очень зыбко, и даже если BIOS материнской платы полностью поддерживает ACPI, то совсем не обязательно, что весь ПК совместим с этой спецификацией, так как в нем могут быть установлены устаревшие устройства, не совместимые с каким-либо режимом ACPI. Поэтому желательно также проверить соответствие всей системы стандарту ACPI с помощью утилиты ACPIHCT v1.61, имеющейся на сайте http://www.microsoft.com/hwdev/acpihct.htm. Если она покажет, что ПК несовместим с ACPI, то шансы обрести Hibernate серьезно уменьшаются. Другой тест используется уже при установленном ACPI и может выявить причины проблем, возникающих, например, при выключении ПК или попытке перейти в режим STR. Утилита, его осуществляющая,
называется PM Troubleshooter (support.microsoft.com/support/kb/ Однако она поможет выявить мешающий драйвер только в том случае, если ПК не зависает совсем при переходе в режимы STR и Hibernate, так как если после зависания ПК вы его перегрузите, то, естественно, собранные утилитой данные потеряются. Полезно будет также посетить страничку www.microsoft.com/hcl, где приведена таблица совместимости аппаратных средств с операционными системами Windows, так как только полная совместимость всех компонентов ПК обеспечит все функции ACPI. Хотя некоторые функции ACPI будут доступны и без полной совместимости. Из любого правила есть исключения, и провал этих испытаний не подразумевает, что ACPI не будет работать, как, например, в случае с материнской платой Intel AL440LX. Больше всего проблем с Hibernate в Windows Me (если не считать Windows 98, где он почти не встречается). Многие пользователи обнаруживают, что на их ПК в Windows 2000 спящий режим есть, а в Windows Me - нет. Это нормальное явление - дело в том, что слишком различаются эти операционные системы, по-разному они работают с оборудованием и используют разные модификации драйверов. В принципе, есть шанс попробовать использовать для проблемного устройства драйвер Windows 2000 и в Windows Me (если он стандарта WDM), что может решить проблему, однако особенно надеяться на это не стоит, так как система Windows Me более новая и все включенные в нее драйверы по идее тоже должны поддерживать Hibernate (хотя на деле это далеко не так). Если же вам не повезло и спящий режим отсутствует, несмотря на наличие ACPI-совместимого BIOS, то для начала найдите в папке Windows файл nohiber.txt. В нем перечислены драйверы или устройства, которые препятствуют использованию данного режима. Как правило, это драйверы старых типов, не соответствующие спецификации WDM. Чтобы спящий режим заработал, их необходимо заменить на драйверы, входящие в состав Windows Me, или специально написанные для нее драйверы WDM. Учтите, однако, что спящий режим
может быть недоступен из-за того, что
сразу несколько устройств не
удовлетворяют необходимым требованиям,
однако в документе nohiber.txt всегда
отображается только одна (первая
найденная) причина. Таким образом,
необходимо устранять неисправности
поочередно, например, удаляя из корпуса
ПК одно устройство за другим и после
каждой перезагрузки анализируя ошибки,
зафиксированные в файле nohiber.txt. Наиболее
часто причиной отсутствия функции "Спящий
режим" являются SCSI-адаптеры. В той же папке может находиться файл susfail.txt, в котором регистрируются уже причины проблем с уходом в "спячку" или режим Suspend to RAM. Так, если вы столкнулись с тем, что спящий режим включен, а компьютер тем не менее уходить в него не хочет или возникают другие сбои, то загляните в этот файл. В нем будет указано устройство, отказавшееся корректно уйти в "спячку". Еще одной причиной отсутствия спящего режима может оказаться нехватка места на диске, поскольку для записи содержимого оперативной памяти на винчестер необходимо место, равное размеру самого ОЗУ. При этом файл, в который сбрасывается образ оперативной памяти, в Windows Me называется vmmhiber.w9x и находится в папке Windows. В Windows 2000 файл расположен уже в корне системного диска и носит имя hiberfil.sys. Так что не пугайтесь большого размера этих непонятных файлов. Итак, что конкретно следует делать, если несмотря на все усилия спящий режим работать категорически отказывается либо работает нестабильно? Вообще говоря, возможны несколько разновидностей подобной проблемы:
Во всех трех случаях вернуть Hibernate в принципе возможно. Не было и нет… Если вам не удалось обнаружить вкладку "Спящий режим" сразу после установки ОС, то первым делом необходимо проверить настройки CMOS Setup. В меню "Power Management" необходимо установить:
В разделе "PNP, PCI & Onboard I/O Setup" установите:
В разделе "Wake Up Events":
В "IRQ Activity Monitoring" для Wake Up Events нужно разрешить использовать для пробуждения прерывания AGP-видеокарты (или PCI) и PS/2-мыши (IRQ 12). Остальные прерывания отключить. Затем удалите из корпуса ПК все платы расширения, кроме видеокарты, и отключите все периферийные устройства - если причиной несчастий было какое-то устройство, то это поможет его выявить, когда впоследствии вы будете подключать все платы по очереди. Так, например, даже громкоговорители Altec Lansing Multimedia USB Speakers ACS-495 напрочь отключают спящий режим. Учтите также, что на большинстве материнских плат AGP-видеокарта использует прерывание совместно с расположенным рядом PCI-слотом, поэтому при установке плат расширения оставьте соседний с видеокартой слот пустым. Вообще говоря, совместное использование прерываний несколькими устройствами (IRQ sharing) - хоть и совершенно нормальное явление, но большая головная боль, часто блокирующая спящий режим. Если именно разделение прерываний мешает вашей системе, то в файле nohiber.txt будет запись "Bad IRQ Holder". Избавиться от этого почти нереально, хотя попытаться можно. Для этого в "Панели управления" откройте диалог "Система" и на вкладке "Устройства" выберите "Системные устройства". Откройте свойства шины PCI и на вкладке "Управление IRQ" снимите флажок "Использовать управление IRQ" (Control Panel > System > Device Manager > System Devices > PCI Bus > IRQ Steering > Use IRQ Steering), после чего перегрузите ПК. Попробуйте также поэкспериментировать с распределением прерываний через CMOS Setup. Далее, установите все обновления и заплатки для операционной системы. Так, Windows 98 (не SE) без пакета обновлений неправильно работает даже с режимом Suspend to RAM, а Service Pack 2 для Windows 2000 устраняет просто море проблем, препятствующих работе Hibernate. Разумеется, в Windows 98 SE надо в обязательном порядке установить известный патч "Windows Shutdown Supplement", а также установить для всех версий Windows 9x заплатку "IDE Hard Drive Cache Package", решающую проблемы слишком быстрого снятия питания с жесткого диска. Найти все это можно на странице corporate.windowsupdate.microsoft.com. В Windows 98, где вообще проще обозначить конфигурацию, полностью поддерживающую Hibernate, чем рассказывать о причинах его неработоспособности, спящий режим иногда может отсутствовать, если установлена файловая система FAT32. Попробуйте временно перейти на FAT16 - вдруг повезет? Также в Windows 98 спящему режиму не нравится, если файл подкачки расположен не на том же диске, что и ОС - верните управление виртуальной памятью операционной системе. В "Миллениуме" проблема с размещением "свопа" уже устранена, так что всегда есть смысл использовать наиболее свежие версии операционных систем. Наконец, обновите все драйверы ваших аппаратных средств, в особенности видеокарты. Учтите, что новые версии должны
быть стандарта WDM. Куда уехал цирк?.. Как я уже говорил, при двукратной неудачной попытке перехода в спячку ОС автоматически убирает вкладку "Спящий режим" из диалога управления электропитанием. К сожалению, мне не удалось выяснить, какой параметр реестра отвечает за ее отображение, поэтому если вы вовремя это заметили, то, вероятно, лучшим способом ее вернуть будет полное восстановление реестра из резервной копии, сделанной в то время, когда эта вкладка еще была. После этого необходимо разобраться в причинах такого поведения ОС. А причин пользователями компьютеров выявлено уже множество. Тут опять помогут прояснить ситуацию файлы nohiber.txt и susfail.txt. В них будет отражена наиболее вероятная причина проблем - обычно ей оказывается новый драйвер какого-то устройства, несовместимый с Hibernate. Поэтому крайне желательно заботиться о сохранности спящего режима с помощью деинсталляторов, позволяющих максимально точно вычищать систему в случае неудачной установки нового драйвера. То есть если после обновления драйвера Hibernate пропал, то делайте полный откат настроек системы к состоянию, предшествующему установке драйвера. При этом необходим откат не только настроек реестра, но и возврат предыдущих версий файлов драйвера. В столь неблаговидном поведении на сегодня уже замечены Iomega Ditto Tools, драйверы Creative Labs Sound Blaster, драйверы контроллера жестких дисков от Highpoint, видеокарты GeForce, модема Creative Modem Blaster USB DE5670, драйверы мышей Genius и Logitech - ищите их самые последние версии от производителя оборудования, совместимые с Hibernate и соответствующие стандарту WDM, либо экспериментируйте с драйверами из состава Windows. Похожая ситуация с драйверами от Adaptec, устанавливаемыми вместе с Windows Media Player 7. Если после инсталляции плейера вы распрощаетесь со спящим режимом, не надо удалять проигрыватель целиком - достаточно переустановить его без поддержки записи дисков CD-R. Правда, иногда случается обратная ситуация, и более старый драйвер устройства или прошивка BIOS работает с Hibernate, а новый - отказывается. Подобная неприятность происходит, например, с драйвером Intel Ultra ATA Storage Driver - некоторые его свежие версии "отрубают" спящий режим. Драйверы видеокарты рекомендуется использовать "родные", поскольку то, что имеется в составе Windows (например, драйвер стандартного VGA-адаптера), зачастую вызывает проблемы. Проверьте также вкладку Device Manager ("Устройства") в свойствах системы - проблемные и отключенные устройства могут деактивировать Hibernate. Обратите также внимание на то, какое прерывание использует ACPI: часто ему почему-то нравится IRQ 5, изначально предназначенное для звуковой карты. Поэтому владельцам Sound Blaster Live!, возможно, придется отключить Creative SB16 Emulation, владельцам Sound Blaster AWE32 - отключить COM-порт, а при наличии Sound Blaster PCI 64 - отключить Legacy Device for DOS, дабы избежать конфликта распределения ресурсов. Аналогичные проблемы могут возникнуть и при установке программ, использующих свои собственные драйверы виртуальных устройств. Тут должна спасать обычная деинсталляция приложения, поскольку Microsoft обещает, что после устранения причины неполадок режим Hibernate автоматически возвращается, однако лучше подстраховаться деинсталлятором, делающим более полный откат, нежели использовать стандартный инструмент "Установка и удаление программ". В качестве деинсталлятора подойдет и System Restore, встроенный в Windows Me, и более надежный от стороннего производителя, например мой любимый Ashampoo Uninstaller (http://www.ashampoo.com/). Если же вы пренебрегли деинсталлятором, то попробуйте хотя бы восстановить реестр из резервной копии и вернуть предыдущие версии системных файлов из дистрибутива Windows, воспользовавшись утилитой "Проверка системных файлов" (sfc.exe), правда, она изначально присутствует только в Windows 98, а в "Миллениум" ее надо копировать вручную из Windows 98. Среди программ отмечены проблемы с Norton AntiVirus, Norton System Works, McAfee AntiVirus, с некоторыми файрволлами. Вообще, многие старые версии антивирусов не совместимы со спящим режимом. Некоторые трехмерные скринсейверы не дают системе нормально заснуть - откажитесь от них. Internet Connection Sharing из состава Windows Me категорически не рекомендуется - то, что он преднамеренно отключает "гибернацию", честно признает сама Microsoft. В Windows 2000 аналогично ведет себя служба Terminal Services, деактивирующая и спящий, и ждущий режимы. Сбои "спячки" иногда вызывают и работающие в момент выключения ПК фоновые программы, поэтому есть смысл сократить число фоновых задач до необходимого минимума с помощью утилиты "Настройка системы" (msconfig.exe), а также закрывать ненужные приложения при погружении ПК в спячку. Попробуйте очистить диск от временных файлов, забываемых обычно в папке C:\Windows\Temp или C:\Temp - на переполненном мусором диске в один прекрасный момент не окажется места под файл - образ ОЗУ. Особенно опасны в этом плане утилиты типа Norton Protected Bin - при их использовании образуется как бы скрытая битком набитая корзина, а система при этом неадекватно отображает свободное место на диске, вводя пользователя в заблуждение. Откажитесь от сетевых дисков, отключите автозапуск (autorun) для всех дисков. Само железо также может быть причиной отказа ПК заснуть, например подключенные к ECP-порту многофункциональные агрегаты типа "принтер + факс + сканер", USB-устройства (веб-камеры в том числе) или устройства FireWire - попробуйте их выключить перед тем, как отправить ПК в сонное царство. Иногда устройства честно заявляют ОС, что они не дружат с Hibernate, прописывая в реестр параметр DisHiber с некоторым двоичным значением. Попытайтесь найти в реестре такие параметры и изменить их на "DisHiber"=hex:00,00,00,00. Хотя получится ли из этого что-то путное, сказать трудно. Режиму спячки иногда не нравятся мультимониторные конфигурации - откажитесь от них. Добавление оперативной памяти, бывает, вызывает проблемы - тут может помочь только соответствующая заплатка с сайта Windows Update. Да и чрезмерный разгон процессоров и их перегрев негативно сказываются на работоспособности ACPI в целом. Откажитесь от разгона и сбросьте установки CMOS Setup. Если система не смогла проснуться после перехода в спячку, то попробуйте отключить параметр "Fast R-W Turn Around" в CMOS Setup. Если же в "Миллениуме" пропала возможность войти даже в ждущий режим, то запустите msconfig.exe и на странице "Общие" > "Дополнительно" (General > Advanced) установите флажок "Enable DeepSleep" - этот режим должен вернуться. Крайние меры Последний вариант - Windows не верит в совместимость вашего ПК с ACPI и, следовательно, не хочет включать спящий режим. При таком раскладе стоит рискнуть и установить ACPI вручную (резервную копию реестра сделать не забыли?). Для этого существует два метода. Первый наиболее надежен: переустановить Windows с параметром программы установки системы "/P J", то есть введя в командной строке "setup /p j" (без кавычек). В этом случае Windows не будет обращать внимания на дату BIOS и включит поддержку ACPI принудительно. Если же этот номер не пройдет и поддержки ACPI вы не получите, значит, это невозможно в принципе - обновите BIOS, смените саму материнскую плату - либо ограничьтесь APM. Крайне желательно переустановку ОС производить "по-голому" - глюков будет меньше и шансы получить Hibernate повысятся. Второй способ приводит к успеху
реже, но не требует переустановки ОС. В
разделе реестра HKEY_LOCAL_MACHINE\Software\ Это также заставит Windows не реагировать на версию BIOS компьютера и установить поддержку ACPI, если только она реально имеется. Далее, в "Панели управления" запускайте апплет "Установка оборудования" (Add New Hardware) и разрешите Windows произвести поиск новых устройств. Если по завершении этой процедуры ОС найдет ACPI BIOS и предложит удалить PnP BIOS - вы добились желаемого. Скопируйте дистрибутив Windows на жесткий диск ("Миллениум" уже хранит все свои установочные файлы на диске), так как после перезагрузки CD-ROM будет временно недоступен, и дайте ОС переустановить драйвера оборудования. Если после этого в списке устройств окажутся дубли и индикаторы конфликтов, то просто удалите то устройство из конфликтной пары, которое не имеет значка восклицательного знака. Если же все эти трюки не помогут, несмотря на то, что вы скрестите все 20 пальцев между собой и будете параллельно призывать на помощь духов усопших товарищей по неравной борьбе с Windows, то все равно не отчаивайтесь: глючных и неработающих стандартов на ваш век еще хватит, поэтому зацикливаться именно на спящем режиме совершенно не обязательно. Источник: http://www.computery.ru/upgrade/
|
||
|
||
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |