ФЭНДОМ



Как получить доступ к репозиторию исходных кодов Plan9 (plan9.bell-labs.com/sources), используя Inferno?Править

Просто выполните команды:

mkdir /n/sources
mount -A net!sources.cs.bell-labs.com!9fs /n/sources

и все исходные тексты будут доступны в /n/sources

Как получить доступ к локальному диску/каталогу отличному от C:\Inferno (/usr/local/inferno)?Править

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

для окружения Windows сделаем видимым диск C: и примонтируем к /n/local :

bind '#Uc:' /n/local

для среды Unix:

bind '#U*/home/username' /n/local

Примечание: Если в среде Windows вы получаете ошибку при попытке монтировании, скорее всего версия Inferno которой вы пользуетесь устарела. Попробуйте получить более свежую версию эмулятора emu этой страничке [1]. После загрузки переместите полученный emu.exe в каталог с установленной ОС C:\Inferno\Nt\386\bin\

Как сделать доступным буфер обмена хост-ОС?Править

Выполните в командной строке или поместите в файл /usr/username/namespace или в /lib/sh/profile

bind -b '#^' /chan

Под Unix в графическом режиме Inferno ведет себя странно, не откликается на клавиатуру, виснетПравить

Да и не только Inferno, как сообщает гугль. Многие пользователи обновляя библиотеки X'ов столкнулись с тем, что их приложений работавшие до той поры, стали рушиться. Выход прост - скачать заведомо рабочие библиотеки, откомпилировать и загружать их перед стартом Inferno через LD_PRELOAD. Сообщество VMWare[2] поделилось скриптом автоматизирующим этот процесс.

Ваш скрипт запуска Inferno должен выглядеть приблизительно так:

#!/bin/sh

export LD_PRELOAD=/home/username/Inferno/libX11.so
/usr/local/inferno/Linux/386/bin/emu -g1024x768 -c0 -r /usr/local/inferno

Содержимое каталога /home/username/Inferno/:

username[Inferno]$ ls -l
итого 988
-rwxr-xr-x 1 username users     136 Мар 26 08:58 startinferno.sh
lrwxrwxrwx 1 username users      15 Сен 27  2008 libX11.so -> libX11.so.6.2.0
lrwxrwxrwx 1 username users      15 Сен 27  2008 libX11.so.6 -> libX11.so.6.2.0
-rwxr-xr-x 1 username users 1000316 Сен 27  2008 libX11.so.6.2.0

Вместо подмены библиотек, можно установить переменную окружения:

 export LIBXCB_ALLOW_SLOPPY_LOCK=true

В Windows я не могу скопировать файлы, имена которых содержат пробелПравить

В Inferno для корректной обработки имен файлов с пробелами или различными символами национальных алфавитов (рунами) вы можете воспользоваться файловым сервисом trfs(4). Для этого вам надо предварительно смонтированную файловую систему, например так:

bind '#Ud:\Отчеты' /n/reports_brokennames

а затем транслировать /n/reports_brokennames в новую точку монтирования, содержащую корректные имена фалов:

trfs /n/reports_brokennames  /n/reports

Помните! Каталоги /n/reports_brokennames /n/reports должны существовать перед их использованием.

Почему в выводе ls некоторые каталоги повторяются несколько раз?Править

Это результат работы системного вызова [[sys->bind(2)]]. Прочитайте sys-intro(2) если хотите глубже разобраться в вопросе.

Где переменная PATH?Править

В Inferno не используется переменная PATH, все исполняемые модули находятся в каталоге /dis. Если вы хотите, чтобы поиск исполняемых файлов происходил и в других каталогах, просто подключите их к /dis используя команду bind:

bind -a /usr/vasya/dis /dis
Обратите внимание на то, что подкаталоги подключаемого каталога не будут видны в /dis, поэтому вам придется подключать их по отдельности

Как получить доступ к файлам удаленного сервиса из Linux?Править

Проект v9fs это реализация протокола удаленной файловой системы 9P для среды Unix. С недавних пор он официально включен в ядро Linux, так что нет необходимости в установке дополнительного программного обеспечения. На удаленной машине с установленной ОС Inferno экспортируйте файловую систему командой:

; styxlisten -A tcp!*!9fs export '#U*'

Опция -A определяет экспортирование без аутентификации. Число 564 - это номер порта (вы можете выбрать больший номер порта, если вы не привилегированный пользователь). Строка '#U*' определяет экспортирование от корня основной файловой системы. Вы можете указать произвольный каталог для экспорта, просто добавив путь к нему: '#U*'/tmp должена экспортировать только каталог /tmp. На клиентской машине вы можете теперь примонтировать удаленную файловую систему командой:

mount -t 9p 10.10.1.2 /mnt/9

Как вызвать "родную" команду на удаленной машине? Править

Команда os(1) в гостевом варианте Inferno запускает приложения родной операционной системы. Например, если в качестве родной системы выступает Linux/Unix наберите: os uname. Вы увидите вывод от команды uname основной операционной системы. Мы можем вызывать эти родные команды на разных машинах:

На удаленной машине

Эта машина будет выполнять родную программу. Предположим что на ней запущена SunOS.

  1. Возьмите простую программу для удаленной машины. Хорошим примером будет простой шелл-скрипт. Создадим файл и назовем его dateloop.sh со следующим содержанием:
#!/bin/bash

for i in 1 2 3 4 5 6 7 8 9 10; do
    echo "Hello from `uname`, `date`"
    sleep 1
done
  1. Дадим файлу права на исполнение (chmod a+x dateloop.sh). Проверим, что программа работает правильно (вы должны увидеть 10 строчек, выводящихся по одной за секунду, каждая из который выглядит следующим образом: Hello from SunOS, Tue Apr 20 09:34:07 BST 2004).
  2. Запустите Inferno и наберите команду svc/net для запуска сетевых сервисов.
  3. Запустите "bind -a '#C' /". Эта команда свяжет командную строку основной ОС с каталогом /cmd (наберите lc / и вы должны увидеть, что появился каталог /cmd ).
  4. Запустите os /full/path/to/dateloop.sh. Проверьте что вы получили такой же вывод что и раньше.

На локальной машине

Предположим что на этой машине запущен Linux.

  1. Запустите Inferno и стартуйте сетевые сервисы командой svc/net.
  2. Выполните "bind -a '#C' /".
  3. Запустите os uname. Удостоверьтесь, что получили ожидаемый результат (строка "Linux").
  4. Теперь примонтируем полностью удаленную файловую систему. Выполните mount machine.somewhere.com /n/remote.

Это эквивалентно запуску mount tcp!machine.somewhere.com!styx /n/remote, где styx это это псевдоним номера порта, на котором будет обслуживаться все пространство имен (по умолчанию это порт 6666: смотри /lib/ndb/inferno). Этот слушающий процесс запускается при старте сетевых сервисов командой svc/net (вам может понадобится аутентифицировать это соединение. За подробностями обращайтесь к страницам руководства man bind(1), svc).

  1. Убедитесь, что монтирование прошло успешно: lc /n/remote. Вы должны увидеть все удаленное пространство имен.
  2. Смонтируем удаленный каталог /cmd к нашему существующему каталогу: bind -b /n/remote/cmd /cmd. Обратите внимание на использование флага -b, а не -a. Это важно (смотрите страницу справочного руководства по команде bind).
  3. Запустите os /full/path/to/dateloop.sh снова. Вы должны увидеть вывод команды dateloop.sh удаленной машины как и раньше.

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


Могу ли я удаленно работать на машине с запущенной ОС Inferno? Править

  • 1. Способ доставшийся в наследство от Plan 9 (подсмотрено в документе "EineUbersichtuber das Betriebssystem Inferno" Susanne Wenger). Монтируем ресурсы удаленной машины, и связываем локальные клавиатуру, дисплей и мышь. (Не работает в 4-й редакции)
mount 182.1.1.3 /n/remote
bind /n/remote/dev/keyboard /dev/keboard
bind /n/remote/dev/draw /dev/draw
bind /n/remote/dev/pointer /dev/pointer
  • 2. Способ подключиться штатными средствами
wm/dmview remoteserver

При таком способе, на удаленной машине должен быть запущен сервер wm/dmwm. Во время подключения на экране удаленной машины появится запрос о принятии или отклонении подключения.

  • 3. Использование аналога drawterm

Способ предложенный Caerwyn B Jones в ветке drawterm equivalent in inferno

% mount {wmexport} /mnt/wm
% cpu tcp!board
; wmimport -w /n/client/mnt/wm wm/wm&

Чуть более развернутое объяснение от Roger Peppé в ветке Inferno as network window system

И наконец, на странице проекта inferno-os прикреплены два файла cpug и rcmdg реализующие идею

cpug wm/wm
# получим рабочее окружение wm/wm запущенное на remoteserver
# будем управлять его ресурсами, как если бы мы находились непосредственно там

Активация терминала Inferno на телефоне Philips IS2630 Править

Наберите на клавиатуре:

314159265359##**

Появится окно с четырьмя пунктами:

  1. OutOfBox и сброс
  2. Вызвать Inferno Shell
  3. Прочитать данные с Flash Config
  4. Вернуться