This is an old revision of the document!
I'll have to get to this later. I had it about 75% typed in, when my stupid web browser crashed… – GaranceDrosehn
Brief background of FreeBSD
- FreeBSD is one of a family of “BSD” operating system projects. “BSD” refers to the kind of license that all the source code is released under.
- 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
- FreeBSD is used by some major network providers/ISPs (Yahoo, NTT/Verio, NY Internet)
- 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.
- The official “1.0 release” of FreeBSD was on November 1993
FreeBSD 4.x vs 5.x - Background
- Official Release cycle:
- 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)
- Meaning of the active “CVS branches” in the FreeBSD CVS repository
- 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.
- http://www.FreeBSD.org/releases/5.3R/announce.html – provides a short announcement for 5.3-RELEASE, information on various ways to obtain the release, and links to various pages that provide much more detail.
FreeBSD 4 vs 5 - Hardware Architectures
- Release 5 adds support for sparc64, amd64, and ia64 hardware ports.
- A port for PowerPC hardware is also close to being ready.
- The level of support for Alpha hardware has been lessened.
- Support for real 80386 systems (as opposed to 486 or Pentium) is de-emphasized. If you to run FreeBSD on real 80386 hardware architectures, then you might be better to stay with 4.x.
- Ports for ARM, MIPS and S370 hardware are “being worked on” by a a few developers (to different degrees).
FreeBSD 4 vs 5 - Kernel Level
- Much much effort on improving our SMP support, with the following goals:
- Better Performance on two CPU's
- Scales better on hardware with more (and more!) SMP processors
- A kernel configured for SMP now works on a single-processor system (although there is still some performance penalty in using an SMP kernel on a single-CPU system, at least you can use it)
- We have added “Kernel Scheduled Entities” == KSE: New option for supporting threaded applications. There are both “M:N” and “1:1” implementations.
- Support for multiple schedulers: SCHED_ULE vs SCHED_4BSD (the default is still SCHED_4BSD). The process scheduler to be used is selected in the kernel configuration. SCHED_ULE is the newer scheduler, but it still needs some work to be completely reliable.
- System now uses the devfs method of populating /dev (so on Release 5.x systems there is no need for the MAKEDEV script).
FreeBSD 4 vs 5 - Filesystems
- Support has been added for UFS2
- UFS2 supports much larger disk partitions compared to the original UFS
- UFS2 will also support Access Control Lists (ACLs), although those are not yet supported by the operating system.
- Softupdates (vs logged filesystems like extfs3)
- See info at http://www.mckusick.com/softdep/index.html
- UFS snapshots (see separate example – not included on this wiki page!)
- The /sbin/dump command includes a -L option to automatically use a snapshot when dumping a live filesystem, so your dump will be a consistent snapshot of the filesystem.
- The /sbin/newfs command creates a .snap directory (which is owned by user operator) after initializing any filesystem partition, for use by /sbin/dump -L .
- 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.
FreeBSD 4 vs 5 - Networking
- Network drivers: Out from under “the Giant Lock”, which means much better performance on SMP systems.
- 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.
- Now using Random IP ID's (picked up from OpenBSD). This makes certain kinds of network-attacks much less effective.
- NDIS Binary Compatiblity, aka “Project Evil”. FreeBSD/i386 can use binary Ethernet and WLAN network drivers from Windows, if they were written to the WindowsXP NDIS 5.1 specification.
- Ability to rename ethernet interfaces. Allows you to change any interface name to any arbitrary string of up to 15 characters. E.g.:
# 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
- http://people.freebsd.org/~andre/FreeBSD-5.3-Networking.pdf describes these network changes, along with many others.
FreeBSD 4 vs 5 - Applications in Base System
- Perl is removed from the “base” system
- …but it is almost always pulled in from the ports collection
- The installation CD's for Release 5.3 include the choice of Perl 5.6.1 vs 5.8.5
- The version of 'gcc' changes from 2.95.4 to 3.4.2. This was partially motivated by the desire to support all the new hardware architectures.
- The new version of 'gcc' required matching upgrades for binutils (now version 2.15) and 'gdb' (6.1)
- Release 5.x changes from BIND8 to BIND9 in base system.