
      
〜 技術解説からカーネルカスタマイズまで 〜
宮本 久仁男<miyamotokn@nttdata.co.jp>
NTTデータ システム開発事業本部
基盤システム事業部 第一ソリューション技術担当
2002/5/25
 
         UMLで使用可能なツール
以下に紹介するツールは、RPMパッケージでUMLをインストールすると、一緒にインストールされます。ツールのみのソースコードは、uml_utilities_*という名前が付いています。このソースコードも、やはりダウンロードページから取得可能です。
■uml_mconsole
ネットワークと通常提供されるコンソール以外のGuest OSの制御は、uml_mconsoleというプログラムで行います。
mconsoleは、UMLがブート時に作成する「Unix Domain Socket」(以下UDS)ファイルを経由して実施します。UDSファイル名は、ブート時のメッセージに表示されます。例えば、
mconsole (version 1) initialized on /home/kmiya/.uml/4QV2hZ/mconsole | 
        
のように表示されます。
# uml_mconsole [mconsoleのソケット名] | 
        
として、指定したUDSファイル名(省略不可)のソケットと接続し、ワークステーションやサーバのROMモニタが提供するような機能を実行可能です。ただし、ダイレクトに「/home」で始まる名前をコマンドのパラメータとして与えても失敗します。ここでは、
# uml_mconsole 4QV2hZ | 
        
のように、mconsoleファイルが作成されるディレクトリ名を指定してください。
使用可能なコマンドは以下のとおりです。
| version | カーネルバージョンを表示する | 
| help | ヘルプメッセージを表示する | 
| halt | UMLを停止(HALT)する | 
| reboot | UMLをリブートする | 
| config <dev>=<config> | 新しいデバイスをUMLに追加する。書式は起動コマンドラインと同じ | 
| remove <dev> | 指定したデバイスを削除する | 
| sysrq <letter> | [SysRQ]キー+特定のキーを入力したのと同じ挙動をする(注) | 
| cad | [Ctrl]+[Alt]+[Delete]キーと同じ処理を行う | 
| quit | mconsoleを終了する | 
| switch <socket-name> | socket-nameで指定した名前のソケットにコンソールを切り替える | 
| 注:詳しい挙動についてはhttp://www.linux.or.jp/JF/JFdocs/kernel-docs-2.2/sysrq.txt.htmlなどを参照してください。なお、UMLカーネルを作成するときに「Magic SysRq key (CONFIG_MAGIC_SYSRQ)」を有効にしないと機能しません。 | 
■uml_switch
このプログラムは「スイッチデーモン」と呼ばれ、Guest OSに対して仮想的なネットワークスイッチを提供します(注)。このプログラムを使うと、UMLを起動する際にHost OSの内部に閉じたネットワークを構築できます。また、複数のネットワークを作成するのも容易です。
| 注:デーモンという割には、起動してもなぜかバックグラウンドに移行したりしないのですが……。 | 
コマンドラインとしては、
# uml_switch | 
        
と起動することで/tmp/uml.ctlというソケットを作成します。UMLは、このソケットファイルを経由してパケットをやりとりすることが可能です。このようにして作成した仮想的なスイッチに対して、
# /usr/bin/linux ubd0=./difffs,/home/hoge/rootfs eth0=daemon | 
        
とすることでGuest OSが接続されます。
複数の仮想ネットワークを作り出したいときには、
# uml_switch -unix /tmp/net1.ctl /tmp/net1.dat | 
        
とすることで実現できます(注)。
| 注:上記のコマンドは次々と実行できないので、X Window Systemなり仮想コンソールなりで分けて実行する必要があります。 | 
また、
# uml_switch -unix /tmp/net1.ctl /tmp/net1.dat | 
        
として作り出した仮想的なネットワークスイッチに対してGuest OS環境を接続したい場合は、下記のコマンドラインを実行します。
# /usr/bin/linux ubd0=./difffs,/home/hoge/rootfs eth0=daemon,,unix,/tmp/net1.ctl,/tmp/net1.dat | 
        
いずれの形にしても、仮想的なスイッチに対して接続されたGuest OSからスイッチデーモンに対してパケットが送出されたり、スイッチデーモンを経由して別のGuest OSとパケットがやりとりされたりすると、以下のようなメッセージがスイッチデーモンから出力されます。
$ uml_switch -unix /tmp/test /tmp/test2 | 
        
|  
             3/5 
           | 
          
 
            
  | 
        ||||||||||
 
            
  | 
        ||||||||||
| Linux Square全記事インデックス | 
| Linux Squareフォーラム Linuxカーネル関連記事 | 
| 連載:Linux Kernel Watch(連載中) Linuxカーネル開発の現場ではさまざまな提案や議論が交わされています。その中からいくつかのトピックをピックアップしてお伝えします  | 
|
| 連載:Linuxファイルシステム技術解説 ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する  | 
|
| 特集:全貌を現したLinuxカーネル2.6[第1章] エンタープライズ向けに刷新されたカーネル・コア ついに全貌が明らかになったカーネル2.6。6月に正式リリースされる予定の次期安定版カーネルの改良点や新機能を詳しく解説する  | 
|
| 特集:/procによるLinuxチューニング[前編] /procで理解するOSの状態 Linuxの状態確認や挙動の変更で重要なのが/procファイルシステムである。/procの概念や/procを利用したOSの状態確認方法を解説する  | 
|
| 特集:仮想OS「User 
Mode Linux」活用法 Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説  | 
|
| Linuxのカーネルメンテナは柔軟なシステム カーネルメンテナが語るコミュニティとIA-64 Linux IA-64 LinuxのカーネルメンテナであるBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った  | 
|
  | 
  
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。 
 
  | 
 |




