> man operating_systems
Обновился сайт www.l4os.ru
После почти что годовалого перерыва обновился сайт www.l4os.ru .
В разделе downloads выложена новая сборка Хамелеона, добавлися раздел со скриншотами.

Отличия последней сборки от предыдущих:
  • Свежее микроядро L4 из CVS
  • сквозная нумерация системных вызовов
  • исправлены критические баги в файловой системе
  • на демонстрационной дискете добавлен портированный fsck.minix


[Прислал alman]
Roman I Khimov  в  Понедельник, 27 Август 2007, 11:55  |   Комментарии: 93  |  для печати

Комментарии
alman |27.08.2007 16:23
Комментарии: 58

Зарегистрирован: 28.10.2006 01:21

Разрешите мне подробнее рассказать о текущем состоянии и дальнейших планах развития Хамелеона.

В настоящее время я "завис" на двух вещах. Во перевых, это порт библиотеки ncurses. Точнее, портировать её удалось, а вот заставить работать пока нет. Ну мы то с вами знаем, как много открытого софта используют эту библиотеку. Т.ч. жду следующего посещения Музы чтобы закончить порт ncurses.

Второй проблемой, как ни странно, является загрузчик grub. Если внимательно посмотреть в момент загрузки, то можно увидеть что используется версия grub-0.90-os, но эта версия не поддерживает загрузку с CD. Загрузку с CD (stage2_eltorito) поддерживает grub-0.97. Однако, grub-0.97 почему перезаписывает несколько байт в сегменте кода микроядра.

Вот такие дела. Мне немного непонятно, почему разработчики Minix3 постят новости о каждой успешно портированной софтинке под свою платформу. В моем случае портирование есть не что иное, как реализация недостающих функций в libc. Например, так сложилось что на момент портирования gzip на Хамелеон, все необходимые функции уже были реализованы в libc, поэтому портирование свелось к исправлению Makefile на предмет кроссплатформенной компиляции, что заняло меньше часа. Именно поэтому я планирую в обозримом будущем зарелизить загрузочный ISO образ, на котором будет представлено всё портированное программное обеспечение.

Если внимательно посмотреть на скриншоты, то можно заметить что в дальнейших планах стоит портирование gcc и его окружения, а затем сборка Хамелеона из под Хамелеона. Мне кажется это логично.

Мне очень нравится Slackware, а процесс её установки есть чистый unixway. В планах развития Хамелеона стоит портирование утилиты dialog и написание инсталляционных скриптов. По сути, утилита dialog ждёт окончания портирования ncurses.

Следующим этапом будет "прикручивание" оригинального TCP/IP стека, который уже четыре года пылится в архивах.

В принципе, это roadmap на ближайший год. Хотя в душе надеюсь что удастся сделать больше.

Напоследок, хотелось бы покаяться перед Dmitrij D. Czarkoff, чья версия HTML дизайна сейчас используется. Пока на сайте нет упоминания о его участии. Дмитрий, извини, твой вклад не забыт и, рано или поздно, информация о твоём вкладе появится.

alman |28.08.2007 00:38
Комментарии: 58

Зарегистрирован: 28.10.2006 01:21

Ещё небольшое добавление к новости.
Только что выложил исходный код утилиты xambox.

Скачать можно здесь

cmp |28.08.2007 14:58
Комментарии: 55

Зарегистрирован: 18.04.2005 15:35

и что она делает?

alman |28.08.2007 18:59
Комментарии: 58

Зарегистрирован: 28.10.2006 01:21

В смысле xambox?
Да Вы в код загляните, там всего fork()/exec()/wait() и это гордо именуется псевдошеллом, поскольку нет встроенного скриптового языка.

А ещё она умеет вот так:

///////////////////////////////////////////////////////////////////////////////
// Callback's prototypes
//
int tcmdExit                ( int argc, char * argv[], char * envp[] );
int tcmdHelp                ( int argc, char * argv[], char * envp[] );
int tcmdReset                ( int argc, char * argv[], char * envp[] );    // reset consoel
int tcmdKillProcess            ( int argc, char * argv[], char * envp[] );
int tcmdMount                ( int argc, char * argv[], char * envp[] );
int tcmdUnmount                ( int argc, char * argv[], char * envp[] );
int tcmdChangeDir            ( int argc, char * argv[], char * envp[] );
int tcmdShowDirectory        ( int argc, char * argv[], char * envp[] );
int tcmdListDirectory        ( int argc, char * argv[], char * envp[] );
int tcmdChangeRootDirectory    ( int argc, char * argv[], char * envp[] );
int tcmdShowFile            ( int argc, char * argv[], char * envp[] );
int tcmdRemoveFile            ( int argc, char * argv[], char * envp[] );
int tcmdRemoveDirectory        ( int argc, char * argv[], char * envp[] );
int tcmdCreateDirectory        ( int argc, char * argv[], char * envp[] );
int tcmdMakeLink            ( int argc, char * argv[], char * envp[] );
int tcmdMoveFile            ( int argc, char * argv[], char * envp[] );
int tcmdDiskInformation        ( int argc, char * argv[], char * envp[] );
int tcmdChangeOwner            ( int argc, char * argv[], char * envp[] );
int tcmdFlushCaches            ( int argc, char * argv[], char * envp[] );
int tcmdMakeDirectory        ( int argc, char * argv[], char * envp[] );
int tcmdCopyFile            ( int argc, char * argv[], char * envp[] );
int tcmdSetEnvironment        ( int argc, char * argv[], char * envp[] );
int tcmdGetEnvironment        ( int argc, char * argv[], char * envp[] );
int tcmdUnsetEnvironment    ( int argc, char * argv[], char * envp[] );
int tcmdExec                ( int argc, char * argv[], char * envp[] );
int tcmdPwd                    ( int argc, char * argv[], char * envp[] );
int tcmdRun                    ( int argc, char * argv[], char * envp[] );
int tcmdShell                ( int argc, char * argv[], char * envp[] );
int tcmdEnv                    ( int argc, char * argv[], char * envp[] );
int tcmdDate                ( int argc, char * argv[], char * envp[] );
int tcmdForkProcess            ( int argc, char * argv[], char * envp[] );
int tcmdTouch                ( int argc, char * argv[], char * envp[] );
int tcmdDate                ( int argc, char * argv[], char * envp[] );

///////////////////////////////////////////////////////////////////////////////
// Callback's type definition
//
typedef struct typeCommandEntry
{
    const char        *    szCmd;
    int                    nLength;
    int                    (*fHandler)( int argc, char * argv[], char * envp[] );
    const char        *    szHelpString;
} typeCommandEntry;

///////////////////////////////////////////////////////////////////////////////
// Callback's array
//
static typeCommandEntry    ImplementedCommandList[] =
{
    { "kill",        0, tcmdKillProcess },
    { "reset",        0, tcmdReset },
    { "mount",        0, tcmdMount },
    { "umount",        0, tcmdUnmount },
    { "ls",            0, tcmdListDirectory },
    { "chroot",        0, tcmdChangeRootDirectory },
    { "cat",        0, tcmdShowFile },
    { "rm",            0, tcmdRemoveFile },
    { "rmdir",        0, tcmdRemoveDirectory },
    { "mkdir",        0, tcmdMakeDirectory },
    { "ln",            0, tcmdMakeLink },
    { "mv",            0, tcmdMoveFile },
    { "df",            0, tcmdDiskInformation },
    { "chown",        0, tcmdChangeOwner },
    { "sync",        0, tcmdFlushCaches },
    { "cp",            0, tcmdCopyFile },
    { "pwd",        0, tcmdPwd },
    { "xash",        0, tcmdShell },
    { "env",        0, tcmdEnv },
    { "date",        0, tcmdDate },
    { "touch",        0, tcmdTouch },
    { "help",        0, tcmdHelp },
};

static typeCommandEntry    BuiltinCommandList[] =
{
    { "exit",        0, tcmdExit },
    { "quit",        0, tcmdExit },
    { "help",        0, tcmdHelp },
    { "cd",            0, tcmdChangeDir },
    { "dir",        0, tcmdShowDirectory },
    { "sync",        0, tcmdFlushCaches },
    { "setenv",        0, tcmdSetEnvironment },
    { "getenv",        0, tcmdGetEnvironment },
    { "unsetenv",    0, tcmdUnsetEnvironment },
    { "exec",        0, tcmdExec },
    { "env",        0, tcmdEnv },
    { "reset",        0, tcmdReset },
    { "date",        0, tcmdDate },
    { "fork",        0, tcmdForkProcess },
};


alman |28.08.2007 19:01
Комментарии: 58

Зарегистрирован: 28.10.2006 01:21

extern L4_Word_t * env_size;

int tcmdEnv    ( int argc, char * argv[], char * envp[] )
{
    if( envp ) for( int i=0; environ[i]; i++ )
    {
        printf( "%s\n", environ[i]);
    }
    else
    {
        printf( "No environment set by exec process. env_size is %d on %p\n", *env_size, env_size );
    }
    return 0;
}


valerius |28.08.2007 20:59
Комментарии: 3

Зарегистрирован: 28.08.2007 20:31

2alman: "...Второй проблемой, как ни странно, является загрузчик grub. Если внимательно посмотреть в момент загрузки, то можно увидеть что используется версия grub-0.90-os, но эта версия не поддерживает загрузку с CD. Загрузку с CD (stage2_eltorito) поддерживает grub-0.97. Однако, grub-0.97 почему перезаписывает несколько байт в сегменте кода микроядра. ..."

-- а почему бы не попробовать патченный grub-0.97.os.3, котогрым пользуюсь я, или более новые .os.4 или .os.5 ? На странице автора порта Adam Lackorzynski есть ссылка для скачивания.

Страница автора патча: http://os.inf.tu-dresden.de/~adam/

Сами патчи: http://os.inf.tu-dresden.de/~adam/grub/0.97/

Эти патчи, по крайней мере, 3-ий, который у меня стоит, поддерживают загрузку с CD и все нововведения типа команды modaddr или переменных-макросов в конфиге

WBR,
Валерий

alman |29.08.2007 05:20
Комментарии: 58

Зарегистрирован: 28.10.2006 01:21

Эти патчи, по крайней мере, 3-ий, который у меня стоит, поддерживают загрузку с CD и все нововведения типа команды modaddr или переменных-макросов в конфиге


Спасибо. Вроде бы получилось.

Hmmm |29.08.2007 15:13
Комментарии: 45

Зарегистрирован: 09.08.2006 11:29

Я извиняюсь может где протупил, а исходники этой системы где взять можно?

k0l0b0k |29.08.2007 16:43
Комментарии: 18

Зарегистрирован: 07.04.2005 14:48

Господа, меня тут такой вопрос волнует, вот как только идет разговор о новой ОС, тут же всает вопрос о драйверах... А можно ли реализовать (в Xameleon к примеру) окружение, в котором смогли бы работать свободные/проприетарные драйвера для Linux??...

alman |30.08.2007 00:55
Комментарии: 58

Зарегистрирован: 28.10.2006 01:21

Я извиняюсь может где протупил, а исходники этой системы где взять можно?


В разделе downloads есть исходники одного драйвера - виртуального диска. Его даже можно собрать.

Если на меня наехать, то можно получиь исходники floppy драйвера, поскольку он взят из FreeDos и под лицензией GNU.

alman |30.08.2007 01:24
Комментарии: 58

Зарегистрирован: 28.10.2006 01:21

Господа, меня тут такой вопрос волнует, вот как только идет разговор о новой ОС, тут же всает вопрос о драйверах... А можно ли реализовать (в Xameleon к примеру) окружение, в котором смогли бы работать свободные/проприетарные драйвера для Linux??...


И да и нет. Можно, но это не самый легкий путь...
Наверное я выложу драйвер флоппи, чтобы можно было наглядно видеть, как мало изменений потребовалось, чтобы заставить его работать. К примеру, если сравнить floppy драйвер с драйвером виртуального диска, то можно увидеть что у них одинаковый диспетчер сообщений. Единственное, что пришлось переделать, это событийную схему оригинального драйвера, на поточную. Попутно красиво решилась проблема с остановкой мотора - в оригинальном драйвере для этого использовалась сложная схема с таймером и каллбэками, в Хамелеоновской версии мотор флоппи останавливается автоматически, если за определённый интервал времени ни пришло ни одно сообщение. Т.е. для свободных драйверов использовать эмуляцию смысла нет, поскольку при портировании они получаются более "правильными" с точки зрения архитектуры. Это было IMHO.

Возможно имеет смысл реализовать слой эмуляции для проприетарных драйверов. Насколько мне известно, в Linux есть какой-то пакет, позволяющий гонять в эмуляции некоторые драйвера Windows.

Что касается конкретного ответа на вопрос, можно ли сформировать окружение для проприетарных драйверов, то на него я смогу ответить только после написания драйвера сетевой карты и драйвера USB.

Кстати, есть ещё один довод против использования проприетарных драйверов от Linux. Бедные NVidia и ATI уже запарились выпускать новые версии к каждому патчу на ядро. Возможно я утрирую ситуацию и сейчас дела намного лучше, но зачем нужен такой геморрой на голову, чтобы с каждой версией Linux переписывать слой эмуляции? Тогда уж лучше сразу писать обёртку для Windows драйверов.

alman |30.08.2007 03:17
Комментарии: 58

Зарегистрирован: 28.10.2006 01:21

xameleon_demo.src.tar.gz

содержит исходный код драйвера виртуального диска, драйвера контроллера гибких дисков (floppy) и исходный код утилиты xash. В состав инструментария также входят статически скомпилированные библиотеки, заголовочные файлы и скрипты сборки. Примеры драйверов демонстрируют код работы с блочными устройствами, утилита xambox демонстрирует простейшую прикладную задачу.

alman |30.08.2007 03:36
Комментарии: 58

Зарегистрирован: 28.10.2006 01:21

Я извиняюсь может где протупил, а исходники этой системы где взять можно?


Исходники консоли можно взять на странице проекта l4-console на Savannah.nongnu.org

Это очень старая версия - с неё начиналось моё изучение L4. Версия, которую можно найти пойдя по ссылке, совместима с L4 Fiasco.

Правда, в хамелеоновском vty.drv осталось не так уж и много от версии для Fiasco. И лицензия поменялась с GNU на Xameleon. Надеюсь, FSF не запрещает авторам менять лицензии.

Hmmm |02.09.2007 01:35
Комментарии: 45

Зарегистрирован: 09.08.2006 11:29

Консоль, драйверы, это я конечно нашел. Но сама система то из чего компилируется и чем? Я так понял что пишут ее на визуальщине, это правда? И исходники ядра и прочего где посмотреть можно? Ну чтобы можно было самому инсталляцию собрать.

alman |03.09.2007 07:11
Комментарии: 58

Зарегистрирован: 28.10.2006 01:21

система компилируется на Slackware 9,
gcc-3.2.2
ld-2.13.90.0.18

Редактор MS VisualStudio 2005 используется для правки исходников.

Исходники микроядра L4 http://l4ka.org/projects/pistachio/download.php,
там написано как скачать из CVS.

Исходники модулей Supervisor и FileSystem пока не распространяются.

alman |03.09.2007 08:34
Комментарии: 58

Зарегистрирован: 28.10.2006 01:21


Взгляд со стороны на систему Хамелеон.

Честно говоря, был очень приятно удивлён, когда автор ресурса kernel.kz потестировал систему и опубликовал результаты на своём сайте.

ossadchy |11.10.2007 10:43
Комментарии: 58

Зарегистрирован: 10.10.2007 22:55

Редактор MS VisualStudio 2005 используется для правки исходников.
Круто Чем emacs плох, в крайнем случае есть KATE всякие ну или mcedit.

ИМХО: система разрабатываема ЗАКРЫТО да еще и одним человеком -- не имеет будущего. Надо открывать все исходники

А вот L4 -- действительно удивительное ядро -- при своей простоте(да и благодаря ей), оно произвело революцию в мире микроядер.

alman |11.10.2007 18:21
Комментарии: 58

Зарегистрирован: 28.10.2006 01:21

Круто Чем emacs плох, в крайнем случае есть KATE всякие ну или mcedit.

mcedit тоже пользую. Иксов у меня нет, а Visual Studio лицензионный - использую его по основной работе. В принципе, да хоть vi, на качество кода это не сильно отражается.

ИМХО: система разрабатываема ЗАКРЫТО да еще и одним человеком -- не имеет будущего. Надо открывать все исходники

Все исходники открывать не буду. Что не открою, опишу документации. Вот, подумываю об открытии ещё некоторых частей под лицензией Xameleon.

Насчёт одного человека... Да, это боль. Даже посоветоваться не с кем.

Впрочем, если кто-нить желает присоединится, то правила изменились. На сайте проекта выложены примеры. Соответсвенно, чтобы стать одним из разработчиков, необходимо или улучшить любой из примеров или портировать какую либо программу при помощи libc, которая поставляется с демонстрационными примерами.

Хотя, если быть до конца честным, то лучше подождать четвёртой публичной сборки, прежде чем принимать какие-то решения.

А вот L4 -- действительно удивительное ядро -- при своей простоте(да и благодаря ей), оно произвело революцию в мире микроядер.

Кто бы спорил. L4 - это красиво.

ossadchy |11.10.2007 20:30
Комментарии: 58

Зарегистрирован: 10.10.2007 22:55

Все исходники открывать не буду. Что не открою, опишу документации. Вот, подумываю об открытии ещё некоторых частей под лицензией Xameleon


Интересно: что сподвигает прятать исходники? Ведь, разве, не лучше чтоб "детище" стало действительно востребованным и обрело формы законченного продукта?

alman |11.10.2007 22:51
Комментарии: 58

Зарегистрирован: 28.10.2006 01:21

Интересно: что сподвигает прятать исходники?


Я воспринимаю проект как стартап. Если он разовьётся во что-то большее, то не исключен интерес инвесторов к проекту.

Между тем, исходники вторичны по сравнению с дизайном архитектуры системы. Информацию о дизайне я не скрываю. Ничто не мешает, например Вам, написать свой сервис поверх L4.

При этом, Xameleon, почти наверняка, автоматически будет поддерживать этот сервис.

При этом, у Вас десять раз возникнет желание использовать уже готовые сервисы, например файловую систему.

При этом, даже сейчас часть модулей на демонстрационном диске независима. Т.е. готовые системы можно собирать из кубиков.

Понимаете к чему я клоню?
Ну а то, под какой лицензией будет Ваш кубик, это уже решать исключительно Вам.

Ведь, разве, не лучше чтоб "детище" стало действительно востребованным и обрело формы законченного продукта?


Это быстрый способ, но не лучший. Если стартап провалится, то я постараюсь извлечь из него максимальную пользу, написав учебник по L4 с примерами.



Комментарии доступны только авторизованным пользователям, авторизуйтесь или зарегистрируйтесь на сайте здесь

© OSRC.info, 2004-2010.
Авторские права на любые материалы, авторы которых явно указаны, принадлежат их авторам. По вопросам публикации таких материалов обращайтесь к авторам.
Авторские права на любые другие материалы принадлежат OSRC.info.
Сайт является помещением библиотеки. Копирование, сохранение на жестком диске или иной способ сохранения произведений осуществляются пользователями на свой риск.
При использовании материалов сайта ссылка на OSRC.info обязательна.