Yoda писал(а):
В этому случае всё будет просто ограничено 32 битами (2ТБ). Т.е. всё останется работоспособно, но с ограниченным функционалом.
До этого я уже дошел путем экспериментов.
Цитата:
Полноценная 64-битная нумерация возможна только с использованием комплектного MBR.
Почему не хочешь расширить HiddenSectors до 64 бит?
Цитата:
Я его раньше не описывал потому, что он не был устоявшимся. Приходилось его часто менять. Но сейчас я вижу, что он вполне юзабелен, достаточно универсален и, похоже, устаканился. Секрета он собой не представляет. Если понравится другим, то почему бы и не принять его в качестве соответствующего стандартного протокола?
В принципе вполне достойный вариант. Мне не нравится использование 32-битных регистров (для моих применений). Еще хочу все-таки посмотреть, использует ли хоть кто-нибудь интерфейс, описанный в EDD Spec. Если нет, то дружно забьем на него. Буду изобретать собственный велосипед.
Цитата:
Шаблон будет сложно сделать. У меня создана мощная библиотека-конструктор, на основе которой из готовых модулей строятся все загрузчики. Вычленить из неё кусок, - значит заморозить его вне рамок библиотеки.
Я имел в виду простейший исходник с демонстрацией обработки параметров, полученных от MBR-загрузчика, и передачей их по цепочке вторичному загрузчику/ядру.
Цитата:
База легко изменяется на уровне исходников. В файле библиотеки меняется одна константа. Но при этом пересобирается весь комплект и на уровне бинарников сделать аналогичные изменения уже непросто. И потом, уникальная база - это значит с каждым выпуском делать отдельные загрузчики для тебя. Может, всё же добьёшь своё ядро нулями?

Я когда-то сравнивал один из твоих загрузчиков с базой 500h и базой 600h - отличались только одним байтом - подумал, что может база "вбита" где-то в одном месте и от нее корректно отсчитываются все другие параметры (размер доступного для загрузки файла буфера и т.п.). Не хочу постоянно конвертировать. Ради эксперимента было интересно это сделать, но теперь попробую сделать над собой усилие и написать собственный загрузчик (ты продемонстрировал, что это вполне реально сделать). Может, после и read-only-драйвер напишу. Уж слишком понравилось использовать NTFS-раздел (не сильно напрягают даже остающиеся пока ограничения). Еще слегка напрягает, что после конвертирования модиф. GRUB'а в твой формат перестает работать MB-точка входа. Можно конечно "выдрать" соответствующий код из самого GRUB'а или написать самому, но что-то не хочется усложнять код в этом направлении, когда в GRUB'е все это уже есть. Хотя можно и в адаптационный код добавить распознавание на предмет загрузки по адресу 600h и в случае успешного распознавания выполнять полный перенос на нужное место, как это сделано у тебя (когда у меня в mksys задано уплотнение, в начало sys-образа помещается лишь конец исходного образа, что эффективнее, но по понятным причинам это не подходит для образа, который может быть загружен и по адресу 600h, и по адресу 8000h). Кстати, если ты не будешь уплотнять образ ядра до верхней границы твоего адаптационного кода (у полученной мной версии это 183+1 байта), а оставишь 512 байт в любом случае, то по идее у тебя это тоже должно работать.
К слову, сегодня узнал о фишке fasm'а, позволяющей вообще не править исходники при обработке различных входных файлов (при желании можно и другие входные параметры брать из специальных файлов). Сейчас у меня в исходниках mksys обычно записано:
Код:
OSIMAGE equ "../mkpk/kernel.pk"
FSIMAGE equ "zs.fs"
Теперь можно написать так:
Код:
OSIMAGE equ "%osimage%"
FSIMAGE equ "%fsimage%"
И брать имена входных файлов из соответствующих переменных окружения.
Цитата:
Нет ещё. Этот вопрос надо сначала исследовать и поставить серию экспериментов.
Если соберешься, дай знать. Вместе поэкспериментируем. Судя по всему, сейчас это вполне обычное свойство NTFS-загрузчика. Будет лучше его поддержать, чем не поддерживать.
Цитата:
Посмотри diskboot.S в оригинальных исходниках. Там стоит последовательность push dx, за ним push si. А у тебя между ними воткнут вызов какой-то функции. Это явно не случайность. Причём я смотрел бинарники из Debian и компилировал GRUB сам, ничего такого нет ни там, ни там.
Да, заметил. Крутая функция, однако:
Код:
mov bx,417h
and byte [bx],3
ret
Это тестирование клавиатурных флагов BIOS. Я в MBR-загрузчиках тоже их использую.
Цитата:
Т.к. исходники загрузчика на ассемблере, то я полагал, что он не зависит от компиляции. Кроме того, он не менялся на протяжении многих версий. Поэтому я использовал его для проверки принадлежности файла к линейке GRUB-ов. Сам загрузчик я, как и говорил, отбрасываю. Но я вижу, что убунтушный промежуточный загрузчик тоже одинаков во всех версиях и просто добавлю его как вариант.
Скинь мне mksys (знакомое название, БЛИН

) for Win, плиз, как добавишь.
Цитата:
Ну да, естественно. Идентификатор раздела в EBX и номер первого сектора раздела ещё можно передать. Но каким образом можно узнать геометрический номер раздела без поддержки со стороны MBR, я совершенно не представляю себе.
Я уже показывал, как это можно сделать, причем элементарно.