summaryrefslogtreecommitdiff
path: root/Hurd/BuildingHurd.mdwn
blob: 80c1265506e27b68317217186b0a6aca06b356da (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
Of course, your first task is to get the Hurd's source code.

You can chose between getting the [sources from the developer's RCS](http://www.gnu.org/software/hurd/download.html#cvs):

    $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co hurd
    $ cd hurd

... or (if you are working on a Debian system) the ones that are used for the [current Debian hurd package](http://packages.debian.net/source/unstable/hurd):

    $ apt-get source hurd       # Unpacks in hurd-YYYYMMDD
    $ cd hurd-*

The unpacked source tree is around 20MiB, and the build tree (configured with `--disable-profile`) is around 100MiB.

TODO: cross compiling.

Building the Hurd requires `build-essential`, `libc-dev` and `mig` packages:

    # apt-get install build-essential make libc-dev mig
    # apt-get build-dep hurd

`libc-dev` will install `libc0.3-dev`, which depends on `gnumach-dev` and `hurd-dev`.

The Hurd has to be built in a separate directory:

    $ mkdir build
    $ cd build
    $ ../configure --disable-profile
    $ make
    $ make install

Notice that `make install` will install the Hurd in `/`, not in `/usr/local/` or `/local/`, so your current Hurd servers will be replaced. TODO: how to install somewhere else.

By default profiling versions of all the libraries and code are generated but this is useless in most of the cases, so we disable them by specifying `--disable-profile` on =configure='s command line.

As an alternative, you can build and install the Hurd in the Debian way (from CVS snapshot):

    $ cd hurd
    $ dpkg-buildpackage

If you just want to build a specific server or library, you can pass its name to `make`:

    $ make ext2fs
    $ make libtrivfs

This will automatically build all libraries that are required to build the requested server or library.

TODO: update.

If you want to trace the RPC calls made by some process by using `rpctrace` command, you will also want some more human-readable output of this command. This is achieved by generating `hurd.msgids` file that includes the mapping between the number of the RPC call and its name:

    $ cd build/hurd
    $ make hurd.msgids
    $ cp hurd.msgids ~

Now you can use this file in the following way:

    $ rpctrace -i ~/hurd.msgids ls

-- [[Main/OgnyanKulev]] - 08 Apr 2003