Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Хочу все знать (http://forum.oszone.net/forumdisplay.php?f=23)
-   -   [решено] Как загрузчик ОС определяет: возобновление работы или обычная загрузка. (http://forum.oszone.net/showthread.php?t=130962)

bish 05-02-2009 00:13 1029709

Как загрузчик ОС определяет: возобновление работы или обычная загрузка.
 
Интересно узнать: как Windows "даёт знать" загрузчику, что она "уснула", т.е. в спящем режиме ? Если в boot.ini, то что там пишет?
Может кто знает?

Vadikan 05-02-2009 03:44 1029826

bish, для чего вам это нужно знать?

Leshiy 05-02-2009 18:10 1030542

Цитата:

Компьютерный форум OSzone.net » Компьютеры + Интернет » Хочу все знать
так вроде такой раздел :tomato2:

dmitryst 05-02-2009 18:33 1030570

Vadikan, мне тоже интересно :)

Den47 05-02-2009 18:35 1030575

А загрузчик это не определяет. Система во время перехода в спящий режим пишет об этом в реестре или в каком-то файле. А потом при запуске это читает. Что тут сложного?

Coutty 05-02-2009 18:39 1030580

Den47, а если стоит Виста и XP, то какая система в каком реестре определяет, что именно XP переходила в спящий режим, а не Виста.
Более того, если стоит ещё и Линукс, то его загрузчик грузится первым. Должен грузиться первым. Но если Windows переходила в спящий режим, то именно Windows и восстановится в обход линуксового загрузчика.
Т.ч. не всё так просто, как вы говорите)

Vadikan 05-02-2009 19:11 1030608

Цитата:

Цитата Leshiy
так вроде такой раздел »

Цитата:

Цитата dmitryst
мне тоже интересно »

Ну вот и мне интересно - зачем? :) Из любопытства, с точки зрения разработки программного обеспечения, еще зачем-то...

Den47 05-02-2009 19:15 1030615

Я знаю, что, когда Windows в спящем режиме, Linux не имеет доступа к NTFS разделу, пишет, что не может смонтировать. А, когда Windows нормально завершила работу, тогда имеет доступ.

dmitryst 05-02-2009 19:23 1030621

Цитата:

Цитата Coutty
Но если Windows переходила в спящий режим, то именно Windows и восстановится в обход линуксового загрузчика. »

во-во, пару раз так обламывался, когда вместо сервера грузилась винда с игрушками :jester: , поэтому, уважаемый Vadikan, вопрос отнюдь не абстрактный

Цитата:

Цитата Den47
когда Windows в спящем режиме, Linux не имеет доступа к NTFS разделу »

это если их загрузчики на разных дисках :)

Vadikan 05-02-2009 19:32 1030630

dmitryst, я не обладаю достаточными знаниями в области управления питанием... В общем, загрузчик тут ни причем. При подаче питания, которое инциализируется кнопкой или по событию, сначала инициализруется BIOS, который потом передает управление ОС. Могу предложить такое: Power Management In Windows Vista (слайды 27 - 30, в частности 28).

А процесс загрузки детально описан тут The PC Boot Process - Windows XP.

Котяра 05-02-2009 20:02 1030656

Цитата:

Цитата Vadikan
При подаче питания, которое инциализируется кнопкой или по событию, сначала инициализруется BIOS, который потом передает управление ОС. »

А вот ОС смотрит, просыпаться или грузится.
Vadikan, вы не путаете спящий режим (hiberfil.sys) со ждущим?

NTLDR
Initial Phase
После нее уже идет определение гибернейта вроде.
Гибернейт - это тоже выключение, после него даже можно извлечь вилку ПК из розетки (сам не проверял, но это даже используется в ноутбуках и ИБП).

bish 06-02-2009 00:34 1030879

Цитата:

Цитата Котяра
После нее уже идет определение гибернейта вроде »

А как?? Может всё-же через boot.ini ? Надо проверить: уйти в спящий, потом загрузиться c Live CD и посмотреть boot.ini .
Цитата:

Цитата Котяра
Гибернейт - это тоже выключение, после него даже можно извлечь вилку ПК из розетки (сам не проверял, »

Разумеется, можно и выключить БП и вилку извлечь.

Vadikan, спасибо за ссылки, но там, к сожалению, нет ничего про выход из спящего режима.

Vadikan 06-02-2009 02:16 1030929

Цитата:

Цитата Котяра
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 никак не получится.

dmitryst 06-02-2009 10:34 1031069

Цитата:

Цитата Vadikan
Как только вы подадите питание, система начнет выходить из спящего режима »

т.е. все-таки биос "знает " об этом?

bish 06-02-2009 12:44 1031195

Цитата:

Цитата 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.


Coutty 06-02-2009 12:54 1031207

Цитата:

Цитата Petya V4sechkin
Наверное, это из-за путаницы с русским переводом микрософтской терминологии. В XP Standby = "ждущий режим", Hibernate = "спящий режим". В Висте Sleep = "спящий режим", Hibernate = "гибернация". »

Путаница от MS - это одно дело. Но мы все говорим про тот режим, который позволяет отключать компьютер от розетки и потом быстро восстанавливать ОС. Тот, который "гибернация" в Висте.
Цитата:

Цитата Марк Руссинович
При последующем включении компьютера происходит обычный процесс загрузки — с тем исключением, что Ntldr проверяет наличие действительного образа памяти, сохраненного в файле спящего режима. Если в этом файле сохранены данные о состоянии системы, Ntldr считывает его содержимое в память и возобновляет выполнение с точки, зафиксированной в Hiberfil.sys. »

Хорошо, а что с линуксовым загрузчиком? Он же обычно грузится перед ntldr. Почему тогда он не отображается при включении после спящего режима/гибернации?

bish 06-02-2009 14:19 1031279

Цитата:

Цитата Petya V4sechkin
Цитата Марк Руссинович: »

Можно узнать откуда цитата, из какого документа? Ссылку можно?

Petya V4sechkin 06-02-2009 14:48 1031302

Цитата:

Цитата bish
из какого документа?

Внутреннее устройство Microsoft Windows
Цитата:

Цитата Аннотация
Книга посвящена внутреннему устройству и алгоритмам работы основных компонентов операционной системы Microsoft Windows — Windows Server 2003, Windows XP и Windows 2000 — и файловой системы NTFS.


Котяра 06-02-2009 15:12 1031328

Цитата:

Цитата 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?
Можешь проверить, если хочешь.

Coutty 06-02-2009 17:52 1031479

Цитата:

Цитата Petya V4sechkin
А что если линуксовый загрузчик видит метку hibr в Hiberfil.sys и без вопросов передает управление виндусовому Ntldr?
Можешь проверить, если хочешь. »

К сожалению, лениво линукс устанавливать) Откуда знаю? Раньше пользовался.
Сомнения остаются: он может и не монтировать виндовые разделы (а уж тем более если поддержка ntfs отключена) Да, загрузчик-то этим и не занимается. В общем, я не буду спорить, хотя тема мне тоже интересна и непонятна :)
Ничего себе глюк сейчас был - 6 или 7 раз подряд одно и то же сообщение отправилось...

Котяра 07-02-2009 19:07 1032216

Цитата:

Цитата 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 07-02-2009 23:55 1032449

Вообщем, можно считать, что на поставленый вопрос:
Цитата:

Цитата bish
как Windows "даёт знать" загрузчику, что она "уснула", т.е. в спящем режиме ? »

ответ найден. Всем участникам обсуждения: спасибо! :oszone: Особо - Petya V4sechkin и Vadikan за полезные ссылки. Теперь тему можно считать решённой.

P.S. Правда с Linux вопрос не решён.

Котяра 08-02-2009 00:12 1032459

Цитата:

Цитата bish
Правда с Linux вопрос не решён. »

Поидее, если загрузчиком стоит Linux-овый загрузчик, то он обойден быть не может, скорее всего, прямой переход к Windows после "спячки" реализован силами Linux-а, скорее всего.
Но:
Цитата:

Цитата Coutty
он может и не монтировать виндовые разделы (а уж тем более если поддержка ntfs отключена) Да, загрузчик-то этим и не занимается. В общем, я не буду спорить, хотя тема мне тоже интересна и непонятна »



Время: 07:05.

Время: 07:05.
© OSzone.net 2001-