Этого не произойдет, никогда. В этом протоколе загрузки есть несколько очень серьезных неправильных конструктивных решений, и это огромный риск для безопасности.
Во-первых, ядра stivale имеют заголовок ELF, но каким-то образом вы должны знать, что этот заголовок недействителен; ничего, абсолютно ничего в заголовке не подразумевает, что это недействительное ядро SysV ABI. В Multiboot в начале файла должны быть какие-то магические байты, чтобы можно было определить протокол; в stivale / stivale2 ничего подобного нет. (Якорь вам не поможет, потому что он может появиться где угодно в файле, поэтому на самом деле необходимо обыскать весь файл, чтобы убедиться, что он несовместим со stivale.)
Во-вторых, он использует sectionы; которые, согласно спецификации ELF (см. страницу 46) являются необязательными, и о них не должен беспокоиться ни один загрузчик. Загрузчики используют представление выполнения, а не представление связывания. Реализация разбора секций только из-за этого одного протокола — это безумные накладные расходы в любом загрузчике, где системные ресурсы обычно и так ограничены.
В-третьих, заголовки разделов располагаются в конце файла. Это означает, что для обнаружения stivale вы должны загрузить начало файла, проанализировать заголовки ELF, затем загрузить конец файла и проанализировать заголовки разделов, а затем загрузить где-то из середины файла, чтобы получить фактический список тегов. . Это худшее решение, которое может быть. И опять же, нет абсолютно ничего, что указывало бы на то, что загрузчик должен это делать, поэтому вы должны сделать это для всех ядер, просто чтобы узнать, что ядро не использует stivale. Это также замедляет обнаружение всех других протоколов загрузки, что недопустимо.
Список тегов активно опрашивается процессорами приложений, и ядро может в любой момент вызвать код загрузчика, а это означает, что вы просто не сможете освободить память загрузчика, иначе сбой гарантирован. Это противоречит философии Easyboot.
Хуже всего то, что протокол ожидает, что загрузчики внедрят код в любое совместимое со stivale ядро, которое затем выполняется на максимально возможном уровне привилегий. Да, что может пойти не так, верно?
Поскольку я отказываюсь передавать некачественный код, в Easyboot не будет поддержки stivale. И если вы прислушаетесь к моему совету, ни один любительский разработчик ОС никогда не должен использовать его ради себя.