7

Я пытаюсь переместить файл гибернации из системного раздела (SSD) в другой раздел (HDD).

Я знаю, что многие люди говорят, что это невозможно, но я еще не совсем убежден.

То, что я пытаюсь сделать, это:

  1. Загрузиться с Windows 7 DVD;
  2. Скопируйте hiberfil.sys с SSD на HDD;
  3. Удалить hiberfil.sys с SSD;
  4. Создайте символическую ссылку для hiberfil.sys на SSD;

К сожалению, когда я загружался с Windows 7 DVD, я с грустью обнаружил, что файла hiberfil.sys там не было. Я помню, что где-то читал, что Windows автоматически удаляет файл hiberfil.sys при завершении работы.

Можно ли предотвратить удаление Windows файла hiberfil.sys при завершении работы?

Спасибо


Обновление:

Кажется, Windows на самом деле не удаляет файл hiberfil.sys при выключении. Именно VMware Tools автоматически отключал спящий режим при выключении / запуске.

2 ответа2

5

Нет, ты не можешь переместить это.

Во время загрузки Windows (и ваш BIOS) использует минимальную файловую систему ввода-вывода, чтобы найти загрузочный диск и файлы, необходимые для завершения загрузки (включая драйверы файловой системы). Поскольку файл гибернации содержит состояние системы перед выключением, он фактически должен загрузиться в «полную» файловую систему.

Если вы работали со времен DOS, вы можете помнить о необходимости использовать "SYS" для загрузки диска; Вы не могли просто скопировать загрузочные файлы (msdos.sys, io.sys и т. д.) на диск и заставить его работать, потому что они должны (ed) находиться по определенному адресу на диске, чтобы система знала, где найдите их для загрузки реальной ОС. То же самое дело здесь ...

Вот хорошая реклама об этом:

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

Вы можете прочитать остальную часть статьи здесь.

2

Запрет удаления (если есть SID)

Сначала убедитесь, что hiberfil.sys не наследует разрешения, не забудьте добавить разрешения.

Затем убедитесь, что у каждого пользователя есть доступ, кроме возможности удалить файл:

Таким образом, файл не может быть удален, если к нему прикреплен хотя бы идентификатор безопасности.

Глядя на то, что Microsoft говорит о файле гибернации.

Когда пользователь впоследствии включает компьютер, происходит обычный процесс загрузки, за исключением того, что Bootmgr проверяет и обнаруживает действительный образ памяти, сохраненный в файле гибернации. Если файл гибернации содержит сохраненное состояние системы, Bootmgr запускает Winresume, который считывает содержимое файла в память, а затем возобновляет выполнение в той точке памяти, которая записана в файле гибернации.

Если Windows включила настройку BCD, чтобы информировать Bootmgr о возобновлении спящего режима, это ускоряет процесс загрузки, запуская Winresume.exe, который считывает содержимое файла в память и передает управление коду в ядре, которое возобновляет работу спящего режима. Этот код отвечает за перезапуск драйверов, которые были активны при выключении системы. Hiberfil.sys будет действителен только в том случае, если при последнем выключении компьютера он находился в спящем режиме.

После включения Bootmgr защищенного режима он полностью работает. Однако он по-прежнему полагается на функции, предоставляемые BIOS, для доступа к системным и загрузочным дискам на основе IDE, а также к дисплею. Функции Bootmgr для взаимодействия с BIOS на короткое время переключают процессор обратно в режим, в котором могут выполняться службы, предоставляемые BIOS, называемые реальным режимом. Затем Bootmgr читает BCD-файл из каталога \Boot, используя код встроенной файловой системы.

Bootmgr содержит NTFS-код только для чтения (Bootmgr также поддерживает другие файловые системы, такие как FAT, El Torito CDFS, UDFS и WIM-файлы); в отличие от кода загрузочного сектора, код файловой системы Bootmgr может читать подкаталоги.

- Windows Internals

Итак, нет, поскольку он использует встроенный код файловой системы, сделать это простым способом, скорее всего, невозможно.

Лучшее, что вы можете попробовать, это изменить BCD:

HKEY_LOCAL_MACHINE\BCD00000000\Objects\{db7f3566-bd6f-11df-b716-db3964014abb}\Elements\22000002\Element

Возможно, вы могли бы попробовать изменить его на X:\Some\Path\To\Whatever\File.Ext или полностью определенный путь.

Решение, которое обязательно сработает, что сделает ваш вопрос возможным.

  1. Установите Windows на свой жесткий диск.

  2. Переместите все на свой SSD, кроме hiberfil.sys .

  3. Создайте точки соединения со всем на вашем SSD.

Вы также можете уменьшить размер файла гибернации.

Вы можете сделать это на 50%, используя powercfg.exe

-HIBERNATE, -H
        Enables-Disables the hibernate feature.  Hibernate timeout is not
        supported on all systems.

        Usage: POWERCFG -H <ON|OFF>
               POWERCFG -H -Size <PercentSize>
        -Size  Specifies the desired hiberfile size in percentage of the
               total memory. The default size cannot be smaller than 50.
               This switch will also enable the hiberfile automatically.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .