Intro

I was looking for a convenient way of building an OpenBSD firewall for my home setup to replace the rather basic firewalling options in my ADSL router (D-Link DSL-604+). On the verge of buying a Soekris 4801 (a perfectly capable machine) I happened across a faulty Intrusion PDS-1100 that was about to be thrown out. Horrible looking boxes, and I'm used to them running Checkpoint (blech) so initially I wasn't interested. But having taken the thing apart I began wondering how easy it would be to put OpenBSD on it. It came with Debian installed and appeared to be x86 based hardware, so I figured it couldn't be too difficult.

Hardware

The PDS-1100 is basically an Acrosser AR-B9637 PC (user's guide). It runs a National Semiconductor GEODE GX1/GXLV processor, and the one installed in the PDS-1100 comes with an AR-B9461 daughter board that supports compact flash on a mini IDE interface. Spec:

CPU : NS GEODE GX1/GXLV
Chipset:Cyrix CS5530A
RAM Memory:Onboard 32MB SDRAM
Flash Disk:Supports one socket for DiskOnModule
Ethernet:3 x 10M/100M-Base2 with RJ-45 connector (PCI BUS)
BIOS:AMI or AWARD flash BIOS
RTC:BQ3287MT Chips
Speaker:Supports external speaker
LED Indicator:Power, HD and LAN LEDs
Jumper:3 x 2 Jumper select base clock and CPU clock multiplier
Power Connector:One 3-pin connector
Power Req.:5V, 2.5A
PC Board:6 layers,EMI considered
Dimensions:178 mm x 102 mm

The 128MB CF card it came with was faulty, (the reason it was being thrown out), so I replaced it with a SanDisk 512MB card. 512MB is more than enough to run a firewall with room to spare.

One thing I haven't been able to do yet is get into the BIOS. The spec says that pressing DEL on boot should do the trick, but I've not been able to make this work. I wonder if it has been configured with a different key, or purposely disabled?

Software

Originally the PDS came with Debian Linux and Checkpoint installed. Being a BSD fan I decided the device would be better off running OpenBSD and PF. After poking around and failing to get the existing GRUB loader to boot from a TFTPed bsd.rd image I started looking around for ways of writing an OpenBSD image to a compact flash card. I quickly came across Chris Cappuccio's Flashdist script that combines all the steps necessary into one extrmely easy to use package. However the configs supplied with the script were aimed at Soekris hardware, which although similar is not quite the same.

I tried initially with the NET4801 config but it didn't boot. I then tried with the NET4501 config and hey presto, OpenBSD's boot text was scrolling up my terminal window. After fine tuning the config, and adding the correct network drivers (Realtek 8139) I had a config that worked well.

Pictures

Standard PDS-1100, blech

AR-B9637 complete with AR-B9461 daughter board and original 128MB compact flash card

AR-B9637 without daughter board

Configurations

Working OpenBSD kernel configuration for the AR-B9637 :AR-B9637

Disk geometry for the Sandisk 512MB Compact Flash card:

Bytes/Sector:512
Sectors/Track:32
Sectors/Cylinder:2048
Tracks/Cylinder (heads):64
Cylinders:488

Stage 2

So I had minimal OpenBSD config running on the device, but I figured with 512MB of storage space to play with I might as well try putting a more standard install on it. After installing a minimal BSD OS on the flash card this is actually quite simple using OpenBSD's RAM disk kernel - bsd.rd. This is a bootable BSD system that sits entirely in RAM, and lets you install, upgrade or maintain an existing system. I copied the file into the root directory of the flash card, and then boot from it using :

boot hd0a:/bsd.rd

From then on it was just a case of following the standard OpenBSD install instructions. Once the install was finished I copied the kernel I had compiled (above) and it booted perfectly. Now all I have to do is configure it as a firewall and maybe spray paint the box :)

References

Flashdist http://www.nmedia.net/~chris/soekris/
OpenBSD http://www.openbsd.org
Acrosser http://www.acrosser.com