summaryrefslogtreecommitdiff
path: root/Mach/BuildingOskitMach.mdwn
blob: ca267a544f0c02aeb43630cf7607eecf4c3acb2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
## <a name="Table_of_Contents"> Table of Contents </a>

%TOC%

This is a brief Building OSKit Mach HowTO. It covers everything from getting the latest sources of both the [OSKit](http://www.cs.utah.edu/flux/oskit/) and the OSKit branch of the GNUmach kernel. There is also [another guide](http://www.etherhogz.org/doc/oskit-mach.html). Down to building and debugging them. On May 27 after the [[GnuMach]] 1.3 release, Roland McGrath merged OSKit Mach in the [[GnuMach]] 2.x mainline.

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 [gnu-20020816.tar.gz](ftp://ftp.funet.fi/pub/gnu/alpha/gnu/hurd/contrib/marcus/gnu-20020816.tar.gz) or later.

## <a name="Getting_your_hands_on_the_source"> Getting your hands on the source </a>

First you need to checkout the relevant sources.

### <a name="Accessing_the_FLUX_groups_CVS_or"> </a> Accessing the FLUX groups' CVS, or FTP

You can use either the bleeding edge OSKit from CVS, or the latest public release. The latter is preferrable!

**_CVS:_**

      CVSROOT=":pserver:anoncvs@leak.cs.utah.edu:/cvs"
      CVS_RSH=ssh
      cvs -z3 co oskit

**_FTP:_** 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>

### <a name="Accessing_the_GNU_CVS"> </a> Accessing the GNU CVS

The recommended document for accessing the Hurd CVS on [Savannah](http://savannah.gnu.org) is at

This is only a brief restatement, which may ormay not be accurate. Setup your environment with the CVSROOT variable. How you do this may differ between shells.

      CVSROOT=":pserver:anoncvs@anoncvs.gnu.org:/cvsroot/hurd"

**_Gnu Mach:_**

All development, apart from critical bug fixes, is done on the upcoming 2.0 release. Previously the oskit-branch of gnumach.

      cvs -z3 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 update -r HEAD -Pd

Where &lt;YOUR MACH DIR&gt; can be gnumach, oskit-mach, or similar.

**_The Hurd servers:_**

In case you want to build the Hurd servers as well, you can check them out too:

      cvs -z3 co hurd

**_Inteface generator:_**

See the [[MachInterfaceGenerator]] for more information.

Check it out using

      cvs -z3 co mig

## <a name="Building"> Building </a>

### <a name="The_OSKit"> </a> The OSKit

The attached [[ATTACHURLmodulesx86pc]] 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.

**_Configuring:_**

    # cd oskit-20020317/
    # mkdir build
    # cd build
    # CFLAGS="-g" ../configure --prefix=/usr/local --enable-debug

**_Building:_**

    # make
    # sudo make install

### <a name="OSKit_Mach"> </a> OSKit Mach

To build any Mach kernel you need an interface generator, a mig. If your host system is Debian based you can get the "Cheap cross-compuler for GNU/Hurd" with a simple:

    $ apt-get gcc-i386-gnu

This will install the i386-gnu-mig in /usr/bin for you.

**_Configuring:_**

    # cd oskit-mach
    # mkdir build
    # cd build
    # CFLAGS="-g" MIG=i386-gnu-mig OSKIT_LIBDIR=/usr/local/lib/oskit ../configure --prefix=/gnu --enable-debug

_I think this is a bug that you have to specify $prefix/lib/oskit as OSKIT\_LIBDIR. Libdir is usually just $prefix/lib._ -- [[Main/MichalSuchanek]]

_I think not. The $prefix variable in autoconf comes from the --prefix option to configure, that in turn is intended as the prefix path to the installation of the package you are configuring, i.e. oskit-mach and **NOT** the OSKit itself_ -- [[Main/JoachimNilsson]]

**_Building:_**

    # make kernel-ide+ethernet_vortex
    # sudo make install
    # sudo gzip /gnu/boot/oskit-mach

Instead of using \`make kernel' to build kernel, in OSKit-Mach you have to use \`make kernel-DRIVERS', where DRIVERS is \`DRIVER+DRIVER+...+DRIVER' (a list of drivers separated by \`+'). DRIVER can be one of:

* \`ide'
* \`floppy'
* \`ethernet\_ETHDRV' where ETHDRV is taken from 'oskit/oskit/dev/linux\_ethernet.h'.
* \`scsi\_SCSIDRV' where SCSIDRV is taken from \`oskit/oskit/dev/linux\_scsi.h'.

## <a name="Debugging"> Debugging </a>

For now, see the [[RemoteDebugOskitMach]] page.

## <a name="Attachments"> Attachments </a>

* [[ATTACHURLmodulesx86pc]]: Modules to build in OSKit

----

First version. -- [[Main/JoachimNilsson]] - 14 May 2002

Updated by: -- [[Main/LuisBustamante]] - 04 Jun 2002

Moving from oskit-branch to HEAD. -- [[Main/JoachimNilsson]] - 05 Jun 2002