Yoda писал(а):
Да скорей всего он как-нибудь заработает. Просто боюсь, что при этом возможны всяческие непредсказуемые глюки.
По идее все должно быть нормально. Единственная проблема - это необходимость подстраиваться под каждую конкретную версию или даже сборку. Кстати я не замечал, что инсталлятор что-то дописывает в конец ядра. Т.е. я брал оригинальный бинарник из пакета, пропатчивал его, после чего он работал. Может, довесок каким-либо образом расширяет возможности ядра?
Цитата:
Не, вторичный загрузчик я пока писать не буду.
Ну, понятно. Я просто в очередной раз напомнил, в каком направлении можно развивать эту тему. Они есть, но, сам понимаешь, какие. Везде используется пропатчивание и часто присутствует расширенный функционал, не нужный для обычной загрузки с предопределенного загрузочного диска/раздела. Конечно пропатчивание можно оправдать использованием универсального первичного загрузчика, а расширенный функционал - это все-таки лучше, чем отсутствие какой-либо нужной функции, которая может понадобиться в самый неподходящий момент. Но все-таки в моем представлении вторичный загрузчик должен работать немного по-другому.
Цитата:
Хотя Shikhin и Griwes развели
бурную дискуссию по созданию загрузчика под названием Gandalf и даже завели
проект в GitHub, я так и не смог понять, чем их не устраивает протокол Мультибут, весь проект сейчас на стадии одной страницы описания, чего бы они хотели видеть (пока даже без конкретики), а критика GRUB2 свелась к ссылке на тему, где товарищ создавал загрузочный компакт-диск и таки сделал его с твоей помощью, используя твой grub.sys и мой iso9660.bin
.
Мне сразу показалось, что дальше трепа там дело не пойдет. Если я окажусь не прав, можете бросить в меня камень
Цитата:
О, нет, туда бесполезно смотреть с моей перспективы. Между первичной загрузкой и линуксом обязательно должна быть вторичная. Причём достаточно сложная, с поддержкой initrd. Ну его в баню. В данном случае вполне достаточно поддержки линукс-специфичных вторичных загрузчиков. Как я уже говорил, у меня сейчас линукс именно так и грузится, и я этому вполне рад.
Да, я что-то не сообразил, что оригинальные ядра линуха, тем более вместе с initrd не поместятся в базовую память, чтобы их можно было загружать твоими первичными загрузчиками.
Цитата:
Я всегда говорил, что проекты всегда надо делить на самодостаточные модули с чётко очерченными минимально необходимыми интерфейсами и между модулями не должно быть никаких "левых" неотслеживаемых связей.
Да, просто меня периодически напрягала неэффективность в работе процедуры запуска ядра через MB-точку входа. Но на самом деле в данном случае это абсолютно несущественно, больше смахивает на параноидальное стремление все оптимизировать.
Цитата:
Можно попробовать сделать так: заглушка считывает первый сектор раздела, переносит оттуда BPB/BS в загруженный образ, пропатчивает первый сектор сходным с оригиналом образом и передаёт управление на второй сектор, в точку после считывания остатка файла и подсчёта контрольной суммы, сразу перед хаком с BPB/BS.
Да, так, пожалуй можно. Тогда надо будет ещё разобраться, что за мусор дописывает инсталлятор в конец файла.
Ну, да, сымитировать загрузку ядра родным первичным загрузчиком и helper'ом, разместив их модифицированные версии по своим местам в памяти. Кстати, я хочу сделать эмуляцию загрузки первичного загрузчика NTFS через доп. точку входа (по смещению 256h), чтобы его можно было тестировать в реальных условиях без записи на жесткий диск. Тоже нужно буде совмещать в памяти данные из бутсектора тома и код тестируемого загрузчика. Подобным образом работает мой mbremu.
jarilo писал(а):
Есть еще вариант не мучатся с телом самого syslinux а загружать его MBR.bin а он пусть грузит само тело. Тут двух зайцев мне кажется можно убить, 1 легче поддержать такую загрузку, 2 более универсально, т.е. можно надеется что такой способ по мере выхода новых версий syslinux останется рабочим, а если грузить напрямую тело возможно что с выходом новых версий что то поменяется в загрузке, в MBR у них гораздо реже что либо меняется, вроде )). Хотя теряется свобода расположения самого syslinux на томе он уже должен будет стоять там где его MBR найдет.
Основная проблема в том, что тогда syslinux все равно придется устанавливать в раздел оригинальным установщиком или пропатчивать прямо на диске. Мы же стремимся к тому, чтобы после установки на диск/в раздел наших загрузчиков все остальное можно было записывать простым копированием файлов.