summaryrefslogtreecommitdiff
path: root/unsorted/BuildingOskitMach.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'unsorted/BuildingOskitMach.mdwn')
-rw-r--r--unsorted/BuildingOskitMach.mdwn183
1 files changed, 183 insertions, 0 deletions
diff --git a/unsorted/BuildingOskitMach.mdwn b/unsorted/BuildingOskitMach.mdwn
new file mode 100644
index 00000000..9eee80d3
--- /dev/null
+++ b/unsorted/BuildingOskitMach.mdwn
@@ -0,0 +1,183 @@
+## <a name="HowTo_Build_OSKit_Mach"> </a> HowTo Build OSKit-Mach
+
+ <h3><a name="Introduction"> Introduction </a></h3> This is a brief "<nop>HowTO build OSKit-Mach" (a.k.a GNUmach 2.0). It covers everything from getting the latest sources of both the <a href="http://www.cs.utah.edu/flux/oskit/" target="_top">OSKit</a> and the GNUmach kernel, down to building and debugging them. <p> To be able to actually make use of your recently checked out CVS version of the GNUMach kernel &amp;amp; c:o you need a GNU system of <a href="ftp://ftp.funet.fi/pub/gnu/alpha/gnu/hurd/contrib/marcus/gnu-20020816.tar.gz" target="_top">gnu-20020816.tar.gz</a> or later. See [[Distrib/TarballNotesHome]] for more info. </p></nop></td>
+
+## <a name="Getting_your_hands_on_the_source"> Getting your hands on the source </a>
+
+First you need to checkout the relevant sources. It comes in various flavours and the recommended way is to checkout from CVS.
+
+### <a name="The_OSKit_Sources"> </a> The OSKit Sources
+
+**_Note:_** The [Savannah OSKit](http://savannah.gnu.org/projects/oskit/) project is the recommended source today of the OSKit. Its CVS tree holds the official sources and all known patches, plus a few others.
+
+**_Official Sources:_**
+
+* St. Patricks day 2002 release: <ftp://flux.cs.utah.edu/flux/oskit/oskit-20020317.tar.gz>
+
+* Valentine's day 2001 release: <ftp://flux.cs.utah.edu/flux/oskit/oskit-20010214.tar.gz>
+
+**_Official Patches:_**
+
+* Download useful [[OskitPatches]] or on the nearest Debian FTP.
+
+**_Savannah CVS:_**
+
+The recommended document for accessing the Savannah OSKit CVS is <http://savannah.gnu.org/cvs?group=oskit>
+
+The following command should get the sources for you:
+
+ $ export CVS_RSH="ssh"
+ $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/oskit co oskit
+
+Note: if you get a message about RSA/DSA keys, please go check it here: <http://savannah.gnu.org/cvs?group=oskit>
+
+### <a name="GNUmach_amp_Mig_Sources"> </a> GNUmach &amp; Mig Sources
+
+The recommended document for accessing the Hurd CVS on Savannah is at <http://savannah.gnu.org/cvs/?group=hurd>
+
+Remember to set up you environment to use 'ssh' for cvs:
+
+ $ export CVS_RSH="ssh"
+
+Note: if you get a message about RSA/DSA keys when using cvs commands, please go check it here: <http://savannah.gnu.org/cvs?group=hurd>
+
+**_Gnu Mach:_**
+
+All development, apart from critical bug fixes, is done on the upcoming 2.0 release (OSKit/Mach). A potentially confusing point is that the code for OSKit/Mach (as opposed to the 1.X release, aka "GNU Mach") is now on the `TRUNK` of the 'gnumach' CVS module. In the past the trunk was 1.X (GNU Mach) and 2.0 (OSKit/Mach) was a branch.
+
+ $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd co gnumach
+
+In case you have been tracking the oskit-branch and want to move to the current `HEAD` branch you can issue the following instead to update your tree.
+
+ $ cd <YOUR MACH DIR>
+ $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd update -Pd -A
+
+Where `<YOUR MACH DIR>` can be `gnumach`, `oskit-mach`, or similar. The `-A` is what moves you from a branch to the default (in this case HEAD), but without forcing a specific tag. `-P` Prunes your local copy from stale directories and `-d` creates new directories for you.
+
+**_The Hurd servers:_**
+
+In case you want to build the Hurd servers as well, you can check them out with:
+
+ $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd co hurd
+
+**_Inteface generator:_**
+
+See the [[microkernel/mach/MIG]] for more information.
+
+Check it out using
+
+ $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd co mig
+
+## <a name="Building"> Building </a>
+
+The recommended versions of GCC are
+
+<dl>
+ <dt> For the OSKit</dt>
+ <dd> GCC 2.95.X </dd>
+ <dt> For GNUmach and <nop>MiG</nop></dt>
+ <dd> GCC 3.2 </dd>
+</dl>
+
+### <a name="The_OSKit"> </a> The OSKit
+
+Do _not_ forget to apply all known [[OskitPatches]] before starting the build! This does not apply if you use the OSKit from [Savannah](http://savannah.gnu.org/).
+
+The attached [[ATTACHURLmodulesx86pc]], or [[ATTACHURLmodules-lightx86pc]], is an example setup, your needs may vary but this one works for standard COTS PC's. Now, how to configure and build the OSKit.
+
+ $ cd oskit-20020317/
+ $ mkdir build
+ $ cd build
+ $ CC=gcc-2.95 \
+ CFLAGS="-g" \
+ ../configure --prefix=/usr/local \
+ --enable-debug \
+ --enable-modulefile=modules-light.x86.pc
+ $ make
+ $ sudo make install
+
+Comment: Barry deFreese
+
+For you newbies like me, I had problems using `modules.x86.pc.full` and `modules.x86.pc`. There seems to be problems with `examples/dyntest`. Make sure you pull down and use the [[ATTACHURLmodules-lightx86pc]].
+
+Comment: Luis Miguel
+
+I needed to apply another patch that is not in CVS yet. The patch is in this [message](http://mail.gnu.org/archive/html/bug-hurd/2003-06/msg00054.html) in the bug-hurd mailing list.
+
+### <a name="Mach_Interface_Generator"> Mach Interface Generator </a>
+
+To build any Mach kernel you need an interface generator, MiG. To be on the safe side, use the CVS version. If you use Debian, you can install package [mig-i386-gnu](http://packages.debian.org/mig-i386-gnu). If you don't use Debian or want to compile MiG by yourself on Linux/\*BSD system, you must first install Mach headers. In Mach directory do:
+
+ $ mkdir build
+ $ cd build
+ $ ../configure --prefix=/usr/local # Default prefix is / !
+ $ sudo make -k install-headers # -k is for ignoring errors
+
+Now you are ready to compile and install MiG (commands are in Mig's source directory):
+
+ $ automake --add-missing # sometimes it's needed
+ $ mkdir build
+ $ cd build
+ $ ../configure
+ $ make
+ $ sudo make install
+
+### <a name="GNUmach_2_0_OSKit_Mach_"> </a> GNUmach 2.0 (OSKit-Mach)
+
+Unlike its half sister, the OSKit-Mach kernel does _not_ need a cross compiler. The regular gcc for your x86 Linux system does just fine. However, you might want to use gcc 3.2 with the latest and greatest CVS version of Mach.
+
+**_Configuring:_**
+
+ $ cd gnumach
+ $ mkdir build
+ $ cd build
+ $ MIG=/usr/local/bin/mig \
+ CC=gcc-3.2 \
+ CFLAGS="-g -O2" \
+ OSKIT_LIBDIR=/usr/local/lib/oskit \
+ ../configure --prefix=/gnu
+
+Comment: Barry deFreese
+
+I updated `CFLAGS` to `CFLAGS="-g -O2"`. Using just `-O` I was getting errors in the `machine_init` function. For newbies like me, the `-g` is only needed if you want to enable debugging. The `-O2` is Oh 2, not Zero 2.
+
+**_Building:_**
+
+Instead of using `make kernel` to build kernel, in OSKit-Mach you have to use <code>make kernel-<var>DRIVERS</var></code>, where <var>DRIVERS</var> is <code><var>DRIVER</var>+<var>DRIVER</var>+...+<var>DRIVER</var></code> (a list of drivers separated by `+`). <var>DRIVER</var> can be one of:
+
+* `ide`
+* `floppy`
+* <code>ethernet\_<var>ETHDRV</var></code> where <var>ETHDRV</var> is taken from `oskit/oskit/dev/linux_ethernet.h`.
+* <code>scsi\_<var>SCSIDRV</var></code> where <var>SCSIDRV</var> is taken from `oskit/oskit/dev/linux_scsi.h`.
+
+Thus, to build a IDE capable kernel with 3Com Vortex Boomerang support you use the following:
+
+ $ make kernel-ide+ethernet_vortex
+ $ sudo make install
+ $ sudo gzip -f /gnu/boot/oskit-mach
+
+If the `make` command complains about missing dependencies, then you haven't passed correct `OSKIT_LIBDIR` variable to the `configure` script. Or you can use the patch below and pass something like `--with-oskit=/usr/local` to `configure`.
+
+Comment: Barry deFreese
+
+If you receive an error like `No rule to make target Kernel-ide...`, there is a patch for an issue with finding the oskit libraries. Then run `configure` on gnumach again with the option `--with-oskit=/path/to/oskit/libraries`.
+
+The patch can be found here: [gnumach-oskit-path.patch](http://www.vis.ethz.ch/~wagi/hurd/gnumach/gnumach-oskit-path.patch) Thanks wagi!!
+
+Don't use both `--with-oskit` and `OSKIT_LIBDIR`. Choose one of these methods.
+
+If you want to use tftp to download the kernel from Grub and don't care about the symbols I recommend either stripping or removing the `--enable-debug` and `-g` statements.
+
+## <a name="Debugging"> Debugging </a>
+
+See the [[Mach/RemoteDebugOskitMach]] page.
+
+## <a name="Attachments"> Attachments </a>
+
+* [[ATTACHURLmodulesx86pc]]: Configures modules to build in OSKit.
+> Compared to 21May04 CVS, this adds SMP but omits the random module which was added to CVS in Jan03.
+
+* [[ATTACHURLmodules-lightx86pc]]: Lighter version of required modules. Used for building GNUmach with OSKit, i.e. OSKit/Mach.
+> Compared to the above config, this omits the Linux, MSDOS,
+>
+> NetBoot, and PXE loader support, bootp support, OSKit on UNIX support, some thread-safe library versions, the address map manager, fsread, fsnamespace/\{fsn,fsn\_r\}, fudp, memdebug, memfs, smp, POSIX threads, svm, uvm, the Simple Process Library, realtime support, FreeBSD devices and code, linux/fs, the UDP library, **the sets of x86 and UNIX example kernels**, the testsuite, and the security server. **The new random module is also not configured.**