Installing FreeBSD
From Soekris Info Wiki
There are two ways to install FreeBSD on a Soekris box. The Soekris comBIOS doesn't support booting from CDROM drives, but you can prepare your disk image on another system, or you can install directly to the Soekris box over the LAN using the PXE network boot procedure.
Note: FreeBSD 6.3R requires comBIOS version 1.32i on the net5501, or the boot will hang when first attempting DMA.
Contents |
Compact flash
- NanoBSD is a shell script that creates a bootable compact flash image from the FreeBSD sources. NanoBSD gives you control of which features you add to save space. The resulting image is targeted for half of the CF card, allowing alternating in place upgrades to the other half. It was written by Soekris-Tech regular Poul-Henning Kamp.
- Ultradesic.com (mirror) has a detailed tutorial on an alternative way to create and install the CF image.
- BarryODonovan.com has a howto on installing FreeBSD to a CF card using VirtualBox and some necessary post-installation changes for it to boot on a Soekris net4801-48 box.
Net boot
FreeBSD supports installing over the network using PXE net boot functionality of the Soekris BIOS.
- The FreeBSD handbook is the standard reference. It doesn't cover the PXE install procedure, but does describe booting a diskless client, and setting up the serial console.
- Installing FreeBSD 7.0 via serial console and PXE gives an excellent HOWTO for installing over the network. Includes a workaround for kernel bug that prevents booting over NFS.
- Ultradesic NFS Root Guide (mirror) covers installing FreeBSD 6.x over the network.
- Webweaving FreeBSD on Soekris net boot guide covers installing FreeBSD 5.x over the network.
Kernel customization
The FreeBSD GENERIC kernel should boot your Soekris, however there are several Soekris kernel optimizations that can be made. See the handbook for general kernel customization instructions. The following Soekris and AMD related options exist (from /usr/src/sys/i386/conf/NOTES):
- CPU_SOEKRIS enables support www.soekris.com hardware
- CPU_ELAN enables support for AMDs ElanSC520 CPU
- CPU_ELAN_PPS enables precision timestamp code
- CPU_ELAN_XTAL sets the clock crystal frequency in Hz
- CPU_GEODE is for the SC1100 Geode embedded processor - This option is necessary because the i8254 timecounter is toast.
net5501
Start with the GENERIC kernel configuration file. Add "options CPU_SOEKRIS" and "options CPU_GEODE". You should also comment out or delete all device entries that aren't on the net5501 and that you're not likely to add. You will likely want to remove all RAID controllers, SCSI and FireWire related devices. You can remove all wired and wireless network interfaces, except miibus and vr, unless you have added NICs. You can even remove the USB uhci to save a few more bytes. "KVM" devices can also go since there is only a serial console, so remove atkbdc, atkbd, psm, vga, splash and sc. Be sure to keep sio. Note that if you keep umass (in USB section), you'll need scbus and da from the SCSI section.
Patch for PATA hard disk errors on FreeBSD 7.x
If you install FreeBSD 7.x onto a PATA hard disk on the net5501, then when you boot your newly-installed OS, the chances are you will see a message like:
kernel: ad0: WARNING - READ_DMA UDMA ICRC error (retrying request) LBA=121272839
This is because FreeBSD's ATA subsystem auto-detects the maximum drive speed, and gets it wrong! It sets UDMA100, which is slightly too fast, giving intermittent errors. If this happens to you, the first thing to do is to slow things down temporarily:-
atacontrol mode ad0 udma66
This lasts until the next reboot. Now you can safely patch the ATA driver, then rebuild the kernel using make buildkernel && make installkernel.

