Items of interest during install not mentioned elsewhere include the following. They have been re-arranged to match the same order as Neal Walfield's [install guide](http://web.walfield.org/papers/hurd-installation-guide/english/hurd-install-guide.html).
%TOC%
## 1. Overview - Where we are going
There are three current methods and one depricated methods to install the Hurd: tarball (network), bochs virtual machine and the depricated "cross-install".
* Neal Walfield's [guide](http://web.walfield.org/papers/hurd-installation-guide/english/hurd-install-guide.html) is excellent and is available in several formats. This is the guide that the Hurd community always references first. The GNU official [installation page](http://www.gnu.org/software/hurd/install.html) is the canonical reference. [[TarballNotes20020816]]
* [CD-ROM iso images](http://www.debian.org/ports/hurd/hurd-cd) CD-ROM installs are becoming more and more popular. The CDs are based on the most current tarball at release time. [[CDNotesJ2]]
* Bochs is an x86 emulator similar to the commercial VMware (which is not supported). Alfred M Szmidt wrote a [great guide](http://ftp.walfield.org/pub/people/ams/hurd/creating_bochs_image_for_gnu.txt). Oliver also created a GNU/Hurd [bochs image](http://mail.gnu.org/pipermail/bug-hurd/2002-October/010604.html).
* Once upon a time there was a `cross-install` script that did an installation while running from another system install. While there are spurious & unintentional references to "cross-installs" this is almost always now intended to mean a tarball install.
## 2. Real Estate or Finding A Home
* When preparing the hurd partition, you may wish to add a -b 4096 option to mkfs.ext2 (the default is chosen depending on the size of the partition, and the support for block size 1024 is buggy). (the command to check the block size is `tune2fs -l /dev/hda9` under Linux)
* fdisk is most commonly used under Debian GNU/Linux for creating partitions. fdisk/cfdisk will work just fine. Neal's guide chooses to recommend [GNU parted](http://www.gnu.org/software/parted) instead.
## 3. The Boot Loader - Getting Grub
* [[GrubNotes]] - quick reference
## 4. Cross Install - Cross Installing the Hurd
In Neal's install guide this simply refers to the `tar` run from another system install. This should NOT be confused with the depricated `cross-install` script method.
## 5. Booting the Hurd
* **IMPORTANT!** Remember when first booting into your freshly un-tarred distribution, you must pass the `-s` option to `/boot/gnumach.gz`. Failure to do so means that you won't get single-user mode.
* **IMPORTANT2!** Add the --readonly flag to the file system server in your Grub menu.lst file. This is a work-around to get fsck working properly. Don't forget, everything must be on ONE line!
module /hurd/ext2fs.static --readonly --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)
## 6. Native Install - Finishing the Installation
* remember to `export TERM==mach` each time.
* The default editor is now `nano`, not `ae`.
* If you are following Neal's installation guide, he presents a sample `/etc/fstab`. When you first boot, your `/home` directory will _not_ be auto-mounted. You must set a passive translator on that node to access that partition. The correct syntax for this is:
`settrans -p /home /hurd/ext2fs /dev/hd2s2`
> #
> /dev/hd2s1 / ext2 rw 0 1
> /dev/hd2s2 /home ext2 rw 0 2
> /dev/hd2s3 none swap sw 0 0
## 7. Configuration - Making the System Usable
* After you install, you'll want to do several _important_ things:
* Run `passwd` to give the root user a password. By default, root does not have one.
* Run `adduser` to give yourself a user account. _Do not_ use root indiscriminately.
* Run `MAKEDEV` to create devices in `/dev` for your hard disk and other required devices.
* Since the Hurd does not use `ld.so.conf`, you will want to specify where the X Window System keeps its libraries. Do this by adding the following line to your `/etc/profile`:
`export LD_LIBRARY_PATH='/lib:/usr/X11R6/lib'`
* run `/etc/cron.daily/find` to allow `locate` to function.
* [[GetNetworkRunning]]
* Hopefully Mach will recognize your hardware. If it doesn't you have to recompile in most cases.
* copy over your `/etc/resolv.conf` from GNU/Linux to allow your DNS to resolve correctly.
* Prepare system for new packages.
* a recommended `/etc/apt/sources.list`:
deb unstable main
deb unstable main
deb-src unstable main
* There are some extremely useful cross-platform 'apt' tricks that can be used to get packages when using Debian GNU/Linux (possibly others) for installation on the Hurd. This is especially useful if your Hurd doesn't recognize your network card. The steps are covered in the file =/usr/share/doc/apt/offline=\* which has been used by several Hurd developers successfully.
* create an `/etc/apt/apt.conf.offline` like [[AptConfOffline]].
* consider setting up a few [[CrossPlatformAliases]] for use under Debian GNU/Linux while the Debian GNU/Hurd partitions are mounted.
* select the `apt` method from within dselect.
* New packages - Hopefully you are able to get your network working but since the default Hurd is only configured for a few ethernet cards you may need to recompile your Hurd to get it working with your network hardward.
* Install these extremely useful packages
* `dialog` -- Debconf uses this for interactivity. You should install this first to allow you to configure other packages as they are installed.
* It's a very good idea to bring your packages up to date by running: `apt-get update && apt-get dist-upgrade`
* Some recommended packages
* `screen` -- A terminal multiplexer is important because the Hurd does not yet have virtual consoles. Runs with GNU/Linux too.
* `anacron` -- good to run cron jobs for a machine that is not on all the time.
* `emacs21` -- a powerful editor.
* `cvs` -- Concurrent Version System, you'll probably need this soon.
* `bzip2, zip, unzip` -- compression tools.
* `build-essential` -- preparing to build software.
* `gnu-standards` -- GNU coding and package standards.
* Some packages like `libc6-dev` are old yet depended on by other packages not yet updated. In this particular case, I believe the new dependency is `libc0.3-dev`. However these dependencies may cause problems for apt. To circumvent these problems there are two possible solutions.
* The first is to change the dependencies that apt looks at in the `/var/lib/apt/lists/` directory. For example, you could modify libc0.3 to provide the missing `libc6-dev` package.
* Installing the `equivs` package and creating a dummy package is the second alternative. This will satisfy the apt dependency in a cleaner manner.
* Edit your `/etc/inetd.conf` and comment out all the services you don't need. Services that probably don't need to be running are
`ftp`, `telnet`, `shell`, `login`, and `exec`.
## 8. Final Words - The FAQ
* [[NewbieQuestions]] - More than frequently asked questions
* [Hurd FAQ](http://web.walfield.org/papers/hurd-faq/)
* [[KnownHurdLimits]] - Limitations of the GNU operating system
## 9. Works Cited - Referenced Materials
On Sept 20, 2002 [[Main/DeepakGoel]] (a self-proclaimed newbie) posted a link to his personal [step-by-step installation](http://24.197.159.102/~deego/pub/hurd/install-guide/install.txt). The parent directory has additional material.
Tarball Notes: [[TarballNotes20020816]] [[TarballNotes20020523]]
CD-ROM Notes: [[CDNotesJ2]]
Others who wish to post summaries of their installation experiences are encouraged to do so. The installer methods, package dependencies and file locations frequently do change without warning.
-- [[Main/SimonLaw]] - 29 May 2002
-- [[Main/GrantBow]] - 13 Oct 2002