OS Infernoを構成する

FAQ: OS Infernoとは何ですか、なぜ必要なのですか?



ホストされた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の場合です。インフェルノが完了すると、コンソールに「Kill​​ed」というメッセージが表示されます。

 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



変数に登録しました。 便利なオプションパラメータのうち、次の点に言及する価値があります。

emuパラメータの詳細については、 emu(1)のマニュアルページを参照してください。



一部のパラメーターの現在の値は、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



をダウンロードできます。 * NIXWin (ゾーンを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
      
      






All Articles