About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / mono.txt


Based on kernel version 4.9. Page generated on 2016-12-21 14:36 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 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
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	# 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		# or during normal boot up (systemd-based systems).
43		# Thus, it is possible that the following line
44		# is not needed at all.
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.
Hide Line Numbers


About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog