Experiences with FreeBSD 9.0-BETA2

Brett Glass brett at lariat.net
Mon Sep 26 01:23:27 UTC 2011


All:

Just spent an afternoon and evening experimenting with FreeBSD 
9.0-BETA2. Overall reaction: so far, it's been pretty stable and 
responsive, but I'm concerned that it may have substantially 
increased memory and CPU requirements relative to previous 
versions. The new installer, while it's streamlined, still has many 
of the quirks of sysinstall (in particular, requiring the user to 
know when to hit "Tab" and when to hit "Enter") and is missing a 
few features upon which I've come to rely.

Here's a description of my experience in more detail.

First thing I noticed, when running the new FreeBSD installer from 
a memory stick image, is that disk partitioning was odd. It 
abandoned standard UNIX parlance, calling what are traditionally 
called "slices" partitions. It also diverged from past practice by 
creating one big UFS filesystem rather than the usual separate 
partitions for /, /tmp, /var, /usr. It then made a separate slice 
(to use the traditional terminology) for swap, rather than 
including it in the slice that contained the big file system. This 
seemed odd; if the file system was being lumped together in one 
place, why break out the swap to an entirely separate slice?

I was experimenting on a system which had an SSD (and therefore 
shouldn't swap), so I altered the automatic configuration by 
deleting all of the slices except the MBR and then trying to 
allocate a slice that just used all of the remaining disk space for 
the file system. When I did, the installer tried to automatically 
create a SECOND MBR slice at the same time it tried to create the 
file system slice (probably a bug). Finally persuaded it not to do 
this. However, I did experience some awkwardness when when I 
pressed "C" for "Create" and the installer did not offer me the 
maximum possible size as a default, as sysinstall did. Exactly how 
big could the file system slice be? There was no way of telling. I 
worked around this by specifying a size which I knew was too big; 
the installer seemed to trim it back to the maximum size it could be.

As I proceeded with the installation, I noticed that the new 
installer didn't run a concurrent shell, or provide a virtual 
terminal that showed progress, as sysinstall did. True, these 
things are probably only for experts, but I missed not having them. 
(Is there a way to turn them back on?) Also found no way to 
intervene in the install immediately after the distributions were 
loaded... a time at which I often do customizations such as 
modifying the files in /usr/share/skel to change the default 
editor. (My fingers have used EMACS ever since the original TECO 
version, so much so that the keystrokes are wired into muscle 
memory. So, I bring in jove as a binary package right away and make 
it the default system editor. Couldn't do that from the concurrent 
shell, before root's account was created, as I usually do.)

Also could not find any way to load binary packages from the 
installer after the install. This is a shame, because ports with 
lots of dependencies can take hours and lots of disk space to 
build; binary packages save me a LOT of time and are necessary for 
systems with limited RAM and disk space.

Next thing I did was try to recompile the kernel to streamline it 
and add features I want compiled in, such as ipfw and dummynet. 
Alas, I saw no sign of the BSD-licensed Clang compiler, for which 
I've waited for many years (I can't believe that now, in 2011, one 
cannot build FreeBSD without GPLed code.) I used a kernel 
configuration from a recent 8-STABLE machine, which was accepted 
with no errors, and then tried to reboot.

I got hung up at the "mountroot" prompt. The system couldn't find 
the root partition specified in /etc/fstab. However, if I manually 
loaded the GENERIC kernel, the system DID boot.

I soon discovered why. An innocuous message that I didn't notice at 
the beginning of installation proclaimed that the GENERIC kernel 
was renaming the SATA SSD, which started out as ad0, to ada0. I 
modified /etc/fstab to use ad0p2 as the root filesystem slice, and 
the system booted the new kernel.

I then explored what had happened in more depth. The problem seemed 
to be that my kernel configuration completely eliminated SCSI. (I 
had no SCSI devices in the system and didn't need or want the bloat 
that came with it.) But when I booted the GENERIC kernel, the SCSI 
subsystem took control of ATA devices, renaming them in the 
process. This is a big violation of POLA; the change and the 
failure to boot were a big surprise.

My SCSI-less kernel worked by sheer good fortune after I changed 
/etc/fstab, because the older ATA drivers, including the atadisk 
driver (which was in my kernel configuration), are still in the 
source tree. (Their man pages seem to have been deleted, though, 
which is not good. Even if they are less used, they should remain 
documented because embedded systems developers will want to be able 
to use them.)

The GENERIC kernel, instead of just using a direct ATA driver, was 
assembling a complex, memory-intensive, and compute-intensive layer 
cake of shims -- including the ata, ahci, da, and scbus drivers, 
not to mention GEOM -- to get to the SATA disk. Since the system I 
was trying to build has only one mass storage device -- a simple 
SSD -- and is tight on RAM, I'd rather go without bloating the 
kernel, slowing the system, or exposing myself to SCSI bugs by 
simply using an ATA driver. With all due respect for the hard work 
of the people who went to the trouble to create all of those shims, 
I hope that it remains possible to do this.

Other oddities:

1) The jove editor worked strangely because, in /etc/ttys, the 
terminal type was set to "xterm" instead of "cons25" by default. (I 
do not run a GUI on servers, so of course there will not be an 
xterm.) As a result, parts of lines kept vanishing from under my 
cursor. However, even after I modified /etc/ttys, I still saw some 
screen artifacts. The maintainer of the console driver should 
probably check it to see whether its termcap entry needs changing.

2) I saw many warnings of lock order reversals under the GENERIC 
kernel, in particular in the file system code. These obviously 
should be fixed before release.

3) The installer offered to enable the TRIM command for the SSD, 
but the SSD I was using did not support it; I got a warning when I 
tried to use tunefs to turn it on.

4) The installer still used the old syntax for Internet addresses 
in /etc/rc.conf instead of the newer one (e.g. ifconfig_fxp0="inet 
192.168.1.1 netmask 255.255.255.0" instead of ipv4_addrs_fxp0="192.168.1.1/24")

For the most part, though, I was able to work around everything and 
produce a system that seems stable. Will be stress-testing it for 
the next several days to see how it holds up.

--Brett Glass



More information about the freebsd-current mailing list