RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : А вот вопрос, однако...


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : valerius
To : Юрий Пронякин
Subj : А вот вопрос, однако...

> > Глупость -- не глупость, а народ хочет сохранения возможности юзать старые драйверы, а не ждать, пока будут написаны новые. Поэтому надо придумать, как с наименьшими потерями это можно сделать.
>
> И это говорит человек, ещё несколько дрей назад всех убеждавший, что микроядро даст возможность использовать линуксные драйверы.

Задача поставлена _на_данный_момент_ -- не переписать полностью систему, сделав для всех подсистем OpenSource-аналоги, а написать только ядро, чтобы на это ядро можно было заменить текущее ядро, и чтобы при этом все, что над ядром -- IBM-овские PM, WPS; приложения -- продолжало работать. Желательно также, чтобы продолжали работать и MMOS2, стек TCP/IP, LanServer и прочие подсистемы. Задача на мой взгляд, разумная. (Только пока непонятно, реализуемая ли на микроядре. Но подумать о возможности реализации этого все же стОит.)

В рамках проекта osFree (который мне ближе всего, и которому я пытаюсь помогать) задача стоит другая, рассчитанная на более долговременную перспективу -- заменить эти подсистемы, насколько возможно, их OpenSource аналогами. В том числе, и ядро. В качестве основы ядра выбрано L4. Для нового ядра -- сразу новая собственная подсистема драйверов, плюс поддержка Linux-драйверов. Задачи поддержки старых 16-разрядных (и 32-разрядных тоже) драйверов OS/2 не ставилось. По идее, они вообще не нужны, т.к., будут со временем написаны 32-разрядные драйвера для новой модели под новое ядро, а пока этих новых драйверов еще мало -- можно пользоваться линуксовыми драйверами.

То есть, и новая 32-разрядная модель драйверов для нового ядра, и линуксовые драйвера никуда не денутся, никто от них отказываться не собирается. Но если писать ядро, надо чтобы им пользовались. Неизбежно будет переходный период, когда драйверов под новую 32-бит модель будет мало, и придется пользоваться линуксовыми драйверами. Лично я ничего плохого в этом не вижу. Но большинство почему-то считает, что раз драйвера линуксовые и исполняются ядром линуха, а не непосредственно ядром OS/2, то это "ненативно", "идеологически чуждо" и прочее. Это конечно, просто религиозный предрассудок, но... Если мы пишем ядро, то хочется, чтобы этим ядром пользовались. А не говорили -- "фу, линуксовая хрень". Поэтому следует подумать, как учесть требования трудящихся, если это конечно, возможно.

Хочется, чтобы и волки были сыты, и овцы целы. (Не поймите превратно -- чтобы и ядро было продвинутое, на микроядерной технологии с возможностью параллельных API (aka OS personalities aka, в терминологии windows, "подсистемы"), и чтобы user base не уменьшалась).

> > Какое лицензионное соглашение? К OS/2? А нельзя что дизассемблировать? Ядро? Или в том числе, драйверы?
>
> Лицензионное соглашение распространяется на все файлы, входящие в состав OS/2.
>
> > Вообще, имхо это только теоретически нельзя "disassemble, decompile, reverse-engineer" и прочая. А реально -- вон куча бинарных патчей, например, Даниэла патчила PCMCIA socket services -- это нельзя сделать без использования дизассемблера. Так что, на практике, я думаю, IBM просто будет смотреть сквозь пальцы на это...
>

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

и даже, утилита patch.exe для бинарных патчей штатно поставляется с системой ;)

> Но! Есть же ещё одна сторона темы легальности: переделанное таким образом ядро всё равно останется собственностью IBM, и распространять его бесплатно будет невозможно. Для использования каждой копии у IBM нужно будет покупать лицензию на OS/2. То есть сохраняется полная зависимость от IBM. И что мы будем делать, если IBM полностью прекратит продажу лицензий? Плакаться о впустую потраченных усилиях?
>

Да, похоже так -- для использования ядра OS/2 надо иметь лицензию на копию OS/2 и распространять бесплатно его будет нельзя. Но... Использовать ядро, полученное модификацией исходного IBM'овского ядра OS/2, предполагается именно в _переходный_ период, пока opensource-аналогов большинства подсистем нету. То есть, у нас будет новое ядро OS/2, а подсистемы будут продолжаться использоваться IBM'овские. То есть, копия OS/2 будет в данных условиях у каждого. Просто пользователь будет брать OS/2 или eCS и заменять ядро на наше. А ядро OS/2 (в том числе, паравиртуализованное) можно будет распространять вместе с копией eCS,
оно будет позволять запускать eCS на гипервизорах или для поддержки 16 битных драйверов в виртуальной машине одновременно с нашим новым ядром -- то есть, пока новое ядро имеет мало своих собственных драйверов и находится в разработке, можно запускать старое ядро в другой вирт. машине и гонять на нем старые 16-бит драйверы. Или, если нет религиозных предубеждений -- в третьей вирт. машине можно гонять линуксовые или виндовые драйвера. Еще один плюс: виртуальная машина со старым ядром и копией eCS -- это будет рабочая система. А вторая VM может использоваться для отладки нового ядра. Причем, трапы нового ядра не заставляют перезагружаться -- просто перезапускаем виртуальную машину ;) (Так, если я правльно понял, можно уже давно делать в GNU HURD -- возможность отлаживать новые ядро или драйвер, не выгружая старого ;))

> >> Это первое. А второе - убиение времени. Результата не будет, потому как и 1 мегабайт ассемблера переварить крайне сложно. Годы потраченные на то, чтобы из дизассемблированного исходника что-то собиралось. А баги в этом собранном могут быть редкой красоты. Оно вам надо?
> >
> > Ну конечно, времени на это придется потратить немало... А вообще, я же не собираюсь прямо сейчас этим заняться -- Надо обдумать варианты, и может быть, найдется более хороший вариант.
>
> ЭТОТ вариант заведомо можно не рассматривать.
>

Подумать все же, имхо, стОит. Все-таки, важно чтобы в переходный период наше ядро использовалось как можно большим числом осевиков, тестировалось, исправлялись ошибки...

> > Например, если реализацию интерфейсов ядра -- DevHelps, KEE, очереди request packets и прочее, что требуют драйверы -- реализовать самим в своем новом ядре, а вот как быть с драйверами?
>
> Какими драйверами? "Назовите поимённо!"
>

Драйвера стека TCP/IP, MMOS/2 (dll-и из MMOS/2 можно будет сразу использовать, если будет бинарная совместимость с LX-форматом, а вот те несколько драйверов, от которых зависит MMOS/2 -- можно конечно, переписать под новую модель -- в качестве справочника можно использовать сорцы MMOS/2 из исходников мерлина -- там есть сорцы всех этих драйверов, кроме midi.sys), LanServer, поддержка NDIS-драйверов (IBMCOM) и протоколов, DANIS506... да много разных. DANIS506 и стек TCPIP-32 -- битные, а практически все остальные -- 16 бит.

> > Может быть, как и с приложениями, можно придумать некий конвертер? Или набор скриптов, автоматизирующий каким-то образом "причесывание" дизассемблированных драйверов? В общем, подумать надо -- может быть выход найдется...
>
> Практически все используемые ныне драйверы либо присутствуют в DDK, либо самописные.
>

А стек TCPIP? Его вроде, в тулките нема. А USB-стек, PCMCIA-стек? -- возможно, в DDK они есть -- не проверял, но вот USB стек там очень старый -- Chris Wohlgemuth делал cwusbmsd.add на основе исходников ddk, а много флешек он не понимает :( Потом, как быть с самописными -- многие аффторы уже мигрировали с OS/2 и им уже не до переписи драйверов под новую модель, и не факт что они отдадут исходники :(


Mon 18 Jun 2007 17:40 Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.7.10) Gecko/2005




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.