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.