FreeBSD4.4 on a Compaq Prolinea 4/66

Grenville Armitage, 9jan02

Just for fun in December 2001 I installed FreeBSD 4.4 on a really old i486-based Compaq desktop machine, one that had previously seen life running Windows 3.11 in the mid-1990s. This documentation is largely for my own benefit - a record of what I did in case I ever need to.... umm... re-live the thrill. This information might also be of interest to others (like you, if you're reading this page and you aren't me) who wonder if FreeBSD really can be installed on old, throw-away machines. Not really sure if it would be of much use as a workstation, but definitely quite capable of being used as a network LAN gateway/firewall, or even a small NFS server, HTTP server (with apache) or WinNT file server (with samba).

Equipment
Installing FreeBSD
FreeBSD boot messages

Equipment

Installing FreeBSD

My particular Prolinea 4/66 had no CD-ROM drive, so I had to boot from the FreeBSD4.4 diskettes and then install over the Ethernet from the FreeBSD CDROM on another machine (in this case a Toshiba Portege 7020 laptop, itself running FreeBSD). The laptop's CDROM was made accessible via FTP and NFS.

The FreeBSD boot process will prompt you for an initial kernel configuration step - skip it, and continue to the main Installation program. Select a Standard Installation, and you'll now be prompted to create the intial partitioning of the hard drive.

Because of its BSD/Unix roots, FreeBSD actually uses the term "slice" to refer to what the PC-world calls "partition". The traditional PC BIOS allows a disk to contain up to four distinct partitions, each containing a different file system (FAT16, NTFS, FreeBSD UFS, Linux, etc). Traditional BSD (from which FreeBSD is derived) uses partitions as key mount points for members of the unix directory tree and the swap space. Since FreeBSD was designed to co-exist on PC platforms and their BIOSes, BSD-style partitions are created inside BIOS partitions. To keep the names distinct, FreeBSD decided that BIOS partitions would be referred to as slices.

From FreeBSD's perspective, the Prolinea's internal harddrive is device /dev/ad0. The first step in the installation process is the FDISK Partition Editor, which allows you to modify the BIOS partitions of the hard drive. There were two existing partitions - FAT (for the previous Windows installation) and a 2MB Compaq Diagnostics partition. Not knowing what the diagnostics partition was used for, I left it. I manually deleted the FAT partition and recreated a single FreeBSD partition in its place. FDISK left the diagnostics partition as the third 'slice' (ad0s3), and assigned the first 'slice' (ad0s1) to FreeBSD.

Quit the partition editor ('q' option) and you'll be prompted to install the FreeBSD boot loader in the Master Boot Record (MBR). It is probably not necessary, but do it anyway. You'll then be taken to the "Disk Label Editor" and offered the chance to set up BSD-style partitions inside the previously assigned FreeBSD slice ad0s1. (ad0s1c conventionally represents the entire slice ad0s1, ad0s1d is unused by default. The swap partition, ad0s1b, was assigned roughly 40MB.) The partitions are mapped to filesystem mount points (the numbers below reflect the addition of packages mentioned later):

Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 97M 30M 59M 33% /
/dev/ad0s1f 163M 106M 44M 70% /usr
/dev/ad0s1e 19M 192K 18M 1% /var

To continue the installation, setup an Ethernet link between the Prolinea and another machine allowing FTP or NFS access to the FreeBSD4.4 CDROM. (Anonymous FTP can be setup on another FreeBSD machine by adding the ftp user to /etc/passwd with /cdrom as its home directory, and edit /etc/inetd.conf to enable the ftp daemon.) I configured both the Prolinea and the FTP server node as members of the private 192.168.0.x subnet (the ep1 interface on the Prolinea in this case), used FTP as the initial network installation method, and it worked fine. Selected a minimal FreeBSD installation, and left all packages for later. Before initiating the actual installation, go to the Options menu and change the installation version from "4.4-RELEASE" to "any" (for some reason the FTP installation complains about not finding the correct version if you don't make this change, even though the CDROM was in fact the 4.4-RELEASE).

A caveat about security settings: don't select the highest security setting when prompted during installation, otherwise you wont be able to experiment with the X11 server (e.g. If you install Xfree86-3.3.6 and run XF86Setup either from console or during the installation process it will fail to start the server).

After installing FreeBSD and rebooting you should see a single prompt for "F1 - FreeBSD" from the FreeBSD boot manager. You can either immediately hit F1, Enter, or wait a couple of seconds for the boot process to continue automatically.

Once FreeBSD was running on the Prolinea I NFS-mounted the CDROM from the laptop (from which the FTP-based installation was performed). This was successfully used to perform post-installation of Xfree86-3.3.6 throught the /stand/sysinstall utility. I also used "pkg_add" to install apache-1.3.20 (was able to use the Prolinea as a basic webserver on the home LAN) and nmap-2.54.b29 from the NFS-mounted /cdrom/packages/All directory.

Naturally, with its limited RAM and swap space (given the small harddrive) this machine doesn't have huge potential as a standalone graphical workstation. However, FreeBSD inherently supports a range of IP networking functionality, so the Prolinea could get a new lease on life as a firewall or small server node. In addition, IDE harddrives in the 1-2GB range should be easy to find second-hand and would probably allow installation of useful, X11-based email and websurfing tools.

X11 using XFree86-3.3.6: I didn't do any serious work on setting up X11. Used /stand/sysinstall to add the Xfree86-3.3.6 X11 packages (SVGA server only). SuperProbe reported the video card/chip as "Tseng ET4000/W32i Rev B" with 1MB RAM. Was able to setup basic 800x600 mode of operation, but didn't explore anything particularly complicated.

FreeBSD boot messages

I didn't tweak IRQs or search for conflicts. Here's what FreeBSD4.4 reported when booting:

Copyright (c) 1992-2001 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD 4.4-RELEASE #0: Tue Sep 18 11:57:08 PDT 2001
murray@builder.FreeBSD.org:/usr/src/sys/compile/GENERIC
Timecounter "i8254" frequency 1193182 Hz
CPU: i486 DX2 (486-class CPU)
Origin = "GenuineIntel" Id = 0x435 Stepping = 5
Features=0x3<FPU,VME>
real memory = 16777216 (16384K bytes)
avail memory = 11919360 (11640K bytes)
Preloaded elf kernel "kernel" at 0xc0480000.
md0: Malloc disk
npx0: <math processor> on motherboard
npx0: INT 16 interface
isa0: <ISA bus> on motherboard
orm0: <Option ROM> at iomem 0xc0000-0xc7fff on isa0
ep0: <3Com 3C509-TP EtherLink III> at port 0x300-0x30f irq 10 on isa0
ep0: eeprom failed to come ready.
ep0: eeprom failed to come ready.
ep0: eeprom failed to come ready.
ep0: eeprom failed to come ready.
ep0: eeprom failed to come ready.
ep0: Ethernet address 00:00:00:00:00:00
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
ata0 at port 0x1f0-0x1f7,0x3f6 irq 14 on isa0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
kbd0 at atkbd0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: model Generic PS/2 mouse, device ID 0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
plip0: <PLIP network interface> on ppbus0
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven port
ppi0: <Parallel I/O> on ppbus0
ep1: <3Com 3C509B-TP EtherLink III (PnP)> at port 0x210-0x21f irq 5 on isa0
ep1: Ethernet address 00:20:af:a1:5b:9e
ad0: 327MB <Conner Peripherals 340MB - CFA340B> [665/16/63] at ata0-master BIOSPIO