Installing FreeBSD

crimson had been dormant for a while, since I had built a new PC, gold, as my Linux machine (dual booting into Windows 2000). I decided to try installing FreeBSD 4.6 (the then current version) to see how it compared to Linux.

I downloaded the two boot floppy images and copied them to disk. I thought I'd load everything from the Internet, since I now had a fast connection.

The initial screen was a little daunting. It seemed there were already 7 card conflicts on crimson, before it had even detected any hardware! After a little more study, I figured that all the conflicts were network cards, and that they were defaults that needed to be deleted if not required. It was just as well I knew the network card in crimson was LANCE-based, as the only way I could guess that I needed one of the default drivers was through its name "lnc0". I deleted all the other cards and carried on booting.

After this point, the boot was painless. I had some trouble configuring X; the mouse setup took a while to get right. Perhaps I should have read the FreeBSD manual first. This is the working mouse setup:

    Identifier  "Mouse1"
    Driver      "mouse"
    Option "Protocol"    "MouseSystems"
    Option "Device"      "/dev/sysmouse"

I also had problems with X drawing. The only solution was to turn off hardware acceleration, as shown below:

Section "Device"
    Identifier  "Cirrus Logic GD543x"
    Driver      "cirrus"
    VideoRam    2048
# Device section for Cirrus Logic GD5430/34-based cards.
    #MemBase 0x00e00000         # ISA card that maps to 14Mb
    #MemBase 0x04000000         # VLB card that maps to 64Mb
    #MemBase 0x80000000         # VLB card that maps to 2048Mb
    #MemBase 0x02000000         # VLB card that maps to 32Mb
    #Option "linear"
    Option   "noaccel"

I couldn't remember if I'd had a similar problem with X under Linux; I didn't think so, but my memory is shot to hell anyway...

Good things

I liked the simplicity of configuration of FreeBSD - the single rc.conf file to setup up local defaults was really easy to get to grips with. For example, to setup the lnc0 interface as a DHCP client, all I needed to do was add the line ifconfig_lnc0="DHCP". I also liked the ability to search for, and download, packages for the system. Much easier than hacking around with RPMs.

Bad things

FreeBSD seemed a little slower running X than Redhat 7.3; this may just be subjective, or maybe I really didn't have to turn off hardware acceleration in Linux. I noted that when transferring files from gold, the lnc0 network driver lost packets - now that definitely didn't happen with Linux.

DHCP on Linux and FreeBSD

While trying to get crimson and gold talking to each other, I found that neither of their host names were recorded in the Speedtouch DNS tables. This presumably had always been the case, but had been masked since Windows 2000 notified DNS of its host name on boot.

In order to get Linux to inform DNS of its host name, I had to modify the following line in the /etc/sysconfig/network-scripts/ifup script, by adding the "=`hostname`" element:

DHCP_HOSTNAME=`hostname`

Under FreeBSD, an addition to the /etc/dhclient.conf file is required:

send host-name "crimson";

Despite my reservations about FreeBSD, it started to worm its way into my heart (if that's actually possible for an OS to do), as you will see...