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.
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.
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).
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
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 ~
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
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.
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.
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:
ftp.debian.org/pub.dists/unstable/main/binary-hurd-i386/
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:
alpha.gnu.org/pub/gnu/grub/
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/ftp.debian.org/dists/unstable/main/binary-hurd-i386/base
then by
dpkg -i bash_*deb
XFree 86 is now available for GNU/Hurd. The XFree86 packages are
at:
alpha.gnu.org/pub/gnu/hurd/
Check out /XFree and /contrib
Debian X packages are also available at ftp.debian.org
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.
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 www.gnu.org/copyleft/gpl.html.