This is just an informal comparison of FreeBSD release 4.x (such
as release 4.10), and FreeBSD release 5.3. It was written mostly for
people who are already familiar with FreeBSD 4.x, and are wondering
what there might be in release 5.3 (and later) that they might find
interesting.
Brief background of FreeBSD
Related projects are NetBSD, OpenBSD, Darwin (used by Apple as part of MacOS 10), and the new Dragonfly BSD project (which is an offshoot of FreeBSD 4.10). On a FreeBSD system, you can check the file /usr/share/misc/bsd-family-tree for more details. The latest version of that file can be seen at:
http://www.FreeBSD.org/cgi/cvsweb.cgi/src/share/misc/bsd-family-tree
Parts of FreeBSD are also picked up and used by some commercial
OS's, such as MacOS 10, IRIX, Solaris. It is also used by some embedded systems.
FreeBSD 4.x vs 5.x - Background
Release 4 vs 5 vs 6 — Big Changes happen between these branches.
Release 4.8 vs 4.9 vs 4.10 — These are smaller, well-tested landmarks on the 4.x branch.
API's and ABI's will usually be upwards compatible between these “minor” releases.
Release 5.2 vs 5.2.1 — Minor but significant fixes (to 5.2, in this example)
What CVS calls “MAIN” is what FreeBSD calls the CURRENT branch
CURRENT vs STABLE vs SECURITY and ERRATA
The RELENG_4 (4.x) branch was created in CVS around March 9, 2000 (which means “the 5.x-CURRENT series” started on that date).
On November 6, 2004, we made available 5.3-RELEASE, and that marks the official start of 5.x-STABLE series.
-
FreeBSD 4 vs 5.3 - Hardware Architectures
FreeBSD 4 vs 5.3 - Kernel Level
FreeBSD 4 vs 5.3 - Filesystems
In 5.x, softupdates also allows us to do “background fsck” at startup. If these are used, then after a system crash (for any reason), the system startup will not have to wait until the initial “fsck” finishes. That means the system can be available to users, even though “fsck” may not have completed. This is a big advantage on huge partitions that have millions of files.
Release 5.3 includes GEOM, which is a major rewrite and improvement of the code which handles the partitioning of hard disks. Among other changes, this brought in support for the types of disk labels which are standard formats on sparc64 and PPC architecture. This rewrite will also make it easier to reliably implement new features in disk support, disk partitioning and disk I/O (such as additional styles of RAID support).
FreeBSD 4 vs 5.3 - Networking
Imported pf (new packet filter facility) from OpenBSD. FreeBSD 5 now has three packet filters to choose from: IPFW, PF, IPFILTER. There have also been a number of improvements and new features for IPFW.
# ifconfig -a
bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=1a<TXCSUM,VLAN_MTU,VLAN_HWTAGGING>
inet 62.48.1.1 netmask 0xffffff00 broadcast 62.48.1.255
inet6 fe80::2e0:81ff:fe27:e0a9%bge0 prefixlen 64 scopeid 0x2
ether 00:e0:81:27:e0:a9
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
# ifconfig bge0 name office
# ifconfig -a
office: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=1a<TXCSUM,VLAN_MTU,VLAN_HWTAGGING>
inet 62.48.1.1 netmask 0xffffff00 broadcast 62.48.1.255
inet6 fe80::2e0:81ff:fe27:e0a9%office prefixlen 64 scopeid 0x2
ether 00:e0:81:27:e0:a9
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
FreeBSD 4 vs 5.3 - Applications in Base System
FreeBSD 4 vs 5.3 - Misc
The acpi driver provides support for the Intel/Microsoft/Compaq/Toshiba ACPI standard. This support includes platform hardware discovery (superseding the PnP and PCI BIOS), as well as power management (superseding APM) and other features. ACPI core support is provided by the ACPI CA reference implementation from Intel.
Some work has been done so the system can be compiled by icc or tcc in addition to gcc (icc == Intel's C compiler, tcc == C compiler from
http://www.tendra.org/ ).
Newer boot-up manager. Somewhat nicer. (this might also be in the most recent 4.x releases. I have not done a clean install of 4.x for some time now). You will probably only see this if you do a clean install of Release 5.3 (or later), or if you remember to run 'disklabel -B' after building and installing a new system.
4.x used to have a /stand directory, which really was just for the initial installation of freebsd. That is gone, but there is now a directory called /rescue. This holds statically-linked versions of several key programs statically-linked and “crunchgen”ed together. These programs can be used if some event screws up the system libraries (such as a disk error, or a failed attempt to upgrade the
OS)
My recommendation: If you are upgrading a system from 4.x to 5.3-RELEASE, you would probably be better off backing up all your important data, and doing a clean install. You can upgrade from (say) 4.10-release to 5.3-release, but you will have better results if you create brand new partitions, and install into them. Among other things, you probably want a larger root partition.
Upcoming FreeBSD 6.0
Developers really hope to see 6.0-RELEASE in less than two years, and not FOUR years! And we also expect to have 6.0-RELEASE as the start of the 6.x-STABLE series, instead of going all the way to 6.3-RELEASE before we are comfortable claiming that it is “stable”.
Epilogue
This Wiki page is just an informal outline that I (GaranceDrosehn)
had written up for a few public presentations I had done. It is not
meant to be an exhaustive comparison of release 4.10 (or later) to
release 5.3 (and later). It might not even be completely accurate.
In some sense, it is just the changes which “effected me personally”.
Other developers are welcome up to update this page, or to contact
me directly if there is anything I have grossly mis-represented.
I am also pretty sure that there are more changes than this in the
big jump to release 5.3. This is only meant to be the most noticeable
highlights. Again, other developers are welcome to add more to this.
The initial version of this Wiki web page was written on
February 14th, 2005. However, most of it comes from outlines that
GaranceDrosehn wrote in November and December 2004, and thus it
might be a bit out-of-date.
CategoryHistorical