?

Log in

No account? Create an account
Koilbri box в Фантоме - проект выходного дня - dz

> Свежие записи
> Архив
> Друзья
> Личная информация
> DZ Online

Сентябрь 25, 2011


Previous Entry Поделиться Next Entry
11:47 pm - Koilbri box в Фантоме - проект выходного дня
Решил на выходных попробовать сделать в Фантоме поддержку исполняемого формата и API Колибри.

Если коротко - около 4 часов работы до запуска первого приложения:

Приложение Kolibri (Arcanoid) работает в ОС Фантом
«Приложение Kolibri (Arcanoid) работает в ОС Фантом» на Яндекс.Фотках

В сумме часов 6 потрачено, хочется, чтобы заработали и системные приложения Колибри тоже, но пока - не весь API реализован, так что много чего не работает.

Что получилось:

- грузим несжатые исполняемые файлы Колибри. При этом реально они могут вызывать оба API - основной (POSIX) и int 40 (Kolibri). На сдачу под Фантомом можно запускать Колибри-elf-ы. :)

(совсем на сдачу по окончании переноса ядра на арм получится армовский Колибри:)

- работает весь графический вывод (кроме режимов инверсии и некоторых мелочей), часть сервиса.
- написан файловый API, но пока не протестирован.

- вряд ли будут сделаны функции Колибри, которые лезут в порты и аппаратуру - хотя с uid == 0 - можно и их разрешить. (Поскольку процессы Колибри по сути - позиксные процессы, у них есть uid/gid/euid/etc...)

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


(24 комментария | Оставить комментарий)

Comments:


[User Picture]
From:rdia
Date:Сентябрь 25, 2011 09:33 pm
(Link)
Конкретно. А на подключение Wine у вас сколько времени ушло бы?
[User Picture]
From:dz
Date:Сентябрь 25, 2011 10:07 pm
(Link)
не-не-не... это разного порядка задачи. wine заметно сложнее, я думаю.

[User Picture]
From:spamsink
Date:Сентябрь 26, 2011 05:26 am
(Link)
Как оно работает? У тебя есть конвертер из нативного x86 в фантомовский байткод?
[User Picture]
From:rdia
Date:Сентябрь 26, 2011 05:46 am
(Link)
Я так понимаю, что в Фантоме микроядро, поверх которой крутятся уже 3 подсистемы - Phantom, POSIX и Kolibri. Типа как на NT.
[User Picture]
From:dz
Date:Сентябрь 26, 2011 08:44 am
(Link)
Ну - не так красиво - фактически ядро монолитное - но внутри эти компоненты, действительно, довольно обособлены. Колибри сделано как расширение позикс-подсистемы, там из сисколлов колибри вызываются те же workers, что и для юникс-сисколлов.

http://code.google.com/p/phantomuserland/source/browse/trunk/oldtree/kernel/phantom/i386/kolibri.c#806
[User Picture]
From:dz
Date:Сентябрь 26, 2011 08:39 am
(Link)
Нет, там есть параллельная позикс-подсистема.
[User Picture]
From:tnt23
Date:Сентябрь 26, 2011 06:31 am
(Link)
arKanoid!
[User Picture]
From:dz
Date:Сентябрь 26, 2011 08:39 am
(Link)
Это - к автору программы. :)
[User Picture]
From:SomeMen -Runswell-
Date:Сентябрь 26, 2011 10:03 am
(Link)
ссылка на форум колибри_ос:
http://board.kolibrios.org/viewtopic.php?f=7&t=1936&p=37917#p37917
[User Picture]
From:dz
Date:Сентябрь 26, 2011 12:30 pm
(Link)
Да. Я тоже не знаю, как на этот форум писать, так что кратко отвечу здесь:

- Сделал я это после того, как оценил количество прикладного кода под Колибри и проанализировал сложность API Колибри. Портирвать такое же количество прикладнухи в Фантом - займёт больше времени, чем сделать API. Мне кажется. Конечно, это всё - не нативный код, но - всё же - обжитость системе полезна.

- В силу некоторых особенностей файлового API Колибри приложения для этой ОС можно сделать персистентными достаточно несложно. Проще, чем позикс. Это был бы интересный эксперимент.

- реализован не весь API, да и не факт, что существующий API реализован правильно. Здесь было бы здорово, если бы у Колибри появились тест-приложения, которые проверяют правильность работы API - команда Колибри могла бы использовать их для регресс-тестирования, а я - для прогона тестов совместимости. (У Фантома такие тесты частично есть). Было бы крайне полезно также добавить во все вызовы код возврата, да и стандартизовать коды ошибок ОС.

- единственная проблема портировать Колибри внутри Фантома на АРМ - это ассемблерные приложения Колибри. Сишные портанутся на раз.

[User Picture]
From:Фома Паняев
Date:Сентябрь 26, 2011 10:37 am

Офигеть!!

(Link)

Эмуляция через int40? Очень большая работа, внушает.
Хотя на си, конечно, кодить легче, к тому же свои GUI-аналоги уже есть.
Только кроме GUI ведь есть еще операции с динамической и расшаренной памятью, загрузка библиотек, виртуальная DOS-машина... как все ЭТО эмулировать?

Может, легче запустить "настоящее" ядро Колибри, выделив ему 16Mb из адресного пространства Фантома? Полный бред конечно: будет конфликт страничной адресации. Хотя, в принципе PDE можно принудительно выгружать по какому-нибудь NMI... Тогда как быть с фреймбуфером экрана? Отдать весь экран Колибре (все меньше чем Иксы!) ?? вопросы, вопросы...

Распаковщик Колибри сидит глубоко в ядре. Выцарапать его оттуда конечно можно, только смысла особого я не вижу - неупакованные программы тоже очень маленькие, весь репозиторий компилится из исходников за 3-4 секунды. Бери и запускай любую.
[User Picture]
From:dz
Date:Сентябрь 26, 2011 12:35 pm

Re: Офигеть!!

(Link)
посмотрим - что-то реализовать несложно, что-то придётся отложить - пока я делаю системные вызовы по факту обращения к ним из программы. нереализованные при обращении ругаются в лог ядра.

настоящее ядро запустить сложнее, конечно.

распаковщик, конечно, нужен - я бы хотел, чтобы запускались именно бинарники. хотя сейчас я так и поступаю - качнул fasm и пересобираю программы, которые хочу попробовать. но вот doom, к примеру, я пересобрать не смог.

написал на форум Колибри кучу вопросов и предложений. :)

[User Picture]
From:growltress
Date:Сентябрь 26, 2011 03:54 pm
(Link)
Можно собрать самому, исходники тут: http://code.google.com/p/phantomuserland/source/checkout
Под линуксом точно собирается и работает, другое дело что не каждая версия (:
Смотреть build.sh и run/phantom.sh
Готовых для запуска бинарников на регулярной основе вроде нет.
[User Picture]
From:dz
Date:Сентябрь 26, 2011 07:05 pm
(Link)
cygwin

под ним на винде всё собирается точно так же
From:_cmeptb_
Date:Сентябрь 27, 2011 06:25 pm
(Link)
Говорил, же, что к колибри мы ещё вернёмся.
Вот вам и польза.
[User Picture]
From:dz
Date:Сентябрь 27, 2011 08:19 pm
(Link)
к разговору о том, надо ли писать на ассемблере я возвращаться не заинтересован.
а в написании ещё одного API, которое позволяет импортировать разумный объём прикладного кода одним махом - почему бы нет.
From:_cmeptb_
Date:Сентябрь 28, 2011 08:21 pm
(Link)
Насколько я помню - вопрос так не ставился.
Поинт был в том, что текущая реализация смысла не имеет и никому не пригодится.
[User Picture]
From:dz
Date:Сентябрь 28, 2011 10:11 pm
(Link)
:) (текущая реализация) системы. я использую приложения. :)
саму Колибри я даже не запускал ни разу. Надо, кстати, попробовать...
From:_cmeptb_
Date:Сентябрь 30, 2011 08:26 am
(Link)
пардон, не догнал. Я думал что речь идёт о колибри боксе внутри фантома
[User Picture]
From:dz
Date:Сентябрь 30, 2011 08:50 am
(Link)
Так и есть, но Ос колибри-то при этом не используется. Только приложения.
[User Picture]
From:erra
Date:Октябрь 3, 2011 07:29 pm

музыкальный офф-топег

(Link)
[User Picture]
From:dz
Date:Октябрь 4, 2011 11:13 am

Re: музыкальный офф-топег

(Link)
отлично! :)

> Go to Top
LiveJournal.com