NT club. Часть 18. Восстановление системы (ч. 1)

NT club. Часть 18. Восстановление системы (ч. 1)

— Мама, мама, что я буду делать?
— Мама, мама, как я буду жить?
(с) "Кин-Дза-Дза!"

Дополнение к предыдущей статье
Сразу попрошу прощения у постоянных читателей нашего клуба за длительную задержку — работа, работа и еще раз работа… Всегда приходится чем-то жертвовать, но только не сегодня:-). Итак, объявляю 18-е заседание нашего клуба открытым.
По письмам читателей я сделал вывод, что нужно упомянуть несколько нюансов, связанных с созданием новой группы. Скажем, вы создали группу и пользователя в ней, однако не увидели его в окне приветствия и/или не смогли войти. Для того, чтобы все получилось, нужно знать следующее:
• Вы не разрешили новой группе локальный вход. Вообще по умолчанию группа не обладает никакими привилегиями. Делается это в Локальной политике безопасности\Локальные политики\Назначение прав пользователя\Локальный вход в систему. Добавляя там группу, не забудьте нажать кнопку Типы объектов и поставить галочку напротив пункта Группы.
• Окно приветствия отображает фиксированный набор пользователей из определенных групп. Для входа нажмите два раза (не входя под другими аккаунтами из группы Администраторы!) "волшебную комбинацию" Alt+Ctrl+Del и введите имя пользователя и пароль. Теперь переключаться на пользователя из созданной группы можно будет с помощью Диспетчера задач (закладка Пользователи, пункт Подключить контекстное меню), обратно — стандартная комбинация Win+L (если включено, конечно, Быстрое переключение пользователей). А вообще в таком случае лучше просто выключить Окно приветствия и пользоваться способом входа в систему а-ля Windows 2000, но Быстрое переключение пользователей станет недоступным.
Какой все-таки смысл создавать новую группу? Смысл есть, когда нужно тонко разграничивать доступ для множества пользователей, что актуально для домена. Для домашней машины вполне хватает двух групп: Администраторы и Пользователи.

Введение
Я долго думал, как назвать эту статью. В принципе, полное название звучало бы примерно так: "Обеспечение работоспособности Windows 2000/XP и способы восстановления системы в случае сбоя". Довольно длинно получилось, вы не находите? Пришлось выбрать более краткий примерный аналог. Он не совсем точно отражает суть статьи, так как в ней затронуты в первую очередь превентивные меры по обеспечению жизнедеятельности ОС, но, как известно, пока гром не грянет — мужик не перекрестится, поэтому смысл названия сместился в сторону действий по "ликвидации аварии". Рассматривать тему мы будем на примерах Windows 2000 и XP, так как эти ОС наиболее распространены у домашних пользователей среди систем линейки NT.
Материал мне пришлось разбить на 2 (а то и 3) статьи — его слишком много. В первой части мы рассмотрим причины возникновения сбоев, а также средства их предотвращения и исправления, одинаковые в обеих ОС. Вторая часть будет посвящена, в основном, новым средствам Windows XP, а также тому, что не поместилось в первой части. Если будет нужно, сделаем еще и третью часть. Учтите, что я буду вести разговор не обо всех технологиях и средствах защиты ОС от сбоев и их последствий, а только о наиболее популярных и удобных. За кадром останутся некоторые нововведения в архитектуре ОС и прочее. Причем рассматриваются сбои и устранение оных для операционной системы, для пользовательских же данных был и остается один надежный способ защиты — резервное копирование.

Причины сбоев
У любого программного и аппаратного обеспечения есть "нехорошая" тенденция сбоить, причем в самый неподходящий момент. Видимо, это качество передалось по наследству от его создателя — человека. Это, конечно, шутка, но, как известно, в любой шутке есть лишь доля шутки, все остальное — правда.
Сбои могут быть самыми различными: точечными и обширными, серьезными и просто неприятными, но наиболее опасными из них являются те, которые не дают системе загрузиться — для их ликвидации нужно заблаговременно позаботиться о "путях отступления". Перейдем, однако, непосредственно к рассмотрению вопроса.
Вот список наиболее часто встречающихся причин сбоев в работе самой ОС. Часто подобные проблемы мешают нормальной загрузке операционной системы.
• Повреждение, удаление, замена на несовместимые версии важных системных файлов, в т.ч. и кустов реестра. Большая часть таких фалов находится в папке %SystemRoot%\system32, реестр в %SystemRoot%\system32\config.
• Установка несовместимых служб и драйверов. Это один из бичей всех NT-систем. Для уменьшения этой проблемы даже ввели цифровую подпись драйверов, подтверждающую, что они прошли тестирование в WHQL (Windows Hardware Quality Lab — перевод очевиден) на корректность работы и совместимость с ОС.
• Изменение критических для работоспособности системы параметров на недопустимые значения. Основная часть таких данных хранится в ветви HKLM\SYSTEM\Current-ControlSet. Для повышения отказоустойчивости они дублируются — ключи HKLM\SYSTEM\ControlSetnnn, где nnn — номер. CurrentControlSet является лишь ссылкой на один из этих ключей.
• Повреждения файловой системы: разрушение структуры каталогов, главной загрузочной записи (MBR), загрузочного сектора (Boot Sector) и т.д. NTFS очень чувствительна к подобным сбоям: если есть неисправимая ошибка, ОС просто не загрузится и покажет "синий экран смерти". С другой стороны, NTFS — журналируемая, самовосстанавливающаяся ФС, обладающая достаточной степенью "дуракоустойчивости". К слову, за 3 года эксплуатации NTFS "умерла" у меня 1 (один) раз из-за моей небрежности — я переразбивал разделы старой, несовместимой версией Partition Magic (следуя старому русскому принципу авось пронесет). В итоге я получил BSOD при загрузке ОС. Проблема решилась удалением недосозданного раздела банальным DOS'овским fdisk'ом. Для апологетов FAT я предлагаю сделать такую "шутку": запустите дефрагментатор и нажмите Reset. NTFS такие издевательства переносит "на ура".
• Физическое повреждение жесткого диска. Тут вспоминается старый анекдот про программистов: "Вопрос: Сколько требуется программистов, чтобы ввинтить лампочку в патрон? Ответ: Ни одного. Это аппаратная проблема, программисты их не решают". Именно так следует действовать и вам. Проверка диска на сбойные сектора лишь смягчит симптомы скорой гибели вашего винчестера — его нужно просто заменить.
• Неверно установленные права на системные папки: %SystemRoot%, %UserProfile%, %ProgramFiles%. В случае неправильно заданных прав на каталог %SystemRoot% система вообще может не загрузиться.

С причинами сбоев, думаю, разобрались. Теперь посмотрим, какие средства нам предоставляет ОС для защиты от этих напастей и ликвидации их последствий. Эти средства делятся на две категории: автоматически используемые ОС и нуждающиеся в ручном управлении. Нас интересуют обе категории.

1. Общие для обеих ОС средства
1.1. Цифровая подпись для драйверов
Начиная с Windows 2000 Microsoft стала использовать подписывание драйверов, прошедших проверку в лабораториях WHQL. В итоге "правильный" драйвер должен иметь сертификат WHQL и цифровую подпись, гарантирующую этот сертификат и защищающую файлы драйвера от модификации. Цифровые подписи содержатся в файлах каталога (catalog — не путать с папками файловой системы!) с расширением .cat.
Политика установки драйверов назначается в Панели управления, утилита Система, закладка Оборудование, кнопка Подписывание драйверов (см. рис. 1). Для домашней системы будет оптимальным вариант "Предупреждать — каждый раз предлагать выбор действия". Так сказать, и волки сыты, и овцы целы, но только в случае вашей уверенности в корректности неподписанного драйвера. Для "серьезных" систем подходит только вариант "Блокировать", да еще с галочкой "Использовать это действие в качестве системного по умолчанию" — эксперименты с непроверенными драйверами нужно проводить на специально выделенном для этого компьютере.

1.2. Верификация драйверов
Это средство программиста/сисадмина. Если вы имеете неподписанный драйвер, в корректности работы которого сомневаетесь, или сами создали драйвер, то лучше всего будет запустить утилиту verifier.exe (Win+R, verifier). Диспетчер проверки драйверов позволяет тестировать драйверы на типичные ошибки, а также выделять им отдельный пул памяти и следить за ним, что уменьшает вероятность сбоя при небольшом понижении быстродействия (см. рис. 2).
Работать с этой программой несложно, но нужны знания аппаратной части компьютера, архитектуры ОС и опыт системного программирования, иначе названия параметров вам ничего не будут говорить. Думаю, вы редко будете пользоваться данным средством, однако знайте, что оно есть.

1.3. Подписывание файлов

Представляю утилиту sigve-rif.exe. Ее назначение — проверить файлы, по умолчанию системные, на наличие цифровой подписи и отобразить неподписанные (см. рис. 3).
Удобная и полезная для системного администратора штука, так как позволяет найти файлы, которые не имеют цифровой подписи, гарантирующей их работоспособность и подтверждающей имя разработчика и версию файла. Если вы проверите на наличие подписи системные файлы, то заметите, что только некоторые из них ее не имеют, причем системными они называются только потому, что лежат в каталоге %SystemRoot%:-).

1.4. Профили оборудования
Строго говоря, эта технология не совсем относится к обеспечению работоспособности системы, но в грамотных руках…
Что такое профили оборудования? Это набор параметров в реестре, указывающих, какие драйверы и службы нужно загружать в данном случае. В итоге мы получаем средство, защищающее нас от некорректных драйверов и "глючных" устройств. Действуем мы так.
Перед подключением устройства и/или установкой нового драйвера/службы открываем в Панели управления утилиту Система закладку Оборудование и жмем кнопку Профили оборудования.
В открывшемся окне (см. рис. 4) копируем текущий профиль (кнопка Копировать) под новым именем. Это наша резервная копия. Затем устанавливаем нужное программное и/или аппаратное обеспечение. В случае сбоя у нас есть возможность загрузиться в работоспособной конфигурации, сделать ее основной, а сбойную версию просто удалить.
Профили оборудования хранятся в ветви HKLM\SYSTEM\CurrentControlSet\Hardware Profiles в ключах вида nnnn, где nnnn — число. Подключ Current ссылается на текущий профиль. Если просмотреть структуру ветви HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current, можно найти сходство с ветвью HKLM\ SYSTEM\CurrentControlSet. Действительно, профили оборудования содержат лишь изменения параметров по сравнению с настройками по умолчанию.

1.5. Защита системных файлов
Еще одной проблемой для NT-систем было то, что некоторые программы, написанные "умными" программистами, заменяли системные файлы, в основном, библиотеки (из-за чего эту проблему даже назвали "dll hell"), собственными, не всегда нормально функционирующими, версиями. Конечно, если у вас NTFS, то подобную операцию по умолчанию можно проделать только с правами администратора, но ведь и в этом случае придется тщательно следить за версиями файлов. Для выхода из сложившейся ситуации Microsoft включила в свои ОС новое средство — W(S)FP (Windows (Sys-tem) File Protection — защита файлов Win-dows (системных файлов)).
Как работает WFP? В фоновом режиме вычисляется контрольная сумма защищаемого системного файла, к которым относятся файлы с расширениями .sys, .dll, .ocx, .ttf, .fon, .exe. Затем она сверяется с контрольной суммой из файла каталога (.cat), содержащего цифровую подпись Microsoft для этих файлов. Файлы каталога операционной системы находятся в папке % SystemRoot%\system32\<GUID> . Для большей части системных файлов, т.е. тех, которые хранятся в директории %Sys-temRoot%\system32, файл каталога называется NT5.CAT. Далее, если контрольные суммы разнятся, файл восстанавливается из резервной копии, которая обычно хранится в папке %SystemRoot%\system32\dllcache, или из дистрибутива ОС (если вы устанавливали ОС с компакт-диска, то система попросит вставить его в привод).
Кроме этого, существует также консольная утилита sfc.exe (System File Checker — проверка системных файлов), которая позволяет управлять работой WFP и задавать некоторые ее параметры. Получить справку по ключам данной утилиты можно, набрав в командной строке cfc /?. Нам будет интересен ключ /SCANNOW, производящий немедленное сканирование всех защищенных файлов и замену их на работоспоспобную версию. Кстати, WFP можно отключить в реестре, но я строго не рекомендую этого делать — лучше выставить размер кэша защищаемых файлов в 0, а в случае чего вставлять компакт-диск с дистрибутивом — сэкономим немного места не в ущерб стабильности.

1.6. Системная дискета
Если вы думаете, что здесь речь пойдет о системной дискете MS-DOS, то ошибаетесь — подобная дискета бесполезна при использовании NTFS, так как нужен специальный драйвер, NTFSDOS, например. Нет, я говорю о другом. Дело в том, что есть небольшая хитрость, которая позволяет нам делать интересные вещи.
Когда вы форматируете дискету в NT, то на ней создается загрузочный сектор, причем не стандартный для DOS, который загружает файл io.sys, а NT-шный, загружающий ntldr. Что это нам дает? А то, что мы вправе скопировать на дискету системные файлы (которые нужны для загрузки ОС) из корня системного диска: ntldr, NTDETECT.COM, boot.ini, а также Bootfont.bin (для русской версии NT) и (если захотите) bootsect.dos и подобные ему (загрузочные сектора других ОС). В результате при загрузке с дискеты мы запустим любую ОС, находящуюся на винчестере, прописанную в boot.ini на дискете и имеющую файл с загрузочным сектором на винчестере или дискете (если это не NT). Нюанс: если вы не копировали на дискету файлы с загрузочными секторами, то будут использоваться файлы с жесткого диска, если же вы их собираетесь использовать с дискеты, то в boot.ini дискеты нужно будет заменить в соответствующих строках букву диска (как правило, C:) на букву дискеты (А: в большинстве случаев).
Зачем нам это нужно? Затем, что подобная дискета спасает нас от ряда проблем с MBR, загрузочным сектором и уже упомянутыми системными файлами — просто все это используется с дискеты. Кроме того {в мою голову сейчас пришла интересная мысль}, можно сделать одну интересную "фичу": если у вас стоит несколько ОС, и выбор загружаемой ведется с помощью стандартного загрузчика NT, то можно сделать такую дискету, а потом удалить с винчестера файлы с загрузочными секторами (можно и не удалять) и убрать ненужные записи из boot.ini. Теперь загрузиться в другую ОС можно будет только с помощью этой дискеты.
Что ж, на сегодня пора закругляться. Продолжим в следующий раз.
Еще увидимся.

Creator, for_creator@tut.by


Компьютерная газета. Статья была опубликована в номере 35 за 2003 год в рубрике soft :: win

©1997-2021 Компьютерная газета