Re[3]: Почему VBR упорно не грузит BootMgr?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 13.10.24 12:39
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

N>>BIOS грузит MBR так, что передаёт ей один-единственный параметр — хэндл диска для int 10h — в DL?


ЕМ>Так для MBR этого достаточно, ничего другого и не нужно.


Да, если исходить из идеи, которая явно закладывалась при создании всего этого механизма, что не будет одинаковых ОС (и соответственно одного и того же типа раздела в PT) в пределах одного диска.

И вот именно это и не выполняется в твоём случае. И вообще было достаточно быстро нарушено.

N>>И что MBR делает то же самое для того VBR, который запускает из активного раздела (по крайней мере, все MBR что я видел — никуда не сохраняют номер раздела, с которого загрузились)?

ЕМ>Вроде ж было соглашение о передаче адреса на элемент MBR в DS:SI. Так и похерили его?

Я в RBIL ничего такого не вижу.

N>>Я вот порылся и нашёл роспись, что делает VBR.


ЕМ>Я эти исследования видел, хоть- и написаны так, что глаза перекашивает. Вдумчиво прочитать такое оформление не осилил, сделал только поиск по "hidden" — не нашел, и уверился в том, что поле Hidden Sectors в BPB давно не используется. Оказалось, что используется, только упомянуто об этом на другой странице.


Да, по крайней мере вики по BPB продолжает называть это "hidden sectors", хотя они давно другое. А раздел по NTFS вообще не упоминает этого параметра. Недоработали.

ЕМ>Я ж еще не поленился посмотреть на другом ноутбуке, где на диске есть несколько первичных разделов — у всех в Hidden Sectors стоит 2048 (0x800). Но там реально загрузочный только первый, на нем семерка с Boot Manager, она и грузит все остальные по выбору. Получается, что при форматировании винда всегда заносит в Hidden Sectors значение 2048, а реальное смещение туда заносит только установщик системы. bootsect, по крайней мере, этого не делает.


Мне сравнить не с чем. Но, похоже, ты прав.

Но мне всё равно непонятно другое. Если у тебя VBR1 второго раздела грузил с того же смещения VBR2-9 первого раздела, почему всё-таки "BOOTMGR is missing"? Наверняка ж последующий код нашёл, что что-то не так. Это он уже заметил расхождение?

ЕМ>Почему они еще 20-30 лет назад не устаканили код MBR с передачей элемента в DS:SI — даже представить не могу.


А зачем сразу два DS:SI? Я больше ожидал бы просто один числовой параметр, от 1 до 4. Всё равно MBR умеет грузить только с первых 4 разделов.

N>>перечитай код VBR и сделай вывод сам. Интересно будет почитать, что ты скажешь про это.

ЕМ>Что про это можно сказать, кроме "ужас-ужас"?

Да ну, он для своей цели вполне оптимален. Там много не нужно, только подкачать кусок с известной локации и запустить его. Дальше уже работает другая часть кода.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.