Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | Mono(tm) Binary Kernel Support for Linux |
2 | ----------------------------------------- | |
3 | ||
4 | To configure Linux to automatically execute Mono-based .NET binaries | |
5 | (in the form of .exe files) without the need to use the mono CLR | |
6 | wrapper, you can use the BINFMT_MISC kernel support. | |
7 | ||
8 | This will allow you to execute Mono-based .NET binaries just like any | |
9 | other program after you have done the following: | |
10 | ||
11 | 1) You MUST FIRST install the Mono CLR support, either by downloading | |
12 | a binary package, a source tarball or by installing from CVS. Binary | |
13 | packages for several distributions can be found at: | |
14 | ||
15 | http://go-mono.com/download.html | |
16 | ||
17 | Instructions for compiling Mono can be found at: | |
18 | ||
19 | http://www.go-mono.com/compiling.html | |
20 | ||
21 | Once the Mono CLR support has been installed, just check that | |
22 | /usr/bin/mono (which could be located elsewhere, for example | |
23 | /usr/local/bin/mono) is working. | |
24 | ||
25 | 2) You have to compile BINFMT_MISC either as a module or into | |
26 | the kernel (CONFIG_BINFMT_MISC) and set it up properly. | |
27 | If you choose to compile it as a module, you will have | |
28 | to insert it manually with modprobe/insmod, as kmod | |
84eb8d06 | 29 | cannot be easily supported with binfmt_misc. |
1da177e4 LT |
30 | Read the file 'binfmt_misc.txt' in this directory to know |
31 | more about the configuration process. | |
32 | ||
338cec32 | 33 | 3) Add the following entries to /etc/rc.local or similar script |
1da177e4 LT |
34 | to be run at system startup: |
35 | ||
36 | # Insert BINFMT_MISC module into the kernel | |
37 | if [ ! -e /proc/sys/fs/binfmt_misc/register ]; then | |
38 | /sbin/modprobe binfmt_misc | |
39 | # Some distributions, like Fedora Core, perform | |
40 | # the following command automatically when the | |
41 | # binfmt_misc module is loaded into the kernel. | |
42 | # Thus, it is possible that the following line | |
43 | # is not needed at all. Look at /etc/modprobe.conf | |
44 | # to check whether this is applicable or not. | |
45 | mount -t binfmt_misc none /proc/sys/fs/binfmt_misc | |
46 | fi | |
47 | ||
48 | # Register support for .NET CLR binaries | |
49 | if [ -e /proc/sys/fs/binfmt_misc/register ]; then | |
50 | # Replace /usr/bin/mono with the correct pathname to | |
51 | # the Mono CLR runtime (usually /usr/local/bin/mono | |
52 | # when compiling from sources or CVS). | |
53 | echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register | |
54 | else | |
55 | echo "No binfmt_misc support" | |
56 | exit 1 | |
57 | fi | |
58 | ||
59 | 4) Check that .exe binaries can be ran without the need of a | |
60 | wrapper script, simply by launching the .exe file directly | |
61 | from a command prompt, for example: | |
62 | ||
63 | /usr/bin/xsd.exe | |
64 | ||
65 | NOTE: If this fails with a permission denied error, check | |
66 | that the .exe file has execute permissions. |