One User’s Thoughts on FreeBSD 4.9

I’ve been using computers since I was quite young and have been using Unixlike OSes for about two years. Most of my life I’ve used Macs and only started using Windows and Unixlike OSes recently for programming. I’m good at learning OSes as long as they are documented. I’ve been using FreeBSD for about a year and a half.

Click for a larger view I built the computer I am using myself. It has a Asus A7V266-E motherboard, Athlon XP1900+ CPU, 512 MB DDR 2100 ram, Matrox G400 video card, Asus 52x cdrom, Teac floppy drive, Western Digital 40GB hard drive, Hauppauge WinTV Radio tv card, Jaton Explorer V.90 Ex external serial modem, ps2 oem Logitech optical mouse, ps2 Happy Hacking keyboard, and a G75F ViewSonic CRT monitor.

FreeBSD can be compared to the less user friendly versions of Linux. Popular distributions of that style being Debian and Slackware. Unlike SuSE or Redhat the time spent configuring and installing programs after the installation is likely much longer then the installation itself. In my experience this period is made pretty easy because of the great documentation in the handbook.

Like Slackware and Debian the installer is console based. The program is
called sysinstall. It is used for the partitioning and installation of the
base packages. It also can be used for configuring the network, mouse, X,
security profiles, KDE and Gnome installation, adding new users. Most of it is
pretty straight forward but I find it easier to configure X and the network
outside of sysinstall.

After the main installation I have several things to do before its in working
order. I have to configure X. Since the version of X didn’t change between
4.8 and 4.9 I just reused my old XF86Config. I also reused my old ppp.conf. I
use cvsup to get 4.9 stable and current ports. Edit rc.conf to turn off the
servers I don’t use. I also turn on APM support.


I compile the world if there was any changes from 4.9 release to 4.9 stable.
Then compile the kernel adding support for hardware I have and removing support
for things I don’t have. Its all documented pretty well but was lot of work
the first time I did it.

cvsuping in FreeBSD can be compared to Redhat’s up2date or SuSE’s YaST online
update. While its mostly automated there are some text files I need to edit
before hand. I also need to make sure to have cvsup actually installed. In
the /usr/share/examples/cvsup/ directory there are files called stable-supfile
and ports-supfile. I already have copies of those that I’ve edited to add the
server I want to use.


and to set the version I want to get to 4.9 stable.

*default release=cvs tag=RELENG_4_9

I only have to set the server in the ports cvsup file. Then I change to to
root and run cvsup on those files. How long it takes to cvsup depends on how
much has actually changed. I use dialup and the time is usually 5-20 minutes
to get a release’s stable. 5 minutes is when nothing has changed. Ports are
changed more and can take much longer. I’ve messed up editing the stable file
before by setting the release to a tag that doesn’t exist. I noticed when I
saw all the source being deleted. It was easy reinstall the source but it was
still annoying.

Click for a larger view There is actually a difference between 4.9 stable and 4.x stable that isn’t
very clear. When I’ve read about people updating to stable is usually 4.x
stable, RELENG_4. Which isn’t really stable at the moment because its where
the 4.x development goes before being heavily tested. 4.9 stable, RELENG_4_9,
is only updated with security and bug fixes. Current, RELENG_5, is much
different then stable and is where most of the new development is done.

Compiling world is a simple process that takes up quite a bit of time. Its
consists of compiling all of the userland and the kernel and having them
replace the existing userland and kernel. Userland is all of the base programs
in FreeBSD like ls or top. There are detailed directions in the handbook. I
delete the content of the /usr/obj directory and go to the /usr/src directory
and type

make buildworld
make buildkernel
make installkernel
make installworld

with large amounts of time spent in between those commands waiting for things
to compile and install. If I was on a busy system I’d go to single user mode
before installing the kernel and world. I wouldn’t want to be using things that
are being written over and because it would make the process go faster. If I
ever cvsuped to stable or current instead of just 4.9 stable I’d have to worry
about the changes in the release being stable and tested. I’d also use the
program called mergemaster to combine changes made in configuration files like
make.conf and rc.conf. I haven’t been adventurous enough to try stable or
current yet.

Click for a larger view To compile the kernel first I have to do some text editing then compiling. In the /usr/src/sys/i386/conf/ directory there is a file called GENERIC that is used for the kernel that comes on the CD and when buildkernel is done. I already have a version of that file that I copied from GENERIC that I’ve edited. I didn’t have to change it much between 4.8 and 4.9. GENERIC has support for many drivers that I don’t use and doesn’t have built in support for sound or my tv card. I comment out many of the drivers

# SCSI Controllers
#device    ahb   # EISA AHA1742 family

and add support sound and my tv card

# For PnP/PCI sound cards
device    pcm
# WinTV
device bktr0
device smbus
device iicbb
device iicbus
device iicsmb

I then run /usr/sbin/config on the file I edited and go to the directory it
tells me too and type

make depend
make install

I then spend some time waiting for the compilation to complete between the
commands then reboot after the kernel is installed. If anything fails before
make install I go back and compare the GENERIC configuration file and the one I
edited to see if I made any mistakes. I’ve tried to remove support for things
required to compile the kernel before and the errors make it very obvious. I
make sure to keep a working copy of the kernel before rebooting. kernel.old in
the / directory is the last kernel made before make install. If I’m paranoid I
make a copy myself.

Installing software through ports is the best part of using FreeBSD. It would
be even more fun if I had a a fast connection. Dependencies are all most
always handled automatically. The binaries are compiled optimized for my CPU.
The CPU flags have to be put in make.conf in the /etc directory for that
optimization. FreeBSD 4.9 uses gcc 2.94.4 so the newest chip I can optimize
for is the Pentium Pro.


To add a new program I just go to the directory of the program I want. Change
to root and type

make install

Everything is downloaded, patched, and compiled automatically. Its also pretty
fun to just look through all the different ports. I’ve tried way to many
window managers by going through the x11-wm ports folder. Because its very
easy to install software through ports I can install only what I use.

After the base installation I installed KDE, vim, gmake, and cvsup from
packages on the CD. There are many other packages that get installed as
dependences. I install a several more things from the ports like fxtv, wget,
sdl_image, sdl_mixer, ImageMagick, mplayer, and Electric Fence. I download
Minitik from sourceforge and install it myself because only regular Tik is in
the ports. I did not have any trouble installing or using any of the programs
I got from packages or ports.

Click for a larger view I’ve had trouble with hardware on FreeBSD before. I’ve had trouble with my
video card and cdrom in 4.5 and 4.6 respectively. The problems mostly seem
resolved at this point but I pay attention to the mailing lists to see when new
experimental stuff is added. I haven’t had any trouble with 4.9 yet. There is
some support for more then 4GB of RAM that sound pretty experimental. If I had
more then 4 GB of ram I’d worry more. There is also a note in the 4.9 errata
that Gnome and KDE can’t be installed at the same time because they depend of
different versions of OpenLDAP.

I was using FreeBSD 4.8 before so 4.9 isn’t that different. The nicest thing
to me is the latest stable version of KDE 3.1.4. I’ve been using Lwm and
Mozilla instead of KDE on 4.8 for a while. I don’t use much of KDE actually
but I like Kmail and Konqueror. Konqueror seemed to have improved quite a bit
since 3.1.1. Tabs work much better and I’ve seen less strange rendering of web

Fxtv is the program used with tv cards with the Brooktree Chip. Like the WinTv
Radio card that I have. Its still working fine after compiling support for it
into the kernel and making a device in /dev. I’ve had trouble with it on a
different motherboard before so I’m careful not to use it with important work
open and unsaved.

SDL and SDL_Image seem to work fine. I noticed a port called sdl_ldbad that is
quite useful. On FreeBSD the include files folder and sdl-config are named
differently then they are on Linux. On FreeBSD they are named include/SDL11
and sdl11-config for no apparent reason. Especially since SDL is version 1.2.5
now. The port sdl_ldbad does something that I’ve been doing by hand. It makes
symbolic links to the normal places those files are on linux. This can make it
much easier to compile the source of programs developed on Linux that use SDL.

Since 4.9 isn’t that different then 4.8 its hard to rate it. I think its a
good release because I’ve found it stable so far but it hasn’t changed in any
big way. From a desktop and programming prospective it seems to have the same
speed and stability as Linux. Its much more stable then windows 98 or MacOS 9
or 7.5.5. FreeBSD is usually stable as long as the hardware is supported
well. Its still not the easiest Unixlike OS to start with but its very easy
once you get used to it.


  1. 2003-11-05 7:58 pm
  2. 2003-11-05 8:16 pm
  3. 2003-11-05 8:28 pm
  4. 2003-11-05 8:29 pm
  5. 2003-11-05 8:47 pm
  6. 2003-11-05 8:52 pm
  7. 2003-11-05 9:04 pm
  8. 2003-11-05 9:11 pm
  9. 2003-11-05 9:15 pm
  10. 2003-11-05 9:21 pm
  11. 2003-11-05 9:53 pm
  12. 2003-11-05 10:28 pm
  13. 2003-11-05 10:36 pm
  14. 2003-11-05 10:37 pm
  15. 2003-11-05 11:00 pm
  16. 2003-11-05 11:09 pm
  17. 2003-11-05 11:12 pm
  18. 2003-11-05 11:14 pm
  19. 2003-11-05 11:28 pm
  20. 2003-11-05 11:58 pm
  21. 2003-11-06 12:14 am
  22. 2003-11-06 12:27 am
  23. 2003-11-06 12:47 am
  24. 2003-11-06 12:48 am
  25. 2003-11-06 1:15 am
  26. 2003-11-06 1:40 am
  27. 2003-11-06 1:43 am
  28. 2003-11-06 2:17 am
  29. 2003-11-06 3:05 am
  30. 2003-11-06 3:15 am
  31. 2003-11-06 4:05 am
  32. 2003-11-06 4:17 am
  33. 2003-11-06 5:27 am
  34. 2003-11-06 6:43 am
  35. 2003-11-06 9:32 am
  36. 2003-11-06 10:07 am
  37. 2003-11-06 11:22 am
  38. 2003-11-06 2:46 pm
  39. 2003-11-06 5:52 pm
  40. 2003-11-06 9:49 pm
  41. 2003-11-08 12:01 am