Во время обновления Windows 8.1 до Windows 10 после перезагрузки столкнулся с ошибкой:
Недостаточно памяти для создания диска в памяти. Код ошибки: 0xc0000017
При этом в компьютере было 4Гб ОЗУ, так что дело было явно не в объёме памяти.
Русский перевод этой ошибки для меня был, мягко говоря, неочевиден, поэтому я решил найти, как звучит эта ошибка в оригинале по английски. Нашёл:
0xc0000017: There isn’t enough memory available to create a ramdisk device.
Оказывается, «диск в памяти» — это «ramdisk device». Теперь стало хотя бы понятно, о чём идёт речь.
Так как ошибка возникала где-то на раннем этапе загрузки, я исследовал Boot Configuration Data (BCD):
bcdedit /enum all
Начиная с Windows 7 в Windows Hardware Error Architecture (WHEA) появилась поддержка Predictive Failure Analysis (PFA). Вкратце, система ведёт учёт ошибок в памяти и, когда их количество превышает определённое значение в единицу времени, помечает проблемный участок памяти как сбойный блок («badmemory»). Помеченные таким образом блоки, ОС в дальнейшем не использует. Именно эти блоки я и увидел с своём BCD:
Список ошибок памяти можно очистить командой:
bcdedit /deletevalue {badmemory} badmemorylist
В результате имеем:
Запустил обновление заново, и оно прошло без всяких проблем. Windows 10 установилась.
P.S. Нашёл в описании Windows Recovery Environment (Windows RE) следующий абзац:
«In order to boot Windows RE directly from memory (also known as RAM disk boot), a contiguous portion of physical memory (RAM) which can hold the entire Windows RE image (winre.wim) must be available».
Соответственно, ошибка 0xc000017, по идее, должна была бы звучать как:
«There isn’t enough contiguous memory available to create a ramdisk device».
То есть системе для загрузки Windows RE необходима не просто память, а непрерывный участок памяти! Век живи, век учись :)