НЕ ПРОПУСТИТЬ ИНТЕРЕСНОЕ

Свежие обсуждения

Sorry. No data so far.

Наводим порядок в Windows х86 со снятым 4 ГБ ограничением памяти после обновления KB2859537

Здравствуйте уважаемые читатели блога www.ithabits.ru. В прошлый раз мы разобрались с обновлением безопасности операционных систем Microsoft Windows KB2859537, после установки которого на многих компьютерах перестали запускаться некоторые программы — «Ошибка при запуске приложения (0xc0000005)».

Наиболее вероятной причиной возникших неприятностей явилось то, что KB2859537, наряду с обновлением большого количества файлов, устанавливает в систему новые ядра ОС.

Прошлая статья была в основном посвящена способу временного решения возникшей проблемы путем отмены установки приводящего к неприятностям пакета обновлений.

В силу того, что на страницах блога неоднократно описывались “исправления” ядер операционной системы Windows х86 с целью увеличения доступной физической памяти до 128 ГБ, сегодня мы разберемся с последствиями установки KB2859537 для таких систем.

Новые ядра Windows - КВ2859537

Вопреки ожиданиям, установка KB2859537 в Windows x86 с ядрами со снятым 4 ГБ ограничением доступной физической памяти, модифицированными одним из описанных на страницах блога способов — ReadyFor4GB или PatchPae 2, не вызвала никаких нарушений в работе операционной системы. Все программы продолжали исправно запускаться и функционировать.

Однако, это не значит, что вмешательство не требуется. Последовательно рассмотрим возможные варианты.

Установка обновления KB2859537 в Windows 7 x86

Windows 7 с ядром ntkr128g (ReadyFor4GB)

В качестве тестового полигона используем тот же ноутбук Acer с 4 ГБ оперативной памяти и Windows 7 Professional, работа которого с модифицированным ядром, то есть, со снятым 4 ГБ ограничением доступной физической памяти, подробно описывалась в статье, посвященной вопросам использования верхнего диапазона памяти в 32-разрядных системах.

Скажу по большому секрету, что после подготовки материалов той январской статьи, вот уже восемь месяцев ноутбук так и проработал с “поправленным” ядром. Он достаточно активно эксплуатируется, но за все это время не возникло никаких неприятностей.

Непосредственно после установки обновления безопасности KB2859537 в C:\Windows\System32 присутствуют следующие PAE ядра:

ntkrnlpa  Версия: 6.17601.18205  Дата: 09.07.2013
ntkr128g  Версия: 6.17601.17713  Дата: 09.02.2012

В секции BCD, описывающей загрузку Windows с модифицированным ядром, после установки обновления ничего не изменилось:

Загрузка Windows
-------------------
идентификатор           {default}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Microsoft Windows [Version 6.1.7601] [128GB with ntkr128g.exe]
locale                  ru-RU
inherit                 {bootloadersettings}
recoverysequence        {4b790165-хххх-11df-98db-faхххххх1839}
recoveryenabled         Yes
testsigning             Yes
osdevice                partition=C:
systemroot              \Windows
kernel                  ntkr128g.exe
resumeobject            {4b790163-хххх-11df-98db-faхххххх1839}
nx                      OptIn
pae                     ForceEnable

Таким образом, с одной стороны, обновление KB2859537 установилось, с другой стороны, в варианте без ограничения доступной физической памяти система продолжает работать со старым ядром, в котором присутствуют все обнаруженные уязвимости. Это совершенно не правильно.

Если ReadyFor4GB.exe не откажется работать, то исправить ситуацию достаточно просто.

Запускаем компьютер в обычном режиме, удаляем старое ядро ntkr128g.exe версии 6.17601.17713 и запускаем ReadyFor4GB.exe (Надо же, все еще работает. Возможно, что далеко не у всех. Поэтому, сначала убедитесь в работоспособности этого приложения):

READY-FOR4GB

Создаем новое “поправленное” ядро. Теперь набор будет выглядеть так:

ntkrnlpa  Версия: 6.17601.18205  Дата: 09.07.2013
ntkr128g  Версия: 6.17601.18205  Дата: 23.08.2013

Теперь все правильно. Очевидно, что в BCD ничего править не нужно.

Перезапускаем компьютер с новым ntkr128g.exe версии 6.17601.18205 и убеждаемся, что вся физическая память вновь доступна и что все программы и приложения исправно функционируют.

Windows 7 с ядром ntkrnlpх (PatchPae2)

Должен сразу сказать, что, как и в предыдущем случае, я планировал использовать для тестирования этого варианта патча ядра ноутбук Acer. Связка PatchPae2 + PatchPae2cmd отработала безукоризненно, однако компьютер с ядром, полученным таким способом, отказался загружаться категорически. В процессе загрузки запускалось средство диагностики неисправностей, работа которого ничем положительным не заканчивалась.

В конце концов я сдался и обратился к виртуальной машине Windows 7 x86 на Oracle VirtualBox.

До установки обновления KB2859537 в Windows/System32 можно найти следующие интересующие нас ядра:

ntkrnlpa  Версия: 6.1.7601.17514  Дата: 21.11.2010
ntkrnlpx  Версия: 6.1.7601.17514  Дата: 21.11.2010

Если установку обновления KB2859537 выполнить в сеансе с загрузкой “исправленного” ядра ntkrnlpx, то версии ядер изменятся следующим образом:

ntkrnlpa  Версия: 6.1.7601.18205  Дата: 09.07.2013
ntkrnlpx  Версия: 6.1.7601.17514  Дата: 21.11.2010

На первый взгляд все правильно, однако в данном случае инсталлятор KB2859537 повел себя крайне неадекватно в отношении вариантов загрузки. Если посмотреть содержимое BCD, запустив от имени администратора BCDEdit.exe без параметров, то окажется, что обе секции загрузки указывают на не обновленное ядро ntkrnlpx.

Если у вас возникла подобная ситуация, то для ее исправления придется отредактировать BCD в редакторе.

Запустим BCDEdit от имени администратора и выполним следующие команды:

Указываем путь до “родного” загрузчика:

bcdedit /set {current} path \Windows\system32\winload.exe

Удаляем все дополнительные значения, необходимые для загрузки модифицированного ядра:

bcdedit /deletevalue {current} kernel
bcdedit /deletevalue {current} nointegritychecks
bcdedit /deletevalue {current} bootstatuspolicy
bcdedit /deletevalue {current} increaseuserva

Находим {ID} второй секции загрузки:

bcdedit

Удаляем ее:

bcdedit /delete {ID}
exit

Перезагружаем компьютер. Убеждаемся, что все нормально запускается и работает. Теперь можно повторно создать модифицированное ядро с поддержкой до 128 ГБ физической памяти.

Перезагружаем компьютер. Смотрим получившийся набор ядер:

ntkrnlpa  Версия: 6.1.7601.18205  Дата: 09.07.2013
ntkrnlpx  Версия: 6.1.7601.18205  Дата: 09.07.2013

Вот теперь все в порядке. Можно наслаждаться доступностью всей установленной физической памяти компьютера с Windows 7 x86 и не иметь при этом обнаруженных в старом ядре уязвимостей.

Внимание! Не используйте патч, который называется 4GB-7600_RTM_x86. Эта программа не создает новое PAE ядро системы со снятым ограничением доступной физической памяти на основе актуального на данный момент, а просто записывает в \System32 некое очень старое “готовое” ядро. Во-первых, именно такое ядро может привести к проблемам после установки обновления безопасности KB2859537. Во-вторых, даже если Windows будет работать и программы не перестанут запускаться, то в с системе останутся обнаруженные уязвимости. Это категорически неправильно.

Установка обновления KB2859537 в Windows 8 x86

Windows 8 с ядром ntoskrnx (PatchPae2)

Первая часть тестирования была выполнена в 32-разрядной виртуальной машине Windows 8 в VirtualBox.

Исходный набор ядер такой:

ntoskrnl  Версия: 6.2.9200.16604  Дата: 04.05.13
ntoskrnx  Версия: 6.2.9200.16604  Дата: 04.05.13

После установки пакета обновлений KB2859537:

ntoskrnl  Версия: 6.2.9200.16659  Дата: 11.07.13
ntoskrnx  Версия: 6.2.9200.16604  Дата: 04.05.13

В отличие от Windows 7, после установки обновления в BCD все осталось как нужно и править ничего не пришлось.

В этом случае возможны два варианта приведения системы в соответствие желаемому:

Первый вариант. Удаляем из \System32 устаревшее ядро ntoskrnx версии 6.2.9200.16604 и создаем новое. Для этого нужно выполнить первый пункт инструкции, приведенной в этой статье, а именно, запустить в командной строке с повышенными привилегиями (Win + x), PatchPae2.exe со следующими ключами:

C:\PatchPae2.exe -type kernel -o ntoskrnx.exe ntoskrnl.exe— в данном примере PatchPae2.exe скопирована в корень диска C:\.

Второй вариант. Его целесообразно использовать если по какой-либо причине необходимо вернуть загрузку Windows в исходное состояние.

Загружаем компьютер в обычном режиме (со стандартным ядром). В командной строке с правами администратора выполняем следующие команды:

bcdedit /set {current} description "Windows 8"
bcdedit /default {current}
bcdedit

Находим {ID} записи, отвечающей за загрузку Windows с модифицированным ядром, и удаляем ее:

bcdedit /delete {ID}

Для выполнения всех действий, за исключением переименования описания, можно воспользоваться оснасткой Конфигурация системы («Win + x» –> Выполнить –> msconfig –> Загрузка):

Выбор загружаемой по умолчанию системы в msconfig

Нужно установить текущую исходную систему загружаемой по умолчанию (этот пункт можно выполнить и непосредственно при старте в окне выбора варианта загрузки).

Далее нужно перенести фокус на альтернативный вариант загрузки и удалить его:

Удаление загрузки в msconfig

Перезагрузите Windows и убедитесь, что все в порядке.

Далее можно повторить PathPae2cmd в результате чего будет создан новый набор ядер ОС с соответствующими вариантами загрузки:

ntoskrnl  Версия: 6.2.9200.16659  Дата: 11.07.13
ntoskrnx  Версия: 6.2.9200.16659  Дата: 11.07.13

Виртуальная машина Windows 8 x86 загрузилась c новым “поправленным” ядром без каких бы то ни было проблем и увидела всю выделенную ей память – 4 ГБ.

Мне этого показалось недостаточно, кроме того, я давно обещал протестировать работу 32-разрядной Windows 8 со снятым 4 ГБ ограничением доступной памяти на физическом компьютере. Очень подходящий момент наконец это сделать. Результаты тестирования в следующей статье.

Подписка на обновления блога www.ithabits.ru

Напоминаю, что для того, чтобы скачать готовый командный файл PathPae2cmd, достаточно просто подписаться на обновления блога по E-Mail. Ссылка на скачивание будет в почтовом подтверждении подписки.

Написать комментарий

Subscribe without commenting