FreeBSD/sparc64 5.3-RELEASE Release Notes

The FreeBSD Project

$FreeBSD$

Die Release Notes für FreeBSD 5.3-RELEASE enthalten eine Übersicht über alle Änderungen in FreeBSD seit der Version 5.2.1-RELEASE. Dieses Dokument enthält die Liste aller Sicherheitshinweise, die seit der letzten Version herausgegeben wurden, sowie eine Übersicht über die wichtigsten Änderungen am Kernel und an den Benutzerprogrammen. Einige kurze Anmerkungen zum Thema Aktualisierung wurden ebenfalls aufgenommen.


Inhaltsverzeichnis
1. Einführung
2. Neuerungen
2.1. Sicherheit
2.2. Änderungen im Kernel
2.2.1. Änderungen im Bootloader
2.2.2. Hardware-Unterstützung
2.2.3. Netzwerk-Protokolle
2.2.4. Festplatten und Massenspeicher
2.2.5. Dateisystem
2.2.6. Zusätzliche Software
2.3. Benutzerprogramme
2.3.1. /etc/rc.d Scripts
2.4. Zusätzliche Software
2.5. Infrastruktur für Ports und Packages
2.6. Erzeugung von Releases und Integration
2.7. Dokumentation
3. Aktualisierung einer älteren Version von FreeBSD

1. Einführung

Dieses Dokument enthält die Release Notes für FreeBSD 5.3-RELEASE auf UltraSPARC Systemen. Es beschreibt die Komponenten von FreeBSD, die in letzter Zeit hinzugefügt, geändert, oder gelöscht wurden. Außerdem erhalten Sie Hinweise für die Aktualisierung Ihres FreeBSD-Systems.

Diese Distribution von FreeBSD 5.3-RELEASE ist eine release Distribution. Sie können Sie von ftp://ftp.FreeBSD.org/ und allen seinen Mirrors erhalten. Weitere Informationen, wie Sie diese (oder andere) release Distributionen von FreeBSD erhalten können, finden Sie im Anhang ``Bezugsquellen für FreeBSD'' des FreeBSD Handbuchs.

Alle Anwender sollten vor der Installation von FreeBSD die Release-Errata lesen. Die Errata enthalten ``brandheiße'' Informationen, die erst kurz vor oder nach der Veröffentlichung bekannt wurden. Dies sind typischerweise Informationen über bekannte Probleme, Hinweise zum Thema Sicherheit und Korrekturen der Dokumentation. Die jeweils aktuelle Version der Errata zu FreeBSD 5.3-RELEASE finden Sie auf den FreeBSD Webseiten.


2. Neuerungen

In diesem Artikel finden Sie die für den Anwender offensichtlichsten Neuerungen und Änderungen in FreeBSD seit 5.2.1-RELEASE. Die hier aufgeführten Änderungen sind auf 5-STABLE beschränkt, sofern Sie nicht explizit als [MERGED] gekennzeichnet sind.

Die Einträge umfassen alle Sicherheitshinweise, die nach dem Erscheinen von 5.3-RELEASE herausgegeben wurden, neue Treiber bzw. Unterstützung für neue Hardware, neue Befehle oder Optionen, die Behebung wichtiger Fehler, und Aktualisierungen von zusätzlicher Software. Sie können ebenfalls Änderungen bei den wichtigeren Ports/Packages und bei der Erzeugung der Releases dokumentieren. Es sollte offensichtlich sein, daß die Release Notes nicht jede einzelne Änderung in FreeBSD aufführen können; dieses Dokument konzentriert sich auf Sicherheitshinweise, für den Anwender sichtbare Änderungen und die wichtigsten Verbesserungen der Infrastruktur.


2.1. Sicherheit

In mksnap_ffs(8) wurde ein Fehler beseitigt, durch den Einstellungen für das Dateisystem auf ihre Standardwerte zurückgesetzt wurden, sobald ein Snapshot erzeugt wurde. Die Auswirkungen des Fehlers hingen stark von den lokalen Gegebenheiten ab. Es war möglich, daß erweiterte ACLs deaktiviert werden oder die Nutzung von Progammen mit gesetztem setuid-Bit auf unsicheren Dateisystemen erlaubt wird. Der Fehler trat auch auf, wenn dump(8) mit der Option -L genutzt wurde, da dafür mksnap_ffs(8) genutzt wird. Bitte beachten Sie, daß mksnap_ffs(8) normalerweise nur vom Super-User und den Mitgliedern der Gruppe operator genutzt werden kann. Weitere Informationen finden Sie in FreeBSD-SA-04:01.

In den Routinen für das System V Shared Memory (speziell im Systemaufruf shmat(2)) wurde ein Fehler behoben, der dazu führen konnte, daß ein Teil des Shared Memory auf nicht genutzten Speicher des Kernel verweist. Dadurch war es theoretisch möglich, daß ein lokaler Angreifer unbefugten Zugriff auf Teile des Kernel-Speichers erhält. Mögliche Folgen sind die Ausspähung sicherheitsrelevanter Informationen, die Umgehung von Zugriffskontrollen, und die Änderung der Benutzerrechte. Weitere Informationen finden Sie in FreeBSD-SA-04:02. [MERGED]

Im Systemaufruf jail_attach(2) wurde ein Fehler beseitigt, durch den ein Prozeß mit Super-User Rechten sein Root-Verzeichnis ändern konnte, obwohl er innerhalb eines Jails lief. Dadurch konnte der Prozeß Lese- und Schreibzugriff auf alle Dateien im Ziel-Jail erhalten. Weitere Informationen finden Sie in FreeBSD-SA-04:03.

Die Anzahl der gleichzeitig gespeicherten TCP-Segmente für das Zusammensetzen von fragmentierten Pakete wurde limitiert, dadurch wird eine Abart der Denial-of-Service Angriffe mit geringen Bandbreitenbedarf auf den FreeBSD TCP-Stack verhindert. Weitere Informationen finden Sie in FreeBSD-SA-04:04. [MERGED]

In OpenSSL wurde ein Fehler bei der Verarbeitung von SSL/TLS ChangeCipherSpec Nachrichten beseitigt, der zur Derefenzierung eines NULL-Zeigers führen konnte. Durch diesen Fehler wäre es einem Angreifer möglich gewesen, auf OpenSSL basierende Applikationen zum Absturz zu bringen und so einen Denial-of-Service Angriff über ein Netzwerk auszuführen. Weitere Details finden Sie in FreeBSD-SA-04:05. [MERGED]

Durch einen Fehler bei der Behandlung bestimmter IPv6 Socket Einstellungen im Systemaufruf setsockopt(2) konnte ein lokaler Angreifer unbefugten Zugriff auf Teile des Kernel-Speichers erhalten. Dies konnte zur Ausspähung sensitiver Daten, zur Umgehung von Zugriffsbeschränkugen oder zu einem Totalabsturz des Systems führen. Weitere Informationen finden Sie in FreeBSD-SA-04:06.

Zwei Programmierfehler in CVS konnten dazu führen, daß der Server beliebige Dateien auf dem Client überschreiben kann und daß ein Client beliebige Dateien auf dem Server lesen kann, wenn ein Client über ein Netzwerk auf ein CVS-Repository zugreift. Weitere Informationen finden Sie in FreeBSD-SA-04:07.

In Heimdal wurde ein Fehler behoben, durch den unter bestimmten Umständen die Informationen zur Authentifizierung nicht ausreichend geprüft wurden, wenn diese zu einem anderen autonomen Realm gehören. Weitere Informationen finden Sie in FreeBSD-SA-04:08.

In CVS wurde ein Fehler behoben, durch den ein Client beliebige Teile des Hauptspeichers des Servers überschreiben konnte. Weitere Informationen finden Sie in FreeBSD-SA-04:10. [MERGED]

Im Systemaufruf msync(2) wurde ein Fehler beseitigt, der zur Inkonsitenz des Caches bei einer MS_INVALIDATE Operation führen konnte. Allerdings ist dadurch nicht mehr garantiert, daß alle mit MS_INVALIDATE markierten Seiten wirklich ungültig gemacht werden. Anwender, die die alte Funktionalität von MS_INVALIDATE benötigen und sich keine Sorgen wegen des Sicherheitsrisikos machen, können die Sysctl-Variable vm.old_msync auf 1 setzen, um das alte (unsichere) Verhalten zu reaktivieren. Weitere Informationen finden Sie in FreeBSD-SA-04:11. [MERGED]

Im Systemaufruf jail(2) wurde ein Fehler beseitigt, durch den nicht festgestellt wurde, daß ein Versuch der Änderung der Routing-Tabellen nicht von einem im Jail laufenden Prozeß stammt. Weitere Informationen finden Sie in FreeBSD-SA-04:12. [MERGED]

Bei der Abarbeitung verschiedener Linux-Systemaufrufe wurde ein Fehler behoben, der dazu führen konnte, daß ohne vorherige Prüfung auf Teile des Speichers zugegriffen werden konnte. Weitere Informationen finden Sie in FreeBSD-SA-04:13. [MERGED]

Eine Reihe von Programmierfehlern in CVS wurden durch die Aktualisierung auf CVS 1.11.17 behoben. Die Fehler gaben ungewollt Informationen preis, boten Möglichkeiten zu Denial-of-Service Angriffen und eventuell zur Ausführung beliebigen Codes. Weiteres lesen Sie bitte im Sicherheitshinweis FreeBSD-SA-04:14 nach.

Ein Fehler in CONS_SCRSHOT der Funktion ioctl(2) wurde behoben. Der Fehler erlaubte unberechtigten Zugriff auf Teile des Kernelspeichers. Dies hätte kritische Daten preisgeben können, Zugriffskontrollmechanismen umgehen können oder Rechte erhöhen können. Weiteres lesen Sie bitte im Sicherheitshinweis FreeBSD-SA-04:15 nach.


2.2. Änderungen im Kernel

Die Option ADAPTIVE_MUTEXES ist neu und standardmäßig aktiviert. Durch diese Option warten Threads aktiv auf eine Sperre, die ein Thread besitzt, der gerade auf einer anderen CPU läuft. Sie können diese Funktion mit der Kerneloption NO_ADAPTIVE_MUTEXES explizit abstellen.

Die neue Kerneloption ADAPTIVE_GIANT fügt Giant zu den Mutexen (Sperren) hinzu, auf die gewartet werden kann, wenn die Option ADAPTIVE_MUTEXES aktiviert ist. Die Option erhöht die Leistungsfähigkeit von Multiprozessorsystemen und ist auf i386-Systemen standardmäßig aktiviert.

Die Funktion bus_dma(9) beachtet jetzt beim Laden der Puffer die im dma Tag angegebenen Einschränkungen für Alignment und Grenzen; bus_dmamap_load() benutzt automatisch Bounce Buffer, wenn dies notwendig werden sollte. Außerdem gibt es einen Satz Sysctl-Variablen der Form hw.busdma.*, die Statistiken für bus_dma(9) enthalten.

Die Funktion contigmalloc(9) wurde mit einem neuen Algorithmus implementiert, der höhere Erfolgsaussichten besitzt. Der alte Algorithmus kann durch Setzen der Sysctl-Variablen vm.old_contigmalloc verwendet werden. Weiteres entnehmen Sie bitte der Hilfeseite contigmalloc(9).

Die Pfadregeln von devfs(5) werden jetzt korrekt auf Verzeichnisse angewandt.

Die getvfsent(3) API wurde entfernt.

Die Loader-Variable hw.pci.allow_unsupported_io_range wurde entfernt.

jail(2) unterstützt jetzt die Nutzung von Raw Sockets innerhalb eines Jails. Diese Erweiterung ist standardmäßig deaktiviert und wird über die Sysctl-Variable security.jail.allow_raw_sockets gesteuert.

kqueue(2) unterstützt jetzt den neuen Filter EVFILT_FS, mit dem Anwenderprogramme über Ereignisse auf Dateisystemebene unterrichtet werden können. Zur Zeit werden die Ereignisse ``mount'', ``unmount'', ``NFS up'' und ``NFS down'' gemeldet.

Mit KDB steht eine neue Infrastruktur für die Fehlersuche zur Verfügung. KDB besteht aus einem neuen GDB Backend, das umgeschrieben wurde, um Threading, RLE Kompression, etc. zu unterstützen; sowie aus einem Frontend, das zum einen notwendige Infrastruktur für mehrere verschiedene Debugger Backends und zum anderen die notwendigen Grundlagen für diese Backends zur Verfügung stellt. Dadurch ändern sich die folgenden Optionen:

  • KDB wird standardmäßig aktiviert, wenn eine der Zeilen options KDB, options GDB oder options DDB in der Konfigurationsdatei für den angepaßten Kernel steht.. Sowohl DDB als auch GDB legen fest, welches KDB Backend genutzt werden soll.

  • WITNESS_DDB heißt jetzt WITNESS_KDB.

  • DDB_TRACE heißt jetzt KDB_TRACE.

  • DDB_UNATTENDED heißt jetzt KDB_UNATTENDED.

  • SC_HISTORY_DDBKEY heißt jetzt SC_HISTORY_KDBKEY.

  • DDB_NOKLDSYM wurde entfernt. Das neue DDB Backend unterstützt jetzt Pre-Linker Symbol Lookups und KLD Symbol Lookups zur gleichen Zeit.

  • GDB_REMOTE_CHAT wurde entfernt. Die für diese Funktionen genutzten Erweiterungen des GDB Protokolls waren FreeBSD Eigengewächse. Außerdem gibt es für den GSB Pakete für die Ausgabe auf der Konsole.

Der KDB ist die einzige mögliche Schnittstelle für alle Routinen, die Funktionen des Debuggers nutzen wollen. Dazu gehören unter anderem die Aktivierung des Debuggers und die Verarbeitung der alternativen Break-Sequenz. Für diese Anwendungen ist das Frontend nicht mehr optional. Alle Anfragen an den Debugger werden je nach Umstand entweder vom Frontend abgearbeitet oder an das Backend weitergegeben. Zur Auswahl des aktiven Backends dient die Sysctl-Variable debug.kdb.current. Die Sysctl-Variable debug.kdb.available liefert die Liste der zur Zeit konfigurierten Backends. Ein Schreibzugriff auf die Sysctl-Variable debug.kdb.enter aktiviert den Debugger.

Die neue Sysctl-Variable debug.kdb.stop_cpus steuert, ob Inter-Prozessor-Interrupts (IPI) an andere Prozessoren ausgeliefert werden, wenn der Debugger startet. Ist die Variable gesetzt, werden andere Prozessoren vom Debugger angehalten.

Die neue Kernel-Option MAC_STATIC deaktiviert die interne Synchronisierung der MAC Infrastruktur und schützt so vor dem dynamischen Laden und Entfernen von MAC Policies.

Die Regelprüfung der Richtlinie mac_bsdextended(4) kann nun bei der ersten passenden Regel abgebrochen werden. Dies wird mit der neuen Sysctl-Variablen mac_bsdextended_firstmatch_enabled aktiviert.

Die Richtline mac_bsdextended(4) kann jetzt Fehlversuche zur Syslog-Facility AUTHPRIV protokollieren. Dies wird mit der neuen Sysctl-Variablen mac_bsdextended_logging aktiviert.

mballoc wurde durch mbuma ersetzt, eine Routine zur Allozierung von Mbufs und Clustern, die auf eine Reihe von Erweiterungen der UMA Infrastruktur aufbaut. Durch diese Änderung wird die Kernel-Option NMBCLUSTERS nicht mehr benutzt. Die maximale Anzahl an Clustern wird immer noch von maxusers begrenzt, diese Einschränkung kann aufgehoben werden, indem man die Loader-Variable kern.ipc.nmbclusters auf Null setzt.

/dev/kmem, /dev/mem und /dev/io stehen nun als Kernelmodule zur Verfügung.

In mmap(2) wurde ein Fehler beseitigt, durch mit PROT_NONE markierte Seiten unter bestimmten Umständen für den Lesezugriff freigegeben wurden. [MERGED]

Die neue Loader-Variable debug.mpsafenet wurde hinzugefügt und standardmäßig aktiviert. Die Variable bewirkt, daß der FreeBSD Netzwerkstack ohne die Sperre ``Giant'' arbeitet. Dadurch lassen sich mehr Netzwerkoperationen parallel ausführen und die Latenz sinkt. Beachten Sie, daß durch ng_tty(4), KAME IPSec oder IPX/SPX die Sperre Giant wieder zum Zeitpunkt des Systemstarts wieder aktiviert wird. Wenn Sie die Module zur Laufzeit laden, erhalten Sie eine Fehlermeldung, da die Module auf Giant angewiesen sind.

Die Kerneloption NET_WITH_GIANT wurde hinzugefügt. Sie setzt die Loader-Variable debug.mpsafenet auf 0 und aktiviert Giant für den Netzwerkstack. Die Option ist für Konfigurationen gedacht, die Giant noch benötigen.

Die neue Loader-Variable debug.mpsafevm vermeidet fast vollständig die Benutzung der Sperre Giant bei Zero-Fill Page-Faults.

Es gibt zusätzlich zu den bekannten Sysctl-Variablen pro Gerät jetzt auch Extra-Zweige pro Geräteklasse. Damit ändern sich die existierenden Namen wie dev.foo0.bar in dev.foo.0.bar, die neuen Namen haben dann das Format dev.foo.bar.

Ist die neue Sysctl-Variable kern.always_console_output gesetzt, werden Meldungen des Kernels immer auf der Console ausgegeben, auch wenn TIOCCONS gesetzt ist.

Die neue Sysctl-Variable kern.sched.name enthält den Namen des zur Zeit genutzten Schedulers. Der Name der Sysctl-Variablen kern.quantum wurde zur Vereinheitlichung in kern.sched.quantum geändert.

Die Bus-Ressourcen und das Power Management von pci(4) wurden aktualisiert.

Anmerkung: Obwohl das Power State Management auf dem pci(4) Bus aktiviert ist, kann es auf einigen Systemen zu Problemen kommen. Um das Power State Management abzuschalten, muß hw.pci.do_powerstate auf 0 gesetzt werden.

Der ULE-Scheduler steht nun als zusätzlicher Scheduler zur Verfügung. Der normale 4BSD-Schelduler ist der vorgegebene Scheduler im GENERIC-Kernel. Für den normalen Anwender bedeutet das in vielen Fällen ein besseres Verhalten bei interaktiver Arbeit: Interaktive Anwendungen ``springen'' und ``ruckeln'' weniger, wenn die Maschine unter sehr hoher Last betrieben wird. Dies hilft zwar nicht, wenn das Disk Subsystem überlastet ist, aber es hilft deutlich, wenn die CPU überlastet ist. Auf SMP Systemen unterstützt ULE separate Warteschlangen für jede CPU mit Bevorzugung der jeweligen CPU, erlaubt die Bindung eines Prozesses an eine CPU und verbesserten Support für Hyperthreading sowie eine Grundlage für weitergehende Optimierungen. Mit fortschreitender Verfeinerung der Locks im Kernel wird der Scheduler in der Lage sein, die parallel zur Verfügung stehenden Ressourcen effizienter zu nutzen.

Der lineare Suchalgorithmus von vm_map_findspace(9) wurde durch einen O(log n) Algorithmus ersetzt. Für Anwendungen, die häufig die Funktion mmap(2) benutzen (mehrere tausend Regionen) reduziert dies drastisch die durch vm_map_findspace(9) verursachten Kosten.

Die Loader-Variablen debug.witness_* wurden in debug.witness.* umbenannt.

Der dynamische und statische Linker von FreeBSD unterstützt nun die GCC-Funktion Thread Local Storage (TLS). Damit kann der Modifikator __thread zur Deklaration globaler und statischer Variablen hinzugefügt werden. Eine so modifizierte Variable ist spezifisch für einen Thread. Ändert sich der Wert einer solchen Variablen in einem Thread, wird der Wert in den anderen Threads nicht geändert.

Die Routinen, mit der der Kernel Datei-Handles alloziert, wurden aktualisiert. Die neuen Routinen basieren auf ähnlichen Routinen in OpenBSD.

Auf FreeBSD/sparc64 Systemen ist time_t jetzt ein 64-Bit Wert und kein 32-Bit Wert mehr.

Anmerkung: Diese Änderung ist nicht rückwärtskompatibel und alle Programme, die den 32-Bit time_t oder Systemfunktionen zur Verarbeitung von time_t Werten nutzen, müssen neu übersetzt werden. Weitere Informationen und Hinweise für die Aktualisierung finden Sie in /usr/src/UPDATING.64BTT.




2.2.1. Änderungen im Bootloader

Es gibt eine zusätzliche Version von boot0, die über eine serielle Konsole verwendet werden kann. Um diese Version zu verwenden, muß boot0cfg(8) mit den Parametern -b/boot/boot0sio aufgerufen werden.


2.2.2. Hardware-Unterstützung

Der neue Treiber acpi_toshiba(4) unterstützt das Toshiba Hardware Control Interface, mit dem die Monitorausgänge von Toshiba Laptops gesteuert werden können.

Der neue Treiber acpi_video(4) unterstützt die ACPI Video Erweiterungen zum Umschalten der Monitorausgänge und der Steuerung der Hintergrundbeleuchtung.

nmdm(4) wurde neu geschrieben, um die Zuverlässigkeit zu erhöhen.

Der von NetBSD importierte RAIDframe Treiber raid(4) wurde entfernt, da er zur Zeit nicht funktioniert und nur mit sehr großen Aufwand an die geom(4) API in 5-CURRENT angepaßt werden könnte.

Der Treiber pcic(4) wurde aus der Kernelkonfiguration GENERIC entfernt, da der Treiber nicht länger gepflegt wird. Der Treiber war schon längere Zeit auskommentiert.

sab(4) unterstützt jetzt die Kernel-Option BREAK_TO_DEBUGGER.

Der neue Treiber ubser(4) unterstützt die Server für serielle Konsolen von BWCT.

Der neue Treiber ucycom(4) unterstützt die Familie der Cypress CY7C637xx und CY7C640/1xx USB zu RS232 Bridges. Zur Zeit arbeitet der Treiber nur mit dem DeLorme Earthmate USB GPS Receiver zusammen. Der Treiber ist unvollständig, es fehlen Flußkontrolle und Ausgaben.

Die Infrastruktur für die Gerätetreiber und viele Gerätetreiber wurden aktualisiert. Zu den Änderungen gehören unter anderem: Viele weitere Treiber nutzen jetzt automatisch zugewiesene Major Number statt der früher verwendeten statisch zugewiesenen Major Numbers. Interne Funktionen wurden erweitert, um das Cloning von Pseudo-Geräten unterstützen zu können. Die API für die Gerätetreiber wurde geändert, unter anderem wurde in struct cdevsw ein neues Feld d_version aufgenommen. Bitte beachten Sie, daß Gerätetreiber anderer Hersteller nach dieser Änderung neu übersetzt werden müssen.


2.2.2.1. Multimedia

Der Treiber meteor (video capture) wurde entfernt, weil er fehlerhaft ist und sich niemand fand, der die Fehler beseitigen wollte.

Die Routinen für Direct Rendering Manager (DRM) wurden aus dem CVS-Tree des DRI Project aktualisiert und sind jetzt auf dem Stand vom 26. Mai 2004. Die neue Version kennt zusätzliche PCI IDs und enthält ein neues Paket für die Radeon.

Die Treiber für verschiedene Soundkarten wurden neu organisiert. Der allgemeine Soundtreiber heißt nun device sound, die gerätespezifischen Treiber heißen jetzt device snd_*. Der midi-Treiber für serielle Schnittstellen und verscheidene Soundkarten wurde entfernt. Weiteres entnehmen Sie bitte den Hilfeseiten sound(4), snd_ad1816(4), snd_als4000(4), snd_cmi(4), snd_cs4281(4), snd_als4000(4), snd_cmi(4), snd_cs4281(4), snd_csa(4), snd_ds1(4), snd_emu10k1(4), snd_es137x(4), snd_gusc(4), snd_maestro3(4), snd_sbc(4), snd_solo(4) und snd_uaudio(4).

Der Treiber sound(4) (früher pcm(4)) liest jetzt beim Start die Datei /boot/device.hints aus. Damit ist es möglich, Voreinstellungen für die Lautstärke zu definieren. Beachten Sie, daß der in /boot/device.hints benutzte Treibername immer noch pcm ist. Weiteres entnehmen Sie bitte der Hilfeseite sound(4).


2.2.2.2. Netzwerke und Netzwerkkarten

Der neue Treiber arl(4) unterstützt Aironet Arlan 655 WLAN-Karten. [MERGED]

Der Treiber dc(4) untersützt jetzt sparc64 Davicom Karten, die ihre MAC-Adresse in der Open Firmware speichern.

Beim Treiber em(4) gibt es keine Aussetzer mehr, wenn die Einstellungen geändert werden. [MERGED].

Der neue Treiber fwip(4) unterstützt IP over FireWire. Zur Zeit ist die Nummer des Broadcast Channels noch fest verdrahtet und das Multicast Channel Allocation Protocol (MCAP) wird auch nicht unterstützt. Auf lange Sicht soll der neue Treiber alle Anforderungen aus RFC 2734 und RFC 3146 erfüllen und fwe(4) ersetzen.

fxp(4) nutzt jetzt die gerätespezifischen Sysctl-Variablen unter dev.fxp0. Diese Variablen können für jedes Gerät einzeln gesetzt werden.

Beim Treiber fxp(4) kann man jetzt einstellen, ob erweiterte Ethernet Rahmen empfangen werden sollen oder nicht (VLAN_MTU). Die Einstellung kann vom Anwender mit ifconfig(8) und den Optionen vlanmtu bzw. -vlanmtu geändert werden.

Der Treiber hme(4) unterstützt jetzt überlange Ethernet-Frames korrekt und kann daher auch für ein vlan(4) eingesetzt werden, in dem eine Ethernet MTU maximaler Größe genutzt wird.

Mit dem Treiber können jetzt TCP/UDP Transmit/Receive-Prüfsummen von der Karte berechnet werden (checksum offload). Allerdings berücksichtigt der Treiber nicht, daß eine UDP-Prüfsumme 0x0 sein kann, daher ist die UDP Transmit-Prüfsummenberechnung in der Voreinstellung deaktiviert. Die Prüfsummenberechnung kann mit der Option link0 des Befehls ifconfig(8) wieder aktiviert werden.

Der neue Treiber ixgb(4) unterstützt Intel PRO/10GBE 10 Gigabit Ethernet Karten. [MERGED]

Im Treiber nge(4) wurde ein Fehler beseitigt, durch den die Unterstützung für VLAN nicht richtig funktionierte. [MERGED]

Im Treiber rl(4) wurden mehrere Fehler bei der Unterstützung des polling(4) Modus beseitigt. [MERGED]

Im Treiber sk(4) wurden diverse Fehler im Bereich Multicast und Promiscuous Mode behoben.

Der Treiber ste(4) unterstützt jetzt den polling(4) Modus. [MERGED]

Der neue Treiber udav(4) unterstützt USB Ethernetkarten mit Davicom DM9601 Chipsatz.

Der neue Treiber vge(4) unterstützt den VIA Networking Technologies VT6122 Gigabit Ethernet Chip und integrierte 10/100/1000 Kupfer-PHY.

Der Treiber vr(4) unterstützt jetzt den polling(4) Modus. [MERGED]

Im Treiber xl(4) wurde die Unterstützung für die Berechnung der TX-Prüfsummen durch die Hardware deaktiviert, da diese Erweiterung nicht richtig funktioniert und die Übertragung verlangsamt. [MERGED]

Der polling(4) Modus kann jetzt für jedes Interface separat aktiviert werden. Diese Erweiterung wird zur Zeit von den Treibern dc(4), fxp(4), em(4), ixgb(4), nge(4), re(4), rl(4), sis(4), ste(4), vge(4) und vr(4) unterstützt. Mit Ausnahme von ixgb(4) wird die Erweiterung mit ifconfig(8) gesteuert. [MERGED]


2.2.3. Netzwerk-Protokolle

Der Treiber gre(4) Tunnel unterstützt jetzt die Version 2 des WCCP Protokolls.

ipfw(4) wurde um die Option versrcreach erweitert. Diese Option prüft, ob in der Routing-Tabelle eine Route zur Absenderadresse eines Paketes existiert. Diese Option ist für Router gedacht, die via BGP die gesamten Routinginformationen des Internets in ihrer Routingtabelle haben und jetzt alle Pakete mit gefälschten oder nicht routbaren Absenderadressen ablehnen können. Die Regel

deny ip from any to any not versrcreach

entspricht in Cisco IOS Syntax der folgenden Regel:

ip verify unicast source reachable-via any

Die neue Option antispoof von ipfw(4) prüft, ob die Quelladresse eingehender Pakete aus einem direkt angeschlossenen Netz kommt. Ist das der Fall, wird die Schnittstelle, über die das Paket herein gekommen ist, mit der Schnittstelle des direkt sngeschlossenen Netzes verglichen. Sind die Schnittstellen verschieden, passt die Regel nicht auf das Paket. Beispiel:

deny ip from any to any not antispoof in

Die neue Option jail von ipfw(4) verknüpft eine Regel mit der Prison-ID eines Jails:

count ip from any to any jail 2

Zur Zeit gilt diese Regel nur für TCP- und UDP-Pakete.

ipfw(4) unterstützt jetzt Lookup-Tabellen. Diese Erweiterung ist sehr nützlich, wenn große Mengen Adressen verarbeitet werden müssen, die sich nicht zusammenfassen lassen. [MERGED]

Um die ipfw(4) Regel forward zu benutzen muß der Kernel mit der Option IPFIREWALL_FORWARD übersetzt werden.

Die neue Sysctl-Variable net.inet.ip.process_options erlaubt es, die Verarbeitung von IP Optionen zu steuern. Wenn diese Variable auf 0 steht, werden alle IP Optionen ignoriert und unverändert weitergereicht. Steht die Variable auf 1, werden alle IP Optionen verarbeitet; dies ist die Standardeinstellung. Steht die Variable auf 2, werden alle Pakete, bei denen IP Optionen gesetzt sind, mit einer "ICMP filter prohibited" Nachricht abgelehnt.

In der IPsec Implementierung des KAME Projektes wurden diverse Fehler beseitigt. Diese Fehler führten dazu, daß Objekte aus dem Speicher entfernt wurden, bevor alle Referenzen auf diese Objekte gelöscht wurden. Dadurch konnte es nach dem Aufräumen der Security Policy Database (SPD) zu Problemen bis zum Totalabsturz des Systems kommen.

Wenn natd(8) mit der neuen Option globalports aufgerufen wird, unterstützt es die Nutzung mit mehreren Instanzen. Damit wird es möglich, einen natd(8) an mehrere Netzwerk-Interfaces anzubinden und die Last über diese Interfaces zu verteilen.

Die neue Netgraph Node ng_atmllc(4) unterstützt ATM LLC Encapsulation nach RFC 1483.

Die neue Netgraph Node ng_hub(4) unterstützt eine einfache Verteilung von Paketen, ähnlich einem Ethernet Hub. [MERGED]

Die Netgraph node ng_rfc1490(4) unterstützt jetzt auch die von Cisco verwendete Methode zur Encapsulation, da diese auf Frame Relay Verbindungen oft in Zusammenhang mit RFC 1490 eingesetzt wird.

Die neue Netgrpah Node ng_sppp(4) stellt eine Verbindung zwischen dem netgraph(4) System und dem sppp(4) Treiber für synchrone Leitungen bereit.

Eine Netgraph Methode stellt einen Teil der Funktionalität wieder her, die bei den ng_tee(4) Nodes beim Wechsel von 4.X verloren ging.

Die neue Netgraph Node ng_vlan(4) unterstützt VLAN Tagging nach IEEE 802.1Q. [MERGED]

Die Option PFIL_HOOKS ist jetzt immer im Kernel aktiviert, daher wurden die entsprechenden Kerneloptionen entfernt. Alle Paketfilter von FreeBSD benutzen nun das PFIL_HOOKS-System.

Der Routing Socket unterstützt jetzt Benachrichtigungen, falls sich der Status einer Ethernet-Verbindung ändert.

Die von ppp(8) genutzten Routinen für Link Quality Monitoring (LQM) wurden vollständig neu geschrieben. Das in RFC 1989 beschriebene LQM erlaubt PPP, die Qualität der Verbindung zu überwachen.

Das Routinen zum Cloning von virtuellen Interfaces und die Match-Funktion wurden geändert, um stf(4) Interfaces mit Namen wie stf0, stf oder 6to4 erzeugen zu können. Dadurch geht die Rückwärtskompatibilität verloren. Zum Beispiel legt ifconfig stf jetzt ein Interface mit dem Namen stf an und nicht mehr stf0; außerdem gibt es nicht mehr stf0 auf der Standardausgabe aus.

Die folgenden TCP-Erweiterungen sind jetzt standardmäßig aktiviert: RFC 3042 (``Limited Retransmit''), RFC 3390 (``increased initial congestion window sizes'') und die Begrenzung des Ergebnisses bei der Berechnung der TCP Bandbreitenverzögerung. Für diese Erweiterungen gibt es die Sysctl-Variablen net.inet.tcp.rfc3042, net.inet.tcp.rfc3390 und net.inet.tcp.inflight.enable. Weiteres entnehmen Sie der Hilfeseite tcp(4).

Der FreeBSD TCP-Stack unterstützt jetzt eine Mindestgröße der MSS (kann über die Sysctl-Variable net.inet.tcp.minmss eingestellt werden) und die Begrenzung der Anzahl der Verbindungen, die viele kleine TCP Segmente innerhalb kurzer Zeit senden (einstellbar über die Sysctl-Variable net.inet.tcp.minmssoverload. Über dieses Limit hinausgehende Verbindungen können verworfen und mit einem TCP Reset Paket beantwortet werden. Diese Erweiterung schützt vor bestimmten Arten von Angriffen, die Systemressourcen aufbrauchen wollen.

Der TCP-Stack unterstützt jetzt teilweise (nur bei der Ausgabe) RFC 2385 (TCP-MD5). Diese Erweiterung wird mit den Kernel-Optionen TCP_SIGNATURE und FAST_IPSEC aktiviert und authentifiziert TCP-Verbindungen. setkey(8) unterstützt jetzt auch die Klasse TCP-MD5 für Security Associations.

Die Verarbeitung von Reset-Packeten für TCP-Verbindungen wurde verbessert, um Angriffe mit solchen Paketen so schwer wie möglich zu machen, ohne die Kompatibilität mit möglichst vielen TCP Implementierungen zu verlieren.

Die Implementierung von RFC 1948 wurde verbessert. Die Zeitkomponente einer Initial Sequence Number (ISN) wird jetzt zwischen zwei Zeitscheiben um einen zufälligen positiven Wert erhöht. Damit ist sichergestellt, daß die ISN immer erhöht wird, egal wie schnell der Port wiederverwendet wird.

Für die Auswahl eines nicht-privilegierten Ports wird jetzt eine von OpenBSD stammende Routine verwendet. Diese Routine ist standardmäßig aktiviert und kann über die Sysctl-Variable net.inet.ip.portrange.randomized abgeschaltet werden.

TCP Selective Acknowledgements (SACK) nach RFC 2018 wird jetzt unterstützt. Durch diese Technik erhöht sich der Datendurchsatz für TCP-Verbindungen mit hohen Paketverlusten. SACK kann mit der Sysctl-Variablen net.inet.tcp.sack.enable aktiviert werden.


2.2.4. Festplatten und Massenspeicher

Der Treiber ata(4) unterstützt jetzt cardbus(4) ATA/SATA Controller.

Im Treiber ata(4) wurden diverse Fehler korrigiert. Die Erkennung von Master und Slave sollte jetzt besser funktionieren, und einige der Probleme mit Timeouts sollten auch behoben sein.

Der Treiber ata(4) unterstützt jetzt den Promise Command Sequencer, der auf allen modernen Controllern von Promise (PDC203** PDC206**) vorhanden ist.

Anmerkung: Damit steht auch eingeschränkter Support für den Promise SX4/SX4000 als ``normaler'' Promise ATA Controller zur Verfügung; ATA RAID's werden zwar unterstützt, aber nur die Modi RAID0, RAID1 und RAID0+1.

Die für CAM SCSI Treiber cam(4) gedachte Kernel-Option DA_OLD_QUIRKS wurde entfernt. [MERGED]

In geom(4) wurde ein Fehler korrigiert, der in einigen Fällen zu I/O-Hängern führen konnte.

Die neue geom(4)-Klasse GEOM_CONCAT erlaubt es, mehrere Platten hintereinanderzuhängen, um eine größere Platte zu erhalten.

Die neue geom(4)-Klasse GEOM_NOP ist für diverse Testzwecke vorgesehen.

Die neue geom(4)-Klasse GEOM_RAID3 implementiert RAID 3 Funktionen. Das dazu passende Benutzerprogramm graid3(8) wurde hinzugefügt.

Die neue geom(4)-Klasse GEOM_STRIPE implementiert RAID 0 Funktionalität mit den Modi ``FAST'' und ``ECONOMIC''. Wenn im Modus ``FAST'' kleine Stripes benutzt werden, wird an jede Platte nur eine I/O-Anforderung gesendet. Dieser Modus ist für kleine Stripe-Größen ungefähr zehnmal so schnell wie ``ECONOMIC'' und andere RAID 0 Implementierungen. Dieser Modus wird standardmäßig genutzt. Da dieser Modus aber relativ viel Speicher verbraucht, kann auf den ``ECONOMIC'' Modus umgeschaltet werden, bei dem mehrere Anfragen versendet werden. Dazu muß die Loader-Variable kern.geom.stripe.fast auf 0 gesetzt werden. Mit der Loader-Variable kern.geom.stripe.maxmem wird festgelegt, wieviel Speicher im ``FAST'' Modus genutzt werden darf.

GEOM Gate besteht aus der neuen geom(4)-Klasse GEOM_GATE und mehreren Benutzerprogrammen für GEOM Gate ( ggatel(8), ggatec(8), and ggated(8)). Damit ist es möglich, bestehende Geräte über ein Netzwerk zu exportieren, auch wenn sie geom(4) nicht unterstützen.

Die neue geom(4)-Klasse GEOM_LABEL findet Partitionstabellen oder Volume Labels auf verschiedenen Dateisystemen wie z.B. UFS, MSDOSFS (FAT12, FAT16, FAT32) und ISO9660.

Im Standardkernel GENERIC ist jetzt die neue geom(4)-Klasse GEOM_GPT aktiv, die GUID Partition Table (GPT) Partitionen unterstützt und eine große Anzahl von Partitionen auf einer einzelnen Platte erlaubt.

Die neue geom(4)-Klasse GEOM_MIRROR implemetiert RAID 1. Diese Klasse wird mit dem Benutzerprogramm gmirror(8) gesteuert.

Die neue geom(4)-Klasse GEOM_UZIP implemtiert schreibgeschützte komprimierte Laufwerke. Zur Zeit beherrscht die Klasse das Cloop V2.0 Disk Compression Format.

Die neue geom(4)-Klasse GEOM_VINUM erlaubt die Zusammenarbeit zwischen vinum(4) und geom(4).

Der Treiber ips(4) unterstützt jetzt die aktuellen Adaptec SCSI Hostadapter der ServeRAID Familie.

Im Treiber isp(4) wurde ein Fehler beseitigt, durch den die SBus-Version dieser Karten nicht richtig funktionierten.

Der Treiber umass(4) unterstützt jetzt auch die bisher fehlenden ATAPI MMC Befehle und verarbeitet Timeouts richtig. [MERGED]

Der Volume-Manager vinum(4) nutzt jetzt geom(4), die Infrastruktur für die Übersetzung von Festplattenzugriffen in 5.x. Weiterhin steht jetzt das Benutzerprogramm gvinum zur Verfügung.

Der Treiber esp(4) wurde aus NetBSD importiert, um die SBUS SCSI Karten in Sun Ultra 1e und 2 unterstützen zu können.

Software RAIDs von LSI werden jetzt unterstützt.


2.2.5. Dateisystem

Die Routinen für EXT2FS Dateisystem unterstützen jetzt teilweise große (> 4GB) Dateien. Die Einschränkungen sind: Die Routinen werden keine großen Dateien anlegen, wenn das Dateisystem nicht auf EXT2_DYN_REV aktualisiert wurde oder im Superblock nicht die Option EXT2_FEATURE_RO_COMPAT_LARGE_FILE gesetzt wurde.

Im NFSv4 Client wurde ein Fehler beseitigt, der zu einem Totalabsturz des Systems führen konnte, wenn ein Server angesprochen wurde, der lediglich NFSv3/NFSv2 unterstützt.

Die neue Kernel Option MSDOSFS_LARGE dient zur Unterstützung von FAT32 Dateisystemen, die größer sind als 128GB. Diese Option ist standardmäßig inaktiv. Bitte beachten Sie, daß die Option 32 Byte Kernel-Speicher für jede einzelne Datei im Dateisystem verbraucht. Sie sollten diese Option nur in Ausnahmefällen nutzen, z.B. für den Nur-Lese-Zugriff auf Dateisysteme mit weniger als einer Million Dateien. Außerdem ist es nicht möglich, diese Dateisysteme über NFS zu exportieren.

Der SMBFS Client unterstützt jetzt SMB Request Signing. Dadurch werden "man-in-the-middle" Angriffe verhindert; weiterhin ist diese Erweiterung Voraussetzung für die Nutzung von Windows 2003 Servern in der Standardkonfiguration. Da die digitale Signatur jeder SMB-Nachricht viele Ressourcen verbraucht, wird diese Erweiterung nur aktiviert, wenn es der Server verlangt. Langfristig wird es eine entsprechende Option für mount_smbfs(8) geben.


2.2.6. Zusätzliche Software

Das ALTQ framework wurde aus dem KAME Snapshot vom 7. Juni 2004 importiert. Dadurch ist die ABI für struct ifnet nicht mehr kompatibel; daher müssen alle Treiber für Netzwerkkarten neu übersetzt werden. Die Treiber für die folgenden Netzwerkkarten wurden angepaßt, damit sie das ALTQ framework unterstützen: bfe(4), em(4), fxp(4), em(4), lnc(4), tun(4), de(4), rl(4), sis(4) und xl(4).

IPFilter wurde von Version 3.4.31 auf Version 3.4.35 aktualisiert. [MERGED]


2.3. Benutzerprogramme

acpidump(8) versteht nun SSDT-Tabellen. Die Ausgabe einer DSDT enthält nun auch die den Inhalt von SSDT-Tabellen.

Wird bsdlabel(8) mit der neuen Option -f aufgerufen, bearbeitet es Dateien und nicht Partitionen auf der Festplatte.

FreeBSD nutzt jetzt bsdtar(1) standardmäßig als tar(1) Programm. /usr/bin/tar ist ein symbolischer Link, der standardmäßig auf /usr/bin/bsdtar verweist. Wenn Sie standardmäßig /usr/bin/gtar nutzen wollen, müssen Sie die Make-Variable WITH_GTAR setzen.

Die neuen Programme bthidcontrol und bthidd unterstützen Bluetooth HID (Human Interface Devices).

col(1), colcrt(1), colrm(1), column(1), fmt(1), join(1), rev(1), tr(1) und ul(1) arbeitn nun mit Multibyte-Zeichen.

conscontrol(8) unterstützt jetzt die beiden neuen Befehle set und unset, die die Console setzen und löschen. unset sorgt dafür, daß Ausgaben des Systems (z.B. aus printf(9)) immer auf die echte Console gehen. Das Programm ist eine Schnittstelle für den TTY ioctl TIOCCONS.

Wird cron(8) mit der neuen Option -j aufgerufen, verzögert das Programm die Ausführung von Cron-Jobs für normale Benutzer für eine kurze, zufällige Zeit. Die ebenfalls neue Option stellt die gleiche Funktionalität zur Verfügung, allerdings für Cron-Jobs des Super-Users. Sinn und Zweck dieser Erweiterung ist, Lastspitzen zu vermeiden, wenn viele Cron-Jobs an einem bestimmten Zeitpunkt starten sollen. [MERGED]

cut(1) -c, -d und -f funktionieren jetzt korrekt, wenn ein Zeichen mehr als ein Byte belegt.

Wird cvs(1) mit der neuen Option iso8601 aufgerufen, gibt es Datum im ISO 8601 Format aus.

Wird daemon(8) mit der neuen Option -p aufgerufen, schreibt es seine PID in eine Datei.

Die neue Option fillchar des Werkzeugs dd(1) erlaubt die angabe eines alternativen Füllzeichens für den Konvertierungsmodus oder bei Fehlern wenn die Option noerror zusammen mit der Option sync benutzt wird.

Wird df(1) mit der neuen Option -c aufgerufen, zeigt es die Summe der Statistiken für die einzelnen Dateisysteme an.

Ein Fehler in df(1) wurde behoben. Der Fehler gab falsche Informationen aus, wenn die Option -t mit einem Mountpoint verwendet wurde, auf den der Benutzer nicht zugreifen durfte.

Das Programm doscmd wurde aus dem FreeBSD Basissystem entfernt. Es steht jetzt in der FreeBSD Ports Collection unter dem Namen emulators/doscmd zur Verfügung.

Bei dump(8) und restore(8) kann mit der neuen Option -P ein Backup-Medium außer Dateien und Bandlaufwerken angegeben werden. Das Argument von -P wird an sh(1) übergeben, damit ist im Environment entweder $DUMP_VOLUME beziehungsweise $RESTORE_VOLUME definiert. Weitere Informationen finden Sie in dump(8) und restore(8).

Das neue Programm eeprom(8) kann Systeminformation in einem EEPROM oder NVRAM anzeigen oder verändern. Zur Zeit werden nur Systeme mit Open Firmware unterstützt.

Mit fgetwln(3) steht jetzt eine Variante der Funktion fgetln(3) zur Verfügung, die auch Zeichen unterstützt, die aus mehr als einem Byte bestehen.

Wird find(1) mit der neuen Optionen -acl aufgerufen, sucht nach Dateien mit acl(3).

Wird find(1) mit der neuen Option -depth n aufgerufen, sucht es alle Dateien, die n Verzeichnisebenen unterhalb des Startpunkts der Suche liegen. [MERGED]

Im Active-Mode öffnet ftpd(8) nun den Socket für den Datentransfer mit der effektiven UID des Benutzers anstelle der UID root. Damit können Anonymous-FTP Sitzungen mit einer ipfw(8)-Regel, die uid benutzt, erfasst werden.

Die neuen Funktionen ftw(3) and nftw(3) können zum Durchsuchen eines Verzeichnisbaums genutzt werden.

Mit dem neuen Programm geom(8) können geom(4)-Klassen vom Anwender konfiguriert werden.

gpt(8) ein Werkzeug zur Verwaltung von GUID Partitionstabellen, besitzt nun das Kommando remove. Das Kommando add hat nun die Option -i, mit der ein Anwender die Partitionsnummer einer neuen Partition angeben kann.

Wird id(1) mit der neuen Option -M aufgerufen, zeigt es das MAC Label des aktuellen Prozesses an.

Wird ifconfig(8) mit der neuen Option name aufgerufen, können Netzwerk-Interfaces ohne Neustart des Systems umbenannt werden.

ifconfig(8) zeigt jetzt an, ob ein Interface im polling(4) Modus betrieben wird. [MERGED]

Einige Netzwerkkarten sind in der Lage, übergroße Ethernet-Rahmen (mit einem Inhalt von mehr als 1500 Byte) anzunehmen. Diese Option kann jetzt mit den neuen ifconfig(8) Optionen vlanmtu und -vlanmtu aktiviert und deaktiviert werden.

Einige Netzwerkkarten können VLAN Tags selbstständig verarbeiten. Diese Erweiterung kann jetzt mit den neuen ifconfig(8) Optionen vlanhwtag und -vlanhwtag aktiviert und deaktiviert werden.

Bei indent(1) kann mit der neuen Option -ldi die Einrückung lokaler Variablen eingestellt werden. Das Programm wurde auch an diversen anderen Stellen erweitert.

indent(1) unterstützt jetzt die neuen Optionen -fbs und -ut.

Wird ip6fw(8) mit der neuen Option -n aufgerufen, werden unter keinen Umständen Änderungen an den im Kernel aktiven Regeln vorgenommen.

Wird ipcs(1) mit der neuen Option -u aufgerufen, zeigt es alle IPC-Ressourcen an, die dem angegebenen Benutzer gehören.

Wird ipfw(8) mit der neuen Option -b aufgerufen, zeigt das Kommando nur noch die Aktion und den Kommentar der Regel, die eigentliche Regel wird nicht mehr angezeigt.

Wird jail(8) mit der neuen Option -U aufgerufen, kann man einen Befehl mit der Kernnung eines Benutzers ausführen, der nur innerhalb des jail(2) existiert.

Die neue Option -l von jail(8) bereinigt die Umgebung eines Jails. Analog zur Option -l von su(1) werden alle Umgebungsvariablen außer HOME, SHELL, PATH, TERM und USER entfernt, bevor ein Programm im Jail gestartet wird.

Das neue Debugging-Werkzeug kgdb(1) ist gegen libgdb gebunden und kann mit Kernelthreads, Kernelmodulen und kvm(3) umgehen.

Wird killall(1) mit der neuen Option -e aufgerufen, wird der bei -u angegebene auf die aktive (effective) und nicht die reale (real) User-ID angewandt. [MERGED]

Die Bibliothek libalias(3) unterstützt jetzt über eine neue API mehrere Instanzen innerhalb eines Prozesses. Die existierende API wurde mit den Funktionen der neuen API neu implementiert, um die Kompatibilität mit älteren Anwendungen sicherzustellen.

Die neue Bibliothek libarchive erlaubt die Verarbeitung von komprimierten und unkomprimierten Archiven. Weitere Informationen finden Sie in libarchive(3).

libdisk nutzt zur Adressierung von Festplatten jetzt d_addr_t, damit sysinstall(8) Festplatten und Dateisysteme mit einer Größe von mehr als einem TB korrekt behandelt.

Die Umgebungsvariable LIBPTHREAD_SYSTEM_SCOPE erzwingt unter libpthread den 1:1 Modus (mit System-Scope-Threads). Der 1:1 Modus wird ebenfalls erzwungen, wenn libpthread mit der Option -DSYSTEM_SCOPE_ONLY übersetzt wird. Diese Option ist die Voreinstellung auf Systemen, die den M:N Modus noch nicht beherrschen. Weiterhin erzwingt die Umgebungsvariable LIBPTHREAD_PROCESS_SCOPE den M:N Modus (mit Process-Scope-Threads). Beispiele:

% LIBPTHREAD_SYSTEM_SCOPE=yes threaded_app

Startet die Anwendung threaded_app mit System-Scope-Threads.

% LIBPTHREAD_PROCESS_SCOPE=yes threaded_app

Startet die Anwendung threaded_app mit Process-Scope-Threads.

Der Fehler in der Option -d von look(1) wurde behoben. look(1) funktioniert jetzt auch mit Lokalisierungen, die Multibyte-Zeichen verwenden.

ls(1) behandelt Dateinamen jetzt gemäß der Einstellung in LC_CTYPE korrekt als Folgen aus Zeichen mit mehr als einem Byte, wenn es bestimmt, welche Zeichen druckbar sind.

make(1) unterstützt jetzt auch die Anweisung .warning.

make(1) versteht nun das POSIX-kompatible Präfix + für auszuführende Kommandos. Mit diesem Präfix gekennzeichnete Kommandos werden trotz des Schalters -n ausgeführt. Diese Funktion ist nützlich, wenn weitere Makefiles ausgeführt werden.

make(1) fügt nun, wie vom POSIX-Standard gefordert, Variablenzuweisungen auf der Kommandozeile in die Variable MAKEFLAGS ein. Dies führt dazu, daß solche Variablen an weitere Aufrufe von make(1) weiter gereicht werden (es sei denn, MAKEFLAGS wird explizit überschrieben). Die Variablen können damit nur noch auf der Kommandozeile eines weiteren Aufrufs von make(1) überschrieben werden.

Die im C99 Standard definierten Funktionen nearbyint(3) und nearbyintf(3) stehen jetzt zur Verfügung.

Die neue C99-Datei tgmath.h stellt vom Typ unabhängige Makros für die Funktionen vom Type float, double und long double aus math.h und complex.h zur Verfügung.

Die GNU-Erweiterungen von mbsnrtowcs(3) und wcsnrtombs(3) wurden implemtiert.

newsyslog(8) erlaubt dem Anwender jetzt, in newsyslog.conf eine Option zur Fehlersuche zu setzen.

newsyslog(8) geht bei der Rotation von Dateien jetzt anders vor: Zuerst werden alle Dateien rotiert, die rotiert werden müssen. Danach wird jedem Prozeß, dem ein Signal gesendet werden muß, genau ein Signal gesendet. Als letzter Schritt werden alle Dateien komprimiert, die komprimiert werden müssen.

Die neue Funktion nextwctype(3) erlaubt es, über alle Zeichen innerhalb einer bestimmten Klasse zu iterieren.

Es gibt jetzt minimale Unterstützung für die UTF-8 Version aller zur Zeit unterstützten Lokalisierungen des Systems. Diese Änderung ist primär zur Unterstützung des Ports misc/utf8locale gedacht.

Mit Israel Hebrew he_IL.UTF-8 steht eine Lokalisierung für Israel mit hebräischen Schriftzeichen zur Verfügung.

Das neue Programm logins(1) zeigt Informationen über User- und Systemaccounts an.

Bei mountd(8) kann mit der neuen Option -p ein fester Port angegeben werden, der dann im Regelsatz einer Firewall genutzt werden kann.

netstat(1) zeigt jetzt auch an, in welchen Multicast Gruppen sich das System befindet.

Werden newfs(8) und mdmfs(8) mit der neuen Option -l aufgerufen, wird auf dem neuen Dateisystem automatisch die Option "MAC Multilabel" gesetzt; es ist also nicht mehr notwendig, diese Option manuell mit tunefs(8) zu setzen.

nologin(8) protokolliert jetzt Anmeldeversuche via syslogd(8).

nologin(8) wurde von /sbin/nologin nach /usr/sbin/nologin verschoben. /sbin/nologin ist jetzt ein Verweis auf die neue Lokation, damit wird die Kompatibilität mit älteren Systemen gewahrt.

In der Unterstützung für NSS wurde ein Fehler beseitigt, der zu Problemen beim Betrieb von NSS-Modulen aus anderen Quellen (z.B. net/nss_ldap) und Gruppen mit vielen Mitgliedern geführt hat.

od(1) bietet jetzt POSIX-ähnliche Unterstützung für Zeichen, die mehr als ein Byte belegen.

patch(1) wurde durch die OpenBSD-Version mit einer BSD-Lizenz ersetzt. Die Option --posix erzwingt die strikte Beachtung des POSIX-Standards.

Die beiden Programme pgrep(1) and pkill(1) wurden aus NetBSD importiert. Sie unterstützen zusätzlich auch die Option -M, um die Werte der Namensliste aus dem angegebenen core statt aus /dev/kmem zu extrahieren, und die Option -N, um die Namensliste aus dem angegebenen System statt aus dem Standard-Kernel zu extrahieren.

Wird bei ppp(8) das neue Kommando ``set rad_alive N'' genutzt, werden in regelmäßigen Abständen RADIUS Accounting Informationen an den RADIUS-Server gesendet. [MERGED]

Das neue Kommando ``set pppoe [standard|3Com]'' von ppp(8) legt den Operationsmodus des zu Grunde liegenden ng_pppoe(4) Netgraph-Knotens fest.

Das Programm ps(1) erfüllt die Anforderungen des POSIX/SUSv3 Standards jetzt besser. Zu den Verbesserungen gehören die neue Option include -p zur Angabe einer Liste von Prozeß-IDs, die neue Option -t zur Angabe einer Liste von Terminal Namen, die neue Option -A als Alias für -ax, die neue Option -G zur Angabe einer Liste von Gruppen-IDs, die neue Option -X als Gegenstück zu -x, sowie diverse kleinere Verbesserungen. Weitere Informationen finden Sie in ps(1). [MERGED]

In rarpd(8) wurde ein Fehler behoben, der zu Fehlern führte, wenn eine Netzwerk-Schnittstelle mehr als eine IP Adresse hatte. [MERGED]

ps(1) unterstützt jetzt die neue Format-Option -O emul, die ausgibt, innerhalb welcher Systemaufruf-Emulation der Prozeß läuft.

Wird pw(8) mit der neuen Optionen -H aufgerufen, erwartet es ein verschlüsseltes Paßwort aus einem Eingabestrom. [MERGED]

regex(3) unterstützt jetzt reguläre Ausdrücke, die Zeichen beachten, die mehr als ein Byte belegen.

In den von resolver(3) genutzten Konfigurationsdateien können jetzt die Schlüsselwörter timeout: und attempts: verwendet werden.

Die resolver(3) Bibliothek und ihre diversen Schnittstellen sind jetzt deutlich reentranter und brauchbarer für Threads. Es ist jetzt möglich, mehr als eine DNS-Anfrage auf einmal abzuwickeln, dadurch verbessert sich die Performance einiger Anwendungen mit mehreren Threads ganz erheblich. Allerdings müssen einiger dieser Programme neu übersetzt werden, Beispiele aus der Ports Collection sind www/mozilla und ähnliche Programme, mail/evolution, devel/gnomevfs und devel/gnomevfs2.

Wird rmdir(1) mit der neuen Option -v aufgerufen, gibt es zusätzliche Informationen aus.

savecore(8) funktioniert jetzt korrekt, wenn der Dump größer als 2 GByte ist.

In script(1) wurde ein Fehler beseitigt, damit das Programm auch dann korrekt funktioniert, wenn die Standardeingabe geschlossen wurde. Ohne diese Korrektur hätte es in Verbindung mit sysutils/portupgrade dazu kommen können, daß im nicht-interaktiven Betrieb alle veralteten Ports entfernt, aber nicht wieder neu erzeugt werden.

Mit sdpd(8) steht jetzt ein Hintergrunddienst für das Bluetooth Service Discovery Protocol zur Verfügung.

Das sed(1) Kommando y (translate) unterstützt jetzt Zeichen, die mehr als ein Byte belegen.

Es beiden neuen Programme sha1(1) und rmd160(1) berechnen eine sichere Prüfsumme über die von Ihnen eingelesenen Daten, analog zur Funktion von md5(1). [MERGED]

Mit dem neuen Programm smbmsg(8) kann man SMBus Nachrichten versenden und empfangen.

Wird sunlabel(8) mit der neuen Option -c aufgerufen, benutzt es zur Berechnung der Partitionsgröße Zylinder statt der üblichen Sektoren. Die ebenfalls neue Option -h gibt das Label in einem benutzerfreundlich Größe/Start Format aus.

Wenn sich Absender und Empfänger auf dem lokalen System befindet, verwendet talk(1) jetzt in den Paketen, die es an talkd(8) schickt, localhost als Standard-Maschinennamen. Das bedeutet, daß talk(1) ab jetzt auf einen korrekten Eintrag for localhost angewiesen ist, dieser muß entweder in /etc/hosts stehen oder per DNS auflösbar sein.

Wird tftpd(8) mit der neuen Option -w aufgerufen, erlaubt er die Erzeugung neuer Dateien. Mit der ebenfalls neuen Option -U kann die Umask eingestellt werden.

top(1) kann jetzt auch den aktuellen Datendurchsatz anzeigen. Diese Erweiterung kann durch Drücken der Taste ``m'' und mit der Kommandozeilenoption -m io aktiviert werden.

Viele Benutzerprogramme im Standardsystem (zum größten Teil die GNU-Programme) nutzen jetzt die Systemversion von getopt_long(3) und nicht mehr die GNU-Version.


2.3.1. /etc/rc.d Scripts

Das Script diskless wurde in die Scripte hostname, resolve, tmp und var aufgeteilt.

Das neue Script gbde_swap stellt verschlüsselte Swap-Partitionen zur Verfügung. Wenn in rc.conf(5) die Variable gbde_swap_enable definiert ist und in fstab(5) eine Swap-Partition mit dem Namen /dev/foo.bde angeben ist, wird diese beim Start des Systems automatisch an das Gerät /dev/foo angebunden. Außerdem wird ein zufälliger Schlüssel generiert, indem die MD5-Prüfsumme über 512 Bytes aus /dev/random berechnet wird. Bitte beachten Sie, daß es damit nicht mehr möglich ist, Kernel Dumps zu sichern.

Neu sind die Optionen ip6addrctl_enable und ip6addrctl_verbose. Ist die Option ip6addrctl_enable auf YES gesetzt, wird die Address Selection Policy in den Kernel aufgenommen. Wenn die Datei /etc/ip6addrctl.conf existiert, wird diese benutzt, sonst wird eine Standard-Policy verwendet. Die Standard-Policy ist die in RFC 3484 beschriebene Policy für den Fall, daß ipv6_enable auf YES gesetzt ist. Andernfalls ist die Standard-Policy die Prioritäts-Policy für IPv4 Adressen.

Das neue Script mixer sichert beim Herunterfahren des Systems alle Lautstärkeneinstellungen und stellt sie beim Start des Systems automatisch wieder her.

Das Skript named wurde auf BIND 9 des Basissystems angepasst. Unter anderem wurden folgende Änderungen vorgenommen:

  • named(8) läuft standardmäßig im chroot(2)-Verzeichnis /var/named. In der Datei rc.conf können Sie mit der Variablen named_chrootdir die Verwendung von chroot(2) abstellen oder das chroot(2)-Verzeichnis ändern.

  • Ist die Variable named_chroot_autoupdate auf YES gesetzt (die Vorgabe), wird das chroot(2)-Verzeichnis automatisch beim Systemstart eingerichtet. Es wird ein symbolischer Link von /etc/namedb auf /var/named/etc/namedb und ein symbolischer Link von /var/run/named/pid auf /var/named/var/run/named/pid eingerichtet. Die Anlage der Links können Sie mit der Variablen named_symlink_enable in der Datei rc.conf verhindern.

  • Die Datei rndc.key wird erstellt, wenn sie noch nicht existiert.

Die neuen Scripts pf und pflog dienen zur Unterstützung von pf(4).


2.4. Zusätzliche Software

Die ACPI-CA Routinen wurden von der Zwischenversion 20030619 auf die Zwischenversion 20040527 aktualisiert.

AMD (am-utils) wurde von Version 6.0.9 auf Version 6.0.10p1 aktualisiert.

Der Bell Labs awk wurden von der am 29. Juli 2003 veröffentlichten Version auf die am 7. Februar 2004 veröffentlichte Version aktualisiert.

BIND wurde von Version 8.3.1-REL auf die Version 9.3.0 aktualisiert.

Binutils wurde auf eine Zwischenversion des FSF-Entwicklungszweiges 2.15 vom 23. Mai 2004 aktualisiert.

CVS wurde von Version 1.11.10 auf Version 1.11.17 aktualisiert. [MERGED]

Das Werkzeug FILE wurde von Version 3.41 auf die Version 4.10 aktualisiert.

Die Bibliothek gdtoa dient zur Umwandlung von Zahlen zwischen dem Binär- und Dezimalformat und wurde von Version 20030324 auf Version 20040118 aktualisiert.

GDB wurde auf Version 6.1.1 aktualisiert.

GNU GCC wurde von 3.3.3-prerelease vom 6. November 2003 auf 3.4.2-prerelease vom 28. Juli 2004 aktualisiert.

GNU grep wurde von Version 2.4d auf Version 2.5.1 aktualisiert.

GNU sort wurde von der Version aus textutils 2.1 auf die Version aus coreutils vom 12. August 2004 aktualisiert.

less wurde von Version 371 auf Version 381 aktualisiert.

GNU readline 4.3 wurde mit den offiziellen Korrekturen 001 bis 005 aktualisiert.

Die Bibliothek GNU regex wurde auf die Version aktualisiert, die in GNU grep 2.5.1 enthalten ist.

Die GNU tar Version im Basissystem heißt jetzt gtar.

Heimdal Kerberos wurde von Version 0.6 auf Version 0.6.1. aktualisiert.

Der ISC DHCP Client wurde von Version 3.0.1 RC10 auf Version 3.0.1 aktualisiert.

libpcap wurde von Version 0.7.1 auf Version 0.8.3 aktualisiert.

lukemftpd wurde von der Zwischenversion vom 3. November 2003 auf die Zwischenversion vom 9. August 2004 aktualisiert.

OpenPAM wurde von der Version Dogwood auf die Version Eelgrass aktualisiert.

OpenSSH wurde von Version 3.6.1p1 auf Version 3.8.1p1 aktualisiert.

Anmerkung: Die Standardkonfiguration von sshd(8) wurde geändert. Die Version 1 des SSH Protokolls wird nicht mehr standardmäßig unterstützt. Weiterhin wird die Authentifizierung mit Paßwort nicht mehr akzeptiert, wenn PAM aktiviert wurde.

OpenSSL wurde von Version 0.9.7c auf Version 0.9.7d aktualisiert. [MERGED]

Aus einer Prerelease-Version von OpenSSL wurde die Unterstützung für die PadLock ACE (Advanced Cryptography Engine) der VIA C3 (Nehemiah) Prozessoren übernommen.

Der aus OpenBSD 3.5-stable stammende Paketfilter pf wurde in FreeBSD importiert und wird standardmäßig installiert. Die von pf benötigten Benutzer proxy und _pflogd sowie die drei benötigten Gruppen authpf, proxy und _pflogd wurden ebenfalls hinzugefügt.

Anmerkung: Wenn Sie Ihr System mit Hilfe des Quellcodes aktualisieren, müssen Sie den User und die beiden Gruppen vor der Aktualisierung anlegen. Sie können mergemaster -p benutzen, um die richtigen Einträge in den Dateien passwd(5) und group(5) anlegen zu lassen. Wenn pf nicht erzeugt werden soll, muß in make.conf die Variable NO_PF gesetzt sein.

Einige Zusatzprogramme für pf von OpenBSD wurden ebenfalls importiert. ftp-proxy(8) ist ein FTP-Proxy für pf(4), pfctl(8) ist das Äquivalent von ipf(8), pflogd(8) ist ein Hintergrunddienst, der mit if_pflog Pakete im pcap(3)-Format protokolliert und authpf(8) ist eine Shell, die nach der Authentifizierung eines Benutzers pf(4)-Regelsätze anpasst.

routed wurde von Version 2.22 auf die Version 2.27 von rhyolite.com aktualisiert. Wenn Sie die MD5 Authentification in RIP nutzen, müssen Sie beachten, daß routed(8) nicht mehr zu früheren FreeBSD-Versionen kompatibel ist, dafür ist er jetzt kompatibel zu den Implementierungen von Sun, Cisco und anderen Herstellern.

sendmail wurde von Version 8.12.10 auf Version 8.13.1 aktualisiert. [MERGED]

tcpdump wurde von Version 3.7.1 auf Version 3.8.3 aktualisiert.

tcsh wurde von Version 6.11 auf Version 6.13.00 aktualisiert.

Die Datenbank für die Zeitzonen wurde von der Version tzdata2003a auf die Version tzdata2004a aktualisiert.

zlib wurde von Version 1.1.4 auf Version 1.2.1 aktualisiert.


2.5. Infrastruktur für Ports und Packages

Die meisten start- und Stopskripten der Ports benutzen nun das neue rc(8)-System, das in FreeBSD 5.X eingeführt wurde. Einige Ports benutzen noch die alten Skripten. Beim Systemstart werden zuerst die neuen Skripten und dann die alten ausgeführt, beim Herunterfahren werden die Skripten in der umgekehrten Reihenfolge ausgeführt.

Das Attribut SIZE kann zur Prüfung der Größe der Distributionsdateien genutzt werden, bevor diese übertragen werden, dieses Attribut ist standardmäßig aktiviert. Mit der Einstellung DISABLE_SIZE kann ein Anwender diese Prüfung abschalten. Diese Möglichkeit ist für Anwender älterer FreeBSD Versionen gedacht, bei denen fetch(1) diese Prüfung unterstützt sowie für einige FTP Proxies, die standardmäßig falsche oder unsinnige Größen melden.

Das Ports-Verzeichnis enthält zwei neue Dateien mit wichtigen Informationen: ports/CHANGES informiert über größe Änderungen an der Ports Collection und der Infrastruktur dazu. ports/UPDATING informiert über Stolpersteine bei der Aktualisierung bestimmer Ports, analog zu den Informationen zur Aktualisierung des Systems, die in src/UPDATING zu finden sind.

Die von den Package-Programmen (pkg_*) des Systems genutzten Routinen zur Analyse der Versionsnummer wurden neu implementiert und sind jetzt wieder kompatibel zu den Routinen in 4.x und sysutils/portupgrade.

Die Package-Programme des Systems verstehen jetzt relationale Operatoren und die von der csh her bekannten {...} Auswahloperatoren:

# pkg_info -I 'docbook>=3.0'

zeigt alle Docbook DTDs ab der Versionsnummer 3.0 an. Zusätzliche gibt es neue Kommandozeilenoptionen, die bei der Nutzung von Jokerzeichen helfen.

Die Package-Programme des Systems können jetzt besser mit beschädigten Package-Datenbanken umgehen.

Wird pkg_create(1) mit der neuen Option -S aufgerufen, wird bei der Erzeugung des Packages allen @cwd ein Präfix vorangestellt.

Wird pkg_info(1) mit der neuen Option -j aufgerufen, zeigt es die Liste der Anforderungen für jedes Package an.


2.6. Erzeugung von Releases und Integration

Die Kryptographie-Funktionen von FreeBSD sind nicht mehr optionaler Bestandteil von Releases. Die crypto-Distribution wurde in die base-Distribution aufgenommen. Für Leute, die weiterhin Programme ohne Kryptographie bauen wollen, existiert weiterhin die Bauoption -DNOCRYPT.

GNOME wird jetzt in der Version 2.6.2 statt der Version 2.4 unterstützt.

Anmerkung: Wenn Sie nur die alte Version des GNOME Desktops verwenden (x11/gnome2), führt ein einfaches Update aus der FreeBSD Ports Collection mit Hilfe von portupgrade(1) (sysutils/portupgrade) zu größeren Problemen. Wenn Sie den GNOME Desktop benutzen, sollen Sie die bei http://www.FreeBSD.org/gnome/docs/faq26.html verfügbaren Informationen sorgfältig lesen und das Script gnome_upgrade.sh benutzen, um GNOME auf Version 2.6 zu aktualisieren.

Wenn Sie allerdings nur einige der GNOME Bibliotheken benutzen, können Sie die installieren Ports wahrscheinlich problemlos mit portupgrade(1) aktualisieren.

KDE wird jetzt in der Version 3.3.0 statt der Version 3.1.4 unterstützt.

In der FreeBSD Ports Collection gibt es jetzt das Programm security/portaudit, das eine Datenbank mit bekannten Schwachstellen in Ports/Packages ausliest und den Systemadministrator über Gefahren informiert.

Das standardmäßig verwendete X-Window-System in FreeBSD ist nun Xorg anstelle von XFree86. Von Xorg wird die Version X11R6.7.0 verwendet. XFree86 ist weiterhin in der Ports-Collection (x11/XFree86-4) enthalten.


3. Aktualisierung einer älteren Version von FreeBSD

Anwender, die schon ein FreeBSD-System im Einsatz haben, sollten auf jeden Fall die ``Hinweise für die ersten Anwender von FreeBSD 5.3-RELEASE'' lesen. Dieses Dokument ist auf den Distributionen in der Regel in der Datei EARLY.TXT verfügbar; ansonsten sollte es überall dort verfügbar sein, wo auch die anderen Dokumente der Release Notes verfügbar sind. Das Dokument enthält einige Tips für die Aktualisierung; viel wichtiger ist aber die Analyse der beiden Optionen Wechsel zu FreeBSD 5.X oder Weitere Verwendung von FreeBSD 4.X.

Wichtig: Sie sollten vor der Aktualisierung von FreeBSD auf jeden Fall Sicherheitskopien aller Daten und Konfigurationsdateien anlegen.


Diese Datei und andere Dokumente zu dieser Version sind bei ftp://ftp.FreeBSD.org/verfuegbar.

Wenn Sie Fragen zu FreeBSD haben, lesen Sie erst die Dokumentation, bevor Sie sich an <de-bsd-questions@de.FreeBSD.org> wenden.

Alle Anwender von FreeBSD 5-STABLE sollten sich in die Mailingliste <stable@FreeBSD.org> eintragen.

Wenn Sie Fragen zu dieser Dokumentation haben, wenden Sie sich an <de-bsd-translators@de.FreeBSD.org>.