This will eventually become an installation guide for the Debian crosshurd package (GNU/Hurd cross install only). However, for the time being I am setting it up as a diet version of Hurd/InstalNotes, adapted for crosshurd, adapted for me.

-- [[Main/JoachimNilsson]] - 14 Mar 2004

## <a name="Reserving_partitions"> Reserving partitions </a>

You need a swap and root partition, much like any other UNIX system. Two things to remember:

1. Root partition still &lt;2.0 GiB
2. Root partition: mke2fs -o hurd -b 4096 -L Carlsberg

From a Debian GNU/Linux installation preparing install of GNU/Hurd on /dev/hdb2 reusing the Linux swap on /dev/hdb4.

     # mke2fs -o hurd -b 4096 -L Carlsberg /dev/hdb2

<div>
  <center> "Carlsberg. Probably the best beer in the world." </center>
</div>

## <a name="Bootstrapping"> Bootstrapping </a>

After having installed the Debian crosshurd package you need to mount your newly created Hurd partition.

    mkdir /gnu
    mount /dev/hdb2 /gnu

Now, simply run the crosshurd program and follow the onscreen directions. **Do** select the usr symlink.

    crosshurd

crosshurd burps a lot of unneeded information on screen and probably fails to install one or two files due to duplicates between GNU and Debian packages. Lets hope this mess is worked out some day.

## <a name="Rebooting"> Rebooting </a>

Before we reboot you must setup a Hurd entry in the menu.lst file of Grub. Do it like this and remember, **no trailing spaces**!

The first two runs (reboots) you must run the Hurd in single-user mode!

    title GNU (kernel GNUmach 1.3)
      root (hd1,1)
      kernel /boot/gnumach.gz root=device:hd1s2 -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)

The notation of Grub, and of the Hurd, can be somewhat bisarre on first sight. Consult the [[InstallNotes]] document and the Grub manual for a thorough explanation.

N.B. the '-s' on the kernel line, it is "single user mode", which you need for the first two reboots.

OK, reboot now.

## <a name="First_steps"> First steps </a>

Set TERM variable and run native-install script.

    export TERM=mach
    ./native-install

At the end native-install wants you to reboot and run it again. Do so and remember to set the TERM variable as well.

After the second reboot and native-install run you can remove the '-s' in the kernel line above and boot GNU/Hurd as a normal user.

## <a name="Logging_in"> Logging in </a>

Finally, a complete bootstrapped GNU system.

    login root

    export TERM=mach

    nano /etc/fstab
    [add swap partition /dev/hd1s4]

    nano /etc/ttys
    [remove all hashes to enable the new Hurd Console]

    settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a 192.168.1.3 -g 192.168.1.1 -m 255.255.255.0

    dselect

Now, do the old Debian thing of dancing with dselect for a couple of hours.

Reboot and start the new [[HurdConsole]]

    login root

    console -d vga -d pc_kbd -d generic_speaker /dev/vcs

Move around just like in Linux console, but with persistent scroll-back buffers for each console.

## <a name="References"> References </a>

* [[InstallNotes]]
* [[GetNetworkRunning]]
* [[HurdConsole]]