Ports ] [ Debian GNU/Hurd ] [ News ] [ Installation ] [ Hurd CDs ] [ Documentation ] [ Development ] [ Contact ]

Debian GNU/Hurd

Using the unofficial Debian GNU/Hurd installation CD-ROMs

While many people call the GNU system GNU/Hurd this is not strictly true. The kernel is GNU Mach not the Hurd. The Hurd is a series of servers which run on top of the microkernel, GNU Mach. Both the Hurd and GNU Mach are part of the GNU project while the Linux kernel is an independent project.

Current Debian GNU/Hurd L1 series.

Only the first image has been released for this series.

A small mini image (debian-L1-hurd-i386-mini.iso) has been built which should be useful for those who want to install via a network.

gnu-2009-10-18.tar.gz (a tarball of the base GNU system) has been specially built for this set.

Download.

The current iso images are debian-L1-hurd-i386-DVDx.iso and debian-L1-hurd-i386-mini.iso. All of the binaries specific to a GNU system are found on this first image, and all the required, important and standard packages are found on the first image. So a basic GNU system can be installed using the first image.

These sites usually mirror the images, but check first.

The main site is http://ftp.debian-ports.org/debian-cd/ in France, and mirrors for these images are http://www.gtlib.gatech.edu/pub/gnuab/debian-cd/ in USA and ftp://ftp.duckcorp.org/hurdfr/hurd/ in France.

A search at http://www.filesearching.com/ for hurd-L could find a closer site.

Instructions for burning CDs from the images can be found in the Debian CD FAQ.

CD-ROMs

See this page for GNU/Hurd CD vendors. Look for "hurd" using your browser's search facility. http://www.copyleft.co.nz/ will definitely have the latest CDs (warning, that is me).

How the Installation Disc works

The potato Debian GNU/Linux installation CDs used the cross install method to install the base system. A ramdisk is created in memory and a mini GNU/Linux system installed into this disk. This mini system is used to partition and format drives, and to prepare the target machine for the main installation. The critical phase is to unpack a tarball with the essential base packages onto the drives of the target system. The new system is then rebooted using the packages unpacked onto the HDD. Further packages are then installed and configured to create the desired system.

As GNU also uses the cross install method, this meant that the scripts to build the GNU installation CDs could be adapted from the Debian GNU/Linux boot and CD scripts so that the GNU rather than the GNU/Linux tarball would be unpacked.

Installing a GNU system using a cd-rom set has several advantages.

Hurd Partitions

The Hurd uses extensions to the ext2 file system, the call is mke2fs -b 4096 -I 128 -o hurd /dev/[Hurd partition]. The installation CDs use this when creating Hurd partitions.

Using the Installation CD

Preparation.

Hurd specific documentation is found in ./doc/hurd. hurd-install-guide and Cook-book are "must read" documents before you start.

  1. Make a GRUB boot-disk

    Install the package grub-disk or grub-rescue-pc, they contain a GRUB floppy image. You can use "dd" if you are working in GNU/Linux or rawrite if you are working in MS.

  2. Make certain that you understand Linux, GRUB and Hurd methods of naming drives and partitions. You will be using all three and the relationship between them can be confusing.

Hurd uses different partition names to Linux, so be careful. IDE hard disks are numbered in order, beginning from hd0 for the primary master and its slave hd1, followed by the secondary master hd2 and its slave hd3. SCSI drives are also numbered in absolute order. They will always be sd0, sd1, and so on regardless of whether the two drives are SCSI id 4 and 5 or whatever. Experience has shown that CD-ROM drives can be tricky. More about this later.

Linux-style partitions are always called sn when using the Hurd, where n is the partition number, so the first partition on the first IDE drive will be hd0s1, the third partition on the second SCSI drive will be sd1s3, and so on.

GRUB1 has yet another partition naming system. It calls partitions (hdN,n), but this time the disk number and partition number are both zero indexed, and the disks run in order, all the IDE disks first, and the SCSI ones second. This time, the first partition on the first IDE drive will be (hd0,0). GRUB2 does the same, but the partition number is one indexed, so in that case it will be (hd0,1). To really cause a confusion, (hd1,2) could refer to the first SCSI drive if you only have one IDE drive, or it could refer to the second IDE drive. So it is important that you have worked out the various names of your partitions before you start.

Installation

  1. Boot the CD.

    Any of the methods of booting a Debian 3.0 beta (woody) CD will work, ie. from the CD, from MS and by any of the boot/root floppy images. A complete set of base floppies can created if there is no cdrom drive.

  2. After the opening screens, open "Partition a Hard Disk".

    If you are going to copy the .deb packages onto the HDD then you will need to create other partitions, one for each CD. While parted is available for GNU/Hurd you may as well use this facility. About 500 Mb will be enough to start with for the main system. If you need to create another partition then you may find it easier to reboot the first CD and use the tools in the Linux ramdisk to do this.

  3. Work out the GRUB and Hurd names of the partition you will be using.
  4. Prepare your partitions using "Partition a Hard Disk" and make certain that you have a swap partition. GNU/Hurd is fussy about swap.
  5. Format your Hurd partition using "Initialize a Hurd Partition" and mount it on "/". Do not mount any other partitions.
  6. Install the base system using "Install the Base System".
  7. Insert a GRUB floppy in the drive and reboot with "Reboot the System" (don't forget to reset the bios). That is it! [First reboot]

The default setting of the GRUB image is if your GNU/Hurd partition is "(hd0,0)" [GRUB1 nomenclature], "(hd0,1)" [GRUB2 nomenclature], and "sd0s1" [GNU/Hurd], which being interpreted means the first partition on the first HDD which is SCSI and there are no IDE drives. However, for the first boots, you need to pass the -s option to the GNU/Mach kernel to boot into single user mode, and remove the --readonly option from the ext2fs.static command line.

Keep you hands off the keyboard until the boot process has completed.

"/boot/grub/menu.lst" or "/boot/grub/grub.cfg" on the GRUB floppy can be edited so your system will boot the way you want.

The next steps.

  1. After the system has booted run ./native-install. Reboot the system using "reboot". THIS IS IMPORTANT watch the boot messages and note carefully where the cdrom is. [Second reboot]
  2. After the reboot has completed run ./native-install a second time. This time a whole bundle of packages will be configured. Reboot yet again. [Third reboot]. You will now have a system to configure.
    Login as root, "login root".
  3. cd to /dev. Make the necessary devices. Ie, for the cdrom, the swap partition and any other HDD partitions.

    Eg "MAKEDEV hd2 hd0s2 hd0s3"

  4. Edit /etc/fstab, "nano /etc/fstab". nano is not a bad editor.

    Add the HDD partitions, eg,
    /dev/[Hurd partition name] none swap sw 0 0
    /dev/[Hurd partition name] /CD1 ext2 rw 1 1
    /dev/[GNU drive name] /cdrom iso9660fs ro,noauto 1 1

    The Hurd uses the ext2 fs. "/CD1" is a suggested mount-point for the partition which contains the packages from debian-L1-hurd-i386-CD1. Swap can be shared with Linux.

  5. Activate the swap "swapon -a". Check to see that is has worked. Swap is HIGHLY recommended with the Hurd.
  6. Set up the translator that accesses the cdrom, eg

    "settrans -a /cdrom /hurd/iso9660fs /dev/[Hurd drive name]"
    While this is the GNU way of doing it, "mount /cdrom" will also work.

  7. Run "/cdrom/upgrade/install.sh".

    This will install the required, important and standard packages.

  8. You may want to run "/cdrom/upgrade/gui.sh".

    This will install the X Window System.

  9. Further packages can be installed using "apt or "dselect".

    If you are unfamiliar with these Debian tools, see "info apt" and "info dselect".

  10. Unmounting the cdrom

    The cdrom drive is unmounted with "settrans -agf /cdrom"
    The cdrom drive drawer should then be unlocked.

This is where this guide finishes and you start exploring. Enjoy the Hurd.

Comments about the CDs are welcome.
Philip Charles, philipc@debian.org