Yoda писал(а):
В этом случае будет выдана ошибка "No boot sector found".
Как именно ты распознаешь (не) свой EBR-код?
Цитата:
phantom-84 писал(а):
и наоборот.
MBR не проверяет
тип загруженного сектора. Он только загружает первый сектор раздела, проверяет сигнатуру, а дальше загруженный сектор сам разбирается со своим разделом. MBR повесится корректно распознавать и обрабатывать все известные на сегодня типы разделов.
Под "наоборот" я имел в виду, что EBR-загрузчик тоже должен проверять на "родство" MBR-загрузчик, от которого он получает управление, чтобы быть уверенным в корректности передаваемых параметров (не так даже важно, "родной" MBR-загрузчик или нет, но важно иметь гарантию корректности передаваемых параметров). Что касается проверки типов разделов, то я не предлагаю проверять все типы. Я говорил о том, что явное использование расширенного раздела, как загрузочного, является ошибочным. Короче я проверяю, чтобы первичный загрузочный раздел не имел тип 0, 5 или 0Fh. А когда происходит загрузка из дополнительного загрузочного раздела, то специально выполняю поиск расширенного раздела, чтобы запустить EBR-код (но только в том случае, если помимо стандартной загрузочной сигнатуры он также содержит и специальную сигнатуру, идентифицирующую EBR-загрузчик).
Цитата:
MBR не должен проверять, что он грузит, кроме предписанной общими правилами проверки - сигнатуры 0AA55h. Иначе вероятны неприятности с разделами, о которых MBR и понятия не имеет - NTFS, EXT2/3 и множество других, которые он, тем не менее, мог бы преспокойно загрузить.
Речь идет только о расширенных разделах DOS.
Цитата:
EBR также не должен излишне заостряться на проверках. Во-первых, по той причине, что загрузкой с расширенных разделов вообще мало кто занимается, - большинство систем считают эту задачу излишней, во вторых, потому что результат всё равно один - "загрузочный сектор не найден".
Дело в том, что если расширенный раздел ошибочно помечен активным, то многие MBR-загрузчики будут грузить его EBR, не гарантируя передачи данных, которые ты ожидаешь получить в своем EBR. Чтобы обсуждение этого вопроса было менее отвлеченным, скажи, какие данные ты передаешь EBR-загрузчику и как именно ты это делаешь.
Цитата:
В-третьих, потому что даже корректной записи MBR+EBR, как ни странно, недостаточно для нормальной загрузки с логического диска.
Как ни странно, мне этого достаточно, по крайней мере для загрузки из дополнительных разделов с FAT/NTFS, а также с файловыми системами, в BR которых вообще не содержится привязки к физическому местоположению раздела на диске.
Цитата:
Нормальную загрузку должна обеспечивать внешняя программа подготовки и форматирования диска. В моём случае это boot.exe (подготовка). Её применение гарантирует корректность всей цепочки.
Это понятно, но кто будет обеспечивать нормальную загрузку или хотя бы нормальную незагрузку (т.е. оповещение об ошибке), когда будет заменен лишь один из двух компонентов MBR/EBR сторонним. Или ты за это уже ответственности не несешь? О, я забыл (я читал твое "пользовательское соглашение"), ты же вообще ни за что ответственности не несешь! )))
Цитата:
Да в общем-то, все, или почти все MBR могут передать управление EBR. Не делают этого только по той причине, что ни одна мало-мальски популярная программа управления дисками не даст пометить расширенный раздел в качестве активного, разве что только в режиме низкоуровневого редактирования, но это, как говорится, "сам дурак".
Да, но все же... Кроме того, есть загрузчики, которые могут выполнять загрузку не только с активного раздела.
Цитата:
phantom-84 писал(а):
1) в начале EBR (я чаще говорю EPR) разместить заглушку для отлавливания ошибки, а управление передавать в "середину" EBR;
Мне думается, не очень хорошая мысль. Это накладывает дополнительные ограничения на MBR по проверке загруженных данных на некоторую
уникальную ситуацию и обязательство предпринимать
уникальные действия в этой ситуации. Причём проверка должна быть независима от версий обоих загрузчиков. Более красивое решение - унифицировать поведение MBR, так чтобы ему было без разницы, какой именно код он загрузил, важно, что это
загрузочный код.
Я использую другой способ, но этот все равно представляется более-менее адекватным.
Цитата:
Предполагаю, что проверка в данном случае излишня (см выше), а вот общий стандарт - вполне ОК.
У меня MBR в регистрах EAX и EBX передаёт LBA-номер загруженного сектора, иными словами, начало раздела. В обоих регистрах одинаковое значение.
К сожалению использование EAX конфликтует с моим способом (я через AX целенаправленно передаю значение, отличное от "!G"("PT"), - обычно 0AA55h). К тому же для совместимости с древними процами я не использую 32-разрядные регистры. Также мне кажется, что механизм подтверждения достоверности (если я правильно понял, это именно равенство двух значений) слишком слабый.
Цитата:
Ситуацию, когда мне предпочтительно перезагружаться с начала цепочки, мне представить сложно.
"Recovery-устройства" находятся в начале загрузочной цепочки перед основным загрузочным устройством.
Цитата:
Вот этот вопрос меня и самого мучает. Я, в целом, неплохо владею английским, но никак не могу представить себе корректной английской технической фразы, означающей продолжение загрузки с других носителей. Boot further? Subsequent boot? В результате оставил пока так, тем более, что каждый байт на счету, а "reboot" существенно короче. Да и в целом, если ситуация встречается раз в год, не велика разница, нажмёт че-к Ctrl-Alt-Del или Any key, а если приходится перезагрузками баловаться часто, попробует и привыкнет, благо его просят: "Press any key...".
В том-то и дело, что нужно было хотя бы слово какое-то новое придумать, потому что "reboot" будет постоянно сбивать с толку. В упомянутом выше загрузчике для CD/DVD я использую слово "continue".
Цитата:
Поддерживаются следующие типы расширенных разделов: 5, 6, 0Fh, 15h, 1Fh, 91h, 9Bh, 0C5h, 0CFh и 0D5h. Собственно говоря, коду EBR наплевать, как пометили его раздел. Проверка осуществляется в boot.exe при анализе структуры диска.
А что после установки загрузчиков структура расширенного раздела меняться не может? Я делаю проверки в загрузчиках, хотя и проверяю только два распространенных типа.
Цитата:
Для тестов я готовил адские смеси разделов, в т.ч. некорректные или невидимые во многих ОС, но формально допустимые. Например, ДВА расширенных раздела (этого не переваривает ни одна известная мне дисковая утилита или ОС), перемежающиеся (или неперемежающиеся) основными разделами, причём в КАЖДОМ расширенном разделе были от одного до нескольких логических дисков. Соответственно, проверялась загрузка со всех без исключения разделов и логических дисков данной мешанки.
Моя ось поддерживает ))) У меня сейчас имеется ограничение только на количество дополнительных разделов (251), но не на их размещение (можно использовать и четыре расширенных раздела). Правда, загрузчиками поддерживается (точнее обрабатывается) только один расширенный раздел. Хочешь загрузиться с дополнительного раздела внутри второго и последующих расширенных разделов, поменяй местами в таблице разделов дескрипторы этого и первого расширенных разделов.
Цитата:
phantom-84 писал(а):
Корректируешь ли BR дополнительного раздела (логического диска) внутри расширенного раздела типа 5? Если да, то для каких ФС?
Не понял вопрос.
Между разделами типа 5 и типа 0Fh есть одна большая разница, которая отражается в том числе и на трактовке поля HiddenSectors в BR FAT/NTFS. В BR дополнительного раздела внутри расширенного раздела типа 5 нужно выполнять корректировку, чтобы код BR смог нормально работать.
Цитата:
Устанавливаю и проверяю флаг активности раздела. Соответственно, в дополнительном разделе также должен быть вписан загрузочный код EBR.
Что-то я не понял. Я дополнительными разделами называю не "контейнеры", а сами логические диски. "Контейнеры" вообще никак не называю или иногда говорю "вложенные расширенные разделы (в структуре первичного расширенного раздела)". Ты вписываешь код EBR в дополнительный раздел? Это вряд ли, т.к. там должен находиться оригинальный ФС-специфичный код BR. Может, ты имел в виду, что вписываешь копию EBR-загрузчика в каждый вложенный расширенный раздел? У меня один экземпляр EBR-загрузчика обрабатывает все дополнительные разделы внутри расширенного. Кроме того, я считаю некорректным использование флага активности для дополнительных и расширенных разделов.
pavia писал(а):
В том году во всех компах отдела поменял батарейку. А то людей в ступор вводило что надо нажимать F1. И вообще они хотят чтобы компьютер как джин выполнял бы их мысли.
Т.е. ты и сообщения об ошибке не выводишь и ожидания нажатия на клавишу не делаешь? Представляю физиономии людей, у которых при возникновении ошибки вместо любимой системы будет грузиться что-то другое. Или ты для каждого компа дублируешь рабочую систему на отдельном физическом диске, регулярно копируя в эту резервную копию данные пользователей?