[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]]

## Compiling GNU Mach microkernel

Host development system is IBM T41 running Debian Sarge 3.1r0a GNU/Linux.

* gcc version: 3.3.5
* GNU sed version: 4.1.2
* GNU make version: 3.8
* mig version: 1.3-4

Obtained gnumach-1-branch sources from cvs:

    export CVS_RSH="ssh"
    cvs -z3 -d:ext:anoncvs@ savannah.gnu.org:/cvsroot/hurd co -r gnumach-1-branch gnumach

Obtained mig_1.3-4_i386.deb from
http://www.hadrons.org/~guillem/debian/pool/main/mig/. Installed it using dpkg:

    dpkg -i mig_1.3-4_i386.deb

Entered into the gnumach sources and did the following for compilation:

    mkdir build
    cd build
    ../configure --host=i386-unknown-gnu0.2 --build=i586-pc-linux-gnu \
      --enable-kdb --enable-ide
    make

The kernel file is created in the build directory.  Move it to /boot on the
testing x86 system Hurd partition.  Rename it as gnumach1 and compress it:

    mv kernel gnumach1
    gzip gnumach1

Add a new entry on the testing machine /boot/grub/menu.lst to boot the new
kernel.

    title GNU Hurd K10 Compiled gnumach
    kernel (hd0,3)/boot/gnumach1.gz root=device:hd2s4 -s
    module (hd0,3)/hurd/ext2fs.static--multiboot-command-line=${kernel-command-line} \\
      --host-priv-port=${host-port} --device-master-port=${device-port} \\
      --exec-server-task=${exec-task} -T typed ${root} $(task-create)$(task-resume)
    module (hd0,3)/lib/ld.so.1 /hurd/exec $(exec-task=task-create)

Reboot into the new compiled mygnumach1.gz kernel!