summaryrefslogtreecommitdiff
path: root/Mach/BuildingOskitMach.mdwn
blob: 00766e1f2037ea2b30223c6a44e4ddd4051f8e04 (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
127
128
129
130
## <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 [[Mig/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]]

_I refer to the $prefix value at the time oskit is built. Of course, you can choose a different prefix for oskit-mach._ -- [[Main/MichalSuchanek]]

_I see, it was not that clear the context of your first comment, well anyhow when reality changes so will this page. :)\__ -- [[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