Как загрузчик ОС определяет: возобновление работы или обычная загрузка.
Интересно узнать: как Windows "даёт знать" загрузчику, что она "уснула", т.е. в спящем режиме ? Если в boot.ini, то что там пишет?
Может кто знает?
|
bish, для чего вам это нужно знать?
|
Цитата:
Компьютерный форум OSzone.net » Компьютеры + Интернет » Хочу все знать
|
так вроде такой раздел :tomato2:
|
Vadikan, мне тоже интересно :)
|
А загрузчик это не определяет. Система во время перехода в спящий режим пишет об этом в реестре или в каком-то файле. А потом при запуске это читает. Что тут сложного?
|
Den47, а если стоит Виста и XP, то какая система в каком реестре определяет, что именно XP переходила в спящий режим, а не Виста.
Более того, если стоит ещё и Линукс, то его загрузчик грузится первым. Должен грузиться первым. Но если Windows переходила в спящий режим, то именно Windows и восстановится в обход линуксового загрузчика.
Т.ч. не всё так просто, как вы говорите)
|
Ну вот и мне интересно - зачем? :) Из любопытства, с точки зрения разработки программного обеспечения, еще зачем-то...
|
Я знаю, что, когда Windows в спящем режиме, Linux не имеет доступа к NTFS разделу, пишет, что не может смонтировать. А, когда Windows нормально завершила работу, тогда имеет доступ.
|
Цитата:
Цитата Coutty
Но если Windows переходила в спящий режим, то именно Windows и восстановится в обход линуксового загрузчика. »
|
во-во, пару раз так обламывался, когда вместо сервера грузилась винда с игрушками :jester: , поэтому, уважаемый Vadikan, вопрос отнюдь не абстрактный
Цитата:
Цитата Den47
когда Windows в спящем режиме, Linux не имеет доступа к NTFS разделу »
|
это если их загрузчики на разных дисках :)
|
dmitryst, я не обладаю достаточными знаниями в области управления питанием... В общем, загрузчик тут ни причем. При подаче питания, которое инциализируется кнопкой или по событию, сначала инициализруется BIOS, который потом передает управление ОС. Могу предложить такое: Power Management In Windows Vista (слайды 27 - 30, в частности 28).
А процесс загрузки детально описан тут The PC Boot Process - Windows XP.
|
Цитата:
Цитата Vadikan
При подаче питания, которое инциализируется кнопкой или по событию, сначала инициализруется BIOS, который потом передает управление ОС. »
|
А вот ОС смотрит, просыпаться или грузится.
Vadikan, вы не путаете спящий режим (hiberfil.sys) со ждущим?
NTLDR
Initial Phase
После нее уже идет определение гибернейта вроде.
Гибернейт - это тоже выключение, после него даже можно извлечь вилку ПК из розетки (сам не проверял, но это даже используется в ноутбуках и ИБП).
|
Цитата:
Цитата Котяра
После нее уже идет определение гибернейта вроде »
|
А как?? Может всё-же через boot.ini ? Надо проверить: уйти в спящий, потом загрузиться c Live CD и посмотреть boot.ini .
Цитата:
Цитата Котяра
Гибернейт - это тоже выключение, после него даже можно извлечь вилку ПК из розетки (сам не проверял, »
|
Разумеется, можно и выключить БП и вилку извлечь.
Vadikan, спасибо за ссылки, но там, к сожалению, нет ничего про выход из спящего режима.
|
Цитата:
Цитата Котяра
Vadikan, вы не путаете спящий режим (hiberfil.sys) со ждущим?
NTLDR
Initial Phase
После нее уже идет определение гибернейта вроде. »
|
Вроде или источник есть? Система же загружена, она просто выходит из состояния гибернации...
Цитата:
Цитата bish
спасибо за ссылки, но там, к сожалению, нет ничего про выход из спящего режима. »
|
Почему же? Там как раз про S3 System Sleeping States
Цитата:
System Power State S3
System power state S3 is a sleeping state with the following characteristics:
Power consumption
Less consumption than in state S2. Processor is off and some chips on the motherboard also might be off.
Software resumption
After the wake-up event, control starts from the processor's reset vector.
Hardware latency
Almost indistinguishable from S2.
System hardware context
Only system memory is retained. CPU context, cache contents, and chipset context are lost.
|
Цитата:
Цитата bish
Надо проверить: уйти в спящий, потом загрузиться c Live CD и посмотреть boot.ini . »
|
Как только вы подадите питание, система начнет выходить из спящего режима - загрузиться с CD никак не получится.
|
Цитата:
Цитата Vadikan
Как только вы подадите питание, система начнет выходить из спящего режима »
|
т.е. все-таки биос "знает " об этом?
|
Цитата:
Цитата Vadikan
Как только вы подадите питание, система начнет выходить из спящего режима - загрузиться с CD никак не получится. »
|
Это почему-же? Выбор порядка загрузки в BIOS: CD - ставим вперёд, и загружаемся с CD.
Цитата:
Цитата bish
Надо проверить: уйти в спящий, потом загрузиться c Live CD »
|
Проверил - boot.ini не изменяется. Поискал с помощью проги AVSearch на загрузочном HDD вхождение слов "Возобновление Windows", нашёл в файле ntldr эти слова. Выходит загрузчик как-то всё-же узнаёт, что система была в спящем режиме. Там-же есть слово hiberfil.sys . Возможно, в hiberfil.sys проверяется какая-то сигнатура и ntldr сам возобновляет ОС - загружает hiberfil.sys в ОЗУ и передаёт управление .... кому?
Кстати, в Linux тоже ведь есть режимы "Спящий, Ждущий". А как там возобновление ОС происходит?
|
Petya V4sechkin |
06-02-2009 12:48 1031199 |
Цитата:
Цитата Coutty
а если стоит Виста и XP, то какая система в каком реестре определяет, что именно XP переходила в спящий режим, а не Виста.
Более того, если стоит ещё и Линукс, то его загрузчик грузится первым. Должен грузиться первым. Но если Windows переходила в спящий режим, то именно Windows и восстановится в обход линуксового загрузчика.
Т.ч. не всё так просто, как вы говорите)
|
Наверное, это из-за путаницы с русским переводом микрософтской терминологии.
В XP Standby = "ждущий режим", Hibernate = "спящий режим".
В Висте Sleep = "спящий режим", Hibernate = "гибернация".
Что касается Hibernate:
Цитата:
Цитата Марк Руссинович
Когда система переходит в состояние S4, диспетчер электропитания сохраняет содержимое памяти в сжатой форме в файле спящего режима (Hiberfil.sys), который помещается в корневой каталог системного тома. (Этот файл должен быть такого размера, чтобы в нем могло уместиться несжатое содержимое всей памяти; сжатие используется для того, чтобы свести к минимуму операции ввода-вывода на диске, а также ускорить переход в спящий режим и выход из него.) Сохранив содержимое памяти, диспетчер электропитания отключает компьютер. При последующем включении компьютера происходит обычный процесс загрузки — с тем исключением, что Ntldr проверяет наличие действительного образа памяти, сохраненного в файле спящего режима. Если в этом файле сохранены данные о состоянии системы, Ntldr считывает его содержимое в память и возобновляет выполнение с точки, зафиксированной в Hiberfil.sys.
|
|
Цитата:
Цитата Petya V4sechkin
Наверное, это из-за путаницы с русским переводом микрософтской терминологии. В XP Standby = "ждущий режим", Hibernate = "спящий режим". В Висте Sleep = "спящий режим", Hibernate = "гибернация". »
|
Путаница от MS - это одно дело. Но мы все говорим про тот режим, который позволяет отключать компьютер от розетки и потом быстро восстанавливать ОС. Тот, который "гибернация" в Висте.
Цитата:
Цитата Марк Руссинович
При последующем включении компьютера происходит обычный процесс загрузки — с тем исключением, что Ntldr проверяет наличие действительного образа памяти, сохраненного в файле спящего режима. Если в этом файле сохранены данные о состоянии системы, Ntldr считывает его содержимое в память и возобновляет выполнение с точки, зафиксированной в Hiberfil.sys. »
|
Хорошо, а что с линуксовым загрузчиком? Он же обычно грузится перед ntldr. Почему тогда он не отображается при включении после спящего режима/гибернации?
|
Цитата:
Цитата Petya V4sechkin
Цитата Марк Руссинович: »
|
Можно узнать откуда цитата, из какого документа? Ссылку можно?
|
Petya V4sechkin |
06-02-2009 14:48 1031302 |
Цитата:
Цитата bish
из какого документа?
|
Внутреннее устройство Microsoft Windows
Цитата:
Цитата Аннотация
Книга посвящена внутреннему устройству и алгоритмам работы основных компонентов операционной системы Microsoft Windows — Windows Server 2003, Windows XP и Windows 2000 — и файловой системы NTFS.
|
|
Цитата:
Цитата Vadikan
Система же загружена, она просто выходит из состояния гибернации »
|
Компьютер в спящем режиме полностью выключается:
Цитата:
Цитата bish
Разумеется, можно и выключить БП и вилку извлечь »
|
Цитата:
Цитата bish
Возможно, в hiberfil.sys проверяется какая-то сигнатура и ntldr сам возобновляет ОС - загружает hiberfil.sys в ОЗУ и передаёт управление .... кому? »
|
Вот тоже вариант. Хотя стоит проверить boot.ini
Цитата:
Цитата Petya V4sechkin
с тем исключением, что Ntldr проверяет наличие действительного образа памяти, сохраненного в файле спящего режима »
|
И как он это проверяет?
|
Petya V4sechkin |
06-02-2009 17:17 1031455 |
Цитата:
Цитата Котяра
И как он это проверяет?
|
Простой эксперимент: загнал систему в Hibernate, потом загрузился с другого диска и посмотрел содержимое Hiberfil.sys. В начале файла символы HIBR. Если виндусовый загрузчик видит эту метку, то пытается использовать Hiberfil.sys.
Поиск по запросу hiberfil.sys hibr дает много ссылок, например статью KB834093 или тему на iXBT.
Цитата:
Цитата Coutty
Хорошо, а что с линуксовым загрузчиком? Он же обычно грузится перед ntldr. Почему тогда он не отображается при включении после спящего режима/гибернации?
|
А что если линуксовый загрузчик видит метку hibr в Hiberfil.sys и без вопросов передает управление виндусовому Ntldr?
Можешь проверить, если хочешь.
|
Цитата:
Цитата Petya V4sechkin
А что если линуксовый загрузчик видит метку hibr в Hiberfil.sys и без вопросов передает управление виндусовому Ntldr?
Можешь проверить, если хочешь. »
|
К сожалению, лениво линукс устанавливать) Откуда знаю? Раньше пользовался.
Сомнения остаются: он может и не монтировать виндовые разделы (а уж тем более если поддержка ntfs отключена) Да, загрузчик-то этим и не занимается. В общем, я не буду спорить, хотя тема мне тоже интересна и непонятна :)
Ничего себе глюк сейчас был - 6 или 7 раз подряд одно и то же сообщение отправилось...
|
Цитата:
Цитата Petya V4sechkin
Простой эксперимент: загнал систему в Hibernate, потом загрузился с другого диска и посмотрел содержимое Hiberfil.sys. В начале файла символы HIBR. Если виндусовый загрузчик видит эту метку, то пытается использовать Hiberfil.sys. »
|
Petya V4sechkin, т.е. секрет спящего режима раскрыт? :)
Цитата:
Цитата тему на iXBT.
Загрузчик Выни (ntldr) юзает файл hiberfil.sys до того, как начинает юзать boot.ini. При каждой загрузке системы, загрузчик проверяет наличие файла и "флага активности" или метки (назови как хошь) в самом начале файла (hibr). Если файл есть и стоит метка, что система находится в спячке, то загрузчик далее ищет информацию "самого кибернейта" и грузит в память содержимое файла hiberfil.sys, минуя собсно файл boot.ini. Если загрузчик не обнаруживает данной метки то он переходит к юзанию boot.ini, даже если инфа кибернейта есть в файле hiberfil.sys в полном объеме. Эта метка собсно и удаляется, если при выходе из спячки грузиться по F8 и выбрать меню "Удалите данные восстановления бла-бла-бла..." т.е. удалив эту метку получаем соответственно обычную загрузку.
Если метка есть, но нет самой инфы кибернейта то система предложит удалить метку, ссылаясь на несоответствие конфигурации бла-бла-бла...
|
Ясно!
|
Вообщем, можно считать, что на поставленый вопрос:
Цитата:
Цитата bish
как Windows "даёт знать" загрузчику, что она "уснула", т.е. в спящем режиме ? »
|
ответ найден. Всем участникам обсуждения: спасибо! :oszone: Особо - Petya V4sechkin и Vadikan за полезные ссылки. Теперь тему можно считать решённой.
P.S. Правда с Linux вопрос не решён.
|
Цитата:
Цитата bish
Правда с Linux вопрос не решён. »
|
Поидее, если загрузчиком стоит Linux-овый загрузчик, то он обойден быть не может, скорее всего, прямой переход к Windows после "спячки" реализован силами Linux-а, скорее всего.
Но:
Цитата:
Цитата Coutty
он может и не монтировать виндовые разделы (а уж тем более если поддержка ntfs отключена) Да, загрузчик-то этим и не занимается. В общем, я не буду спорить, хотя тема мне тоже интересна и непонятна »
|
|
Время: 07:05.
© OSzone.net 2001-