[[!meta copyright="Copyright © 2001, 2002, 2007, 2008, 2011, 2013, 2015 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] GNU Mach is the microkernel upon which a GNU Hurd system is based. It provides an Inter Process Communication (IPC) mechanism that the Hurd uses to define interfaces for implementing in a distributed multi-server fashion the services a traditional operating system kernel provides. It is maintained by the Hurd developers for the GNU project and remains compatible with [[Mach]] 3.0. The majority of GNU Mach's [[device_driver]]s are from Linux 2.0. They were added using glue code, i.e., a Linux [[emulation]] layer in Mach. GNU Mach runs on x86 machines. See the [[hardware_compatibility_list]] and information about [[ports]] to other architectures. The latest release is [[GNU Mach 1.6|news/2015-10-31-releases]]. # Advantages of GNU Mach GNU Mach is not the most advanced [[microkernel]] known to the planet, nor is it the fastest or smallest, but it has a rich set of [[interface]]s and some features which make it useful as the base of the [[Hurd]] system. * **it's free software** Anybody can use, modify, and redistribute it under the terms of the [[GNU_General_Public_License_(GPL)|gpl]]. * **it's built to survive** As a [[microkernel]], GNU Mach doesn't implement a lot of the features commonly found in an operating system, but only the bare minimum that is required to implement a full operating system on top of it. This means that a lot of the operating system code is maintained outside of GNU Mach, and while this code may go through a complete redesign, the code of the microkernel can remain comparatively stable. * **it's scalable** Mach is particularly well suited for SMP and network cluster techniques. Thread support is provided at the kernel level, and the kernel itself takes advantage of that. Network transparency at the [[IPC]] level makes resources of the system available across machine boundaries (with NORMA IPC, currently not available in GNU Mach). * **it exists** The Mach microkernel is real software that works Right Now. It is not a research or a proposal. You don't have to wait at all before you can start using and developing it. Mach has been used in many operating systems in the past, usually as the base for a single UNIX server. In the GNU system, Mach is the base of a functional multi-server operating system, the [[Hurd]]. # Booting To actually use the kernel and boot the GNU operating system, you need a boot loader. Not all boot loaders are capable to boot the GNU system, you need one that supports the multiboot standard. The bootloader of the GNU system is [[GNU_GRUB|grub]], which supports a broad range of operating systems including GNU/Hurd. # Development * [[Reference_Manual]] * [[Building]] * [[Debugging]] * [[Boot_Trace]] * [[Memory_Management]] * [[Continuation]]s * [[Preemption]] * [[Projects]] * [[Rules]] * [[Open Issues|tag/open_issue_gnumach]]