diff --git a/doc/update-node.txt b/doc/update-node.txt
index 501560b481cc101f5016d1005289921189abfbc1..1a54265c774297bf43e1179541ba17ffe82f46fe 100644
--- a/doc/update-node.txt
+++ b/doc/update-node.txt
@@ -35,14 +35,21 @@ A. Things to understand up front:
    is how I expect you to do it.
 
 3. To do an Emulab client software install, certain other software packages
-   must be installed.  If you are updating a recent Emulab image, these
-   should all be in place.  But if you are updating a really old image,
+   must be installed before you even try to configure the Emulab software.
+   If you are updating a recent Emulab image, these should all be in place.
+   But if you are updating a really old image,
    or you are installing the software for the first time, you will need
    these things:
 
+   - GNU make.  On Linux it is the standard make.  On FreeBSD, you must
+     install the port: /usr/ports/devel/gmake.
+
+   - Python.  Needs to be Python 2.3 right now.  For FreeBSD, go to
+     /usr/ports/lang/python23 and do a "make install".
+
    - Elvin headers and libraries.  Check for the existance of "libvin4.a"
      in your library path (probably in /usr/local/lib).  If it doesn't
-     exist, you will need to download:
+     exist, you will need to download (wget or fetch):
 
        http://www.emulab.net/downloads/libelvin-4.0.3.tar.gz
        http://www.emulab.net/downloads/libelvin-4.0.3.patch
@@ -54,7 +61,7 @@ A. Things to understand up front:
 
      then build, and install it.  For FreeBSD:
        cd libelvin-4.0.3
-       ./configure
+       ./configure --enable-threads
        make
        sudo make install
      for Linux, at least RedHat 9:
@@ -115,6 +122,15 @@ A. Things to understand up front:
      provide the boot time rc boilerplate to call dhclient, we have our
      own and don't need it).
 
+   - BPF devices.  Under FreeBSD, the DHCP client uses /dev/bpf* devices.
+     In FreeBSD 4, there are only 4 devices by default so if you have more
+     than 4 interfaces in the system, DHCP will fail.  So you may need to
+     go out to /dev and:
+
+         sudo ./MAKEDEV bpf5 bpf6 ...
+
+     For FreeBSD 5 and Linux, you should not have to do this.
+
    - Perl.  On FreeBSD 5, perl is not installed by default.  Make sure you
      have a version of perl5 installed.
 
@@ -126,6 +142,43 @@ A. Things to understand up front:
    - Ethtool.  On Linux, with certain NICs, you will need ethtool (instead
      of mii-tool) so that the Emulab software can change link speed/duplex.
      Just install an RPM.
+    
+4. Another "first time, one time" thing to do is to setup the serial console
+   in the OSes (if you are planning on using serial consoles).  We use 115200
+   baud as the typical default of 9600 is too painful.
+
+   For FreeBSD you need to rebuild a new boot loader if you intend to use
+   115200 baud (which is what our PXE boot loader and MFSes expect).  To
+   do that first add the line:
+
+      BOOT_COMCONSOLE_SPEED=115200
+
+   to /usr/src/sys/boot/i386/Makefile.inc.  Then:
+
+      cd /usr/src/sys/boot
+      sudo make obj
+      sudo make
+      sudo make install
+      sudo disklabel -B ad0  # where "ad0" is your boot device
+
+   and to /boot/loader.conf add:
+
+      console="comconsole"
+
+   Hang on, you're not done yet!  One last thing: change the "console" line
+   in /etc/ttys to look like:
+
+      console "/usr/libexec/getty std.115200"   unknown on secure
+
+   Linux and lilo are a little simpler.  In /etc/lilo.conf add:
+
+      serial=0,115200n8
+
+   at the top and, for each kernel listed add:
+
+      append="console=tty0 console=ttyS0,115200"
+
+   the run /sbin/lilo to record the changes.
 
 
 B. Now we can begin the process: