Warning /!\ This is a work in progress, it is not mature yet and it may break your system!

Caveat

As you may already have guessed, following the instructions may break your system and you are on your own to fix it again.

Outline

Occasionally you may have to install a system which you cannot access physically. Many server systems provide console access over the network, but if the server you have to set-up does not, things tend to become difficult. The approach outlined here starts an ssh daemon right after the network configuration of the debian installer. You can then use an ssh client to connect to the installation and proceed as if you were sitting in front of the machine. This procedure works for the standard debian ncurses installer, not for the graphical installer on the Ubuntu Desktop Live cd.

There are basically two options:

  • Use the standard alternate installation CD or the netboot mini iso and ask someone to go through the network configuration
  • Modify the netboot iso and automate the installation up to the point where you can connect via SSH

The first option involved less work on your part, but the person starting the installation will need a helping hand if he/she is not familiar with the Debian Installer.

The rest of the guide is split into these two parts.

Installation with stock Ubuntu iso

If you use the alternate installation CD, you have to boot the system and press escape as soon as the installer presents you the first question. Select Change debconf priority and choose low.

If you use the netboot iso, simply boot by entering expert instead of the default install. That will set your debconf priority to low automatically.

As soon as you come to a screen presenting you a list of installer components which can be loaded, tick network-console: Continue installation remotely using SSH and continue. One of the next steps should be a question asking for the SSH password. Choose one and then connect via ssh using the installer user and the password you have chosen.

After connecting via ssh you can change the debconf priority back to 'critical' to make the installation easier by suppressing optional questions asked by the installer.

Installation with modified Netboot iso

The installation medium will be a CD / DVD containing an (optionally modified) netboot mini.iso image as found on http://archive.ubuntu.com/ubuntu/dists/hardy/main/installer-i386/current/images/netboot/mini.iso.

Preparing the preseed file

In order to tell the debian installer to start the ssh server and wait for you to connect, it needs a preseed file (see http://wiki.debian.org/DebianInstaller/Preseed). Copy a file with the following content to a webserver which is reachable by the machine you want to set-up.

d-i debconf/priority                   select critical
d-i auto-install/enabled               boolean true
d-i netcfg/choose_interface            select auto
d-i netcfg/get_hostname                string obelix
d-i network-console/password           password SECRET123
d-i network-console/password-again     password SECRET123
d-i preseed/early_command string anna-install network-console

This preseed file assumes that you have a DHCP server on your network and sets the password for the installation user to SECRET123. You may want to adjust the password.

Modify the netboot iso

In order to make your life easier (typing URLs at the isolinux prompt is not my favourite task), you can modify the iso image to include the URL and some options which cannot be set from the preseed file in the default boot options. Download the mini.iso file of the distribution you would like to install (tested with hardy-proposed on 2008-06-19, hardy currently suffers from https://bugs.launchpad.net/ubuntu/+bug/238974) to /tmp and proceed as follows:

cd /tmp
sudo mkdir /media/isoimage
sudo mount mini.iso /media/isoimage -o loop
mkdir /tmp/miniiso_remastered
sudo cp -aR /media/isoimage/. /tmp/miniiso_remastered/
sudo vi /tmp/miniiso_remastered/isolinux.cfg
sudo mkisofs -r -V "Custom Ubuntu Netboot image" -cache-inodes -J -l -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /tmp/CustomMini.iso /tmp/miniiso_remastered/
sudo umount /media/isoimage

The steps above will start vi to edit the isolinux configuration file. At this step, apply the following changes:

--- /media/isoimage/isolinux.cfg 2007-10-15 23:59:20.000000000 +0200
+++ /tmp/miniiso_remastered/isolinux.cfg        2008-06-19 14:44:11.000000000 +0200
@@ -12,7 +12,11 @@
 F9 f9.txt
 F0 f10.txt
 
-DEFAULT install
+DEFAULT netconsole
+
+LABEL netconsole
+       kernel linux
+       append vga=normal initrd=initrd.gz preseed/url=http://YOURDOMAIN.COM/preseed/default.txt console-setup/layoutcode=us console-setup/layout="U.S. English" console-setup/variantcode=intl countrychooser/country-name=Austria debian-installer/country=AT languagechooser/language-name="English" languagechooser/language-name-fb="English" netcfg/get_hostname=NEWMACHINE mirror/http/countries=DE mirror/http/hostname=de.archive.ubuntu.com DEBCONF_PRIORITY=critical
 
 LABEL install
        kernel linux

Adjust the line starting with append to your liking. You can find the values of the variables as they have been set when you installed Ubuntu on your machine in the file /var/cache/debconf/config.dat

You can then use the /tmp/CustomMini.iso instead of the mini.iso file.

Starting the installation

Burn the iso file to a CD or DVD and tell someone with physical access to the machine to boot from it.

If you have modified the iso as outlined above, you just have to tell your assistant to wait until a prompt appears which basically says: You can now connect to the IP address X.X.X.X using ssh with the user installer to continue the installation. Do as it says and you should be greeted by the debian installer over ssh. It is advisable to connect to the machine from another machine within the same (reliable) network using screen. Say you want to install machine A on network X. You are working on machine M in network Y. Connect via ssh to machine B on network X, start screen and then connect to machine A. If your connection (over the internet) to machine B fails, you can simply reconnect and re-attach to screen using screen -r.

Installation/NetworkConsole (last edited 2008-12-07 15:03:12 by f-hackenberger)