KolibriOS в BIOS
-
Вот теперь мы вместе с coreboot более или менее официально: Possible future payloads
XVilka
Ещё раз: CoreBoot+Колибри как конечная цель - это замечательно.
Но есть три серьезных соображения против:
1) сейчас ядро опирается на многочисленные BIOS-костыли. CoreBoot выбьет их все разом - фиг разберешься что, где и почему виснет.
2) не каждый потенциальный заказчик решится пожертвовать своим BIOSом ради тест-драйва шустрой, но никому не известной и (прямо скажем) сыроватой новой EOS.
3) Есть ещё цинично-коммерческая сторона вопроса. Лицензия не позволяет закрывать код, но явно разрешает брать плату за консультации и техническую поддержку конечного продукта.
Прошивку PCI Extension ROM можно привязать к конкретной фишке в железе, и консультировать только легальных владельцев этого железа.
А с CoreBoot_payload такой фикс не пройдет. Пробивные дармоеды успеют хапнуть первыми, а тебе оставят только строчку в коллективном копирайте.
Ещё раз: CoreBoot+Колибри как конечная цель - это замечательно.
Но есть три серьезных соображения против:
1) сейчас ядро опирается на многочисленные BIOS-костыли. CoreBoot выбьет их все разом - фиг разберешься что, где и почему виснет.
2) не каждый потенциальный заказчик решится пожертвовать своим BIOSом ради тест-драйва шустрой, но никому не известной и (прямо скажем) сыроватой новой EOS.
3) Есть ещё цинично-коммерческая сторона вопроса. Лицензия не позволяет закрывать код, но явно разрешает брать плату за консультации и техническую поддержку конечного продукта.
Прошивку PCI Extension ROM можно привязать к конкретной фишке в железе, и консультировать только легальных владельцев этого железа.
А с CoreBoot_payload такой фикс не пройдет. Пробивные дармоеды успеют хапнуть первыми, а тебе оставят только строчку в коллективном копирайте.
Ещё забыли про то, что проблематично самостоятельно сделать полноценную поддержку оборудования. Например, на современных матерях Gigabyte и других фирм используются хитрые системы управления электропитанием процессора, которыми управляет код SMM, зашитый в BIOS. В частности, он отвечает за переключение числа активных фаз преобразователя в зависимости от потребляемого тока. Ну и попробуй это сделать сам, если спецификации закрыты, а сама реализация может меняться от одной модели к другой (не говоря уже о том, что у разных производителей одна и та же идея реализуется по-разному, если говорить о тонкостях). В общем, BIOS -- зло, но на ПК это зло неизбежно.
Вот потому я люблю лицензию BSD - в любой момент можно закрыть и продолжать разработку. Старые версии, конечно будут доступны всем, но новые никто не сможет потребовать открыть.
"Многочисленные" - это поддержка не-ATA дисков и переключение в графический режим при запуске, что ли? 2 - это "много", что ли?art_zh wrote:сейчас ядро опирается на многочисленные BIOS-костыли
Ушёл к умным, знающим и культурным людям.
Я имею в виду не только эти явные опоры,- про них все знают.diamond wrote:"Многочисленные" - это поддержка не-ATA дисков и переключение в графический режим при запуске, что ли? 2 - это "много", что ли?art_zh wrote:сейчас ядро опирается на многочисленные BIOS-костыли
И даже не разную мелочевку вроде E820, про которую, похоже, уже даже автор запамятовал.
PCI BIOS, init_mtrr в memory.inc и еще кое-что, сейчас навскидку всего не перечислить. Но опять-таки, это явно вызываемые ядром элементы BIOS-сервиса. При большом желании их все можно вычислить и профиксить. К тому же, открытый код CoreBoot-аналогов этих функций только пойдет ядру на пользу.
А вот чего нельзя профиксить на 100% на всех платформах - неявные заморочки, которые обязательно выползут при замене BIOS на CoreBoot всвязи со спецификой оборудования и нетождественной инициализацией холодной системы. Только на хорошо документированном железе есть шанс когда-нибудь вычесать всех багов.
Ув. SII привел лишь один частный пример. Общая же картина такова:
- в принципе, на связке CoreBoot + KOS можно построить мощную встраиваемую систему с уникальными характеристками.
- но сложно.
- и работать она будет не на всех аппаратных платформах.
- гораздо меньшими усилиями можно добиться практически тех же результатов на базе BIOS - для любых чипсетов и материнок.
- почти теми же усилиями можно построить ещё более крутую ROM-KOS без BIOS и CoreBoot, с "холодной" инициализацией одной, отдельно взятой платформы.
Большим плюсом этих двух альтернативных решений была бы их независимость от "чужой" GPL-лицензии...
Евангелие от Иоанна: стих 1[/size]
Code: Select all
; В начале было Слово:
B32: mov ax, os_stack ; Selector for os
PCI BIOS по существу используется только для определения номера последней PCI-шины (и, естественно, для инициализации (в процессе POST) всего хозяйства PCI-мостов), но не в процессе работы. Для init_mtrr прямо в транке есть запасной вариант на случай, когда BIOS не инициализировала регистры MTRR. Аналогичный обход есть и вместо E820 (хотя там он несколько неэквивалентен, сканируя только до первой возможной "дыры"). Фразу "всего не перечислить" считаю отговоркой.art_zh wrote:И даже не разную мелочевку вроде E820, про которую, похоже, уже даже автор запамятовал.
PCI BIOS, init_mtrr в memory.inc и еще кое-что, сейчас навскидку всего не перечислить.
Собственно, наличие кучи действий BIOSа в SMM посреди работы основной системы есть неоспоримый факт. Меня возмущает, что вышеупомянутые вещи приписываются к "костылям" основного ядра, хотя это совершенно не так (за исключением, естественно, не-ATAшного int 13h и, возможно, ненативного int 10h). А то почитаешь разные темы на форуме - и складывается ощущение, что ядро просто целиком состоит из самых разнообразных костылей.
Ушёл к умным, знающим и культурным людям.
Мне почему-то кажется что многих этот вариант более заинтересует чем просто BIOS+KOS- почти теми же усилиями можно построить ещё более крутую ROM-KOS без BIOS и CoreBoot, с "холодной" инициализацией одной, отдельно взятой платформы.
Кстати libpayload из coreboot - BSD-лицензирован.
Но как упоминалось AMD по-максимуму старается открывать работу на низком уровне и присылает патчи для coreboot.
Intel предоставляет достаточно хорошую документацию (правда часто с ошибками, но лучше чем ничего).
Самая большая проблема с NVIDIA железом.
Зря вы BIOS к костылям относите, как будто ACPI не костыль ))) это такой костыль что система превращается в марионетку. ИМХО сделать систему не зависимую от вспомогательных сервисов утопично (ну конечно если вы не собираетесь изобретать новую платформу).
Вот еще полезная для изучения работы BIOS и работы без BIOS штука - http://git.linuxtogo.org/?p=kevin/seabios.git;a=summary
То есть open-source реализация стандартных сервисов BIOS
То есть open-source реализация стандартных сервисов BIOS
Вот инструкция по загрузке kolibri с coreboot (Писалось с учетом linux-системы)
Также ссылка на готовый образ для ленивых:
1. Скачать и собрать coreboot:
В меню выбираем Target -> QEMU, payload -> SeaBIOS (master) (пока только SeaBIOS)
меняем что хотим, и собираем командой
1a. Как вариант, возможно собрать SeaBIOS отдельно:
только в menuconfig надо выбрать опцию build for coreboot
Потом скопируем файл out/bios.bin.elf в каталог, где собираем coreboot, и в опции Payload в make menuconfig выбираем elf - указываем путь к файл bios.bin.elf
Вот что у меня получилось на выходе (я собирал образ для 4мбитной флешки)
То есть есть место для KolibrioOS Даже более чем достаточно!
2. Собираем QEMU, желательно последний, из гита
3. Загружаем образ видеобиоса: http://www.coreboot.org/images/0/0d/Vgabios-cirrus.zip
4. В каталог, где будем работать копируем файлы:
а) coreboot.rom из coreboot/build и переименовываем в bios.bin
б) vgabios-cirrus.bin из архива Vgabios-cirrus.zip
в) образ колибри (я проверял на исо, флоп тоже работает)
5. Запускаем:
Опция -L указывает на каталог с нашими биосами и образом колибри.
6. PROFIT!
7. Также возможно включить образ колибри в образ биоса:
Скачиваем kolibri.img
Упаковываем:
cbfstool находиться в каталоге coreboot/build
Проверим результат командой:
А потом так же переименовываем coreboot.rom в bios.bin и используем для загрузки
Точно так же возможно собрать все и для работы на реальном железе и прошить с помощью утилиты flashrom (http://www.flashrom.org) - справедливо только для поддерживаемого coreboot-ом железа, а также на свой страх и риск!
Готовые образы и конфиги, по которым собрано, прикрепляю - только добавить образ колибри и вуаля!
Дополнительно почитать про сборку можно здесь:
http://www.coreboot.org/Build_HOWTO
http://www.coreboot.org/SeaBIOS
Пишем отзывы, пожелания
Также ссылка на готовый образ для ленивых:
1. Скачать и собрать coreboot:
Code: Select all
svn co svn://coreboot.org/coreboot/trunk coreboot
cd coreboot
make menuconfig
меняем что хотим, и собираем командой
Code: Select all
make
Code: Select all
git clone git://git.seabios.org/seabios.git seabios
cd seabios
make menuconfig
make
Потом скопируем файл out/bios.bin.elf в каталог, где собираем coreboot, и в опции Payload в make menuconfig выбираем elf - указываем путь к файл bios.bin.elf
Вот что у меня получилось на выходе (я собирал образ для 4мбитной флешки)
Code: Select all
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
2. Собираем QEMU, желательно последний, из гита
3. Загружаем образ видеобиоса: http://www.coreboot.org/images/0/0d/Vgabios-cirrus.zip
4. В каталог, где будем работать копируем файлы:
а) coreboot.rom из coreboot/build и переименовываем в bios.bin
б) vgabios-cirrus.bin из архива Vgabios-cirrus.zip
в) образ колибри (я проверял на исо, флоп тоже работает)
5. Запускаем:
Code: Select all
qemu -L . -cdrom kolibri.iso -serial stdio
6. PROFIT!
7. Также возможно включить образ колибри в образ биоса:
Скачиваем kolibri.img
Упаковываем:
Code: Select all
lzma -zc kolibri.img > kolibri.img.lzma
./build/cbfstool coreboot.rom add kolibri.img.lzma floppyimg/Kolibri.lzma raw
Проверим результат командой:
Code: Select all
./build/cbfstool coreboot.rom print
Точно так же возможно собрать все и для работы на реальном железе и прошить с помощью утилиты flashrom (http://www.flashrom.org) - справедливо только для поддерживаемого coreboot-ом железа, а также на свой страх и риск!
Готовые образы и конфиги, по которым собрано, прикрепляю - только добавить образ колибри и вуаля!
Дополнительно почитать про сборку можно здесь:
http://www.coreboot.org/Build_HOWTO
http://www.coreboot.org/SeaBIOS
Пишем отзывы, пожелания
- Attachments
-
-
kolibri-coreboot.tar.gz (102.47 KiB)
- coreboot image + config files
Downloaded 490 times
-
Щас ковыряюсь и пробую выкинуть 16-битный код и загрузчик из ядра, а также пробую сделать из него elf, чтобы из coreboot грузиться напрямую.
Круто А что нужно сделать, чтобы eBox стал поддерживаемым coreboot-ом железом?XVilka wrote:Вот инструкция по загрузке kolibri с coreboot (Писалось с учетом linux-системы)
Точно так же возможно собрать все и для работы на реальном железе и прошить с помощью утилиты flashrom (http://www.flashrom.org) - справедливо только для поддерживаемого coreboot-ом железа, а также на свой страх и риск!
Пишем отзывы, пожелания
Найти человека, который будет готов портировать
И, желательно документы Memory Reference Code - как инициализировать память для Vortex
И, желательно документы Memory Reference Code - как инициализировать память для Vortex
А ты не готов? Могу подарить железку для опытовXVilka wrote:Найти человека, который будет готов портировать
И, желательно документы Memory Reference Code - как инициализировать память для Vortex
С документами сложнее, как ты уже понял. Но есть документ на процессор RDC, который имеет много общего.
Who is online
Users browsing this forum: No registered users and 20 guests