Commit 5f746471 authored by Felipe Alfaro Solana's avatar Felipe Alfaro Solana Committed by Linus Torvalds

[PATCH] Add BINFMT_MISC docs for Mono .NET-based binaries

Just as there is documentation for BINFMT_MISC and Java bytecodes
support, I thought it could be interesting to add documentation on how
to add BINFMT_MISC support for directly running .NET ".exe" binaries
using the Mono CLR.
parent 379092d2
...@@ -22,7 +22,7 @@ other program after you have done the following: ...@@ -22,7 +22,7 @@ other program after you have done the following:
the kernel (CONFIG_BINFMT_MISC) and set it up properly. the kernel (CONFIG_BINFMT_MISC) and set it up properly.
If you choose to compile it as a module, you will have If you choose to compile it as a module, you will have
to insert it manually with modprobe/insmod, as kmod to insert it manually with modprobe/insmod, as kmod
can not easy be supported with binfmt_misc. can not easily be supported with binfmt_misc.
Read the file 'binfmt_misc.txt' in this directory to know Read the file 'binfmt_misc.txt' in this directory to know
more about the configuration process. more about the configuration process.
......
Mono(tm) Binary Kernel Support for Linux
-----------------------------------------
To configure Linux to automatically execute Mono-based .NET binaries
(in the form of .exe files) without the need to use the mono CLR
wrapper, you can use the BINFMT_MISC kernel support.
This will allow you to execute Mono-based .NET binaries just like any
other program after you have done the following:
1) You MUST FIRST install the Mono CLR support, either by downloading
a binary package, a source tarball or by installing from CVS. Binary
packages for several distributions can be found at:
http://go-mono.com/download.html
Instructions for compiling Mono can be found at:
http://www.go-mono.com/compiling.html
Once the Mono CLR support has been installed, just check that
/usr/bin/mono (which could be located elsewhere, for example
/usr/local/bin/mono) is working.
2) You have to compile BINFMT_MISC either as a module or into
the kernel (CONFIG_BINFMT_MISC) and set it up properly.
If you choose to compile it as a module, you will have
to insert it manually with modprobe/insmod, as kmod
can not be easily supported with binfmt_misc.
Read the file 'binfmt_misc.txt' in this directory to know
more about the configuration process.
3) Add the following enries to /etc/rc.local or similar script
to be run at system startup:
# Insert BINFMT_MISC module into the kernel
if [ ! -e /proc/sys/fs/binfmt_misc/register ]; then
/sbin/modprobe binfmt_misc
# Some distributions, like Fedora Core, perform
# the following command automatically when the
# binfmt_misc module is loaded into the kernel.
# Thus, it is possible that the following line
# is not needed at all. Look at /etc/modprobe.conf
# to check whether this is applicable or not.
mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
fi
# Register support for .NET CLR binaries
if [ -e /proc/sys/fs/binfmt_misc/register ]; then
# Replace /usr/bin/mono with the correct pathname to
# the Mono CLR runtime (usually /usr/local/bin/mono
# when compiling from sources or CVS).
echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register
else
echo "No binfmt_misc support"
exit 1
fi
4) Check that .exe binaries can be ran without the need of a
wrapper script, simply by launching the .exe file directly
from a command prompt, for example:
/usr/bin/xsd.exe
NOTE: If this fails with a permission denied error, check
that the .exe file has execute permissions.
...@@ -99,7 +99,7 @@ config BINFMT_MISC ...@@ -99,7 +99,7 @@ config BINFMT_MISC
---help--- ---help---
If you say Y here, it will be possible to plug wrapper-driven binary If you say Y here, it will be possible to plug wrapper-driven binary
formats into the kernel. You will like this especially when you use formats into the kernel. You will like this especially when you use
programs that need an interpreter to run like Java, Python or programs that need an interpreter to run like Java, Python, .NET or
Emacs-Lisp. It's also useful if you often run DOS executables under Emacs-Lisp. It's also useful if you often run DOS executables under
the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from
<http://www.tldp.org/docs.html#howto>). Once you have <http://www.tldp.org/docs.html#howto>). Once you have
...@@ -109,8 +109,9 @@ config BINFMT_MISC ...@@ -109,8 +109,9 @@ config BINFMT_MISC
You can do other nice things, too. Read the file You can do other nice things, too. Read the file
<file:Documentation/binfmt_misc.txt> to learn how to use this <file:Documentation/binfmt_misc.txt> to learn how to use this
feature, and <file:Documentation/java.txt> for information about how feature, <file:Documentation/java.txt> for information about how
to include Java support. to include Java support. and <file:Documentation/mono.txt> for
information about how to include Mono-based .NET support.
To use binfmt_misc, you will need to mount it: To use binfmt_misc, you will need to mount it:
mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment