mono on debian におけるファイルの実行

  • debian に mono をインストールして,C# ファイルをコンパイルすると *.exe という実行可能ビットが立ったファイルが生成され,実行することができる.
  • file コマンドで調べると
01.exe: MS-DOS executable PE  for MS Windows (console) Intel 80386 32-bit Mono/.Net assembly

というファイルで,バイナリダンプしてみても確かに MS-DOS PE ファイルだった.

  • なぜこれが実行できるのか?
  • →binfmt-support というパッケージにより実現されている.
  • 実際は binfmt-support は登録業務を行うだけで,実際には kernel オプション(モジュール)の binfmt_misc によって実現されている.
  • 登録された情報は /var/lib/binfmts/ に保存される.
  • 実行許可ビットが立ったファイルを実行すると順に何が起こるかを解明せよ.