Make your own free website on

A Basic Guide to Using Debian GNU/Hurd

Version 1.2a

This guide assumes you have installed Debian GNU/Hurd on a separate partition on a hard drive which already has Debian GNU/Linux installed, and that you have downloaded and copied to a floppy disc the Grub boot-loader (see  A Guide to Installing Debian GNU/Hurd ).

Since GNU/Hurd  is under active development: (1) it is regarded as unstable, with the possibility of bugs and system crashes (which will not affect the Debian GNU/Linux on a separate partition); (2) it is being continually updated and improved, with more Debian packages available, and so therefore should be updated on a regular basis; (3) it is not possible to do with the GNU/Hurd all (or even most) that a GNU/Linux system can currently do: this is at least a year of development away.

This Guide assumes, for the sake of simplicity and readability, that the Hurd partition is hda3 under GNU/Linux, with hda4 being a Hurd swap partition, and that there is only one IDE drive on the first IDE controller (hda) with the CD-Rom drive being on the second IDE controller (hdc), with hda1 containing the GNU/Linux root filesystem (fs), and hda2 a Linux swap fs.

GNU/Hurd Names

As explained in the Installation Guide,  GNU/Hurd uses different names for hard drives and partitions, with Grub - the Hurd boot-loader - using yet other names. The following list shows the differences:

GNU/            GNU/
Linux            Hurd            Grub
Name           Name          Name

hda1         hd0s1            (hd0,0)

hda2         hd0s2            (hd0,1)

hda3         hd0s3            (hd0,2)

hda4         hd0s4            (hd0,3)

Thus, hda1 - under GNU/Linux the first (1) partition on the first (a) IDE device (hd) - is hd0sl under GNU/Hurd: the first slice (s1) of the first (0) IDE device (hd). Note that on systems with only one HDD, the second IDE device (normally hdc under GNU/Linux and the CD-Rom drive) is hd2.

Scsi devices are prefixed with sd so that the first partition on the first scsi drive would be sd0s1 while the first partition on the second scsi drive would be sd1s1.

The Grub name uses zero for both the first device and the first partition on the device - using a comma to separate the device number from the partition number, and enclosing all these in brackets. Note that both the brackets and the comma are important.

The best way to learn is to work out and write down the GNU/Linux and GNU/Hurd names of your system and its devices (for example, CD-Rom drive). You can check your CD-Rom by watching the information as you boot into GNU/Hurd, as the GNU/Hurd name of the device is given.

Booting GNU/Hurd

Initial installations of Debian GNU/Hurd are booted from a Grub boot floppy. Put the Grub boot floppy in the floppy drive and reboot. You will see a Menu - choose GNU/Hurd (hd0s1 multiuser) using the down arrow key then press the e key (to edit). The root item should be highlighted. Then press e again and change (hd0,0) to (hd0,2) - that is, the Hurd partition. Then press Return, then scroll down to kernel, press e and change the line to

kernel   /boot/gnumach.gz    root=hd0s3

Press Return, scroll down to module, press e and change to

module  /boot/serverboot.gz

Then press Return and then the b key which will start the boot process.  [Note: When you are familiar with the Hurd, you can edit the Grub menu as above and save the changes to save having to enter this again.]

You will see information similar to that of a GNU/Linux boot and then the login prompt. To login, you must enter

login   <username>

That is, login followed by a space then by a user name (or root).

If you login as root you will get the Hurd prompt (as the default hostname is set to hurd).

Vi Editor

One essential package to fetch and install is the vi editor (Debian package - dpkg - nvi).  This enables you to read and edit files.

Thus to access /etc/fstab enter

vi   /etc/fstab

Default Keyboard

By default, the US keyboard is loaded. This can be changed by downloading the appropriate deb packages (see below). Until then, if you are using a UK keyboard:

US key                     Symbol

£                                 #

Shift+`                        ~

Shift+"                        @

~                                   |        [Pipe]

#                                   \

Thus Shift key with accent key (key to left of number 1 key) is the tilde ~

Linux  and GNU Directories

The first directory to create is /linux. This together with the /gnu directory in the GNU/Linux fs enables you to access the Hurd partition from within GNU/Linux, and the GNU/Linux file-system from GNU/Hurd.

To access (i.e. 'mount') the GNU/Hurd from within GNU/Linux and so access Hurd directories and files:

mount   /dev/hda3     /gnu

Making Devices

You need to make some devices in order to use the system. The basic ones to do are: floppy drive; CD-Rom drive; Hurd swap partition; GNU/Linux partition.

For example, for a floppy drive, first cd to /dev then enter

./MAKEDEV    fd0

Note both the dot before the / and that MAKEDEV is in capitals.

Mount and Translators

The concept of translators is central to GNU/Hurd. A translator is a server which interfaces you with a particular file-system, and GNU/Hurd treats most things as filesystems which can be accessed by a translator: it does not matter whether these file-systems are on the local system or on remote systems. Thus, and for example, there is a ftp translator which allows access to remote file-systems on a ftp server.

The best way to understand translators is to use them, and the best introduction is using them to what GNU/Linux describes as mount and unmount. Thus, to access a GNU/Linux file-system on Hurd partition, and so access your GNU/Linux system from GNU/Hurd the command would be

settrans   -a   /linux     /hurd/ext2fs      /dev/hd0s3

settrans (i.e. set a translator) has the basic format:

settrans    [ option active/passive]       [access point]        [file-system type]         [what is to be accessed]

In the above example the -a  sets an active translator as against a passive translator, the -c  option. Active translators are removed during reboots, whereas passive translators are not. The 'access point' is similar to a GNU/Linux mount point.

You will find the translator file-system types listed in the hurd directory - many more will be added as they are developed. The fs for a CD-Rom is isofs, thus to do what GNU/Linux would call a mount of the CD-Rom:

settrans    -c    /cdrom    /hurd/isofs    /dev/hd2

(This assumes the CD-Rom is hdc under GNU/Linux.)

Note that for a translator to work, both the access point and the device must exist in GNU/Hurd.

To remove a translator (in the example above, to umount)

settrans      /cdrom

To show what passive translators are present

showtrans          </file-system>

You can remove a translator by force if necessary

settrans    -fg           </file-system>

To do what GNU/Linux would call the mounting of a floppy (fd0 in this example):

settrans  -c  /floppy    /hurd/ext2fs   /dev/fd0

It is important to know that the concepts of mounting and umounting devices are really irrelevant in GNU/Hurd as this is not what is happening. The translator which is being used is translating something in a file-system which is somewhere else into an output on the screen. That is, it is making a direct link to the file-system, with these links being either active or passive.

Updating GNU/Hurd



A very basic package is installed by default just to get the system up and running.  There are scores of Debian packages available which can be downloaded from:

The Hurd packages are listed in directories as for other Debian distributions: in /admin, /base, /editors and so on. (See below for details of Emacs, Exim and Mutt.)

New Grub images are available from the GNU ftp site at:

There are several ways to update GNU/Hurd - but all have the problem that direct dial-out is not yet implemented. That is, you cannot connect a stand-alone GNU/Hurd system directly to the Internet. One solution is to have the GNU/Hurd system with an ethernet connection to a GNU/Linux system - but for the majority of us who have only one system, with GNU/Hurd on a partition on our HDD which also contains GNU/Linux, this is not a viable option.

The easiest way to start with is to install new packages on a stand-alone system is to connect using GNU/Linux, download into a directory on that system, mount the Hurd partition, then copy over the packages to a directory on the Hurd system. Then reboot into the Hurd, and run

dpkg   -i     </path to packagename>

Doing it this way to begin with, with individual packages, means you have a copy of the packages on your GNU/Linux system just in case anything goes wrong with GNU/Hurd - saving you having to download them again. It also means that you need to ascertain dependencies, which are given in the packages list on the ftp site, and it gives you a good introduction to using GNU/Hurd.

The two other methods:

(1) Use the ftp option in dselect; then Update, then Install
(2) Use a GNU/Hurd translator:

settrans    -c    /ftp    /hurd/mux    /hurd/ftpfs    ${host}:/

Followed by

cd     /ftp/

then by

dpkg -i bash_*deb

X Server

XFree 86 is now available for GNU/Hurd. The XFree86 packages are at:

Check out /XFree and /contrib

Debian X packages are also available at


One package that should be installed is emacs - as this can be used to edit and create files and can provide multiple buffers, which are very useful since at the time of writing  (JD2451536.046 or Jan 6th 2000 AD) GNU/Hurd does not have multiple vitual consoles.

The two packages required are emacsen-common_1.4.9.deb and emacs20_20.3-5.deb.  You will need to use the dpkg force-depends option to install the first package:

dpkg    -i    --force-depends    </path-to emacsen-common>

after which the emacs20 package should install normally.

Mail: Exim and Mutt

Version 2.11-3 of the Exim MTA and version 1.0pre4-1 of Mutt are available for Debian GNU/Hurd and both function normally, except for a bug in Mutt which makes the user mailbox read-only so that messages cannot be deleted from within Mutt (just delete the messages manually from the mailbox file).

Copyleft 1999 by Space-Time Systems.

This document is free; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version.
This document is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.
Should you be lacking a copy of this, look at