Page 2 of 7

Re: Opera в BIOSе

Posted: Sat May 15, 2010 4:09 pm
by XVilka
Вот теперь мы вместе с coreboot более или менее официально: Possible future payloads

Re: KolibriOS в BIOS

Posted: Thu May 20, 2010 12:33 pm
by art_zh
XVilka
Ещё раз: CoreBoot+Колибри как конечная цель - это замечательно.

Но есть три серьезных соображения против:

1) сейчас ядро опирается на многочисленные BIOS-костыли. CoreBoot выбьет их все разом - фиг разберешься что, где и почему виснет.

2) не каждый потенциальный заказчик решится пожертвовать своим BIOSом ради тест-драйва шустрой, но никому не известной и (прямо скажем) сыроватой новой EOS.

3) Есть ещё цинично-коммерческая сторона вопроса. Лицензия не позволяет закрывать код, но явно разрешает брать плату за консультации и техническую поддержку конечного продукта.
Прошивку PCI Extension ROM можно привязать к конкретной фишке в железе, и консультировать только легальных владельцев этого железа.
А с CoreBoot_payload такой фикс не пройдет. Пробивные дармоеды успеют хапнуть первыми, а тебе оставят только строчку в коллективном копирайте.

Re: KolibriOS в BIOS

Posted: Thu May 20, 2010 1:48 pm
by SII
Ещё забыли про то, что проблематично самостоятельно сделать полноценную поддержку оборудования. Например, на современных матерях Gigabyte и других фирм используются хитрые системы управления электропитанием процессора, которыми управляет код SMM, зашитый в BIOS. В частности, он отвечает за переключение числа активных фаз преобразователя в зависимости от потребляемого тока. Ну и попробуй это сделать сам, если спецификации закрыты, а сама реализация может меняться от одной модели к другой (не говоря уже о том, что у разных производителей одна и та же идея реализуется по-разному, если говорить о тонкостях). В общем, BIOS -- зло, но на ПК это зло неизбежно.

Re: KolibriOS в BIOS

Posted: Thu May 20, 2010 1:57 pm
by Mario
Вот потому я люблю лицензию BSD - в любой момент можно закрыть и продолжать разработку. Старые версии, конечно будут доступны всем, но новые никто не сможет потребовать открыть.

Re: KolibriOS в BIOS

Posted: Fri May 21, 2010 1:49 pm
by diamond
art_zh wrote:сейчас ядро опирается на многочисленные BIOS-костыли
"Многочисленные" - это поддержка не-ATA дисков и переключение в графический режим при запуске, что ли? 2 - это "много", что ли?

Re: KolibriOS в BIOS

Posted: Fri May 21, 2010 4:24 pm
by art_zh
diamond wrote:
art_zh wrote:сейчас ядро опирается на многочисленные BIOS-костыли
"Многочисленные" - это поддержка не-ATA дисков и переключение в графический режим при запуске, что ли? 2 - это "много", что ли?
Я имею в виду не только эти явные опоры,- про них все знают.
И даже не разную мелочевку вроде E820, про которую, похоже, уже даже автор запамятовал.
PCI BIOS, init_mtrr в memory.inc и еще кое-что, сейчас навскидку всего не перечислить. Но опять-таки, это явно вызываемые ядром элементы BIOS-сервиса. При большом желании их все можно вычислить и профиксить. К тому же, открытый код CoreBoot-аналогов этих функций только пойдет ядру на пользу.

А вот чего нельзя профиксить на 100% на всех платформах - неявные заморочки, которые обязательно выползут при замене BIOS на CoreBoot всвязи со спецификой оборудования и нетождественной инициализацией холодной системы. Только на хорошо документированном железе есть шанс когда-нибудь вычесать всех багов.

Ув. SII привел лишь один частный пример. Общая же картина такова:

- в принципе, на связке CoreBoot + KOS можно построить мощную встраиваемую систему с уникальными характеристками.
- но сложно.
- и работать она будет не на всех аппаратных платформах.
- гораздо меньшими усилиями можно добиться практически тех же результатов на базе BIOS - для любых чипсетов и материнок.
- почти теми же усилиями можно построить ещё более крутую ROM-KOS без BIOS и CoreBoot, с "холодной" инициализацией одной, отдельно взятой платформы.

Большим плюсом этих двух альтернативных решений была бы их независимость от "чужой" GPL-лицензии...

Re: KolibriOS в BIOS

Posted: Fri May 21, 2010 5:04 pm
by diamond
art_zh wrote:И даже не разную мелочевку вроде E820, про которую, похоже, уже даже автор запамятовал.
PCI BIOS, init_mtrr в memory.inc и еще кое-что, сейчас навскидку всего не перечислить.
PCI BIOS по существу используется только для определения номера последней PCI-шины (и, естественно, для инициализации (в процессе POST) всего хозяйства PCI-мостов), но не в процессе работы. Для init_mtrr прямо в транке есть запасной вариант на случай, когда BIOS не инициализировала регистры MTRR. Аналогичный обход есть и вместо E820 (хотя там он несколько неэквивалентен, сканируя только до первой возможной "дыры"). Фразу "всего не перечислить" считаю отговоркой.
Собственно, наличие кучи действий BIOSа в SMM посреди работы основной системы есть неоспоримый факт. Меня возмущает, что вышеупомянутые вещи приписываются к "костылям" основного ядра, хотя это совершенно не так (за исключением, естественно, не-ATAшного int 13h и, возможно, ненативного int 10h). А то почитаешь разные темы на форуме - и складывается ощущение, что ядро просто целиком состоит из самых разнообразных костылей.

Re: KolibriOS в BIOS

Posted: Fri May 21, 2010 10:47 pm
by XVilka
- почти теми же усилиями можно построить ещё более крутую ROM-KOS без BIOS и CoreBoot, с "холодной" инициализацией одной, отдельно взятой платформы.
Мне почему-то кажется что многих этот вариант более заинтересует чем просто BIOS+KOS :)
Кстати libpayload из coreboot - BSD-лицензирован.

Но как упоминалось AMD по-максимуму старается открывать работу на низком уровне и присылает патчи для coreboot.
Intel предоставляет достаточно хорошую документацию (правда часто с ошибками, но лучше чем ничего).

Самая большая проблема с NVIDIA железом.

Re: KolibriOS в BIOS

Posted: Mon May 24, 2010 7:56 pm
by Ghost
Зря вы BIOS к костылям относите, как будто ACPI не костыль ))) это такой костыль что система превращается в марионетку. ИМХО сделать систему не зависимую от вспомогательных сервисов утопично (ну конечно если вы не собираетесь изобретать новую платформу).

Re: KolibriOS в BIOS

Posted: Mon Jun 28, 2010 1:25 am
by XVilka
Вот еще полезная для изучения работы BIOS и работы без BIOS штука - http://git.linuxtogo.org/?p=kevin/seabios.git;a=summary

То есть open-source реализация стандартных сервисов BIOS

Re: KolibriOS в BIOS

Posted: Wed Apr 27, 2011 4:44 am
by XVilka
Вот инструкция по загрузке kolibri с coreboot (Писалось с учетом linux-системы)
Также ссылка на готовый образ для ленивых:

1. Скачать и собрать coreboot:

Code: Select all

svn co svn://coreboot.org/coreboot/trunk coreboot
cd coreboot
make menuconfig
В меню выбираем Target -> QEMU, payload -> SeaBIOS (master) (пока только SeaBIOS)
меняем что хотим, и собираем командой

Code: Select all

make
1a. Как вариант, возможно собрать SeaBIOS отдельно:

Code: Select all

git clone git://git.seabios.org/seabios.git seabios
cd seabios
make menuconfig
make
только в menuconfig надо выбрать опцию build for coreboot
Потом скопируем файл 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
То есть есть место для 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. Запускаем:

Code: Select all

qemu -L . -cdrom kolibri.iso -serial stdio
Опция -L указывает на каталог с нашими биосами и образом колибри.
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
cbfstool находиться в каталоге coreboot/build
Проверим результат командой:

Code: Select all

./build/cbfstool coreboot.rom print
А потом так же переименовываем coreboot.rom в bios.bin и используем для загрузки

Точно так же возможно собрать все и для работы на реальном железе и прошить с помощью утилиты flashrom (http://www.flashrom.org) - справедливо только для поддерживаемого coreboot-ом железа, а также на свой страх и риск!

Готовые образы и конфиги, по которым собрано, прикрепляю - только добавить образ колибри и вуаля!
Дополнительно почитать про сборку можно здесь:

http://www.coreboot.org/Build_HOWTO
http://www.coreboot.org/SeaBIOS


Пишем отзывы, пожелания :)

Re: KolibriOS в BIOS

Posted: Wed Apr 27, 2011 7:06 am
by XVilka
Щас ковыряюсь и пробую выкинуть 16-битный код и загрузчик из ядра, а также пробую сделать из него elf, чтобы из coreboot грузиться напрямую.

Re: KolibriOS в BIOS

Posted: Wed Apr 27, 2011 10:43 am
by yogev_ezra
XVilka wrote:Вот инструкция по загрузке kolibri с coreboot (Писалось с учетом linux-системы)
Точно так же возможно собрать все и для работы на реальном железе и прошить с помощью утилиты flashrom (http://www.flashrom.org) - справедливо только для поддерживаемого coreboot-ом железа, а также на свой страх и риск!
Пишем отзывы, пожелания :)
Круто 8) А что нужно сделать, чтобы eBox стал поддерживаемым coreboot-ом железом? :wink:

Re: KolibriOS в BIOS

Posted: Wed Apr 27, 2011 11:00 am
by XVilka
Найти человека, который будет готов портировать :)
И, желательно документы Memory Reference Code - как инициализировать память для Vortex

Re: KolibriOS в BIOS

Posted: Wed Apr 27, 2011 11:06 am
by yogev_ezra
XVilka wrote:Найти человека, который будет готов портировать :)
И, желательно документы Memory Reference Code - как инициализировать память для Vortex
А ты не готов? :wink: Могу подарить железку для опытов 8)
С документами сложнее, как ты уже понял. Но есть документ на процессор RDC, который имеет много общего.