# Building the Hurd from Source If you want to build the Hurd libraries and servers (translators) yourself instead of just using pre-built binaries, follow these instructions. ## Getting the Source Code You can chose between getting the [sources from the developers's RCS](http://www.gnu.org/software/hurd/download.html#cvs): $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co 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 Please see [[Distrib/DebianFAQ]] before using _apt-get source_. The unpacked source tree is around 20 MiB, and the build tree (configured with _--disable-profile_) is around 100 MiB. ## Preparing for the Build ### ... on Debian systems Building the Hurd requires the _build-essential_ and _fakeroot_ packages, their dependencies and additional packages that are specified by the source hurd package: # apt-get install build-essential fakeroot # apt-get build-dep hurd ### ... on non-Debian systems [TODO] ## Building ### ... _.deb_ files Change into the directory with the downloaded / unpacked Hurd sources, e.g. $ cd hurd-[TODO] Start the build process with $ dpkg-buildpackage -us -uc -b -rfakeroot ### [TODO] The Hurd has to be built in a separate directory: $ mkdir hurd-build $ cd hurd-build $ [...]/hurd-[TODO]/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. ### cross compiling. [TODO] ## [TODO] [TODO: update / integrate somewhere.] 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