среда, 24 декабря 2008 г.

Ссылка: Inferno Programming With Limbo

Inferno Programming With Limbo (pdf, 27.4Мб) - англоязычная книга о разработке приложений для Inferno. Описание языка Limbo и стандартных модулей, разработка встроенных модулей на языке Си, ввод/вывод, потоки, каналы, протокол Styx, сетевые и графические приложения, криптография. Исчерпывающее руководство по программированию в среде Inferno.

вторник, 23 декабря 2008 г.

Ссылка: описание ядра Plan9

Notes on the Plan 9 3rd edition Kernel Source (pdf, 2Мб)
Описание архитектуры ядра Plan9 третьей редакции. Большая часть информации актуальна и для Inferno.

Ссылка: отличный источник информации об Inferno

Масса документации. Полное описание операционной системы, языка Limbo, виртуальной машины Dis и протокола Styx, исходные тексты примеров. На английском, но в очень доступной форме.
Страничка датируется 1998-ым годом и описывает Inferno 1.0, но информация актуальна и сейчас.

Inferno в Linux и FreeBSD. Продолжение

Описывая установку Inferno в предыдущем посте я забыл об одной важной детали. Дело в том, что из репозитория, расположенного на GoogleCode, удалены некоторые не вполне свободные шрифты, принадлежащие уже мертвой компании Lucent. В принципе приложения Inferno вполне сносно работают и без них, но дабы избежать постоянного лицезрения окошка, сообщающего об ошибке загрузки шрифта и увидеть качественные сглаженные шрифты в браузере charon, мы возьмем их из официальной версии, распространяемой компанией Vita Nouva. Для этого выкачаем четвертую редакцию Inferno во временный каталог и скопируем нужные шрифты в каталог ~/inferno/fonts:

$ mkdir /tmp/inferno
$ cd /tmp/inferno
$ wget http://www.vitanuova.com/dist/4e/20071003/inferno.tgz
$ wget http://www.vitanuova.com/dist/4e/20071003/`uname`.tgz
$ tar xzf inferno.tgz
$ tar xzf `uname`.tgz
$ sh install/`uname`-386.sh /tmp/inferno/
$ cp -r fonts/{lucida,lucidasans,lucm,pelm,LICENCE} ~/inferno/fonts/
$ rm -rf /tmp/inferno

Инструкция взята из статьи Установка OS Inferno New Edition.
В ней же детально рассказано как установить срез Inferno с GoogleCode в Gentoo/Ubuntu Linux, MacOS X и Windows XP (обратите внимание, что "там" описан несколько иной и менее удобный вариант, когда система ставится в /usr/inferno, а для ее запуска создается специальный пользователь).

воскресенье, 21 декабря 2008 г.

Устанавливаем Inferno в Linux и FreeBSD

Существует два способа установки Inferno в гостевом режиме. Первый заключается в скачивании четвертой редакции ОС с сайта Vita Nouva, а второй - в получении наисвежайшего среза SVN-дерева с GoogleCode. Ввиду того, что со времени выхода четвертой редакции, в код ОС было добавлено несколько полезных измений и багфиксов, мы рассмотрим только второй вариант.

Итак, мы будем устанавливать Inferno в каталог /home/ваш_логин/inferno и для выполнения этой операции нам понадобятся система контроля версий Subversion и компилятор GCC.

Для начала получим исходные тексты ОС:

$ EMUROOT="/home/$USER/inferno"
$ mkdir ~/svn
$ cd ~/svn
$ svn checkout http://inferno-os.googlecode.com/svn/trunk/ inferno-os-read-only
$ svn export inferno-os-read-only $EMUROOT

И отконфигурируем систему сборки:

$ cd $EMUROOT
$ vim mkconfig

Заменям строку 'ROOT=/usr/inferno' на 'ROOT=/home/ваш_логин/inferno', строку 'SYSHOST=Plan9' на 'SYSHOST=FreeBSD' или 'SYSHOST=Linux' в зависти от вашей ОС, раскомментируем строку '#OBJTYPE=386' и комментируем 'OBJTYPE=$objtype'.

Теперь компилируем утилиту mk, необходимую для сборки ОС:

$ makemk.sh

И включаем место ее расположения в пути поиска коммандного интерпритатора:

$ PATH="$EMUROOT/`uname`/386/bin:$PATH"

Наконец, собираем Inferno:

$ mk install clean

И создаем пользователя:

$ cp usr/inferno usr/$USER

Inferno готова к работе. Осталось только создать специальный скрипт, который облегчит ее запуск:

$ mkdir ~/bin
$ vim ~/bin/inferno

Помещаем в файл следующие строки:

#!/bin/sh
OS=`uname`
ARCH="386"
EMUROOT="/home/${USER}/inferno"
RES="800x600"
COLCHAN="r8g8b8"
COMMAND="wm/wm"
$EMUROOT/${OS}/${ARCH}/bin/emu -r${EMUROOT} -g${RES} -C${COLCHAN} $COMMAND

Даем ему права на исполнение и помещаем каталог ~/bin в пути поиска:

$ chmod +x ~/bin/inferno
$ echo 'export PATH="~/bin:$PATH"' >> ~/.profile

Все, теперь можете запустить Inferno:

$ inferno

Если Вы не хотите, чтобы Inferno загружалась в режиме командной строки, просто закомментируйте строку 'COMMAND="wm/wm"'.

Нужна ли Вам Inferno

Если вы не поленились прочитать хотя бы 1 статью из приведеных в предыдущем посте источников, то наверняка захотели установить эту чудную операционную систему на свой компьютер.

Сразу оговорюсь, Inferno, в своем нынешнем состоянии, на полноценную настольную ОС, мягко говоря, не тянет. Скудная поддержка оборудования, очень ограниченный набор ПО, по этим параметрам Inferno отстала от мира лет на 10 как минимум. Сегодняшняя Inferno годится разве что на роль второй ОС для смартфона, возможности которой можно использовать для организации распределенной домашней сети.

Совсем другое дело прибегнуть к помощи Inferno для создания универсальной среды разработки и запуска приложений. Inferno способна работать поверх таких операционных систем как Windows, Linux, FreeBSD, Solaris, MacOS X. В режиме гостевой ОС она превращается в прямого конкурента Java, обходя ее сразу по нескольким пунктам:

  • Возможность запуска нескольких приложений в рамках одной виртуальной машины.
  • Гораздо более изящная и простая архитектура, позволяющая забыть о различиях между локальными и удаленными ресурсами.
  • Простой механизм создания распределенных приложений.
  • Более простой и мощный язык, поощряющий создание многопоточных приложений и предоставляющий для этого интуитивно понятный интерфейс.
  • Умеренное потребление ресурсов (1Мб - минимальное требование к оперативной памяти).
  • Возможность создания единого исполнямого файла, содержащего саму программу, виртуальную машину и набор необходимых ей библиотек (размер результирующего файла за вычетом самой программы - 2-10мб).
  • Взамен среды исполнения приложений Вы получаете полноценную операционную систему с интегрированной средой разработки, отладчиком, программой для просмотра документации, набором стандартных UNIX-утилит, а также покровительство отцов UNIX, Plan9 и языка Си :)
Базовая поставка Inferno включает богатый набор модулей, которые можно использовать в своих программах. Набор модулей простирается от библиотек для работы со связными списками и дервьями до SSL-шифрования и движка JavaScript. При этом Вы так же можете использовать в своей программе ресурсы различных файловых серверов (например ftpfs) или написать ее части на скриптовом языке командного интерпритатора, задействовав множество UNIX-подобных утилит.

суббота, 20 декабря 2008 г.

Полезные ссылки

Ресурсы

Официальное представительство inferno в сети
http://www.vitanuova.com/inferno/

Исходные тексты inferno на Google Code
http://inferno-os.googlecode.com

Архив Inferno Mailing List
http://dir.gmane.org/gmane.os.inferno.general

Inferno Programmer's Notebook
http://caerwyn.com/ipn
http://code.google.com/p/inferno-lab/

Русскоязычные ресурсы

Сообщество пользователей inferno на "хабре"
http://habrahabr.ru/blogs/os_inferno

Раздел inferno на домашней страничке Powerman'а (обзор ОС, описание архитектуры, введение в Limbo)
http://powerman.name/Inferno/

Документация Plan9 на русском
http://doc.cat-v.org

Статьи

ОС для сетевых компьютеров
http://www.osp.ru/text/print/302/158096.html

Inferno - виртуальный пост-Unix в кармане
http://citforum.univ.kiev.ua/operating_systems/inferno/

Разработка программ в среде операционной платформы Inferno, или "Адское" программирование
http://citforum.univ.kiev.ua/operating_systems/inferno_programming/

Unix и не только (Интервью с Кеном Томпсоном)
http://www.osp.ru/text/print/302/179809.html

Виртуальные машины в битвах гигантов
http://offline.computerra.ru/offline/1998/244/1272/

Inferno
http://itc.ua/node/9367

Использование Acme
http://doc.cat-v.org/plan_9/translations/russian/wiki/using_acme

The Security of the Inferno OS (Phrack #58)
http://www.theparticle.com/files/txt/hacking/phrack/p58-12.txt

Проекты, имеющие отношение к Inferno

inferno-olpc - Inferno для ноутбуков OLPC (One Laptop Per Child)
http://code.google.com/p/inferno-olpc/

inferno-bin - Коллекция эмуляторов Inferno для различных ОС
http://code.google.com/p/inferno-bin/

inferno-spki - Расширение механизма идентификации пользователей для использования технолигии SPKI (Simple public key infrastructure)
http://code.google.com/p/inferno-spki/

inferno-os-maemo - Порт Inferno на Maemo GNU/Linux (используется в планшетах Nokia N800)
http://code.google.com/p/inferno-os-maemo/

inferno-openmoko - Порт Inferno на Openmoko (операционная система свободного смартфона Neo FreeRunner)
http://code.google.com/p/inferno-openmoko/

plan9-ceb - Порт Inferno и Plan9 на процессоры архитектуры Cell
http://code.google.com/p/plan9-ceb/

inferno-tx - Включает наработки inferno-olpc, а так же порт на PowerPC и поддержку Shared Memory
http://code.google.com/p/inferno-tx/

acme-sac - Acme Stand Alone Complex: programmer's editor, shell, and user interface
http://code.google.com/p/acme-sac/

inferno-ds - Порт Inferno на Nintendo DS
http://code.google.com/p/inferno-ds/

Что такое Inferno

Можно долго говорить о многочисленных достоинствах и уникальных чертах операционной системы Inferno. Гибкая, мощная, компактная, работающая в буквальном смысле "на всем", Inferno обладает уникальнейшим дизайном,
благодаря которому легко интегрируется в распределенную сеть.

В Inferno нет награмождения различных интерфейсов и массы разнообразных внутренних API, все в этой ОС вращается вокруг универсального протокола, связывающего ее компоненты в единую систему. Нет здесь и разделения между программой и библиотекой, все есть модули, каждый из которых может вызывать функции другого ("методы") на лету. Модули без изменения исполняются на любой архитектуре благодаря виртуальной машине, оптимизированной с использованием технологии JIT. Язык Limbo, специально разработанный для Inferno, это высокоуровневый и простой в освоении модульный язык, поддерживающий сборку мусора и параллельное программирование.

Inferno была разработана ныне несуществующим исследовательским подразделением Bell Labs, подарившем миру язык Си и операционную систему UNIX. У ее истоков стояли сами Денис Ритчи и Кен Томпсон. Сегодня права на Inferno принадлежат британской компании Vita Nouva, а ее исходные тексты доступны для изучения и модификации на Google Code.