Linux 用 Mono(tm) バイナリカーネルサポート ------------------------------------------ mono CLR ラッパーを使う必要なく Mono ベースの (.exe ファイル形式の) .NET バイナリを自動的に実行できるように Linux を設定するために、 BINFMT_MISC カーネルサポートを使用することができます。 次のことをおこなえば、他のプログラムと同じように、Mono ベースの .NET バイナリを実行することができるようになります。 1) バイナリパッケージ、ソースの tarball をダウンロードするか、または CVS からインストールするかして、最初に Mono CLR サポートをインス トールする必要があります。幾つかのディストリビューション用のバイ ナリパッケージが次の場所にあります。 http://go-mono.com/download.html Mono のコンパイルに関する説明は次の場所にあります。 http://www.go-mono.com/compiling.html Mono CLR サポートをインストールしたら、/usr/bin/mono (他の場所、 例えば /usr/local/bin/mono に配置されることもあります) が動くか どうかチェックしてください。 2) BINFMT_MISC をモジュールとしてコンパイルするか、カーネルに組み 込み (CONFIG_BINFMT_MISC), 適切にセットアップする必要があります。 モジュールとしてコンパイルすることを選んだ場合は、modprobe/insmod を使って手作業でインストールする必要があるでしょう。というのは、 binfmt_misc と一緒だと、kmod を簡単にサポートできないからです。 設定手順の詳細については、このディレクトリ内の 'binfmt_misc.txt' ファイルを読んでください。 3) システム起動時に実行されるよう、次のエントリを /etc/rc.local, または同等のスクリプトに加えてください。 # カーネルに BINFMT_MISC モジュールを挿入する if [ ! -e /proc/sys/fs/binfmt_misc/register ]; then /sbin/modprobe binfmt_misc # Fedora Core のような幾つかのディストリビューションでは、 # binfmt_misc モジュールがカーネルにロードされたときに # 次のコマンドが自動的に実行されます。そのため、次のコマ # ンドラインがまったく不要であることもありえます。この # ことがあてはまるかどうかは、/etc/modprobe.conf を参照 # してください。 mount -t binfmt_misc none /proc/sys/fs/binfmt_misc fi # .NET CLR バイナリ用サポートを登録する if [ -e /proc/sys/fs/binfmt_misc/register ]; then # /usr/bin/mono を Mono CLR ランタイムの正しいパス名に # 置き換えてください (ソースもしくは CVS からコンパイル # すると、普通は /usr/local/bin/mono になります)。 echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register else echo "No binfmt_misc support" exit 1 fi 4) コマンドプロンプトから直接 .exe ファイルを単に起動してみて、 ラッパースクリプトを必要とせずに .exe バイナリが実行できるか どうかチェックしてください。例えば次のようにします。 /usr/bin/xsd.exe 注意:もしもパーミッション拒否エラーにより失敗した場合は、.exe ファイルに実行権限があるかどうかチェックしてください。