| Update: Добавлено описание установки под Windows XP SP2. Update: Добавлено описание установки под Mac OS X 10.4.8 Tiger. Update: Добавлено описание установки под Mac OS X 10.5.5 Leopard. New Edition Да, версия в svn называет себя именно так! Установите, запустите браузер (Charon) и сами убедитесь. (В принципе, последний релиз это "Fourth Edition", но на практике это уже давно тот же svn — «Fourth Edition» вышел примерно в 2004, а сейчас на офф.сайте под видом «Fourth Edition» выложен снапшот svn от 20071003.) Версия в svn абсолютно стабильна, и, в отличие от инсталляшки «Fourth Edition», её значительно проще обновлять. Для установки на боевые сервера или выпуска вашего приложения она не менее удобна. В общем, минусом является только необходимость иметь subversion и компилятор для сборки системы, всё остальное плюсы. Итак, ставим свеженькую OS Inferno из SVN, в hosted режиме (т.е. в виде эмулятора, работающего под другой OS). Особенности установки в разных системах Хотя Inferno должна устанавливаться и работать одинаково во всех системах, все мы прекрасно знаем, что нюансы есть всегда. Я протестировал установку в Hardened Gentoo Linux и в Ubuntu 8.04. Надеюсь, такой выбор систем перекроет большинство нюансов установки и в других дистрибутивах Linux. Hardened Gentoo Linux С компилятором и .h-файлами в Gentoo проблем не будет, я вас уверяю. Ubuntu 8.04 Вот чего тут нет… э… ничего тут нет. apt-get install subversion build-essential Возможно нужно будет подключать дополнительные репозитории, точно не скажу — у меня они были уже подключены для установки других приложений. Установка OS Inferno Ниже описана установка от root, в каталог /usr/local/inferno, в полноценном многопользовательском режиме. Отличия при установке от обычного пользователя в ~/inferno/ я буду упоминать по ходу процесса — в основном они сводятся к тому, что часть команд выполнять бессмысленно и/или не нужно. Затраты времени/трафика/дискового пространства примерно следующие: Качаем. Все команды, если не сказано обратного, выполняются от root. При установке в домашний каталог установите INFERNO_ROOT, например, так: /home/powerman/inferno. И, разумеется, все команды выполняйте от обычного пользователя. export INFERNO_ROOT=/usr/local/inferno Настраиваем параметры компиляции. Вместо perl -i -pe можно запустить любимый текстовый редактор и отредактировать mkconfig ручками. export PATH=$INFERNO_ROOT/Linux/386/bin:$PATH Собираем систему. Помните, paxctl нужен только на системах защищённых PaX и только для запуска в JIT-режиме. sh makemk.sh Настраиваем параметры emu. Эту команду желательно прописать себе в ~/.bashrc — чтобы не передавать эти параметры при каждом запуске emu. (Кстати, ещё очень желательно в ~/.bashrc прописать export PATH=/usr/local/inferno/Linux/386/bin:$PATH — будет удобнее запускать emu и limbo.) Разумеется, размеры оконной системы Inferno нужно выставить какие вам удобнее, не обязательно 1024x768. В принципе, удобнее, когда размеры окна Inferno меньше разрешения host OS. Параметр -c0 отключает JIT (для включения просто запускайте emu -c1). Дело в том, что при включенном JIT сложнее отлаживать свои приложения — отладчик не работает, границы массивов контролируются хуже, etc. А скорость у Inferno и без JIT более чем впечатляющая. export EMU="-r$INFERNO_ROOT -g1024x768 -c0" Настраиваем пользователя inferno. При установке в домашний каталог эти команды выполнять не нужно. groupadd inferno Update: см. комментарий по поводу настройки /tmp. Шрифты В принципе, к этому моменту OS Inferno установлена, и её можно использовать. Но в «Fourth Edition» входят дополнительные шрифты (B&H Lucida), которые из-за лицензионных ограничений гугл не разрешает выкладывать в svn на code.google.com. В принципе большинство приложений будет работать и без них. Кроме того, их можно заменить альтернативными бесплатными шрифтами (так вроде бы сделали в проекте Acme SAC). Но я с этим не разбирался. Поэтому мы сейчас, быстренько, выкачаем и установим во временный каталог «Fourth Edition», и выдерем из неё эти шрифты. mkdir /tmp/inferno Тестируем Точка с запятой в начале строк — это приглашение Inferno-вского sh. Завершение работы с Inferno — в текстовом режиме либо Ctrl-D, либо Ctrl-C, в графическом — закрытие графического окна Inferno. (Графическая среда запускается командой wm/wm.) Вход под пользователем inferno. При установке в домашний каталог этот шаг пропускаете. # su - inferno Вход под обычным пользователем. Команда cp проинициализирует ваш домашний каталог, её в будущем повторять перед запуском Inferno не нужно. Установку PATH и EMU тоже лучше прописать в ~/.bashrc. Тогда для запуска Inferno достаточно будет запустить emu. $ cp -r /usr/local/inferno/usr.skel/inferno/* ~/ Начальная настройка Inferno При запуске emu система минимально инициализируется, после чего запускается sh, который выполняет /lib/sh/profile для дальнейшей инициализации системы. Я в него обычно прописываю: При установке в домашний каталог на этом настройка заканчивается — нет никакого смысла настраивать три субъекта авторизации с кучей паролей при работе под единственным аккаунтом. Настройка авторизации Для начала необходимо объяснить, что и зачем настраивается. Авторизация работает следующим образом: клиент и сервис взаимно авторизуют друг друга с помощью сертификатов на базе private/public ключей — всё почти как у ssh или https. Почти потому, что авторизуют они друг друга действительно взаимно. Для этого они оба должны получить свои сертификаты у одного и того же CA (certificate authority), которому оба доверяют. Так что именно CA, выдавая или не выдавая эти сертификаты, определяет, будет у клиента доступ к сервису, или нет. Таким образом, нам нужно настроить три разные системы — сервер авторизации, некий полезный сервис, и терминал клиента. Для этого мы можем запустить три независимых emu на своей машине — с точки зрения Inferno это будут три разных сервера, на которых будут запущены разные приложения. Разумеется, при таком варианте есть некоторые ограничения — например, невозможно запустить два одинаковых сетевых сервиса в разных emu — у них будет конфликт при попытке открыть TCP порт. Ну и файлы на диске у них общие, разумеется — но это не касается «виртуальных» файлов (а-ля /proc и /dev в Linux), которые в Inferno используются очень активно. Так что отличий между этими тремя emu вам хватит, чтобы воспринимать их как действительно разные и независимые сервера. Первым делом нужно прописать адрес (hostname или IP) сервера авторизации на машинах клиента и сервиса. Но, поскольку файлы у них в нашей конфигурации совпадают, то достаточно отредактировать один файл /usr/local/inferno/lib/ndb/local (можете вписать 127.0.0.1): Дальше запускаем сервер авторизации. Он будет запускаться под юзером inferno, и все файлы с ключами и сертификатами CA будут доступны только этому юзеру. … очищаем базу ключей … генерируем сертификат нашего CA, на указанное имя (любое) … запускаем сервис авторизации, при этом потребуется установить пароль, который в будущем нужно будет вводить при каждом запуске этого сервиса — это необходимо т.к. ключи в файлах будут зашифрованы этим паролем … теперь мы можем завести на нашем сервисе авторизации настоящие пользовательские аккаунты, с паролями, наконец-то … ну и полюбуемся на запущенные на этом «сервере» TCP-сервисы Сервер авторизации оставляем работать, и запускаем следующий emu — с полезным сервисом. … ndb/cs это что-то вроде универсального ресолвера, без него в Inferno с сетью особо не поработаешь (есть ещё ndb/dns, но в hosted режиме его можно не запускать и использовать dns-ресолвер host OS) … обращаемся к сервису авторизации (первый сервер), представляемся под своим логином/паролем, и получаем от него свой сертификат (это операция единоразовая, при условии что сертификат не expire-нется и файл куда сейчас будет сохранён полученный сертификат никто не удалит). … теперь, имея сертификат, можно запустить полезный сервис — например rstyx, который позволяет удалённо выполнять на этом сервере команды — аналог ssh Оставляем его работать и запускаем третий emu — терминал юзера powerman. … теперь мы можем подключиться ко второму серверу и выполнить на нём команду. для примера, посмотрим список процессов сначала на этом терминале, а потом на втором сервере Обновление системы Здесь всё абсолютно тривиально: Что дальше? RTFM. RTFM. И снова RTFM. Система очень сильно отличается от традиционных. Причём чтением документации ограничиться не рассчитывайте — нужно читать исходники, там всё самое главное. Когда появится понимание что как работает — пишите на Limbo. (На sh писать не советую — он слишком медленный, что довольно странно, кстати.) Пишите сетевые сервисы, распределённые системы, или полноценные GUI-приложения. Удачи! | |
| Категория: Linux | Просмотров: 578 | |
Главная » Установка OS Inferno New Edition
А вот Hardened немного работы добавит. Дело в том, что emu умеет работать как в режиме интерпретации байт-кода виртуальной машины Dis, так и в режиме JIT. А Hardened (точнее, входящий в него PaX) очень не любит генерации кода на лету с передачей на него управления. Поэтому для запуска emu в JIT-режиме для него потребуется частично отключить PaX. Этим занимаются команды paxctl и chpax. На системах без PaX этих команд, скорее всего, нет, и выполнять их не нужно.