Commit | Line | Data |
---|---|---|
9cdda3d2 MCC |
1 | Mono(tm) Binary Kernel Support for Linux |
2 | ----------------------------------------- | |
1da177e4 LT |
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 | |
51e028e4 | 12 | a binary package, a source tarball or by installing from Git. Binary |
1da177e4 LT |
13 | packages for several distributions can be found at: |
14 | ||
93431e06 | 15 | https://www.mono-project.com/download/ |
1da177e4 LT |
16 | |
17 | Instructions for compiling Mono can be found at: | |
18 | ||
93431e06 | 19 | https://www.mono-project.com/docs/compiling-mono/linux/ |
1da177e4 LT |
20 | |
21 | Once the Mono CLR support has been installed, just check that | |
9cdda3d2 MCC |
22 | ``/usr/bin/mono`` (which could be located elsewhere, for example |
23 | ``/usr/local/bin/mono``) is working. | |
1da177e4 LT |
24 | |
25 | 2) You have to compile BINFMT_MISC either as a module or into | |
9cdda3d2 | 26 | the kernel (``CONFIG_BINFMT_MISC``) and set it up properly. |
1da177e4 LT |
27 | If you choose to compile it as a module, you will have |
28 | to insert it manually with modprobe/insmod, as kmod | |
9cdda3d2 MCC |
29 | cannot be easily supported with binfmt_misc. |
30 | Read the file ``binfmt_misc.txt`` in this directory to know | |
1da177e4 LT |
31 | more about the configuration process. |
32 | ||
9cdda3d2 | 33 | 3) Add the following entries to ``/etc/rc.local`` or similar script |
07a37ba5 JN |
34 | to be run at system startup: |
35 | ||
36 | .. code-block:: sh | |
1da177e4 | 37 | |
9cdda3d2 MCC |
38 | # Insert BINFMT_MISC module into the kernel |
39 | if [ ! -e /proc/sys/fs/binfmt_misc/register ]; then | |
1da177e4 LT |
40 | /sbin/modprobe binfmt_misc |
41 | # Some distributions, like Fedora Core, perform | |
42 | # the following command automatically when the | |
970e2486 LDM |
43 | # binfmt_misc module is loaded into the kernel |
44 | # or during normal boot up (systemd-based systems). | |
1da177e4 | 45 | # Thus, it is possible that the following line |
970e2486 LDM |
46 | # is not needed at all. |
47 | mount -t binfmt_misc none /proc/sys/fs/binfmt_misc | |
9cdda3d2 | 48 | fi |
1da177e4 | 49 | |
9cdda3d2 MCC |
50 | # Register support for .NET CLR binaries |
51 | if [ -e /proc/sys/fs/binfmt_misc/register ]; then | |
1da177e4 LT |
52 | # Replace /usr/bin/mono with the correct pathname to |
53 | # the Mono CLR runtime (usually /usr/local/bin/mono | |
54 | # when compiling from sources or CVS). | |
55 | echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register | |
9cdda3d2 | 56 | else |
1da177e4 LT |
57 | echo "No binfmt_misc support" |
58 | exit 1 | |
9cdda3d2 | 59 | fi |
1da177e4 | 60 | |
9cdda3d2 MCC |
61 | 4) Check that ``.exe`` binaries can be ran without the need of a |
62 | wrapper script, simply by launching the ``.exe`` file directly | |
63 | from a command prompt, for example:: | |
1da177e4 LT |
64 | |
65 | /usr/bin/xsd.exe | |
66 | ||
9cdda3d2 MCC |
67 | .. note:: |
68 | ||
69 | If this fails with a permission denied error, check | |
70 | that the ``.exe`` file has execute permissions. |