diff options
author | Thomas Schwinge <tschwinge@gnu.org> | 2008-11-23 01:06:07 +0100 |
---|---|---|
committer | Thomas Schwinge <tschwinge@gnu.org> | 2008-11-23 01:06:07 +0100 |
commit | 47d16b97b4d3f207b39f23a619e1c582ace2d476 (patch) | |
tree | 83a9973cea2874be79199728e513430d7897fd15 /Mach/BuildingOskitMach.mdwn | |
parent | 9e7a5b8a0628331aaf9737cd8825093d2a2a43cc (diff) |
Assemble unsorted pages.
Diffstat (limited to 'Mach/BuildingOskitMach.mdwn')
-rw-r--r-- | Mach/BuildingOskitMach.mdwn | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/Mach/BuildingOskitMach.mdwn b/Mach/BuildingOskitMach.mdwn deleted file mode 100644 index 334b0669..00000000 --- a/Mach/BuildingOskitMach.mdwn +++ /dev/null @@ -1,190 +0,0 @@ -## <a name="HowTo_Build_OSKit_Mach"> </a> HowTo Build OSKit-Mach - -<table align="center" width="75%"> - <tr> - <td width="50%"> %TOC% </td> - <td width="50%"> - <p><nop></nop></p> - <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; 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> - </tr> -</table> - -## <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 & 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.** |