CleverMouse wrote:
1. Есть штука, которая работает, пока ОС ещё не загружена, и умеет выполнять команду "прочитай файл с таким-то именем с той файловой системы того устройства, откуда идёт загрузка". Называется "первичный загрузчик".
Насколько я знаю из теории, загрузчик первого уровня расположен в тех самых 512 байтах загрузочного сектора физического носителя. Он выясняет таблицу размещения файлов носителя и передаёт управление загрузчику второго уровня, который и занимается дальнейшим: инициализацией оборудование, считыванием файлов и передачей управления ядру ОС.
Насколько я понимаю, у Колибри есть вот этот загрузчик второго уровня, который вы называете "первичным", умеющий передавать управление и нужные параметры ядру, которое дальше работает в соответствии со своей программой, загружая операционную систему.
Так вот проблема, как я понимаю, состоит в том, что вот этот "первичный" загрузчик ограничен в своих возможностях и накрепко заточен под загрузку ОС из образа. Как я понимаю, это связано с особенностью работой ядра, которое в силу исторических причин "кастрировано" в отношении формы обращения к файлам - поэтому и загрузчик в самом ключевом своём месте кастрирован и вынужден плясать под дудку ядра ОС.
Поэтому мы вынуждены выдумывать эту комбинацию сбора из отдельных файлов опять в образ, чтобы потом загрузчик смог общаться с ядром "на его языке".
Получается, что в итоге истинная причина в ограничении не загрузчика, а ядра - и из-за него загрузчик тоже, в итоге, ограничен сведением всего, что бы мы в нём не придумали, к формату, приемлемому для ядра ОС.
Примерно так?
CleverMouse wrote:
...Точнее, есть несколько разных штук...
Воу-воу-воу, палехче дорогуша

)
Шучу.
Нельзя же так: говорили-говорили, вдруг - бабах, уже другое.
Вот из-за такой манеры излагать у многих форумчан крайне тяжело понять и разобраться.
Объясните, будьте добры, последовательно и обстоятельно, не срывайтесь с одного на другое.
CleverMouse wrote:
Все они предоставляют один и тот же интерфейс. Они уже есть, работают, более или менее отлажены.
Кто они? Где работают и где есть?
CleverMouse wrote:
Один из вариантов - пусть штука из предыдущего пункта грузит непосредственно ядро, далее ядро может дочитать нужные файлы и что-нибудь с ними сделать. Сейчас есть вариант, когда ядро с помощью первичного загрузчика читает настройки из конфигурационного файла config.ini, потом с его же помощью грузит kolibri.img и начинает полноценную работу. Этот вариант, опять же, уже есть, протестирован и работает, требует только перекомпиляции ядра со специальной опцией.
Если этот вариант уже есть - то, по логике, для осуществления задумки потребуется научить загрузчик (раз он такой умный и может обращаться с файловой системой) собирать kolibri.img из файлов на носителе, а в случае наличия уже имеющегося kolibri.img, отдавать приоритет свежесобранному.
CleverMouse wrote:
Можно встраивать создание kolibri.img непосредственно в ядро.
Тоже вариант, но потребуются правки ядра, что само по себе сводит задачу по созданию костылей к менее целесообразной задаче по правке функционала ядра, даже пускай его небольшой части.
CleverMouse wrote:
Можно написать вторичный загрузчик
А можно - и третичный... А что мешает вообще написать целую гору загрузчиков, каждый из которых выполняет какой-нибудь единичный чих и передающих управление друг другу?

)
Как группа старшеклассников, отобравшая портфель у первоклашки и перебрасывающая его друг другу... А несчастный пацан бегает и ловит выпадающие из портфеля ручки, пенал, бутерброды, учебники, тетрадки - да всё что ему нужно для учёбы... И только после этого старшеклассники бросают ревущему пацану пустой портфель и он всё это с грохотом роняет под дружный смех ребят

На самом деле, как мне видится, самым лучшим вариантом действий было бы преодоление исторической кастрированности ядра и развитие его в сторону расширения возможностей. Я осознаю, что это самый сложный вариант действий, но он самый правильный с точки зрения уменьшения "хитро-закрученности" работы системы.
Но в существующих условиях, как я понимаю, самым реальным будет вариант с использованием ядром загрузчика в кач-ве "агента" для обращения к файловой системе.