Inferno Programming With Limbo (pdf, 27.4Мб) - англоязычная книга о разработке приложений для Inferno. Описание языка Limbo и стандартных модулей, разработка встроенных модулей на языке Си, ввод/вывод, потоки, каналы, протокол Styx, сетевые и графические приложения, криптография. Исчерпывающее руководство по программированию в среде Inferno.
среда, 24 декабря 2008 г.
вторник, 23 декабря 2008 г.
Ссылка: описание ядра Plan9
Notes on the Plan 9 3rd edition Kernel Source (pdf, 2Мб)
Описание архитектуры ядра Plan9 третьей редакции. Большая часть информации актуальна и для Inferno.
Описание архитектуры ядра Plan9 третьей редакции. Большая часть информации актуальна и для Inferno.
Ссылка: отличный источник информации об Inferno
Масса документации. Полное описание операционной системы, языка Limbo, виртуальной машины Dis и протокола Styx, исходные тексты примеров. На английском, но в очень доступной форме.
Страничка датируется 1998-ым годом и описывает Inferno 1.0, но информация актуальна и сейчас.
Страничка датируется 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, а для ее запуска создается специальный пользователь).
$ 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 в каталог /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, обходя ее сразу по нескольким пунктам:
Сразу оговорюсь, Inferno, в своем нынешнем состоянии, на полноценную настольную ОС, мягко говоря, не тянет. Скудная поддержка оборудования, очень ограниченный набор ПО, по этим параметрам Inferno отстала от мира лет на 10 как минимум. Сегодняшняя Inferno годится разве что на роль второй ОС для смартфона, возможности которой можно использовать для организации распределенной домашней сети.
Совсем другое дело прибегнуть к помощи Inferno для создания универсальной среды разработки и запуска приложений. Inferno способна работать поверх таких операционных систем как Windows, Linux, FreeBSD, Solaris, MacOS X. В режиме гостевой ОС она превращается в прямого конкурента Java, обходя ее сразу по нескольким пунктам:
- Возможность запуска нескольких приложений в рамках одной виртуальной машины.
- Гораздо более изящная и простая архитектура, позволяющая забыть о различиях между локальными и удаленными ресурсами.
- Простой механизм создания распределенных приложений.
- Более простой и мощный язык, поощряющий создание многопоточных приложений и предоставляющий для этого интуитивно понятный интерфейс.
- Умеренное потребление ресурсов (1Мб - минимальное требование к оперативной памяти).
- Возможность создания единого исполнямого файла, содержащего саму программу, виртуальную машину и набор необходимых ей библиотек (размер результирующего файла за вычетом самой программы - 2-10мб).
- Взамен среды исполнения приложений Вы получаете полноценную операционную систему с интегрированной средой разработки, отладчиком, программой для просмотра документации, набором стандартных UNIX-утилит, а также покровительство отцов UNIX, Plan9 и языка Си :)
суббота, 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 нет награмождения различных интерфейсов и массы разнообразных внутренних API, все в этой ОС вращается вокруг универсального протокола, связывающего ее компоненты в единую систему. Нет здесь и разделения между программой и библиотекой, все есть модули, каждый из которых может вызывать функции другого ("методы") на лету. Модули без изменения исполняются на любой архитектуре благодаря виртуальной машине, оптимизированной с использованием технологии JIT. Язык Limbo, специально разработанный для Inferno, это высокоуровневый и простой в освоении модульный язык, поддерживающий сборку мусора и параллельное программирование.
Inferno была разработана ныне несуществующим исследовательским подразделением Bell Labs, подарившем миру язык Си и операционную систему UNIX. У ее истоков стояли сами Денис Ритчи и Кен Томпсон. Сегодня права на Inferno принадлежат британской компании Vita Nouva, а ее исходные тексты доступны для изучения и модификации на Google Code.

Подписаться на:
Сообщения (Atom)