- Наводим порядок в Windows х86 со снятым 4 ГБ ограничением памяти после обновления KB2859537
- Установка обновления KB2859537 в Windows 7 x86
- Windows 7 с ядром ntkr128g (ReadyFor4GB)
- Windows 7 с ядром ntkrnlpх (PatchPae2)
- Установка обновления KB2859537 в Windows 8 x86
- Windows 8 с ядром ntoskrnx (PatchPae2)
- Одминский блог
- Разлочиваем 4Gb оперативной памяти в Windows 7 32бита
Наводим порядок в 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 ничего править не нужно.
Перезапускаем компьютер с новым 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
Удаляем все дополнительные значения, необходимые для загрузки модифицированного ядра:
bcdedit /deletevalue
bcdedit /deletevalue
bcdedit /deletevalue
bcdedit /deletevalue
Находим
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 со следующими ключами:
C:\PatchPae2.exe -type kernel -o ntoskrnx.exe ntoskrnl.exe — в данном примере PatchPae2.exe скопирована в корень диска C:\.
Второй вариант. Его целесообразно использовать если по какой-либо причине необходимо вернуть загрузку Windows в исходное состояние.
Загружаем компьютер в обычном режиме (со стандартным ядром). В командной строке с правами администратора выполняем следующие команды:
bcdedit /set
bcdedit /default
bcdedit
Находим
Для выполнения всех действий, за исключением переименования описания, можно воспользоваться оснасткой Конфигурация системы («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
После этого вроде как все должно начать летать и видиться, но у меня картина осталась той же самой, так что это не дало мне ни малейшего результата. Затем я решил таки рискнуть пропатчить систему найденным патчером для ядра.
Вкратце суть работы такова, на машине с процессором поддерживающим технологию 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 оперативной памяти.