4

У меня на компьютере установлена система двойной загрузки Linux и Windows 7, и я хотел бы настроить ОС таким образом, чтобы при работе в одной ОС я мог переходить в режим гибернации (сохранять состояние на диск), перезагружаться, использовать другую ОС, перезагружаться снова когда закончите, и возобновите использование первой ОС, с которой я остановился. Критическим фактором здесь является то, что я хочу, чтобы каждая из ОС перезагружалась после сохранения своего состояния на диск вместо выключения питания; в противном случае я должен снова включить компьютер, что довольно раздражает. Мне хорошо известно, что для этого достаточно настроить Linux (см. Этот вопрос). Однако я не знаю, как сказать Windows 7, что я хотел бы, чтобы она делала то же самое: а именно, чтобы перезагрузить компьютер после того, как он закончит сохранение содержимого своей памяти на диск, вместо того, чтобы выключать его, как это обычно происходит в режиме гибернации. ,

Есть какой-либо способ сделать это?

4 ответа4

1

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

Ключ к взлому - инструмент xbootmgr от Microsoft. Этот инструмент предназначен в первую очередь для разработчиков, чтобы собрать информацию о времени, чтобы выяснить, что замедляет загрузку. В качестве дополнительного бонуса система подключается к автоматической перезагрузке после перехода в спящий режим. Инструмент является частью Windows Performance Tools, которую вы устанавливаете через Windows SDK. По крайней мере, в моей системе системе требуется около минуты, чтобы вернуться из состояния приостановки, что немного раздражает, но работает. YMMV.

Как уже упоминали другие, не пытайтесь монтировать NTFS R/W в Linux после спящего режима.

Мой опыт работы с загрузкой на основе UEFI. Теоретически это должно работать с загрузчиками на основе MBR/BIOS, но вам придется использовать GRUB или какой-либо другой не-Windows загрузчик в MBR, чтобы избежать функции "автоматического возобновления" этого загрузчика (всякий раз, когда он обнаруживает спящий режим, он игнорирует любые другие параметры загрузки, которые вы, возможно, добавили для Linux.) Если вы идете по маршруту grub/MBR, взгляните на команду grub-reboot, чтобы перейти к Windows для одного цикла загрузки.

UEFI с основной Windows

Если вы проводите большую часть своего времени в Windows, и для него установлен вариант загрузки по умолчанию, вам понадобится инструмент на стороне Windows, чтобы переключить установку Linux на "однократную загрузку" - что-то вроде EasyUEFI. Когда вы захотите перейти в спящий режим и перезагрузиться в Linux, вы включите его один раз.

После установки флага загрузки один раз, затем от имени администратора выполните:

xbootmgr -trace hibernate

Если вы подключили его правильно, вы должны включиться в среду Linux ровно один раз, и после перезагрузки вы снова окажетесь в Windows, восстановленной из вашего предыдущего состояния гибернации.

UEFI с основным Linux

Если вы проводите большую часть своего времени в Linux и используете его в качестве основного варианта загрузки, вы можете пропустить инструмент UEFI на стороне Windows, описанной выше. Вместо этого вы будете использовать что-то вроде efibootmgr. Сначала вам нужно выяснить, какая загрузочная запись соответствует Windows. Просто беги

sudo efibootmgr

И вы увидите что-то вроде этого:

BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0001
Boot0000* ubuntu
Boot0001* Windows Boot Manager

Затем, чтобы настроить Windows для загрузки один раз, вы должны использовать число, которое совпадает (0001 в моем примере) с:

sudo efibootmgr --bootnext 0001

Затем перейдите в режим гибернации / перезагрузки из Linux, и вы попадете в Windows один раз, и когда вы будете готовы вернуться в Linux, запустите xbootmgr на стороне Windows, чтобы перейти в спящий режим, и вы сможете легко переключаться между два.

1

Вы не можете делать то, что хотите, потому что Windows всегда предполагает, что на вашем компьютере нет других операционных систем, отличных от Windows.

Пока загрузчик Windows (NTLDR или BOOTMGR, независимо от того) установлен на MBR, (пере) запуск компьютера после спящего режима всегда будет возобновляться из данных спящего режима на диске и не будет предлагать вам выбрать ОС для загрузки. Это связано с тем, что монтирование тома, смонтированного в спящем режиме из любой другой ОС или среды, является неопределенным поведением. В лучшем случае, когда вы попытаетесь загрузиться в гибернационную ОС после монтирования одного из ее томов в Linux или другой установке Windows, вы обнаружите данные гибернации как недействительные и откажетесь от загрузки с них. В худшем случае он будет загружаться из хранилища гибернации, и в памяти будут храниться несоответствующие данные файловой системы по сравнению с диском, и ваши тома могут быть повреждены без возможности восстановления (и я об этом, судя по опыту).

Таким образом, Windows (в некоторой степени справедливо) предполагает, что перезапуск (вместо выключения) после спящего режима не имеет смысла, поскольку это просто приведет к тому, что машина будет в том же состоянии, в котором она находилась до спящего режима, при этом ничего не было достигнуто, а 5 минут потерянного времени ,

Теперь, конечно, если в MBR установлен загрузчик без BOOTMGR/NTLDR, вы можете выполнить спящий режим Windows и загрузку другой ОС (хотя вы не должны изменять какие-либо тома, которые были смонтированы под теперь спящей ОС или иначе риск серьезной потери данных). Но Windows ничего не знает об этом (является ли это намеренно проигнорированным, тема для другого дня). Таким образом, короткий ответ заключается в том, что мы пытаемся обойтись без какой-либо (пара) виртуальной среды.

Если вы часто переключаетесь между операционными системами и пытаетесь вернуться туда, где вы были, рассмотрите возможность использования рабочей станции VMware или даже ES(I | X) для загрузки сразу нескольких операционных систем. Иначе, решение KVM, подобное предложенному @WillGunn, не является плохим вариантом.

0

Если вы используете linux большую часть времени, но работа над ним не интенсивная, вы можете использовать дополнительный компьютер с переключателем KVM для переключения между ними.

Спящий режим (S4) записывает содержимое вашей памяти на жесткий диск. Если питание потеряно, оно может восстановить себя из файла гибернации. Вы всегда можете принудительно отключить его, то есть отключить его после того, как он завершит работу в режиме гибернации, а затем выбрать linux при загрузке.

0

Прошли годы с тех пор, как был задан этот вопрос, но я все еще хотел записать свое "сложное" решение. Моя установка выглядит следующим образом:

  1. Компьютер загружается через grub2 и по умолчанию загружается в Fedora.
  2. В fedora я могу сделать одноразовое изменение пункта меню grub, чтобы перезагрузить компьютер в следующий раз в Windows.
  3. И Windows, и Linux могут получить команду на спящий режим.
  4. Для включения компьютера у меня есть схема ESP8266, которая подключена параллельно к кнопке питания компьютера. ESP8266 получает питание от +5В в режиме ожидания блока питания. Raspberry Pi, подключенный к локальной сети, посылает ему сигнал Wi-Fi, который нажимает кнопку питания, либо короткое нажатие для активации, либо длинное нажатие для полного сброса.

Имея эту инфраструктуру, я могу переключать операционную систему и загружаться как локально, так и удаленно.

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