четверг, 24 декабря 2009 г.

VGA-драйвер

Brian L. Stuart продолжает выкладывать свои наработки, озвученные на IWP9. В этот раз он сделал доступным простой VGA-драйвер для нативной версии Inferno. Как и раньше исходный код доступен на странице https://code.google.com/p/inferno-bls/.

воскресенье, 13 декабря 2009 г.

Visopsys + Inferno?

"Ailes развивается как форк Visopsys, наследуя все её основные особенности, однако в будущем мы планируем реализовать идеи, схожие с идеями системы Inferno и преобразовать текущее монолитное ядро в микроядро и набор системных служб". Ссылка.

среда, 9 декабря 2009 г.

[софт] Styx-браузер для Android

Простой Styx-браузер для Android. Умеет "ходить" по примонтированным Styx-ресурсам.

[софт] библиотека для создания IRC-бота

Небольшая библиотечка на sh, использует ircfs.
Ссылка.

[tips] Сниффинг

Сниффинг в стиле Inferno (native):

; cat /net/ether0/0/data > /usr/inferno/sniff_net

[tips] Софтверный RAID

Интересно, а многие ли в курсе, что нативная версия Inferno позволяет создавать софтверные RAID-массивы. Например, после выполнения следующих пяти команд мы получим две пары дисков, объединенных в RAID уровня 1, которые в свою очередь объединены RAID-0 массив с файловой системой KFS:

; bind -a '#b' /dev
; echo mirror m0 /dev/sdC0/data /dev/sdD0/data >/dev/ds/ctl
; echo mirror m1 /dev/sdC1/data /dev/sdD1/data >/dev/ds/ctl
; echo inter data /dev/ds/m0 /dev/ds/m1 >/dev/ds/ctl
; disk/kfs -f /dev/ds/data

И ведь любой из учавствующих в RAID дисков может быть импортирован с другой машины.

воскресенье, 6 декабря 2009 г.

[софт] laptopfs и персональный репозиторий Brian L. Stuart

Brian L. Stuart, автор книги "Principles of operating systems: design and applications" и интерпретатора языка scheme для inferno представил свой новый проект: laptopfs.

Laptopfs представляет собой совсем небольшой файловый сервер, реализующий представление автора о том, как должны синхронизироваться данные на настольном ПК и переносном устройстве (ноутбуке). Вместо того, чтобы делать основным хранилищем накопитель устройства и по мере надобности производить сброс важных данных на ПК, Brian L. Stuart предлагает диаметрально противоположный подход: использовать ПК в качестве основного хранилища данных и синхронизировать их с файлами устройства во время обращения.

Более детально технология описана в документе A File System for Laptops, представленном на конференции IWP9 2009. Получить исходный код можно на странице Brian L. Stuart на GoogleCode.

среда, 11 ноября 2009 г.

[offtopic] Роб Пайк вновь изобрел Limbo

Go -- экспериментальный язык програмирования, разработанный в Google. Основные разработчики языка -- Роб Пайк и Кен Томпсон, также известные как разработчики unix и plan9.

Go предназначен в первую очередь для написания крупных серверных приложений, и способен сократить время сборки с десятков минут до нескольких секунд (в сравнении с C++) за счет системы модулей и явного указания зависимостей.

В языке отсутствуют классы, исключения, метапрограммирование и ручное управление памятью, однако присутствуют указатели, сборщик мусора и goto. Также на уровне языка поддерживаются легковесные процессы (goroutines) и каналы (channels).

Можно использовать фигурные скобки и юникод в идентификаторах.

Источник: LOR
Подробности: golang.org

PS. По сути это Limbo, без виртуальной машины, некоторых вкусностей и с измененным синтаксисом.

суббота, 31 октября 2009 г.

[iwp9] Четвертый съезд поклонников Plan 9 и Inferno


21, 22 и 23 числа октября были выбраны днями проведения четвертого съезда поклонников Plan 9 и Inferno (4th International Workshop on Plan 9). Местом встречи был выбран университет Джорджии, США. Конференция прошла, а все прозвучавшие на ней доклады были выложены в сеть, среди которых есть и множество документов, посвященных или косвенно относящихся к Inferno.

Plan 9's Universial Serial Bus. Francisco J. Ballesteros, известный под ником nemo, рассказывает о том, как в Plan 9 была добавлена поддержка USB 2.0 и что для этого пришлось сделать.

Styx Caching via Journal Callbacks. Nathaniel W. Filardo и Venkatesh Srinivas рассказывают системе кэширования Styx-запросов и ответов на стороне клиента (исходные коды которой можно получить здесь).

A New Boot Process for Plan 9. Iruatã Souza о новом способе загрузки Plan 9.

Btfs — a Bittorrent Client. Mathieu Lonjaret о btfs, Bittorrent-клиенте для Plan 9, реализованном в виде файлового
сервера.

Ircfs and Wm/irc. Mechiel Lukkien, известный читателям блога под ником mjl, рассказывает о своем файловом сервере для работы с IRC-сетями и графическом интерфейсе для него.

Two Enhancements for Native Inferno. Brian L. Stuart рассказывает о том, как он портировал USB2.0-драйвера из Plan 9 в Inferno и о новом VGA-драйвере для Inferno.

Inferno for the Sheevaplug. Mechiel Lukkien о процессе портирования Inferno на Sheevaplug.

Torrent. Mechiel Lukkien о BitTorrent-клиенте для Inferno, реализованном в виде файлового сервера и GUI-фронтенда.

Ssh 2 Client. Mechiel Lukkien о ssh-клиенте для Inferno.

Другие документы конференции вы можете скачать пройдя по ссылке в начале поста.

вторник, 29 сентября 2009 г.

четверг, 17 сентября 2009 г.

среда, 9 сентября 2009 г.

Мы за это когда-нибудь в адском пламени сгорим. Hо все это потом, а в данный момент...

...Естественно, что такой мир без твердых основ и целей становится полем деятельности демонов, здесь они хозяева, их ничто не сдерживает. Дьявольская личина с первых же шагов поселилась в виртуальном компьютерном мире - одной из передовых технологий масс-медиа (достаточно вспомнить откровенно сатанинские игры Doom и Quake). Последняя новинка на рынке операционных систем, над разработкой которой трудится уже более 10 тыс. человек носит название I n f e r n o (ад, преисподняя). “В состав системы Inferno также входят... язык программирования Limbo (в пер. с англ. преддверие ада), коммуникационный протокол Styx (река смерти) и виртуальная машина Dis, название которой, возможно, тоже имеет мрачное мифологическое происхождение”[xxii]. Здесь комментарии, как говорится, излишни...
http://www.ref.by/refs/41/30135/1.html

суббота, 5 сентября 2009 г.

[софт] ext2fs, gitfs, snmp

Два новых проекта от mjl и один от некоего manzurmm. Стречайте:

* ext2fs - Реализация файловой системы ext2 на языке Limbo (пока только чтение).
* snmp - Библиотека и набор утилит для работы с протоколом SNMP (версии 1 и 2).
* gitfs - Виртуальная файловая система для работы с git-репозиториями.

четверг, 3 сентября 2009 г.

[wiki] Краткое введение в Inferno-owen

Опубликован перевод очень краткого введения в систему inferno-owen, предназначенную для создания вычислительных Grid-сетей на базе технологий Inferno.

понедельник, 31 августа 2009 г.

[wiki] Дизайн виртуальной машины Inferno

В inferno-wiki опубликован перевод занимательного документа, посвященного вопросам дизайна виртуальной машины Dis. Авторы: Phil Winterbottom, Rob Pike. Главная тема: почему Dis производительнее и гораздо проще в реализации, чем JVM.


суббота, 22 августа 2009 г.

Форум

Открыт наш официальный форум, посвященный всему, что связано с Inferno, Limbo, протоколом Styx, этим блогом и wiki. Особое внимание прошу уделить теме "Темы для блога/wiki", в которой вы можете оставлять свои пожелания относительно содержания блога или wiki-странички.
Регистрация необязательна, присоединяйтесь.



[софт] Новинки на ueber.net/code


Mechiel Lukkien выложил на своем сайте исходные тексты трех новых проектов:

1. zipfs - виртуальная ФС, библиотека и набор утилит для работы с zip-архивами.
2. nopoint - программа для создания слайдшоу, создання под впечатлением от MagicPoint.
3. torrent - библиотека и набор утилит для работы с .torrent-файлами (скачивание, верификация, просмотр).

вторник, 11 августа 2009 г.

Простой пример GRID

RapidFX выполнил перевод очень интересной статьи Caerwyn Jones'а, описывающей создание GRID-кластера с помощью нескольких небольших скриптов на sh. Ссылка: http://ru.inferno-os.wikia.com/wiki/Простой_пример_Grid.

четверг, 6 августа 2009 г.

Проблема с пустыми каталогами исправлена!

Вчера Charles Forsyth внес в исходный код Inferno несколько исправлений, решающих проблему пустых каталогов в репозитории Mercurial. Отныне недостающие каталоги создаются во время сборки ОС.

В дополнение отмечу косметический багфикс в коде keyring.

воскресенье, 2 августа 2009 г.

Другие реализации протокола Styx

Простота протокола Styx (9P) способствовала тому, что появилось множество его сторонних реализаций на различных языках программирования и для разных сред исполнения. Читайте полный список и выбирайте.

четверг, 30 июля 2009 г.

Проблемы с установкой из репозитория Mercurial

После переезда дерева исходных кодов Inferno в репозиторий Mercurial, у многих пользователей начались проблемы с установкой, главная из которых заключается в том, что в дереве отсутствуют многие каталоги, необходимые для правильной работы/установки ОС. Решить проблему можно с помощью создания необходимых каталогов руками (что требует определенных знаний), либо с помощью следующего скрипта, который необходимо запустить перед сборокой/установкой ОС. Другой вариант состоит в использовании готового среза исходных текстов Inferno от 30 июня, который уже включает в себя все необходимые каталоги и несвободные шрифты (которых нет в Mercurial-репозитории).


Багфиксы

3 новых исправления в исходном коде Inferno:

* Устранена ошибка в коде кэширования встроенного веб-сервера (ошибка №196);
* Исправлен баг в коде библиотеки bufio (неправильный расчет позиции во время вызова seek, ошибка №199);
* Добавлена встроенная переменная emuwdir, значение которой - рабочий каталог хост-системы;


пятница, 24 июля 2009 г.

Встречайте plan-9.org.ru

Открылся новый русскоязычный сайт об операционной системе Plan9. Пока информации на нем маловато (только переводные документы, статьи, опубликованные на других ресурсах и форум), но будем надеятся что в скором времени ресурс наберет обороты.



События за месяц

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

За месяц в Inferno-комьюнити не произошло каких-то особенных изменений. Лето - время затишья, поэтому дайджест новостей получился скромный:

Офциальные репозитории исходных текстов inferno-os и acme-sac переехали на систему контроля версий Mercurial, поэтому все, кто подписан на RSS-фид с изменениями в репозитории, должны изменить адрес подписки в ридере.

Порт Inferno на SoC Kirkwood (созданный mjl и salva) созрел до полноценного проекта и был перенесен на хостинг googlecode. На данный момент ОС корректно загружается и позволяет запускать dis-программы, работает последовательный порт и ethernet-адаптер. Драйвера для поддержки SD-карт реализованы не полностью.

Изменения в Inferno-os:
* Несколько багфиксов от mjl;
* Расширена поддержка процессорной архитектуры ARM;
* Добавлена утилита sig, производящая поиск сигнатуры функции во второй секции man-страниц;
* Исправлен баг №186;
* Удалены утилиты mathcalc и xmount.

P.S. На закуску:
Andy Elvey создал собственную версию операционной системы Plan 9, которую назвал Plan 42. В качестве языков программирования он выбрал Python и C++, на которых уже реализовал библиотеку для работы с протоколом 9P, клон систем plumber и fossil. Статус: пре-альфа.


пятница, 19 июня 2009 г.

Софт. DHCP-сервер

Mechaiel Lukkien добавил в свой репозиторий начальную реализацию DHCP-сервера и обновил систему аутентификации Plan 9 (кроме UNIX-версии теперь доступна реализация на языке Limbo). Теперь Inferno можно использовать в качестве сервера для тонких клиентов, построенных на UNIX (связка ip/dhcpd + ip/tftpd + nfssrv) и Plan9 (связка ip/dhcpd + ip/tftpd + auth/authsrv9 + протокол styx/9P).

среда, 17 июня 2009 г.

Софт. Часть 3. Лабораторные работы

Каждый день, придя домой, Caerwyn B Jones усаживается за свой ПК и приступает к реализации идей, пришедших ему в голову во время рабочего дня. Это называется Лабораторной работой. Обычно она связана с исследованием того или иного компонента ОС Inferno или реализацией определенного алгоритма на Limbo или Sh. Занимаясь "Лабораторными работами" по два-три часа в день Caerwyn успел накопить багаж из 101-ой "лабы" и реализовать несколько вполне значимых проектов, среди которых:

* Дистрибутив acme-sac, включающий в себя значительно расширенную реализацию среды acme;
* Распределнная система синтеза звука и записи композиций;
* Файловая система wikifs, предназначенная для редактирования wiki-страниц (lab 30) и wiki-клиент для acme (lab 43);
* Порт irc-клиента для acme (lab 44);
* Модификация веб-браузера charon для запуска внутри acme (lab 56);
* Программа для шифровния файлов cryptfile (lab 2);
* Порт драйвера DS (/os/port/devds.b) на Limbo (lab 15);
* Графический интерфейс для карманной игровой консоли Nintendo DS (lab 87, 89);
* Порт "песочницы" vx32 в гостевую версию Inferno (lab 92);
* Производительный Limbo-модуль для работы с B-деревьями (lab 101);
* И многое другое, включая несколько клиентов для acme, систему grid-вычислений и различные эксперименты.

Кроме того, в рамках "лабораторных работ" Eric Van Hensbergen из IBM реализовал поддержку Zeroconf (lab 90).

Каждую "Лабораторную работу" Caerwyn аккуратно оформляет и публикует в своем блоге "Inferno Programmer's Notebook".

понедельник, 15 июня 2009 г.

Inferno-ex: экспериментальная ветка Inferno

Недавно Venkatesh Srinivas создал собственный форк Inferno под названием inferno-ex. Спустя полтора месяца мы уже можем оценить результаты его работы. Список отличий от inferno-os:

* Автоматизированная система сборки нативной версии ОС (os/pc/mkflp).
* Порт файловой системы для работы с wiki-страницами wikifs и wiki-клиента для acme из acme-sac (appl/cmd/wikifs, acme/wiki).
* rs (#R) - драйвер для корректирования ошибок на устройствах хранения данных (os/pc/devrs.c, libecc/).
* CFS - Journal Callbacks Cache File System - виртуальная кэширующая ФС (appl/cmd/cfs.b, appl/cmd/ncfs.b).
* Драйвера для поддержки системы виртуализации ввода-вывода KVM VirtIO, которые позволяют напрямую задействовать устройства ввода-вывода (сетевые адаптеры, устройства хранения данных) в гостевом режиме поверх Linux (os/pc/ethervirtio.c, os/pc/sdvirtio.c).
* Драйвер для видео-адаптеров Radeon, портированный из Plan 9 (os/pc/vgaradeon.c).
* 8i - софтверный интерпреторатор x86-инструкций, написанный создателем vx32 Russ Cox для Plan 9 (своего рода эмулятор x86-совместимых процессоров, каталоги 8i и lib8i).
* 9c, 9a, 9l - Си-компилятор, ассемблер и линковщик для процессоров PowerPC64 (каталоги utils/9c, utils/9a, utils/9l).
* ventisrv - файловая система, использующая систему хранения данных venti (appl/cmd/ventisrv.b, appl/cmd/vcache.b, appl/cmd/vtest.b).
* Набор скриптов для упрощения запуска inferno и dis-приложений в гостевом режиме (каталог rc).

P.S. Venkatesh Srinivas также создал новое англоязычное Inferno-wiki.

суббота, 13 июня 2009 г.

Inferno на PowerPC

В дерево исходных текстов Inferno добавлена поддержка гостевого режима в ОС Linux, работающей на процессорах семейства PowerPC (коммиты 423-427).


среда, 10 июня 2009 г.

События за две недели

Извиняюсь за долгий перерыв и представляю дайджест событий мира Inferno/Plan9 за две недели.

Inferno:
* Исправлен баг, ограничивающий длину копируемого по протоколу Styx файла двумя гигабайтами (спасибо rapidfx и powerman).
* В дерево исходных текстов Inferno добавлен Си-компилятор 6c для процессоров AMD64.
* Исправлен баг в файловой системе kfs, используемой при запуске Inferno на голом железе (native).

Acme-SAC:
* Поддержка подсветки изменений в окне adiff (сравнение текстовых файлов).
* Добавлена поддержка различных цветовых схем для acme.
* Встроенный файловый менеджер Navigator, открывающий каталоги в том же окне.
* Интегрирован код ctags-браузера для acme (поиск по функциям, ключевым словам, перменным). Также добавлен скрипт для генерации файла ctags для языка Limbo.

Plan9:
* Интегрирован переработанный код USB-стека, написанный nemo (поддержка USB2.0, USB-сканеров, мышей и т.д.).

Wiki:
* Добавлена статья "Реальное применение Inferno".
* Черновые варианты третьей и четвертой глав "Руководства программиста".
* Описана структура каталогов исходных текстов ядра ОС.
* Добавлено несколько новых советов в "ЧаВо".


P.S. Acme-SAC представляет собой форк гостевой версии Inferno, в качестве графического интерфейса которой выступает существенно доработанная версия среды Acme. Сам автор позиционирует свою разработку как мощный редактор, но на самом деле это урезанная и во многом доработанная Inferno.

вторник, 26 мая 2009 г.

wiki: Интервью с генеральным директором Vita Nuova

Опубликован перевод достаточно старого, но от того не менее интересного интервью с Vita Nuova CEO, Майклом Джефри. В разговоре затрагиваются такие темы как история Plan 9 и Inferno, достоинства Inferno, компании, использующие Inferno, и другие. Обязательно к прочтению новичкам и всем, кто хочет знать больше о компании, занимающейся разработкой операционной системы Inferno.

пятница, 22 мая 2009 г.

Софт. Часть 2. Интересности

На страничке Андрея Мирчовски вы сможете найти несколько интересных наработок:

sokoban - порт всем известной головоломки в Inferno.
decay и zoom - хранители экрана.
lens - порт Plan9-утилиты, увеличивающий выбранный участок экрана (лупа).
rotzoom - увеличение и поворот экрана.

Также на его сайте можно найти бинарный образ emu, использующий Linux Framebuffer в качестве устройства вывода графики (чтобы запустить Inferno на Linux без X Window), исходники которого можно взять здесь (автор: Александр Сычев), набор subfont-шрифтов Vera, полученных из TTF-шрифтов с помощью Plan9-утилиты ttf2subf из пакета freetype-plan9 и порт виртуальной машины Dis на Plan9.

P.S. В Inferno есть поддержка subfont-шрифтов, которая используется, например, в пакете acme-sac.


среда, 20 мая 2009 г.

Софт: Часть 1. Полезности

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

Mechaiel Lukkien поддерживает ресурс www.ueber.net, на котором регулярно публикует ПО для Inferno собственной разработки. Вот список того, что можно найти на его сайте:

kirkwood - порт Inferno на SoC-платформу kirkwood компании Marvell (в разработке).
hgfs - сервис, предоставляющий доступ к репозиториям Mercurial через протокол styx.
hgweb - веб-интерфейс к hgfs (написан на Limbo!).
nfssrv - NFS-сервер для Inferno (нестабилен, поддерживает только третью версию протокола).
pdfread - пакет библиотек и утилит для чтения pdf-файлов.
ircfs - виртуальная файловая система для работы с IRC-протоколом (в комплекте библиотека и графический IRC-клиент).
ssh - SSH-клиент (неполная реализация).
textmangle - утилита для преобразования текстовых файлов, содержащих специальные символы форматирования, в html, latex или troff.
httpd - полнофункциональный и полностью следующий стандартам HTTP-сервер. Ему будет посвещена отдельная статья.
http - HTTP-библиотека с поддержкой SSL и простой HTTP-клиент.
scgid - фоновый демон, обслуживающий SCGI-запросы через запуск внешних программ.
web - набор web-утилит и библиотек (генерация HTML, разбор запросов CGI, генерация RSS и т.п.).
webdavfs - виртуальная файловая система, импортирующая ресурсы по протоколу WebDAV.
cryptfile - средство шифрования файлов.
lyricd - сервер, производящий поиск текстов песен по множеству ресурсов, и набор клиентов к нему.
ventisrv - Venti-демон. В одном из ближайших постов мы поговорим о системе Venti.
hdict - клиент протокола dict (поиск по словарям).
attrfs - интерфейс файловой системы к attrdb(6).
playfs - файловая система для создания и обработки плейлистов и простая графическая программа для их отображения и проигрывания (используя команду mpg123 низлежащей ОС).
httptun - программа для создания HTTP-туннелей.
games - игра blobslay.

четверг, 7 мая 2009 г.

понедельник, 4 мая 2009 г.

TIP: Простая демонстрация мощи концепций Inferno

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

В Inferno тоже есть часы, аналоговые, примитивные как сапог (100 строк кода). Кроме извещения о текущем времени они ничего не умеют и никак не конфигурируются. Но! Эти часы тоже могут показывать время в нескольких часовых поясах одновременно.

Вот как это делается (часовые пояса: текущий, Япония, Израиль):

wm/clock &
bind /locale/Japan /locale/timezone
wm/clock &
bind /locale/Israel /locale/timezone
wm/clock &

Результат:



пятница, 1 мая 2009 г.

Интерпретатор scheme для Inferno

Некто blstuart анонсировал новый проект inferno-scheme, в рамках которого планируется создать интерпретатор scheme для Inferno. На данный момент реализация интерпретатора состоит всего из 4000 строк кода, но уже почти полностью поддерживает "стандарт" r4rs и большую часть r5rs.

Из Википедии:
Scheme - это функциональный язык программирования, один из двух наиболее популярных в наши дни диалектов языка Лисп (другой популярный диалект - это Common Lisp). Авторы языка Scheme - Гай Стил (Guy L. Steele) и Джеральд Сассмен (Gerald Jay Sussman) из Массачусетского технологического института - создали его в середине 1970-х годов.

четверг, 30 апреля 2009 г.

Ссылка: оригинальная документация от Alcatel-Lucent

На страничке Индийского Института Наук опубликовано несколько редких документов, посвященных ОС Inferno. Из интересного можно отметить:

1. Средства поддержки баз данных (Database Support in Inferno).
2. Поддержка реального времени (Inferno Real-time Support).
3. Пространства имен (Inferno Namespaces).
4. Реализация агента SNMP в Inferno (Implementation of SNMP Agent by Inferno).

Документы Inferno Security, Security in Inferno и A comparison of Inferno and Java уже устарели.

вторник, 28 апреля 2009 г.

wiki: Новые материалы на ru.inferno-os.wikia.com

Рад сообщить, что работа по накоплению багажа русскоязычной документации об Inferno идет полным ходом. На нашей wiki-страничке уже опубликовано более пятнадцати статей и заметок, направленность которых простирается от введения в операционную систему до программирования на языке Limbo. Сейчас мы заняты переводом официального руководства программиста, первые две главы которого уже опубликованы. За каждым разделом wiki (использование, безопасность, програмирование) закреплен документ "Часто Задаваемые Вопросы" (ЧаВо), в котором вы можете оставлять свои вопросы (форматирование не обязательно, мы все исправим).

К сожалению, не всегда хватает времени на своевременную окончательную редакцию материалов, поэтому незаконченные или содержащие ошибки документы помечены словом WIP (Work In Progress).

среда, 22 апреля 2009 г.

Google Summer of Code 2009

Стали известны проекты, учавствующие в мероприятии GSoC 2009. К сожалению Inferno-проектов среди них нет, зато сообщество Plan9 получило в свое распоряжение семь студентов, которые должны заняться следующим:

1. Отправить 9load в /dev/null. В рамках проекта планируется перенести функциональность загрузчика 9load в ядро ОС.
2. Портировать интерпретатор Scheme.
3. Реализовать поддержку пространства имен в Glendix (Plan9 на ядре Linux).
4. Создать более производительную версию почтовой системы upas.
5. Портировать vx32 на платформу Windows.
6. Реализовать полноценный брэндмауэр.
7. Релизовать GitFS, файловый сервер для прозрачной работы с репозиториями git.

среда, 15 апреля 2009 г.

Сообщество пользователей Inferno на conference@jabber.ru

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

Вся русскоязычная документация об Inferno в одном месте

Стартовал проект Inferno Wiki, нацеленный на сбор переводных и оригинальных русскоязычных документов, посвященных операционной системе Inferno. Заходите, читайте, исправляейте, пишите, обсуждайте. В общем присоединяйтесь. Информация о больших изменениях и новых документах будет регулярно публиковаться в блоге.

пятница, 10 апреля 2009 г.

Inferno на Soekris Net4501 и Net5501

Frederic Bonfanti подготовил каркас для сборки Inferno для мини-компьютеров Soekris Net4501 и Net5501. Конфигурационный файл, необходимый для сборки порта, можно найти в его письме.



Интересные факты о Plan9

1. "Plan 9 from outer space" - это название американского фантастического фильма 1956 года, который считается одним из худших фильмов, снятых за всю историю кинематографии.

2. Роб Пайк известен не только как активный разработчик UNIX и Plan9 и соавтор нескольких книг, посвященных программированию в среде UNIX, но и как серебряный призер олимпиады 1980-го года по стрельбе из лука.

3. Plan9 не делает различия между процессами и потоками. Системный вызов rfork(), предназначенный для разветвления процесса принимает аргумент, который указывает ядру, какие ресурсы должен разделять потомок с родителем.

4. Инженерные изыскания разработчиков Plan9 не ограничились концептуально новой операционной системой. Специально для передачи сообщений 9P они разработали новый транспортный протокол IL (Internet Link), более легкий и адаптируемый, нежели TCP.

5. Plan9 стала первой операционной системой, прозрачно работающей с Unicode. Популярная ныне кодировка UTF-8 вышла из
стен Bell Labs и была спроектирована специально для Plan9.

6. Идеи неперекрывающихся окон и запускаемых откуда угодно команд, реализованные в редакторе acme, принадлежат известному деятелю компьютерных наук и создателю языков программирования Pascal, Modula и Oberon Никлаусу Вирту, который реализовал на их основе интерфейс операционной системы Oberon.

7. Для Plan9 был разработан собственный язык программирования Alef, который представлял собой расширенный Си с некоторыми высокоуровневыми конструкциями и средствами создания и синхронизации потоков. Впоследствии от него отказались из-за сложности в поддержке компилятора для всех аппаратных платформ, на которых могла исполнятся операционная система. Сегодня упоминания об этом языке можно встретить в официальной документации Inferno, где Alef изображается как предок Limbo.

8. Plan9 был почти закончен, когда Линус Торвальдс только начал писать свою операционную систему.

Plan9 from Bell Labs

В конце 80-х годов отцы UNIX Кен Томпсон и Роб Пайк вместе с группой других программистов из Bell Labs начали работу над операционной системой, получившей в последствии имя Plan9. Поводом к изобретению совершенно новой ОС послужил факт морального устаревания UNIX и идей, заложенных в нее. Реалии современного мира IT требовали операционной системы, прозрачно интегрируемой в распределенную сеть из недорогих рабочих станций, чего не могла в полной мере предложить UNIX, спроектированная для работы на больших мэйнфреймах.

Впервые ОС увидела свет в 1992 году и была распространена между несколькими университетами. В 1995 году появилась вторая редакция, распространяемая на коммерческих условиях. В конце 90-х Bell Labs потеряла интерес к проекту и отпустила третью редакцию ОС (2000 год) в свободное плаванье, разрешив всем желающим как угодно модифицировать и распространять измененный код. Четвертая и последняя редакция Plan9 вышла в 2002 году.

Сложившаяся еще в те времена группа поклонников и разработчиков ОС до сих пор продолжает выпускать ежедневные снапшоты Plan9, которые любой желающий может получить с веб-ресурса Bell Labs: http://plan9.bell-labs.com/plan9/.

Можно смело утверждать, что Plan9 поистине уникальная, инновационная во всех отношениях операционная система, на многие годы опередившая свое время. Кен Томпсон, Роб Пайк и Денис Ритчи уже неоднократно демонстрировали свое незаурядное конструкторское мышление, выпустив самую долгоживущую и популярную операционную систему, а также язык, породивший множество эпигонов и остающийся одним из самых популярных и по сей день. Но работая над Plan9, они превзошли сами себя, - на свет появилась ОС, вобравшая все лучшее от идей UNIX и оставившая далеко позади другие исследовательские проекты ОС.

В основу Plan9 легло три главных конструкторских решения:

1. Все является файлом в широком смысле слова.
2. Единый протокол доступа к ресурсам.
3. Пространства имен.

Идея представления в виде файлов всего, чего только возможно, начиная от аппаратных устройств и заканчивая сетевыми сокетами, была реализована еще в UNIX. Но только в Plan9 она достигла своего логического триумфа. Разработчики Plan9 не просто расширили каноническую трактовку понятия "файл", как это было сделано в UNIX, а вообще отказались от нее в пользу совершенно новой системы понятий. В Plan9 файлом является и интерфейс сетевой коммуникации, и переменные окружения, и процессы, и даже окна графического интерфейса. "Обычный" файл, предполагающий наличие выделенного пространства на диске, является всего лишь разновидностью обобщенного понятия "файл".

Главной инновацией, позволившей сделать файлы логическим центром всей операционной системы, стал низкоуровневый протокол доступа к ресурсам, названный 9P. Протокол 9P, как и NFS, - файловый, но в отличие от последнего разрабатывался он с упором на простоту и прозрачную работу как с файлами локальной, так и любой другой машины, доступной через сетевое соединение. Именно протокол 9P стал тем недостающим связующим звеном, позволившим разработчикам реализовать новую концепцию организации ОС. Как известно, в UNIX специальные файлы, предоставляющие доступ к аппаратному обеспечению ПК и другим ресурсам, были всего лишь обычными файлами, хранящимися в реальной файловой системе. При обращении к такому файлу ядро проверяло один из его атрибутов и, если файл оказывался специальным, запускало на выполнение особую процедуру, обрабатывающую операции с этим файлом. Plan9 организована совершенно иначе. Здесь вообще нет понятия специальных файлов, но есть понятие файловых серверов.

Файловым сервером в Plan9 называется любая программа, экспортирующая по протоколу 9P свои ресурсы. Благодаря протоколу 9P пользователь и другие программы видят эти ресурсы как файловое дерево и могут обращаться к нему для коммуникации с программой. Самым ярким примером, иллюстрирующим мощь такой концепции, является графическая оконная система Plan9. Это типичный файловый сервер, экспортирующий всего несколько файлов. Программа, пожелавшая распечатать текст в своем окне, должна записать его в файл /dev/cons. Программы, работающие с графикой, могут записывать специальные команды в файл /dev/draw. О текущем положении мыши они узнают, читая файл /dev/mouse. Обратите внимание, что приложение, запущенное в окне графического интерфейса, вообще не прибегает к каким-либо функциям: все, что от нее требуется, это писать и читать данные из нескольких файлов.

Файловые серверы в Plan9 являются основными строительными элементами, в совокупности составляющими цельную операционную систему. Главный файловый сервер - ядро ОС, экспортирующее ресурсы операционной системы. Каждый драйвер также является файловым сервером, экспортирующим ресурсы определенного аппаратного элемента ПК. Файловые серверы, реализующие различные файловые системы, экспортируют их содержимое как дерево файлов, которое может быть подключено к любой точке текущего файлового дерева. Файловый сервер протокола FTP позволяет подключить к текущему файловому дереву содержимое удаленного FTP-сервера. Файловый сервер протокола DNS экспортирует ресурс /net/dns. Программа, пожелавшая узнать IP-адрес сервера  может записать его имя в этот файл, а затем прочитать из него 32-битное число. В теории, любая корректно написанная программа Plan9 должна быть файловым сервером.

Протокол 9P прозрачен для сети, поэтому любой из ресурсов ОС может находиться на удаленной машине. Файл устройства /dev/mouse может быть привязан к мыши, подключенной к соседнему компьютеру, а файлы каталога /bin - находиться по другую строну океана. Благодаря протоколу 9P и представлению всех ресурсов как файлов, организация распределенных вычислительных сетей превращается в элементарную задачу. Достаточно лишь смонтировать файловую иерархию нужного ресурса к дереву локальной файловой системы.

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

Модель представления любого ресурса как файла чрезвычайно прозрачна и понятна любому человеку, работающему за настольным ПК, будь то рядовой пользователь, программист или системный администратор. Благодаря этой концепции, доступ к ресурсам приобретает универсальный характер и не требует создания дополнительных интерфейсов, загромождающих API. Пользователи получают в распоряжение мощный инструмент, позволяющий использовать стандартные команды типа cat и echo для обращения к любым ресурсам (там, где в другой ОС необходима специальная программа, в Plan9 обычно достаточно простой записи нужной строки в файл).

Plan9 создает свой, простой в понимании и концептуально изящный мир. Здесь нет нагромождения интерфейсов, различных несовместимых и устаревших технологий. Все в этой ОС вращается вокруг единой концепции. Plan9 - это своего рода произведение искусства, каждая деталь которого хорошо продумана и находится на своем месте.


Блог жив!

В скором времени в блоге появятся две относительно большие вводные статьи о Plan9 и Inferno. Затем я планирую сделать цикл статей (или заметок) об устройстве Inferno, языке Limbo и программировании на нем. Кроме того, будет материал об Octopus и поднятии http-сервера на основе Inferno и идей синтетической файловой системы. Точных сроков не знаю, основная работа тоже требует к себе внимания (иногда постоянного). Так что не отписывайтесь, приводите знакомых, комментируйте. Если кто-то из подписчиков хотел бы опубликовать свою заметку о Plan9/Inferno, оставляйте комментарий.

понедельник, 30 марта 2009 г.

У "Plan 9 from Outer Space" будет продолжение

В этом году выйдет продолжение одного из худших фильмов, снятых за всю историю существования кинематографии. Поклонники Plan9 ждут конца света... :)
P.S. Plan9, предок Inferno, получил свое название именно благодаря этому фильму.

четверг, 26 марта 2009 г.

Inferno на GSoC

Inferno и Plan9 в очередной раз учавствуют в Google Summer Of Code. С возможными проектами можно ознакомиться здесь и здесь. Напомню, что Inferno и Plan9 уже были на GSoC 2007, но не попали на мероприятие в 2008-ом. Причем все три Inferno-проекта 2007-го были закончены, а два попали в официальную ветку (реализация venti/vac и расширенный механизм SPKI-аутентификации). Порт ОС на Nintendo DS до сих пор живет и развивается в рамках обособленного проекта (inferno-ds.googlecode.com).

Ссылка: Principles of Operating Systems в pdf

Благодаря rapidfx at volgograd.ru, который скачал таки книгу с Google, мы теперь имеем доступ к pdf-версии (почти полной, за исключением примерно 60 страниц), которую можно взять здесь или здесь. Спасибо!

вторник, 17 марта 2009 г.

Ссылка: Principles of Operating Systems

Онлайн-версия книги "Principles of Operating Systems: Design and Applications" (Brian L. Stuart) в библиотеке Google. Вы не сможете сохранить ее на жесткий диск и потратите много трафика на чтение. Но она стоит того. Не потому что написана легендарным человеком или способна сделать Вас гуру в области архитектуры операционных систем. Просто это единственная книга, дающая описание ОС Inferno изнутри. Читая ее Вы узнаете как в Inferno реализованы система инициализации, управление процессами, памятью, устройствами ввода-вывода и файлами. Вам не нужны какие-то особенные знания чтобы приступить к чтению, перед описанием каждой из подсистем дается изрядная доля теории. Единственное что нужно - знание двух языков: английского и Си.

четверг, 26 февраля 2009 г.

Inferno Gentoo ebuild

Alex Efros a.k.a. Powerman (кстати, наш соотечественник) подготовил Inferno ebuild для пользователей Gentoo. Доступен с его оверлея.

среда, 18 февраля 2009 г.

Ссылка: Inferno/Plan9 блогосфера

planet9.cat-v.org - все блоги, посвященные Plan9/Inferno в одном RSS-канале. В числе авторов числятся такие мастодонты как Rob Pike, Charles Forsyth, Eric Van Hensbergen...