ホストされたOS Infernoをホームディレクトリにインストールしたので、システムの構成に進むことができます。
内容
せっかちな人のために
記事は小さくありませんでした、なぜなら 「何をする」だけでなく、なぜ、なぜ、その他のオプションが利用できるか、初心者向けのインフェルノの操作に関する追加の説明も記載されています。 システムをすばやく構成したい場合は、 推奨の/ lib / sh / profileをダウンロードするだけでなく、LinuxまたはFreeBSDがある場合は、 ラッパースクリプトを作成してinfernoを実行します 。
Infernoの開始と終了
Hostedは、
emu
または
emu-g
コマンドでグラフィックスモードで起動されます(グラフィックモードサポートなし)。 デフォルトでは、
sh
はコマンドプロンプト「
;
」を起動して表示します
;
$ emu ;
exit
か、
Ctrl-D
を使用してエントリの末尾をマークすることにより、shを
exit
でき
exit
(Windowsでは、
Ctrl-D
後、さらに
Enter
押します)。
shutdown -h
を使用して、または(Linux / Winの場合のみ)
Ctrl-C
作業を中断して、infernoを終了できます。
現時点では、これらすべての方法の違いに気付くことはありません-それらはすべてインフェルノの動作を停止します。 実際には、アクティブなプロセスが存在している間もインフェルノは機能しますが、現時点ではそのようなプロセスは
sh
のみです。
ndb/cs
(ネットワークの操作に必要なサービスリゾルバー)などの追加のプロセスを開始した場合、
sh
を終了した後
sh
infernoは引き続き機能しますが、影響を与えることはできなくなります。 Linux / Winでは、
Ctrl-C
を使用してインフェルノをオフにすることは引き続き可能ですが、FreeBSD / MacOSXでは、メインOSを使用してemuプロセスを強制終了するだけです。 もちろん、最初にrstyxサービス(リモートアクセス用のsshの類似物)を開始した場合、別のエミュに接続して、リモートで
shutdown -h
実行できます。
もう1つの違いは、LinuxとFreeBSDの場合です。インフェルノが完了すると、コンソールに「Killed」というメッセージが表示されます。
powerman@Ubuntu:~$ emu-g echo ok ok powerman@Ubuntu:~$ [powerman@freebsd ~]$ emu-g echo ok ok Killed: 9 [powerman@freebsd ~]$
彼からの害はなく、この問題を解決する方法があります。 これを行うには、ラッパースクリプト〜/ bin / emuおよび〜/ bin / emu-gを使用してemuとemu-gを実行する必要があります。
powerman@Ubuntu:~$ cat ~/bin/emu-g #!/bin/bash $INFERNO_ROOT/Linux/386/bin/emu-g "$@" </dev/stdin & wait 2>/dev/null [powerman@freebsd ~]$ cat bin/emu-g #!/usr/local/bin/bash $INFERNO_ROOT/FreeBSD/386/bin/emu-g "$@" </dev/stdin & wait 2>/dev/null
Linuxでは、これらのスクリプトを作成して実行可能にするだけで十分ですが、FreeBSDでは、bashを追加インストールし、 ~/.bash_profile
PATH
値を変更して、ディレクトリ
/home/_/bin
infernoディレクトリの前になるようにする必要があります。
Emuオプション
いくつかのパラメーターは、infernoの開始時に指定されます。 コマンドラインで明示的に指定するか、
EMU
環境変数に登録できます。 これらのパラメーターの1つのみが必須です:
-r////
。システムのインストール中にすでに
EMU
変数に登録しました。 便利なオプションパラメータのうち、次の点に言及する価値があります。
-
-g X x Y
は、infernoのグラフィカル環境の解像度を設定します。例:-g1024x768
-
-1
はJITが含まれます(-1
およびパフォーマンスのテスト時に意味があります) -
-p pool = maxsize
使用-p pool = maxsize
と、使用可能なメモリボリュームを制御でき-p pool = maxsize
プールの値はmain
、heap
またはimage
にできます。たとえば、大量のデータを処理する必要がある場合は、ヒープを128MBに増やすことができます。-p heap=134217728
一部のパラメーターの現在の値は、inferno内にあります。
; echo $emuroot /home/powerman/inferno ; echo $emuargs emu -g1024x768 -c1 ; cat /dev/memory 277568 33554432 328032 3303 1490 1 33276852 main 52544 33554432 78496 1650 1271 1 33501876 heap 0 33554688 0 0 0 0 33554676 image
ご覧のとおり(最後から2番目の列)、デフォルトでは、infernoは各メモリプールに32MB以下しか使用しません。
; cat /dev/jit 0; echo 1 >/dev/jit ; cat /dev/jit 1; echo 0 >/dev/jit ; cat /dev/jit 0;
JITは動的にオン/オフを切り替えることができますが、変更されたJIT値は、この変更後にロードされるモジュールにのみ影響します(プログラムとライブラリに違いはありません。すべてロード可能なモジュールです)。 したがって、 emu
パラメーターでJIT値を指定することをお
emu
ます。
/ lib / sh /プロファイル
infernoが起動すると、
emuinit
で
emuinit
が起動し、
sh
-l
が起動し
emuinit
。
-l
は、
/lib/sh/profile
からコマンドを実行するようにshに指示し
/lib/sh/profile
。 このファイルは* NIXブートスクリプトの類似物であり、infernoをセットアップおよび初期化するためのコマンドを追加します(このファイルにはコマンドはありません)。
emuパラメーターで開始するアプリケーションの名前を指定して内部的に開始した場合、
/lib/sh/profile
からのコマンドは実行されないことに注意してください(明示的にロードしない限り)。 例:
$ emu-g ; cat /lib/sh/profile # emu sh initialisation here ; echo 'echo executing /lib/sh/profile' >> /lib/sh/profile ; shutdown -h $ emu-g executing /lib/sh/profile ; shutdown -h $ emu-g sh ; shutdown -h $ emu-g sh -l executing /lib/sh/profile ; shutdown -h $ emu-g sh -c 'run /lib/sh/profile; echo ok; shutdown -h' executing /lib/sh/profile ok
タイムゾーン
現在のゾーンはfile
/locale/timezone
によって決定され、利用可能なオプションは
/locale/
ディレクトリにある他のファイルの名前を見ることで見ることができます。 従来のオペレーティングシステムでは、ファイル
/locale/_
を
/locale/timezone
上にコピーするだけです。 infernoでもこれを行うことができますが、infernoのタイムゾーンを変更するより自然な方法は、 bind(1)で名前空間を変更することです:
; date Sun Jun 17 19:00:28 BST 2012 ; bind /locale/EET /locale/timezone ; date Sun Jun 17 21:00:39 EEST 2012
ゾーンを見つけて/lib/sh/profile
追加し
/lib/sh/profile
:
bind /locale/_ /locale/timezone
/ちゃん
/lib/sh/profile
に追加する別の便利なコマンドは次のとおりです。
bind -b '#s' /chan
srv(3)ドライバーを/ chanディレクトリーに接続します。 inferno契約で採用された契約に従って、仮想ファイルがこのディレクトリに作成されます。その読み取り/書き込みは、srvドライバーによって、チャネルを介してこれらのファイルを処理するプロセスに送信されるメッセージに変換されます。 そのようなファイル(Limboのfile2chan(2)またはshのfile2chan(1)で作成)を使用することが、infernoでファイルサーバーを実装する最も簡単な方法です。
ホームディレクトリ
Infernoユーザーのホームディレクトリは
/usr/
ディレクトリにあります。 デフォルトでは、
inferno/
サブディレクトリは1つだけです。これは、基本的に他のユーザーのホームディレクトリを作成するためのテンプレートです。 したがって、メインOSのアカウントのみがインフェルノと呼ばれない場合、:)まだインフェルノに独自のホームディレクトリがありません。
$ emu ; pwd / ; cd cd: /usr/powerman: '/usr/powerman' does not exist ;
これを作成する最も簡単な方法は、単に/usr/inferno/
を
/usr/__/
/usr/inferno/
にコピーすることです(実際、これはinernoに新しいユーザーアカウントを追加する方法です)。 しかし、別の、より柔軟で効率的な方法で進みます-ユーザーのホームディレクトリとして、メインOSでの実際のユーザーのホームディレクトリに接続します(および/ usr / inferno /からのファイルとサブディレクトリは、メインOSの実際のホームディレクトリにコピーできます)。
$ pwd /home/powerman $ emu ; mount {mntgen&} /usr ; bind -c '#U*/home/powerman' /usr/powerman ; cd ; pwd /usr/powerman
mntgen(4)ファイルサーバーは、ディレクトリ(マウントポイント)を作成しないために必要です。これらは、誰かが連絡したときにmntgenが接続されているディレクトリに自動的に表示されます。 私たちの場合(Inferno OSがホームディレクトリにインストールされている場合)、mntgenを使用する代わりに、 ~/inferno/usr/powerman/
を単純に作成することができますが、infernoが
/usr/local/inferno/
にシステム全体のルートによってインストールされた場合、その場合、ディレクトリ
/usr/local/inferno/usr/powerman/
を作成するための十分な権限がなく、infernoに新しいユーザーを追加するにはルート権限が必要になります。 また、mntgenを使用すると、ルートなしでこの問題を解決し、仮想ディレクトリを作成できる物理ディレクトリを作成できました。
柔軟性を高めるために、環境変数INFERNO_HOMEのサポートを追加します。空でない場合、この変数で指定されたパスはホームディレクトリに接続されます。 したがって、
/lib/sh/profile
に追加し
/lib/sh/profile
。
... * NIX
( home unused ) := `{os sh -c 'echo $INFERNO_HOME $HOME' </dev/null} home = '#U*'^$home user := `{cat /dev/user} mount {mntgen&} /usr bind -c $home /usr/$user cd
...勝つ
home := `{os cmd /C 'IF DEFINED INFERNO_HOME ( echo %INFERNO_HOME:\=/% ) ELSE ( echo %USERPROFILE:\=/% )'} home = '#U'^$home user := `{cat /dev/user} mount {mntgen&} /usr bind -c $home /usr/$user cd
ユーザー設定
/lib/sh/profile
に追加する最後の意味は、追加のユーザー設定のサポートです。
load std and {ftest -d tmp} {bind -c tmp /tmp} and {ftest -e namespace} {nsbuild} and {ftest -e profile} {run profile}
andコマンドを使用できるように、シェルモジュールstdをロードする必要があります(ifおよび&&のアナログ)。 ユーザーのホームディレクトリにtmp/
サブディレクトリがある場合、システム
/tmp/
接続されます(この場合、これは特に必要ではありませんが、システム全体で
/usr/local/inferno/
にinfernoをインストールする場合は、書き込み権限がありません
/usr/local/inferno/tmp/
このコマンドが必要になります)。 ユーザーのホームディレクトリに
namespace
と
profile
ファイルがある場合、それらが実行されます。
ダウンロードする
便宜上、推奨される
/lib/sh/profile
をダウンロードできます。 * NIX 、 Win (ゾーンをGMTから独自のものに変更することを忘れないでください)。
GUI(wm / wm)
wm / wmが起動すると、ユーザーのホームディレクトリにある
/lib/wmsetup
と、もしあれば
/lib/wmsetup
が実行されます。 配管工の設定は、ユーザーのホームディレクトリの
./lib/plumbing
にあります(
/usr/inferno/
からホームディレクトリにコピーすることを忘れないでください)。 現在これらのファイルに何かを設定する必要はありません。それらがどこにあるかを知り、何が含まれているかを確認するためにそれらについて言及しました。
認証用のキー
キーはデフォルトでホームディレクトリの
./keyring/
サブディレクトリから書き込まれ、使用されます。 古い記事で、 認証がインフェルノにどのように配置されているかについて既に説明しましたが 、ここにすべてをコピーする意味はわかりません。
ネットワーク
原則として、ホストされたインフェルノネットワークを構成する必要はありません。 たとえば、 ya.ruを (IPで)ダウンロードします。
$ emu ; webgrab -rv -o /dev/null 87.250.251.3 connecting to 87.250.251.3 writing request: GET / HTTP/1.0 Host: 87.250.251.3 User-agent: Inferno/webgrab Cache-Control: no-cache Pragma: no-cache response: HTTP/1.1 200 Ok created /dev/null, 7383 bytes
ただし、名前のIPへの変換をサポートするには、
ndb/cs
を開始する必要があり
ndb/cs
。
; ndb/cs ; webgrab -rv -o /dev/null ya.ru connecting to ya.ru writing request: GET / HTTP/1.0 Host: ya.ru User-agent: Inferno/webgrab Cache-Control: no-cache Pragma: no-cache response: HTTP/1.1 200 Ok created /dev/null, 7689 bytes
cs(8)サービスは、ファイル
/lib/ndb/common
(* NIXの
/etc/services
に類似)、
/lib/ndb/inferno
(補語
/lib/ndb/common
inferno固有のポートと
/lib/ndb/common
)および
/lib/ndb/local
。
ファイル
/lib/ndb/local
が主なものです-ローカル設定だけでなく、上記の他のファイルも接続します。
infernosite=
セクションでは、サーバーの短縮名とその実際の名前またはIPアドレスとの対応を設定できます。 最も一般的に使用される短縮名は、 CA (認証局)およびレジストリ(4)サービスを持つサーバーを示すSIGNERおよびレジストリです。 短い名前で接続するには、その前に「
$
」記号を追加する必要があります。 たとえば、Yandexの名前を追加しましょう。
$ emu ; cat /lib/ndb/local ... infernosite= ... Yandex=www.yandex.ru ; ndb/cs ; webgrab -rv -o /dev/null '$Yandex' connecting to $Yandex writing request: GET / HTTP/1.0 Host: $Yandex User-agent: Inferno/webgrab Cache-Control: no-cache Pragma: no-cache response: HTTP/1.1 200 Ok created /dev/null, 7378 bytes
ファイル
/lib/ndb/services
は、* NIX
/etc/services
形式のinfernoポート固有の説明が含まれて
/etc/services
ます。 メインOSからinfernovyeサービスに接続する方が便利になるように、メインOSの
/etc/services
に追加することは理にかなっています。
cat ~/inferno/lib/ndb/services | sudo bash -c 'cat >>/etc/services'
OS Infernoアップデート
システムを更新するには、インストール中に使用したのと同じコマンドを繰り返すだけです。
... * NIX
cd ~/inferno hg pull -uv mk nuke mk install # X- GUI mk CONF=emu-g install
...勝つ
「Windows SDK 7.1コマンドプロンプト」(または「Visual Studioコマンドプロンプト(2010)」-インストールした内容に応じて)を起動します。
cd \inferno hg pull -uv mk nuke mk install