Installing FreeBSD 9.1 on Soekris net6501 via PXE

June 3, 2013 Brian Cunnie

Abstract

Installing FreeBSD on the Soekris net6501 has traditionally been a challenge, for the Soekris has a serial console rather than a PC (i.e. VGA) console. This blog post describes a technique of using special DHCP attributes, a TFTP server, and an NFS server to install FreeBSD 9.1 on the Soekris.

Assumptions

  • You have created a FreeBSD 9.1 machine (in this blog post, I use fbsd-vm.nono.com) which is both a TFTP and NFS server. If you create a virtual machine, the network interface must be bridged, not NAT’ed.
  • You have cabled ethernet port 0 from the Soekris to your ethernet switch.
  • You are connected, via a serial cable & appropriate software, to the Soekris’s console.
  • You have changed the bps setting on the Soekris from 19200 to 9600 (9600 is FreeBSD’s default speed setting).

DHCP Entry

Create an entry similar to the following on your DHCP server (this example is for an ISC DHCP server). Make sure to use the MAC address of ethernet 0 (“Eth 0”); the Soekris boots from that port:

host soekris {
  hardware ethernet  00:00:24:ce:7b:f8; # soekris 6501-70 ethernet 0
  fixed-address soekris.nono.com;
  next-server fbsd-vm.nono.com; # tftp/nfs server
  filename "boot/pxeboot";
  option root-path "/mnt/fbsd_boot";
}

Download & Mount FreeBSD

First, you’ll need to download the FreeBSD ISO, mount it, and copy it to a new location (/mnt/fbsd_boot). These commands should be run on the FreeBSD TFTP/NFS server:

sudo pkg_add -r vim
sudo pkg_add -r rsync
sudo mkdir /var/iso
sudo mkdir /mnt/iso
cd /var/iso
sudo fetch ftp://ftp1.us.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/9.1/FreeBSD-9.1-RELEASE-i386-dvd1.iso
MD=`sudo mdconfig /var/iso/FreeBSD-9.1-RELEASE-i386-dvd1.iso`
sudo mount -t cd9660 /dev/$MD /mnt/iso
sudo rsync -ax --stats /mnt/iso/ /mnt/fbsd_boot/
sudo vim /mnt/fbsd_boot/etc/fstab
  #/dev/iso9660/FREEBSD_INSTALL / cd9660 ro 0 0
sudo vim /mnt/fbsd_boot/boot/loader.conf
  console="comconsole"

The last two commands are important.

  • FreeBSD should not try to mount the DVD during the install (we are doing a network install, not a DVD install).
  • The boot loader should use the serial console, not the PC console.

Enable TFTP & NFS

Run the following commands on your FreeBSD TFTP & DNS Server:

sudo vim /etc/rc.conf
  inetd_enable="YES"
  mountd_enable="yes"
  nfs_server_enable="yes"

Configuring TFTP

Now configure TFTP by editing inetd’s configuration file & restarting inetd. Note that we have changed the path for tftp’s directory (/mnt/fbsd_boot):

sudo vim /etc/inetd.conf
  tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /mnt/fbsd_boot
sudo /etc/rc.d/inetd restart

Testing TFTP

Run the following commands to make sure the TFTP server is functional (replace fbsd-vm.nono.com with the hostname of your TFTP server):

cd /tmp/
echo get boot/pxeboot | tftp fbsd-vm.nono.com

You should see something similar to “Received 273148 bytes in 0.4 seconds”

Configuring NFS

Run the following commands to configure your NFS server:

sudo vim /etc/exports
  /mnt/fbsd_boot -maproot=root
sudo /etc/rc.d/mountd restart
sudo /etc/rc.d/nfsd restart

Testing NFS

Run the following commands to make sure the NFS server is functional (replace fbsd-vm.nono.com with the hostname of your NFS server):

mkdir /tmp/junk
sudo mount fbsd-vm.nono.com:/mnt/fbsd_boot /tmp/junk
ls /tmp/junk

You should see ~27 files & directories. Remember to unmount:

sudo umount /tmp/junk

Installation Notes

  • If you have a pre-existing FreeBSD install that you want to overwrite, you may need to type boot f0 at the Soekris boot monitor to force a network boot instead of a hard drive boot.
  • If asked for a Console type, vt100 works well.

Post-installation Tasks

After the install, but before you reboot, you’ll need to make additional changes to the Soekris to make sure it uses the serial console properly. You’ll be prompted “would you like to open a shell … to make any final manual modifications?” Select yes.

vi /boot/loader.conf
  console="comconsole"
vi /etc/ttys
  #console none                            unknown off secure
  console "/usr/libexec/getty std.9600"   vt100 on secure
exit

Acknowledgements

Jeremy Chadwick, who wrote [what is probably the best] description of how to install FreeBSD via PXE on a Soekris. His instructions, while wonderfully complete for FreeBSD 7.x, unfortunately do not work for 9.1.

Dr. Stefan Konarski, who wrote an excellent post on how to install FreeBSD 9 via PXE. It does not include the Soekris-specific tweaks, and is written entirely in German, but can be easily undertood.

My co-worker, Michael Sierchio, who continually inspires me.

About the Author

Biography

Previous
Best practices for designer/developer collaboration
Best practices for designer/developer collaboration

Successful product development requires effective collaboration between designers and developers. That soun...

Next
We’ll see you at Multiscreen Summit!
We’ll see you at Multiscreen Summit!

From June 11th – 12th, we’ll be at Metropolitan Pavilion in New York City for the Multiscreen Summit. Our D...