Здравствуйте, Евгений Музыченко, Вы писали:
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 и сделай вывод сам. Интересно будет почитать, что ты скажешь про это.
ЕМ>Что про это можно сказать, кроме "ужас-ужас"?
Да ну, он для своей цели вполне оптимален. Там много не нужно, только подкачать кусок с известной локации и запустить его. Дальше уже работает другая часть кода.