Патч для windows оперативная память

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

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

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

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

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

Вопреки ожиданиям, установка 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
——————-
идентификатор
device partition=C:
path \Windows\system32\winload.exe
description Microsoft Windows [Version 6.1.7601] [128GB with ntkr128g.exe]
locale ru-RU
inherit
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 (Надо же, все еще работает. Возможно, что далеко не у всех. Поэтому, сначала убедитесь в работоспособности этого приложения):

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

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

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

Читайте также:  Windows forward event logs

Перезапускаем компьютер с новым 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 path \Windows\system32\winload.exe

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

bcdedit /deletevalue kernel
bcdedit /deletevalue nointegritychecks
bcdedit /deletevalue bootstatuspolicy
bcdedit /deletevalue increaseuserva

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

bcdedit /delete
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 со следующими ключами:

Читайте также:  Windows media player hevc h 265

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

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

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

bcdedit /set description «Windows 8»
bcdedit /default
bcdedit

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

Для выполнения всех действий, за исключением переименования описания, можно воспользоваться оснасткой Конфигурация системыWin + x» –> Выполнить –> 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 ГБ ограничением доступной памяти на физическом компьютере. Очень подходящий момент наконец это сделать. Результаты тестирования в следующей статье.

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

Одминский блог

Блог о технологиях, технократии и методиках борьбы с граблями

Разлочиваем 4Gb оперативной памяти в Windows 7 32бита

Прикупил я себе наконец то ноут, точнее не прикупил, а разжился, ну да не важно. В общем, отличная машинка HP ProBook 4320s, с Core i5 и 4мя гигами оперативки. На ней стояла 11 SuSe Linux, но меня она почему то совсем не возбудила, ибо после 10ки в которой я проработал года три до этого, выглядела убого, да и установлена была весьма специфически. Так что я её снес и решил поставить себе Windows 7. Вот тут то меня и ждали терзания из серии “не было у бабки проблем, купила бабка порося”. Ибо хотелось ставить 32битную версию, чтобы не иметь гимора с софтом и игрушками, но при этом не по-детски было жалко гига оперативки, который бы однозначно пропал в этом случае. На рабочую машину бы я поставил Server 2003, ибо его архитектура позволяет видеть более 3 гигов в 32битной версии, но поскольку 7 винда также базируется на серверном ядре, я озадачился решением снятия искусственного ограничения от Microsoft, и как оказалось не напрасно. Тем более что 64битная винда забирает под свои процессы почти что в два раза больше памяти, так что выиграв гиг памяти я бы потерял 50% производительности, то есть в итоге еще и оказался бы в минусах.

По итогам терзаний поставил Windows 7, настроил все, и залез посмотреть что там пишет система. В свойствах компа была инфа 4GB (доступно 2,96Gb), что собственно и требовалось доказать. Попробовал для начала включить встроенную в винду поддержку PAE (Physical Address Extension) которая как раз и была введена в винду для поддержки более 3Gb оперативной памяти, причем продолжая использовать 32битную адресацию, становится доступным память до 64Gb. Для этого запускаем msdos-promt и и в нем говорим следующее:
BCDEdit /set PAE forceenable
BCDEdit /set nolowmem on

Читайте также:  У меня нету значок windows 10

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

Вкратце суть работы такова, на машине с процессором поддерживающим технологию PAE, данный патч создает копию имеющегося ntkrnlpa.exe после чего патчит его и по его мотивам создает новый файл ntkr128g.exe , который и грузит через скрипт AddBootMenu.cmd, который добавляет в boot-меню, так что при загрузке системы появится два типа загрузки – обычная и с поддержкой до 128GB . Для внесения изменений в систему запускаем патчик, говорим ДА на тему внесения изменений, после чего в появившемся досовском окошке надо будет сказать Y, тем самым дав разрешение на вышеупомянутый патч. После этого система перегружается и при загрузке машина выдает 4GB (доступно 3,86Gb)

Для избавления от меню выбора идем в свойства «мой компьютер» там говорим Дополнительные параметры системы -> Загрузка и восстановление -> Параметры. Снимаем галку Отображать список операционных систем. Перегружаемся.

После всех этих манипуляций у меня появилась надпись в правом нижнем углу, гласившая «Test Mode Windows 7 Build 7600» -не скажу что она мне доставляла неудобство, но чувство эстетического дискомфорта я все же при виде её испытывал, поэтому говорим WIN_окошко (что между правым Ctrl и Alt) + R и вбиваем mcbuilder. Говорим ок, ждем выполнения и перезагружаем машину.

Собственно все- машина видит 4 гига, рапортует о том, что доступны 3.86Gb и главное что может пользовать эту область памяти для выполнения своих процессов- запустил три машины по 1.2Gb и все нормально шуршало- исключая хостовую операционку ибо она сама подтормаживала, как и должна была бы при использовании 256 метров.

Естественно что перед подобными пассами над своей многострадальной машиной- я бы настоятельно рекомендовал забацать имидж системного диска, с тем чтобы если что не так пойдет- иметь возможность откатиться на родную версию. Хотя я работаю на данный момент третью неделю и пока тьфу-тьфу без проблем. Чего и вам желаю.

UPD 2013: столкнулся в такой ситуацией, что при обновлении Windows 7 до SP1, а также при накатывании последних обновлялок от мелкомягких, патч начинает либо криво работать, либо просто перестает. Поэтому есть вариант попробовать один из следующих патчей, у которых к тому же отсутствует проблема watermarks:
1. данный патч предполагает ручной ввод команд из dos-promt (запускать от имени администратора). В архиве имеется readme, следуя которому разлочиваем свою машину. К сожалению, данный патч проблемно накатывается на ядро, если вы уже его апали: забрать
2. это более универсальный патч, который представляет из себя один исполняемый файл с кнопкой разблокировать. Встает на любую систему: забрать

З.Ы для неверующих фом, с коими пришлось столкнуться на одном популярном форуме, даже пришлось запилить ролик использования системой Windows 7 x86 чуть более чем 3GB оперативной памяти.

Оцените статью