Да у меня времени нет, к сожалению, и так проектов по горло. Но, тому кто возьмется, помочь обещаю. Могу реверс биоса делать.
Самый верный вариант - спросить у нас в рассылке coreboot@coreboot.org
Щас вот биос открыл - 3300IA5.rom - он?
А то я не помню уже
KolibriOS в BIOS
XVilka
Спасибо за детальную инструкцию!
Попробую прошить в реальное железо.
Насколько я понял, для этого QEMU не требуется?
Спасибо за детальную инструкцию!
Попробую прошить в реальное железо.
Насколько я понял, для этого QEMU не требуется?
ЖальXVilka wrote:Да у меня времени нет, к сожалению, и так проектов по горло. Но, тому кто возьмется, помочь обещаю. Могу реверс биоса делать.
Я бы хотел всё-таки подарить знакомому человеку, сам понимаешь. Я же там у вас никого не знаю.XVilka wrote:Самый верный вариант - спросить у нас в рассылке coreboot@coreboot.org
Для eBox-3300 - он самый. Для eBox-3300MX нужен другой - прилагаю. Я продаю и eBox-3300, и eBox-3300MX, но eBox-3300MX гораздо более перспективный (больше памяти поддерживает, вход для блока питания стандартный, звук HD Audio, есть функция MMX и т.д.). Так что, если уж совсем конкретно, то лучше всего eBox-3300MX.XVilka wrote:Щас вот биос открыл - 3300IA5.rom - он? А то я не помню уже
- Attachments
-
-
3300MX-H.7z (248.73 KiB)Downloaded 390 times
-
art_zh: сначала рекомендую запустить на qemu, а потом уже в железку загонять
не понял про загрузчик? Это то что касательно int 19h? Или дисковые операции упарзняются, как таковые, а загрузка вырождается в операцию копирования память-память и все?XVilka wrote:Щас ковыряюсь и пробую выкинуть 16-битный код и загрузчик из ядра, а также пробую сделать из него elf, чтобы из coreboot грузиться напрямую.
Так?
И еще
если делается реверс(ы) биоса для coreboot, как для автономного проекта, то не проще ли и без него вообще?XVilka wrote:Могу реверс биоса делать.
Т.е. раз делать дизасм бутблока и глубокий анализ инита чипсета, особенно под память, (только под данную или выбранную, допустим встраиваемую платформу), то можно же навыдирать "конкретного нужного" под "встроенную" тему и все. Тогда и coreboot избыток, так?
НУ конечно еще надо, наверное "оседлать" прошивалку флешки(код) или распатронить ее гтовую, чтобы ROM "в тень" уметь ставить ну и пусть поддержку дисков неплохо бы выдрать (хотя не обязательно).
Ну вот, тогда зачем получается coreboot вообще не нужен?
Если еще более сузить потребности в биос коде, и если речь допустим о конкретном встроенном решении типа Колибри-А или Колибри-eBox или Колибри-AWARD то получается места вообще валом, а скорость загрузки спошной реактив + минимум настроек чипсета... Сюда же и видеобиосный код "чикается" только под нужное разрешение и все.
Я что то упускаю? Крамолы нет?
Да, вырождение загрузчика в копирование памяти.
Я же не весь бутблок реверсю, а только конкретные функции.
А почему coreboot? А потому что код в нем тестируется сотнями человек, и лучше добавить немного изменений в уже готовый проект, чем изобретать свой чугунный велосипед с квадратными колесами.
Кроме того, coreboot занимает очень мало места.
Я же не весь бутблок реверсю, а только конкретные функции.
А почему coreboot? А потому что код в нем тестируется сотнями человек, и лучше добавить немного изменений в уже готовый проект, чем изобретать свой чугунный велосипед с квадратными колесами.
Кроме того, coreboot занимает очень мало места.
VaStaNi
Плюс еще 128к на видео-биос (его CoreBoot просто выдирает из старого ROM-кода).
Остаётся как минимум 800к - для ядра, драйверов, библиотек и утилит вполне достаточно.
А если делать через BIOS - тогда только ядро влезет, шрифты и иконки (у меня в ROM меньше 128к свободного места)
Вот и смотри в чем лучше копаться - в CoreBoot или в недокументированных реверсах BIOS ?
Получается, что CoreBoot вместе с загрузчиком занимает около 80кXVilka wrote:Вот что у меня получилось на выходе (я собирал образ для 4мбитной флешки)
Код:
coreboot.rom: 4096 kB, bootblocksize 1504, romsize 4194304, offset 0x0
Alignment: 64 bytes
Name Offset Type Size
cmos_layout.bin 0x0 unknown 1159
fallback/romstage 0x4c0 stage 12720
fallback/coreboot_ram 0x36c0 stage 27797
fallback/payload 0xa3c0 payload 40596
(empty) 0x142c0 null 4110104
То есть есть место для KolibrioOS Даже более чем достаточно!
Плюс еще 128к на видео-биос (его CoreBoot просто выдирает из старого ROM-кода).
Остаётся как минимум 800к - для ядра, драйверов, библиотек и утилит вполне достаточно.
А если делать через BIOS - тогда только ядро влезет, шрифты и иконки (у меня в ROM меньше 128к свободного места)
Вот и смотри в чем лучше копаться - в CoreBoot или в недокументированных реверсах BIOS ?
Ну это смотря какой BIOS и какой flash ROM chip - вот опять же, в eBox чип 2 Мегабайта, а BIOS только 256 Килобайт, получается для Колибри при "родном" БИОСе остаётся 1.75 Мегабайт - туда и полный floppy-image влезет, и ещё на семечки останетсяart_zh wrote:А если делать через BIOS - тогда только ядро влезет, шрифты и иконки (у меня в ROM меньше 128к свободного места). Вот и смотри в чем лучше копаться - в CoreBoot или в недокументированных реверсах BIOS ?
BIOS, как минимум дольше запускается...
Не забываем, что прриведенные выше размеры относятся для дебаг-версий. Конечный файл, без всего лишнего, еще меньше и быстрее получиться.
Я начал делать реверс биоса, но мне нужен вывод lspci -nnvvvxxxx
yogev_ezra, можно еще вывод "lspci -nnvvvxxxx" из под линукса сделать?
Не забываем, что прриведенные выше размеры относятся для дебаг-версий. Конечный файл, без всего лишнего, еще меньше и быстрее получиться.
Я начал делать реверс биоса, но мне нужен вывод lspci -nnvvvxxxx
yogev_ezra, можно еще вывод "lspci -nnvvvxxxx" из под линукса сделать?
art_zh, давай по-файлово определимся что оставим, а что можно выкинуть.
Я думаю, лучше начать с самого минимума, а потом можно добавлять постепенно функциональность, блоками.
У меня такая идея:
coreboot может загружать elf напрямую, может загружать SeaBIOS, который предоставляет сервисы легаси-биоса
Я предлагаю попробовать исключить из цепочки SeaBIOS, и попробовать скомпоновать elf-файл, который сам себя будет загружать сразу. Сразу 32-битный код, и убрать зависимость от биос-функций.
Определение дисков без биоса можно сделать так: у меня есть код на С, я могу его скомпилировать и отреверсить в ассемлерный текст Я на ассемблере не очень пишу, а реверсю быстрее.
Я думаю, лучше начать с самого минимума, а потом можно добавлять постепенно функциональность, блоками.
У меня такая идея:
coreboot может загружать elf напрямую, может загружать SeaBIOS, который предоставляет сервисы легаси-биоса
Я предлагаю попробовать исключить из цепочки SeaBIOS, и попробовать скомпоновать elf-файл, который сам себя будет загружать сразу. Сразу 32-битный код, и убрать зависимость от биос-функций.
Определение дисков без биоса можно сделать так: у меня есть код на С, я могу его скомпилировать и отреверсить в ассемлерный текст Я на ассемблере не очень пишу, а реверсю быстрее.
XVilka
я не понял зачем компилить всё ядро в .elf ?
Нужно написать (на Си) простенький системный загрузчик вместо bootcode.inc
Как я понял, существуют несколько разных вариантов реализации ROM-загрузки Колибри
1) с помощью 16-разрядных дисковых функций SeaBIOS (система грузится с обычного iso- или img-образа)
2) с помощью самодельного 32-разрядного загрузчика, прочитывающего img-файл с диска, загружающего его в память как RD/1, и уже с него загружающего 32- kernel.mnt (от которого должна остаться только 32-разрядная часть)
3) или с помощью упрощённого загрузчика, считывающего только kernel.mnt, а с остальными файлами работающего напрямую с диска (CoreBoot ведь должен уметь работать с FAT и с ext2/3 ?)
4) или ещё проще - загружающего RD-образ прямо из ROM. В этом случае можно обойтись вообще без дисковой подсистемы. Но каждый раз придется прошивать img-образ в RAM...
Ты какой из этих вариантов имел в виду?
Тут есть еще один важный вопрос:
Как в CoreBoot организована карта памяти ?
Сейчас Колибри сама формирует LDT и IDT, находясь в 16-разрядном пространстве, потом входит в PM и сразу же создает PDE/PTE для своего собственного страничного преобразования адресов. Насколько сложно будет это реализовать в 32-разрядном загрузчике?
я не понял зачем компилить всё ядро в .elf ?
Нужно написать (на Си) простенький системный загрузчик вместо bootcode.inc
Как я понял, существуют несколько разных вариантов реализации ROM-загрузки Колибри
1) с помощью 16-разрядных дисковых функций SeaBIOS (система грузится с обычного iso- или img-образа)
2) с помощью самодельного 32-разрядного загрузчика, прочитывающего img-файл с диска, загружающего его в память как RD/1, и уже с него загружающего 32- kernel.mnt (от которого должна остаться только 32-разрядная часть)
3) или с помощью упрощённого загрузчика, считывающего только kernel.mnt, а с остальными файлами работающего напрямую с диска (CoreBoot ведь должен уметь работать с FAT и с ext2/3 ?)
4) или ещё проще - загружающего RD-образ прямо из ROM. В этом случае можно обойтись вообще без дисковой подсистемы. Но каждый раз придется прошивать img-образ в RAM...
Ты какой из этих вариантов имел в виду?
Тут есть еще один важный вопрос:
Как в CoreBoot организована карта памяти ?
Сейчас Колибри сама формирует LDT и IDT, находясь в 16-разрядном пространстве, потом входит в PM и сразу же создает PDE/PTE для своего собственного страничного преобразования адресов. Насколько сложно будет это реализовать в 32-разрядном загрузчике?
у coreboot есть своя файловая система cbfs (http://tracker.coreboot.org/trac/corebo ... n/cbfs.txt) - она очень простая и флешка форматируется именно в нее. Есть вариант добавить драйвер cbfs в ядро колибри и загружать ядро из coreboot, сразу 32 разряда. А остальные диски можно подключать опционально.
в идеале - выкинуть надобность в SeaBIOS.
На Си это будет несложно организовать - можно взять и урезать до минимума FILO (http://www.coreboot.org/FILO)
Кстати, с помощью gcc-4.6.1, убрав информацию и функции дебага, можно coreboot скомпилить в 10 кб.
Карта памяти - http://www.coreboot.org/Developer_Manual/Memory_map
Прикрепляю избранные файлы из FILO/libpayload, которые нам собственно нужны.
в идеале - выкинуть надобность в SeaBIOS.
На Си это будет несложно организовать - можно взять и урезать до минимума FILO (http://www.coreboot.org/FILO)
Кстати, с помощью gcc-4.6.1, убрав информацию и функции дебага, можно coreboot скомпилить в 10 кб.
Карта памяти - http://www.coreboot.org/Developer_Manual/Memory_map
Прикрепляю избранные файлы из FILO/libpayload, которые нам собственно нужны.
- Attachments
-
-
coreboot_tables.h (5 KiB)Downloaded 374 times
-
coreboot.tar.gz (53.16 KiB)Dow
-