About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / admin-guide / mono.rst




Custom Search

Based on kernel version 4.16.1. Page generated on 2018-04-09 11:52 EST.

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 Git. Binary
13	   packages for several distributions can be found at:
14	
15		http://www.mono-project.com/download/
16	
17	   Instructions for compiling Mono can be found at:
18	
19		http://www.mono-project.com/docs/compiling-mono/linux/
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
29	   cannot be easily supported with binfmt_misc.
30	   Read the file ``binfmt_misc.txt`` in this directory to know
31	   more about the configuration process.
32	
33	3) Add the following entries to ``/etc/rc.local`` or similar script
34	   to be run at system startup:
35	
36	   .. code-block:: sh
37	
38	    # Insert BINFMT_MISC module into the kernel
39	    if [ ! -e /proc/sys/fs/binfmt_misc/register ]; then
40	        /sbin/modprobe binfmt_misc
41		# Some distributions, like Fedora Core, perform
42		# the following command automatically when the
43		# binfmt_misc module is loaded into the kernel
44		# or during normal boot up (systemd-based systems).
45		# Thus, it is possible that the following line
46		# is not needed at all.
47		mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
48	    fi
49	
50	    # Register support for .NET CLR binaries
51	    if [ -e /proc/sys/fs/binfmt_misc/register ]; then
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
56	    else
57	        echo "No binfmt_misc support"
58	        exit 1
59	    fi
60	
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::
64	
65		/usr/bin/xsd.exe
66	
67	   .. note::
68	
69	      If this fails with a permission denied error, check
70	      that the ``.exe`` file has execute permissions.
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.