Review of "The Complete FreeBSD, 4th Edition"

Having played with several releases of FreeBSD, I was interested in reading the fourth edition of "The Complete FreeBSD, 4th Edition" by Greg Lehey. In general, the book is well thought out and provides a wealth of information. "The Complete FreeBSD", will easily answer most questions and concerns that a user will encounter when installing FreeBSD. The author provides very detailed discussions on the process and background of partitioning one's hard drive, configuring the X-server and how to decide what frequencies one can run their monitor at without causing any damage, as well as information on configuring and securing FreeBSD and much more. But "The Complete FreeBSD" does not provide the complete information all users will want to configure a FreeBSD system. Additional research may be required. Much of the missing information may be found in the man pages or one of the several doc directories that are installed as part of the system. What information that can not be found in this book, the doc directories or the man pages will require the user to make use of their favorite search engine.

The proof of the usefulness of any technical book is whether it provides relevant information. After reading "The Complete FreeBSD", I decided to do a fresh installation of a recent version of FreeBSD, before I wrote this review. I know that FreeBSD is fairly easy to install even for an individual installing their first system. What I was more interested in was if "The Complete FreeBSD", would prove useful. Using the guidelines suggested by the author, the process of installing FreeBSD was simplified, somewhat easier and more streamlined then the previous method I have used. I combined / (root), /var, /tmp and /usr into one partition and kept separate partitions for /home and swap. The machine I used for this installation is a dual processor P-III with two Gig of memory. The hard drive used was a small eight Gig drive; it was the only spare drive I had. This drive was just big enough to allow me to use the suggested six Gig of space for a combination root, tmp, var, usr partitions. I knew that using this drive would require making some concessions when I defined the amount of swap space to allocate. I know from previous experience that this machine seldom uses swap so I decided to use a smaller than main memory swap space of one Gig. The author discusses the relationship between main memory and swap space, so from his discussion my decision to use a one gig swap space would be adequate for this machine's intended use. But, if this machine was to be used in a production environment where swap space would be used more intensely I would want a swap space larger than main memory. Which in this case would require either installing a larger primary hard drive or a second drive. I allocated what space was left on the drive to /home, which was less than a Gig.

For this test installation, I decided to use FreeBSD 5.2-RC-2 which had been posted for evaluation a few days earlier. The decision to use the 5.2-RC-2, a beta release, was prompted by several factors, the first being that this the fourth edition of "The Complete FreeBSD" is written to cover the 5.x branch of FreeBSD. Second, installing 5.2-RC-2 allowed me to see if the text would provide supportive information on the 5.x branch of FreeBSD, and finally this gave me a chance to check out the next release of the 5.x branch of FreeBSD.

As I expected, the installation went with no problems as did the configuration of basic services, using methods indicated in the text. I did not try to configure printing and networking. I do not have a network to which I could connect to nor did I have a printer attached to the machine I used for this installation. Configuring PPP was simple. Edit three lines in the file /etc/PPP/ppp.conf and change a couple of settings in /etc/rc.conf to allow ppp to dial out and I was able to access the outside world from my newly installed FreeBSD machine.

The one area that I did have a problem with was in configuring and installing a new kernel. This installation was on a machine that has two working CPUs, I wanted both processors working. The default (GENERIC) kernel in FreeBSD supports only one processor. Users who install FreeBSD on machines that have more than one CPU will need to build a kernel to support their additional processor(s). Although I do not consider myself an expert on building kernels for FreeBSD machines, I expected that the kernel building process would also proceed without any problems. I was mistaken. The first minor problem I encountered was in finding the file LINT. The book indicates that LINT is now generated from a file called NOTES in the /usr/src/sys/i386/conf directory. Using the text as a guide, I was able to generate LINT, with a one line command, "make LINT". Without the text, I probably would have spent far more time then necessary to discover this. After configuring both the LINT file and a new kernel, I tried to build the new kernel using the suggested command set for the 5.x branch. The only response I ever got from this process was "don't know how to make kernel". My final effort, was to use the process that I have used in the past to build new kernels for the 4.x branch. This process did build and install the new kernel. I proved this by running the command "uname -a", which displayed the name of the kernel that I built. But when I ran the command "top" and examined the header area, I found only one processor listed, which, to me, indicates that kernel did not build correctly for the configuration I wanted. At this time, I am going to assume that I missed a configuration option or a step in the kernel built process. As soon as I can find some free time, I will re-examine the the kernel building process to see if I can find where I went astray.

"The Complete FreeBSD, 4th edition" by Greg Lehey, I believe is worth having on one's bookshelf. The information contained in "The Complete FreeBSD" is current and useful but the reader should keep in mind that the 5.x branch of FreeBSD at the time the text was written was cutting-edge of the 5.x branch of FreeBSD. "The Complete FreeBSD" is a text that tries and does merge the past and present with the future of FreeBSD. But as the author cautions the reader that some of the methods that are used in the text may change as the 5.x branch matures. With these changes, the manner in which one addresses the configuration of various system functionalities may change. These changes may cause, for instance, problems similar to kernel configuration problem I encountered. If you are interested in or are using FreeBSD and you are looking for a good reference manual get a copy "The Complete FreeBSD, 4th Edition", read it and use it to further your understanding of FreeBSD. I believe that you will not regret your investment.

—Alvah Humphrey 08-Jan-2004