Easy install with CrossHurd

Qurious about the Hurd? Have a 1-5 GiB partition free? Let's install GNU/Hurd on it!

Preparing the partition

We'll assume you have a partition ready, for the sake of argument we use an example here: /dev/hda3 is the Hurd partition (type: Linux) and /dev/hda4 is the Linux swap that we'll reuse.

First we create the Ext2 filesystem, notice the hurd option.

# mke2fs -o hurd /dev/DEVICE

Next we create a useful mountpoint and mount the partition.

# mkdir /gnu
# mount /dev/hda3 /gnu

Retrieving CrossHurd

Unless you don't run Debian GNU/Linux download it from http://packages.debian.org/crosshurd, or simply apt-get the package from Testing or Unstable.

# apt-get install crosshurd

Cross installing

The crosshurd package only operates in the given target directory, which is the first question asked when running the program.

# cd /gnu
# crosshurd

Answer the questions you get: $ What is the target directory?: /gnu $ Target Debian system?: gnu $ Target CPU?: i386

Now the program starts retrieving all the necessary base packages.

Preparing to reboot

When all packages have been extracted we must prepare GRUB for the Hurd when we reboot. Add the below entry to your /boot/grub/menu.lst file to boot the Hurd in single user mode (-s). Single user mode is needed only for the two reboots when running the Native Install.

title GNU (kernel GNUmach 1.3)
  root (hd0,2)
  kernel /boot/gnumach.gz root=device:hd0s3 -s
  module /hurd/ext2fs.static                           \
       --multiboot-command-line=${kernel-command-line} \
       --host-priv-port=${host-port}                   \
       --device-master-port=${device-port}             \
       --exec-server-task=${exec-task}                 \
       -T typed ${root} $(task-create) $(task-resume)
  module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)

Nota Bene: In your menu file there should be no extra white space after the back slashes.

Native install

Ah, reboot and select "GNU (kernel GNUmach 1.3)" from the Grub menu. At the prompt, setup TERM and run the native-install script.

# export TERM=mach
# ./native-install

When done the native install requests that you reboot once again and rerun native-install.

# reboot
...
# export TERM=mach
# ./native-install

Done, continue setting up your system.


Jeff Bailey has set up a system where you can install a Hurd system without having to use CDs. It's another type of cross-installation method which uses Debian package management tools to get the packages required as opposed to the one single big tarball.

As of 2005-03-22, the latest version of crosshurd is 1.7.11. It can be found at http://packages.debian.org/crosshurd.

-- ?PeterMelville - 12 Jun 2004