Copyright © 1995-2020 The FreeBSD German Documentation Project
Redistribution and use in source (SGML DocBook) and 'compiled' forms (SGML, HTML, PDF, PostScript, RTF and so forth) with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code (SGML DocBook) must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified.
Redistributions in compiled form (transformed to other DTDs, converted to PDF, PostScript, RTF and other formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
FreeBSD ist ein eingetragenes Warenzeichen der FreeBSD Foundation.
3Com und HomeConnect sind eingetragene Warenzeichen der 3Com Corporation.
3ware und Escalade sind eingetragene Warenzeichen von 3ware Inc.
ARM ist ein eingetragenes Warenzeichen von ARM Limited.
Adaptec ist ein eingetragenes Warenzeichen von Adaptec, Inc.
Adobe, Acrobat, Acrobat Reader und PostScript sind entweder eingetragene Warenzeichen oder Warenzeichen von Adobe Systems Incorporated in den Vereinigten Staaten und/oder in anderen Ländern.
Apple, FireWire, Mac, Macintosh, Mac OS, Quicktime und TrueType sind eingetragene Warenzeichen von Apple Computer, Inc., in den Vereinigten Staaten und anderen Ländern.
Corel und WordPerfect sind Warenzeichen oder eingetragene Warenzeichen der Corel Corporation und/oder ihren Gesellschaften in den Vereinigten Staaten und/oder anderen Ländern.
Android is a trademark of Google Inc.
Heidelberg, Helvetica, Palatino und Times Roman sind Marken der Heidelberger Druckmaschinen AG in Deutschland und anderen Ländern.
IBM, AIX, OS/2, PowerPC, PS/2, S/390 und ThinkPad sind Warenzeichen der International Business Machines Corporation in den Vereinigten Staaten, anderen Ländern oder beiden.
IEEE, POSIX und 802 sind eingetragene Warenzeichen vom Institute of Electrical and Electronics Engineers, Inc. in den Vereinigten Staaten.
Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium und Xeon sind Warenzeichen oder eingetragene Warenzeichen der Intel Corporation oder ihrer Gesellschaften in den Vereinigten Staaten und in anderen Ländern.
Intuit und Quicken sind eingetragene Warenzeichen und/oder Dienstleistungsmarken von Intuit Inc. oder einer ihrer Geselllschaften in den Vereinigten Staaten und in anderen Ländern.
Linux ist ein eingetragenes Warenzeichen von Linus Torvalds.
LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID und Mylex sind Warenzeichen oder eingetragene Warenzeichen der LSI Logic Corp.
Microsoft, MS-DOS, Outlook, Windows, Windows Media und Windows NT sind entweder eingetragene Warenzeichen oder Warenzeichen der Microsoft Corporation in den Vereinigten Staaten und/oder in anderen Ländern.
Motif, OSF/1 und UNIX sind eingetragene Warenzeichen und IT DialTone und The Open Group sind Warenzeichen der The Open Group in den Vereinigten Staaten und in anderen Ländern.
Oracle ist ein eingetragenes Warenzeichen der Oracle Corporation.
PowerQuest und PartitionMagic sind eingetragene Warenzeichender PowerQuest Corporation in den Vereinigten Staaten und/oder anderen Ländern.
RealNetworks, RealPlayer und RealAudio sind eingetragene Warenzeichen von RealNetworks, Inc.
Red Hat, RPM, sind Warenzeichen oder eingetragene Warenzeichen von Red Hat, Inc. in den Vereinigten Staaten und in anderen Ländern.
Sun, Sun Microsystems, Java, Java Virtual Machine, JDK, JSP, JVM, Netra, Solaris, StarOffice und SunOS sind Warenzeichen oder eingetragene Warenzeichen von Sun Microsystems, Inc. in den Vereinigten Staaten und in anderen Ländern.
Symantec und Ghost sind eingetragene Warenzeichen der Symantec Corporation in den Vereinigten Staaten und in anderen Ländern.
MATLAB ist ein eingetragenes Warenzeichen von The MathWorks, Inc.
SpeedTouch ist ein Warenzeichen von Thomson
VMware ist ein Warenzeichen von VMware, Inc
Mathematica ist ein eingetragenes Warenzeichen von Wolfram Research, Inc.
XFree86 ist ein Warenzeichen von The XFree86 Project, Inc.
Ogg Vorbis und Xiph.Org sind Warenzeichen von Xiph.Org.
Viele Produktbezeichnungen von Herstellern und Verkäufern sind Warenzeichen. Soweit dem FreeBSD Project das Warenzeichen bekannt ist, werden die in diesem Dokument vorkommenden Bezeichnungen mit dem Symbol „™“ oder dem Symbol „®“ gekennzeichnet.
Willkommen bei FreeBSD! Dieses Handbuch beschreibt die Installation und den täglichen Umgang mit FreeBSD 12.1-RELEASE, FreeBSD 11.3-RELEASE. Das Handbuch ist das Ergebnis einer fortlaufenden Arbeit vieler Einzelpersonen. Dies kann dazu führen, dass einige Abschnitte nicht aktuell sind. Bei Unklarheiten empfiehlt es sich daher stets, die englische Originalversion des Handbuchs zu lesen.
Wenn Sie bei der Übersetzung des Handbuchs mithelfen
möchten, senden Sie bitte eine E-Mail an die Mailingliste
'FreeBSD German Documentation Project'
<de-bsd-translators@de.FreeBSD.org>
.
Die aktuelle Version des Handbuchs ist immer auf dem FreeBSD-Webserver
verfügbar und kann in verschiedenen Formaten und in
komprimierter Form vom FreeBSD
FTP-Server oder einem der vielen Spiegel herunter geladen werden
(ältere Versionen finden Sie hingegen unter https://docs.FreeBSD.org/doc/
).
Gedruckte Kopien können bei FreeBSD Mall
erworben werden.
Vielleicht möchten Sie das Handbuch oder andere Dokumente auch durchsuchen.
root
-Passwort setzensio0
sio0
pfctl
Optionenrmuser
chpass
als Superuser
verwendenchpass
als normaler Benutzer
verwendenid
die Gruppenzugehörigkeit
bestimmenscfb
Treiber über eine
Datei auswählenboot0
-Screenshotboot2
-Screenshot/etc/ttys
dump
mit
ssh benutzendump
über
ssh mit gesetzter
RSH
benutzentar
sicherntar
in das
aktuelle Verzeichnisls
und cpio
pax
sichern/etc/ttys
hinzufügen/etc/ntp.conf
Der erste Teil dieses Buchs führt FreeBSD-Einsteiger durch den Installationsprozess und stellt leicht verständlich Konzepte und Konventionen vor, die UNIX® zu Grunde liegen. Sie müssen nur neugierig sein und bereitwillig neue Konzepte aufnehmen, wenn diese vorgestellt werden, um diesen Teil durchzuarbeiten.
Wenn Sie den ersten Teil bewältigt haben, bietet der umfangreichere zweite Teil eine verständliche Darstellung vieler Themen, die für FreeBSD-Administratoren relevant sind. Wenn Kapitel auf anderen Kapiteln aufbauen, wird das in der Übersicht am Anfang eines Kapitels erläutert.
Weitere Informationsquellen entnehmen Sie bitte Anhang B, Bibliografie.
Die aktuelle Auflage des Handbuchs ist das Ergebnis der engagierten Arbeit Hunderter Mitarbeiter des FreeBSD Documentation Projects in den vergangenen 10 Jahren. Die wichtigsten Änderungen dieser Auflage gegenüber der dritten Auflage von 2004 sind:
Kapitel 24, DTrace informiert Sie über die mächtigen Funktionen zur Leistungsmessung, die dieses Werkzeug bietet.
Kapitel 20, Dateisystemunterstützung enthält Informationen über die Unterstützung nicht-nativer Dateisysteme in FreeBSD, wie beispielsweise ZFS von Sun™.
Kapitel 16, Security Event Auditing informiert über die neuen Auditing-Fähigkeitenvon FreeBSD.
Kapitel 21, Virtualisierung enthält Informationen zur Installation von FreeBSD in verschiedenen Virtualisierungs-Programmen.
Kapitel 2, FreeBSD installieren wurde hinzugefügt, um die Installation von FreeBSD mit dem neuen Installationswerkzeug, bsdinstall, zu dokumentieren.
Die dritte Auflage des Handbuchs war das Ergebnis der über zwei Jahre dauernden engagierten Arbeit des FreeBSD Documentation Projects. Die gedruckte Ausgabe war derart umfangreich, dass es notwendig wurde, sie in zwei Bände aufzuteilen. Die wichtigsten Änderungen dieser Auflage waren:
Kapitel 11, Konfiguration und Tuning enthält neue Abschnitte
über ACPI, Energie- und Ressourcenverwaltung und das Werkzeug
cron
.
Kapitel 13, Sicherheit erläutert nun Virtual Private Networks (VPNs), Zugriffskontrolllisten (ACLs) und Sicherheitshinweise.
Kapitel 15, Verbindliche Zugriffskontrolle ist ein neues Kapitel, das vorgeschriebene Zugriffskontrollen vorstellt und erklärt, wie FreeBSD-Systeme mit MACs abgesichert werden können.
Kapitel 17, Speichermedien enthält neue Informationen über USB-Speichergeräte, Dateisystem-Snapshots, Quotas, Datei- und Netzwerk-basierte Dateisysteme sowie verschlüsselte Partitionen.
Zum Kapitel 27, PPP wurde ein Abschnitt über Fehlersuche hinzugefügt.
Kapitel 28, Elektronische Post (E-Mail) wurde um Abschnitte über alternative Transport-Agenten (MTAs), SMTP-Authentifizierung, UUCP, fetchmail, procmail und weitere Themen erweitert.
Kapitel 29, Netzwerkserver ist ein weiteres neues Kapitel dieser Auflage. Das Kapitel beschreibt, wie der Apache HTTP-Server, ftpd und ein Samba-Server für Microsoft® Windows®-Clients eingerichtet werden. Einige Abschnitte aus dem Kapitel 31, Weiterführende Netzwerkthemen befinden sich nun, wegen des thematischen Zusammenhangs, in diesem Kapitel.
Das Kapitel 31, Weiterführende Netzwerkthemen beschreibt nun den Einsatz von Bluetooth®-Geräten unter FreeBSD und das Einrichten von drahtlosen Netzwerken sowie ATM-Netzwerken.
Neu hinzugefügt wurde ein Glossar, das die im Buch verwendeten technischen Ausdrücke definiert.
Das Erscheinungsbild der Tabellen und Abbildungen im Buch wurde verbessert.
Die zweite Auflage ist das Ergebnis der engagierten Arbeit der Mitglieder des FreeBSD Documentation Projects über zwei Jahre. Die wichtigsten Änderungen gegenüber der ersten Auflage sind:
Ein Index wurde erstellt.
Alle ASCII-Darstellungen wurden durch Grafiken ersetzt.
Jedes Kapitel wird durch eine Übersicht eingeleitet, die den Inhalt des Kapitels zusammenfasst und die Voraussetzungen für ein erfolgreiches Durcharbeiten des Kapitels darstellt.
Der Inhalt wurde in die logischen Abschnitte „Erste Schritte“, „Systemadministration“ und „Anhänge“ unterteilt.
Kapitel 3, Grundlagen des FreeBSD Betriebssystems wurde um den Abschnitt „Dämonen, Signale und Stoppen von Prozessen“ erweitert.
Das Kapitel 4, Installieren von Anwendungen: Pakete und Ports behandelt nun auch Pakete.
Kapitel 5, Das X-Window-System wurde neu geschrieben. Der Schwerpunkt liegt auf modernen Benutzeroberflächen wie KDE und GNOME unter XFree86™.
Das Kapitel 12, FreeBSDs Bootvorgang wurde erweitert.
Kapitel 17, Speichermedien ist aus den beiden Kapiteln „Laufwerke“ und „Sicherungen“ entstanden. Die in den beiden Kapiteln diskutierten Themen sind so leichter zu verstehen. Hinzugekommen ist ein Abschnitt über Software- und Hardware-RAID.
Das Kapitel 26, Serielle Datenübertragung wurde reorganisiert und auf FreeBSD 4.X/5.X angepasst.
Das Kapitel 27, PPP wurde aktualisiert.
Kapitel 31, Weiterführende Netzwerkthemen wurde um viele neue Abschnitte erweitert.
Kapitel 28, Elektronische Post (E-Mail) wurde um einen Abschnitt über die Konfiguration von Sendmail erweitert.
Kapitel 10, Linux®-Binärkompatibilität behandelt zusätzlich die Installation von Oracle® und SAP® R/3®.
Neu hinzugekommen sind:
Dieses Buch ist in fünf Abschnitte unterteilt. Der erste Abschnitt, Erste Schritte, behandelt die Installation und die Grundlagen von FreeBSD. Dieser Abschnitt sollte in der vorgegebenen Reihenfolge durchgearbeitet werden, schon Bekanntes darf aber übersprungen werden. Der zweite Abschnitt, Oft benutzte Funktionen, behandelt häufig benutzte Funktionen von FreeBSD. Dieser Abschnitt sowie alle nachfolgenden Abschnitte können in beliebiger Reihenfolge gelesen werden. Jeder Abschnitt beginnt mit einer kurzen Übersicht, die das Thema des Abschnitts und das nötige Vorwissen erläutert. Die Übersichten helfen dem Leser, interessante Kapitel zu finden und erleichtern das Stöbern im Handbuch. Der dritte Abschnitt, Systemadministration, behandelt die Administration eines FreeBSD-Systems. Der vierte Abschnitt, Netzwerke, bespricht Netzwerke und Netzwerkdienste. Der fünfte Abschnitt enthält Anhänge und Verweise auf weitere Informationen.
Dieses Kapitel macht Einsteiger mit FreeBSD vertraut. Es behandelt die Geschichte, die Ziele und das Entwicklungsmodell des FreeBSD-Projekts.
Beschreibt den Ablauf der Installation von
FreeBSD 9.x
und neuere mittels
bsdinstall.
Erläutert die elementaren Kommandos und Funktionen von FreeBSD. Wenn Sie schon mit Linux® oder einem anderen UNIX® System vertraut sind, können Sie dieses Kapitel überspringen.
Zeigt wie mit der innovativen Ports-Sammlung oder mit Paketen Software von Fremdherstellern installiert wird.
Beschreibt allgemein das X Window System und geht speziell auf X11 unter FreeBSD ein. Weiterhin werden graphische Benutzeroberflächen wie KDE und GNOME behandelt.
Enthält eine Aufstellung verbreiteter Anwendungen wie Browser, Büroanwendungen und Office-Pakete und beschreibt wie diese Anwendungen installiert werden.
Erklärt, wie Sie auf Ihrem System Musik und Videos abspielen können. Beispielhaft werden auch Anwendungen aus dem Multimedia-Bereich beleuchtet.
Erklärt, warum Sie einen angepassten Kernel erzeugen sollten und gibt ausführliche Anweisungen wie Sie einen angepassten Kernel konfigurieren, bauen und installieren.
Beschreibt, wie Sie Drucker unter FreeBSD verwalten. Diskutiert werden Deckblätter, das Einrichten eines Druckers und ein Abrechnungssystem für ausgedruckte Seiten.
Beschreibt die binäre Kompatibilität zu Linux®. Weiterhin werden ausführliche Installationsanleitungen für Oracle® und Mathematica® gegeben.
Beschreibt die Einstellungen, die ein Systemadministrator vornehmen kann, um die Leistungsfähigkeit eines FreeBSD Systems zu verbessern. In diesem Kapitel werden auch verschiedene Konfigurationsdateien besprochen.
Erklärt den Bootprozess von FreeBSD und beschreibt die Optionen, mit denen sich der Bootprozess beeinflussen lässt.
Beschreibt die Werkzeuge mit denen Sie Ihr FreeBSD-System absichern. Unter Anderem werden Kerberos, IPsec und OpenSSH besprochen.
Dieses Kapitel beschreibt das Jails-Framework sowie die Vorteile von Jails gegenüber der traditionellen chroot-Unterstützung von FreeBSD.
Erklärt vorgeschriebene Zugriffskontrollen (MACs) und wie mit ihrer Hilfe FreeBSD-Systeme gesichert werden.
Beschreibt, was FreeBSD Event Auditing ist, wie Sie diese Funktion installieren und konfigurieren und die damit erzeugten Audit-Trails überwachen und auswerten können.
Erläutert den Umgang mit Speichermedien und Dateisystemen. Behandelt werden Plattenlaufwerke, RAID-Systeme, optische Medien, Bandlaufwerke, speicherbasierte Laufwerke und verteilte Dateisysteme.
Beschreibt das GEOM-Framework von FreeBSD sowie die Konfiguration der verschiedenen unterstützten RAID-Level.
Beschreibt die Unterstützung nicht-nativer Dateisysteme (beispielsweise des Z-Dateisystems (zfs) von Sun™) durch FreeBSD.
Dieses Kapitel beschreibt verschiedene Virtualisierungslösungen und wie diese mit FreeBSD zusammenarbeiten.
Zeigt wie Sie FreeBSD mit anderen Sprachen als Englisch einsetzen. Es wird sowohl die Lokalisierung auf der System-Ebene wie auch auf der Anwendungs-Ebene betrachtet.
Erklärt die Unterschiede zwischen FreeBSD-STABLE, FreeBSD-CURRENT und FreeBSD-Releases. Das Kapitel enthält Kriterien anhand derer Sie entscheiden können, ob es sich lohnt, ein Entwickler-System zu installieren und aktuell zu halten. Außerdem wird beschrieben, wie Sie ein System durch das Einspielen neuer Sicherheits-Patches absichern.
Beschreibt, wie das von Sun™ entwickelte DTrace-Werkzeug unter FreeBSD konfiguriert und eingesetzt werden kann. Dynamisches Tracing kann Ihnen beim Aufspüren von Leistungsproblemen helfen, indem Sie Echtzeit-Systemanalysen durchführen.
Erläutert, wie Sie Terminals und Modems an Ihr FreeBSD-System anschließen und sich so ein- und auswählen können.
Erklärt wie Sie mit PPP, SLIP oder PPP über Ethernet ein FreeBSD-System mit einem entfernten System verbinden.
Erläutert die verschiedenen Bestandteile eines E-Mail Servers und zeigt einfache Konfigurationen für sendmail, dem meist genutzten E-Mail-Server.
Bietet ausführliche Informationen und Beispielkonfigurationen, die es Ihnen ermöglichen, Ihren FreeBSD-Rechner als Network File System Server, Domain Name Server, Network Information Server, oder als Zeitsynchronisationsserver einzurichten.
Erklärt die Philosophie hinter softwarebasierten Firewalls und bietet ausführliche Informationen zur Konfiguration der verschiedenen, für FreeBSD verfügbaren Firewalls.
Behandelt viele Netzwerkthemen, beispielsweise das Verfügbarmachen einer Internetverbindung für andere Rechner eines LANs, Routing, drahtlose Netzwerke, Bluetooth®, IPv6, ATM und andere mehr.
Enthält eine Aufstellung der Quellen von denen Sie FreeBSD beziehen können: CD-ROM, DVD sowie Internet-Sites.
Dieses Buch behandelt viele Themen und kann nicht alle Fragen erschöpfend beantworten. Die Bibliografie enthält weiterführende Bücher, die im Text zitiert werden.
Enthält eine Aufstellung der Foren, die FreeBSD Benutzern für Fragen und Diskussionen zur Verfügung stehen.
Enthält PGP-Fingerabdrücke von etlichen FreeBSD Entwicklern.
Damit der Text einheitlich erscheint und leicht zu lesen ist, werden im ganzen Buch die nachstehenden Konventionen beachtet:
Für Dateinamen, URLs, betonte Teile eines Satzes und das erste Vorkommen eines Fachbegriffs wird ein kursiver Zeichensatz benutzt.
Fixschrift
Fehlermeldungen, Kommandos, Umgebungsvariablen, Namen
von Ports, Hostnamen, Benutzernamen, Gruppennamen,
Gerätenamen, Variablen und Code-Ausschnitte werden in einer
Fixschrift
dargestellt.
Fett kennzeichnet Anwendungen, Kommandozeilen und Tastensymbole.
Tasten werden fett dargestellt, um sie von
dem umgebenden Text abzuheben. Tasten, die gleichzeitig gedrückt
werden müssen, werden durch ein +
zwischen
den einzelnen Tasten dargestellt:
Ctrl+Alt+Del
Im gezeigten Beispiel soll der Benutzer die Tasten Ctrl, Alt und Del gleichzeitig drücken.
Tasten, die nacheinander gedrückt werden müssen, sind durch Kommas getrennt:
Ctrl+X, Ctrl+S
Das letzte Beispiel bedeutet, dass die Tasten Ctrl und X gleichzeitig betätigt werden und danach die Tasten Ctrl und S gleichzeitig gedrückt werden müssen.
Beispiele, die durch C:\>
eingeleitet
werden, zeigen ein MS-DOS® Kommando. Wenn nichts Anderes
angezeigt wird, können diese Kommandos unter neuen Versionen von
Microsoft® Windows® auch in einem DOS-Fenster ausgeführt
werden.
E:\>
tools\fdimage floppies\kern.flp A:
Beispiele, die mit #
beginnen, müssen unter
FreeBSD mit Superuser-Rechten ausgeführt werden. Dazu melden Sie
sich entweder als root
an oder Sie wechseln von Ihrem normalen Account mit su(1) zu
dem Benutzer root
.
#
dd if=kern.flp of=/dev/fd0
Beispiele, die mit %
anfangen, werden unter einem
normalen Benutzer-Account ausgeführt. Sofern nichts Anderes
angezeigt wird, verwenden die Beispiele die Syntax der
C-Shell.
%
top
Dieses Buch ist aus Beiträgen von vielen Leuten aus allen Teilen der Welt entstanden. Alle eingegangen Beiträge, zum Beispiel Korrekturen oder vollständige Kapitel, waren wertvoll.
Einige Firmen haben dieses Buch dadurch unterstützt, dass Sie Autoren in Vollzeit beschäftigt und die Veröffentlichung des Buchs finanziert haben. Besonders BSDi (das später von Wind River Systems übernommen wurde) beschäftigte Mitglieder des FreeBSD Documentation Projects, um dieses Buch zu erstellen. Dadurch wurde die erste (englische) gedruckte Auflage im März 2000 möglich (ISBN 1-57176-241-8). Wind River Systems bezahlte dann weitere Autoren, die die zum Drucken nötige Infrastruktur verbesserten und zusätzliche Kapitel beisteuerten. Das Ergebnis dieser Arbeit ist die zweite (englische) Auflage vom November 2001 (ISBN 1-57176-303-1). Zwischen 2003 und 2004 bezahlte FreeBSD Mall, Inc mehrere Mitarbeiter für die Vorbereitung der gedruckten dritten Auflage.
Dieser Teil des Handbuchs richtet sich an Benutzer und Administratoren für die FreeBSD neu ist. Diese Kapitel
enthalten eine Einführung in FreeBSD,
geleitet den Leser durch den Installationsprozess,
erklärt die Grundlagen von UNIX® Systemen,
demonstriert, wie die Fülle der erhältlichen Anwendungen Dritter installiert werden und
führt den Leser in X, der Benutzeroberfläche von UNIX® Systemen ein. Es wird gezeigt, wie ein Desktop konfiguriert wird, um effektiver arbeiten zu können.
Referenzen auf weiter vorne liegende Textteile wurden auf ein Minimum beschränkt, so dass dieser Abschnitt ohne viel Blättern durchgearbeitet werden kann.
Herzlichen Dank für Ihr Interesse an FreeBSD! Das folgende Kapitel behandelt verschiedene Aspekte des FreeBSD Projekts wie dessen geschichtliche Entwicklung, seine Ziele oder das Entwicklungsmodell.
Nach dem Durcharbeiten des Kapitels wissen Sie über folgende Punkte Bescheid:
Wo FreeBSD im Vergleich zu anderen Betriebssystemen steht
Die Geschichte des FreeBSD Projekts
Die Ziele des FreeBSD Projekts
Die Grundlagen des FreeBSD-Open-Source-Entwicklungsmodells
Und natürlich woher der Name „FreeBSD“ kommt.
FreeBSD ist ein offenes, standardkonformes Unix-ähnliches Betriebssystem für x86 (32 und 64 Bit) ARM®, AARch64, RISC-V®, MIPS®, POWER®, PowerPC® und Sun UltraSPARC® Rechner. Es bietet alle Funktionen, die heutzutage als selbstverständlich angesehen werden, wie präemptives Multitasking, Speicherschutz, virtueller Speicher, Mehrbenutzerfunktionen, SMP-Unterstützung, Open Source Entwicklungswerkzeuge für verschiedene Sprachen und Frameworks sowie Desktop-Funktionen rund um das X Window System, KDE und GNOME. Besondere Eigenschaften sind:
Liberale Open Source Lizenz, die Ihnen das Recht einräumt, den Quellcode frei zu modifizieren und zu erweitern und ihn in freien oder proprietären Produkten zu integrieren, ohne dabei den für Copyleft-Lizenzen typischen Einschränkungen zu unterliegen. Ebenso sollen mögliche Inkompatibilitätsprobleme vermieden werden.
Starke TCP/IP-Netzwerkfähigkeit - FreeBSD implementiert Industrie-Standardprotokolle mit immer höherer Leistung und Skalierbarkeit. Dies macht FreeBSD zu einer exzellenten Lösung sowohl für Server, als auch für Routing/Firewall Aufgaben. Tatsächlich nutzen viele Unternehmen und Anbieter FreeBSD zu genau diesem Zweck.
Vollständig integrierte OpenZFS-Unterstützung, einschließlich root-on-ZFS, ZFS Boot Environments, Fehlermanagement, administrative Delegation, Unterstützung für Jails, FreeBSD-spezifische Dokumentation und Unterstützung im System-Installationsprogramm.
Umfangreiche Sicherheitsfunktionen, vom System für die verbindliche Zugriffskontrolle (Mandatory Access Control, MAC), bis hin zu Capsicum und Sandbox-Mechanismen.
Über 30.000 vorkonfigurierte Pakete für alle unterstützten Architekturen und die Ports-Sammlung, die es Benutzern einfach macht, eigene, angepasste Software zu erstellen.
Dokumentation - Zusätzlich zu diesem Handbuch und Büchern von verschiedenen Autoren, die Themen von Systemadministration bis hin zu Kernel-Interna behandeln, gibt es auch die man(1) Seiten, nicht nur für Daemonen, Dienstprogramme und Konfigurationsdateien, sondern auch für Kernel-APIs (Sektion 9) und individuelle Treiber (Sektion 4).
Einfache und konsistente Repository-Struktur und Build-System - FreeBSD benutzt ein einziges Repository für alle seine Komponenten, sowohl den Kernel als auch das Basissystem. Dies, zusammen mit einem einheitlichen und leicht anpassbaren Build-System und einem gut durchdachten Entwicklungsprozess, macht es einfach, FreeBSD in die Build-Infrastruktur für Ihr eigenes Produkt zu integrieren.
Der Unix-Philosophie treu bleiben und Kombinierbarkeit den monolithischen "all in one"-Daemonen mit hartkodiertem Verhalten vorziehen.
Binärkompatibilität mit Linux, die es möglich macht, viele Linux-Binärdateien ohne Virtualisierung auszuführen.
FreeBSD basiert auf dem 4.4BSD-LiteRelease der Computer Systems Research Group (CSRG) der Universität von Kalifornien in Berkeley und führt die namenhafte Tradition der Entwicklung von BSD-Systemen fort. Zusätzlich zu der herausragenden Arbeit CSRG hat das FreeBSD Projekt tausende weitere Arbeitsstunden investiert, um das System zu erweitern, verfeinern und maximale Leistung und Zuverlässigkeit bei Alltagslast zu bieten. FreeBSD bietet Leistung und Zuverlässigkeit auf dem Niveau von Open Source und kommerziellen Angeboten, und kombiniert innovative Funktionen, die woanders nicht verfügbar sind.
Die Anwendungsmöglichkeiten von FreeBSD werden nur durch Ihre Vorstellungskraft begrenzt. Von Software-Entwicklung bis zu Produktionsautomatisierung, von Lagerverwaltung über Abweichungskorrektur bei Satelliten; Falls etwas mit kommerziellen UNIX® Produkten machbar ist, dann ist es höchstwahrscheinlich auch mit FreeBSD möglich. FreeBSD profitiert stark von tausenden hochwertigen Anwendungen aus wissenschaftlichen Instituten und Universitäten in aller Welt. Häufig sind diese für wenig Geld oder sogar kostenlos zu bekommen.
Durch den freien Zugang zum Quellcode von FreeBSD ist es in unvergleichbarer Weise möglich, das System für spezielle Anwendungen oder Projekte anzupassen. Dies ist mit den meisten kommerziellen Betriebssystemen einfach nicht möglich. Beispiele für Anwendungen, die unter FreeBSD laufen, sind:
Internet-Dienste: Die robuste TCP/IP-Implementierung in FreeBSD macht es zu einer idealen Plattform für verschiedenste Internet-Dienste, wie zum Beispiel:
Bildung: Sind Sie Informatikstudent oder Student eines verwandten Studiengangs? Die praktischen Einblicke in FreeBSD sind die beste Möglichkeit etwas über Betriebssysteme, Rechnerarchitektur und Netzwerke zu lernen. Einige frei erhältliche CAD-, mathematische und grafische Anwendungen sind sehr nützlich, gerade für diejenigen, deren Hauptinteresse in einem Computer darin besteht, andere Arbeit zu erledigen!
Forschung: Mit dem frei verfügbaren Quellcode für das gesamte System bildet FreeBSD ein exzellentes Studienobjekt in der Disziplin der Betriebssysteme, wie auch in anderen Zweigen der Informatik. Es ist beispielsweise denkbar, das räumlich getrennte Gruppen gemeinsam an einer Idee oder Entwicklung arbeiten. Das Konzept der freien Verfügbarkeit und -nutzung von FreeBSD ermöglicht so die freie Verwendung, ohne sich gross Gedanken über Lizenzbedingungen zu machen oder aufgrund von Beschränkungen evtl. in einem offenen Forum bestimmte Dinge nicht diskutieren zu dürfen.
Netzwerkfähigkeit: Brauchen Sie einen neuen Router? Oder einen Name-Server (DNS)? Eine Firewall zum Schutze Ihres Intranets vor Fremdzugriff? FreeBSD macht aus dem in der Ecke verstaubenden 386- oder 486-PC im Handumdrehen einen leistungsfähigen Router mit anspruchsvollen Paketfilter-Funktionen.
Embedded: FreeBSD ist eine exzellente Plattform, um auf embedded Systemen aufzubauen. Mit der Unterstützung für die ARM®-, MIPS®- und PowerPC®-Plattformen, verbunden mit dem robusten Netzwerkstack, aktuellen Neuerungen und der freizügigen BSD-Lizenz stellt FreeBSD eine ausgezeichnete Basis für embedded Router, Firewalls und andere Geräte dar.
Desktop: FreeBSD ist eine gute Wahl für kostengünstige X-Terminals mit dem frei verfügbaren X11-Server. FreeBSD bietet die Auswahl aus vielen Open Source Desktop Umgebungen, dazu gehören auch die GNOME und KDE GUIs. FreeBSD kann sogar „plattenlos“ booten, was einzelne Workstations sogar noch günstiger macht und die Verwaltung erleichtert.
Software-Entwicklung: Das Standard-FreeBSD-System wird mit einem kompletten Satz an Entwicklungswerkzeugen bereitgestellt, unter anderem einem vollständigen C/C++-Compiler und -Debugger. Entwicklungswerkzeugen. Viele zusätzliche Programmiersprachen für Wissenschaft und Entwicklung sind aus der Ports- und Paket-Sammlung zu haben.
FreeBSD ist sowohl in Form von Quellcode als auch in Binärform auf CD-ROM, DVD und über Anonymous FTP erhältlich. Lesen Sie dazu Anhang A, Bezugsquellen für FreeBSD, um weitere Informationen erhalten.
FreeBSD ist bekannt für seine Stärken als Webserver - zu den Webseiten, die unter FreeBSD laufen, gehören Hacker News, Netcraft, NetEase, Netflix, Sina, Sony Japan, Rambler, Yahoo!, und Yandex.
FreeBSDs fortgeschrittene Eigenschaften, bewährte Sicherheit und vorhersehbare Release-Zyklen, genauso wie seine tolerante Lizenz haben dazu geführt, dass es als Plattform zum Aufbau vieler kommerzieller und quelloffener Geräte und Produkte verwendet wird. Viele der weltgrössten IT-Unternehmen benutzen FreeBSD:
Apache - Die Apache Software Foundation lässt den Grossteil seiner der Öffentlichkeit zugänglichen Infrastruktur, inklusive des möglicherweise grössten SVN-Repositories der Welt mit über 1,4 Millionen Commits, auf FreeBSD laufen.
Apple - OS X verwendet viel von FreeBSDs eigenem Netzwerkstack, virtuellem Dateisystem und den Benutzerumgebungskomponenten für sein eigenes System. Apple iOS nutzt ebenso Elemente, die es von FreeBSD übernommen hat
Cisco - IronPort Network Sicherheits- und Anti-Spam-Appliance verwendet einen modifizierten FreeBSD-Kernel.
Citrix - Die NetScaler Reihe von Sicherheits-Appliances bietet auf den Schichten 4-7 Load-Balancing, Content Caching, Anwendungsfirewall, gesichertes VPN und mobilen Cloud-Netzwerkzugriff, gepaart mit der Mächtigkeit der FreeBSD-Shell.
Isilon - Isilons Unternehmens-Speicherappliances basieren auf FreeBSD. Die extrem liberale FreeBSD-Lizenz erlaubt Isilon ihr intellektuelles Eigentum durch den gesamten Kernel zu integrieren und kann sich so auf das Erstellen ihres Produktes und nicht des Betriebssystems fokussieren.
Quest KACE - Die KACE Systemmanagement-Appliances nutzen FreeBSD wegen seiner Zuverlässigkeit, Skalierbarkeit und Gemeinschaft, welche deren zukünftige Weiterentwicklung fördert.
iXsystems - Die TrueNAS-Linie von vereinheitlichten Speicherappliances beruht auf FreeBSD. Zusätzlich zu deren kommerziellen Produkten, managed iXsystems auch noch die beiden Open Source Projekte TrueOS und FreeNAS.
Juniper - Das JunOS Betriebssystem, welches alle Juniper Netzwerkgeräte (inklusive Router, Switche, Sicherheits- und Netzwerkappliances) antreibt, verwendet FreeBSD Juniper ist einer der vielen Hersteller, welcher das symbolische Verhältnis zwischen dem Projekt und dem Hersteller von kommerziellen Produkten darstellt. Verbesserungen, die Juniper entwickelt hat, werden ebenso in FreeBSD aufgenommen, um die Komplexität der Integration neuer Eigenschaften von FreeBSD zurück in zukünftige JunOS Versionen zu vereinfachen.
McAfee - SecurOS, die Basis von McAfee Enterprise-Firewallprodukten inkl. Sidewinder basiert auf FreeBSD.
NetApp - Die Data ONTAP GX Reihe von Speicherappliances basieren auf FreeBSD. Zusätzlich hat NetApp viele Neuheiten beigesteuert, inklusive des neuen BSD-lizensierten Hypervisors bhyve.
Netflix - Die OpenConnect-Appliance, die Netflix verwendet, um Filme zu seinen Kunden zu streamen basiert auf FreeBSD. Netflix hat weitreichende Beiträge zum Quellcode von FreeBSD beigetragen und arbeitet daran, ein möglichst geringes Delta zur normalen Version beizubehalten. Netflix OpenConnect-Appliances sind für mehr als 32% vom gesamten Internetverkehr in Nordamerika verantwortlich.
Sandvine - Sandvine nutzt FreeBSD as die Basis für deren Echtzeit Hochgeschwindigkeits-Netzwerkplattform, welche den Kern deren intelligenter Netzwerkpolicy-Kontrollprodukte darstellt.
Sony - Die PlayStation 4 Spielekonsole verwendet eine modifizierte Version von FreeBSD.
Sophos - Das Sophos Email-Appliance Produkt basiert auf einem abgesicherten FreeBSD und scannt eingehende E-Mail auf Spam und Viren, während es gleichzeitig ausgehende Mail auf Schadsoftware und versehentlichen Versand von vertraulichen Informationen überwacht.
Spectra Logic - Die nTier Reihe von archivspeicherfähigen Appliances nutzt FreeBSD und OpenZFS.
Stormshield - Stormshield Network Security Appliances basieren auf einer abgesicherten Version von FreeBSD. Die BSD-Lizenz erlaubt es ihnen, ihr geistiges Eigentum in das System zu integrieren und gleichzeitig interessante Entwicklungen an die Gemeinschaft zurückzugeben.
The Weather Channel - Die IntelliStar Appliance, welche am Kopfende eines jeden Kabelversorgers installiert ist und für das Einspeisen von lokalen Wettervorhersagen in das Kabelfernsehprogramm verantwortlich ist, läuft auf FreeBSD.
Verisign - Verisign ist für den Betrieb der .com und .net Root-Domainregistries genauso verantwortlich wie für die dazugehörige DNS-Infrastruktur. Sie verlassen sich auf einen Reihe von verschiedenen Netzwerkbetriebssystemen inklusive FreeBSD, um zu gewährleisten, dass es keine gemeinsame Fehlerstelle in deren Infrastruktur gibt.
Voxer - Voxer verwendet ZFS auf FreeBSD für ihre mobile Voice-Messaging-Platform. Voxer wechselte von einem Solaris-Derivat zu FreeBSD, wegen der ausgezeichneten Dokumentation und wegen der größeren, aktiveren und sehr Entwickler freundlichen Gemeinschaft. Neben entscheidenen Merkmalen wie ZFS und DTrace bietet FreeBSD auch TRIM-Unterstützung für ZFS.
Fudo Security - Die FUDO Sicherheitsappliance erlaubt es Unternehmen, Vertragspartner und Administratoren, die an ihren Systemen arbeiten durchführen, zu überwachen, zu kontrollieren, aufzuzeichnen und zu begutachten. Dies basiert auf all den besten Sicherheitseigenschaften von FreeBSD, inklusive ZFS, GELI, Capsicum, HAST und auditdistd.
FreeBSD hat ebenfalls eine Reihe von verwandten Open Source Projekten hervorgebracht:
BSD Router - Einen FreeBSD-basierten Ersatz für grosse Unternehmensrouter, der entwickelt wurde, um auf Standard PC-Hardware zu laufen.
FreeNAS - Ein eigens dafür entworfenes FreeBSD für den Zweck als Netzwerk-Dateiserver Appliance zu fungieren. Es enthält eine Python-basierte Webschnittstelle, um das Management von sowohl UFS- als auch ZFS-Systemen zu vereinfachen. Enthalten sind NFS, SMB/CIFS, AFP, FTP und iSCSI. Ebenfalls enthalten ist ein erweiterteres Plugin-System basierend auf FreeBSD-Jails.
GhostBSD - basiert auf FreeBSD und verwendet die GTK-Umgebung, um ein schönes Aussehen und eine komfortable Erfahrung auf der modernen BSD-Plattform zu liefern, die eine natürliche und native UNIX®-Arbeitsumgebung bietet.
mfsBSD - Eine Sammlung von Werkzeugen zum Erstellen von FreeBSD-Systemimages, welches ausschliesslich im Hauptspeicher läuft.
NAS4Free - Eine Dateiserverdistribution basierend auf FreeBSD mit einer von PHP-getriebenen Webschnittstelle.
OPNSense - OPNSense ist eine quelloffene, einfach zu benutzende und auf FreeBSD basierende Firewall- und Router-Plattform. OPNSense enthält viele Funktionen die sonst nur in kommerziellen Firewalls enthalten sind und manchmal sogar mehr. Es kombiniert die vielfältigen Funktionen kommerzieller Angebote mit den Vorteilen von offenen und nachprüfbaren Quellen.
TrueOS - TrueOS basiert auf der legendären Sicherheit und Stabilität von FreeBSD. TrueOS basiert auf FreeBSD-CURRENT und bietet die aktuellsten Treiber, Sicherheitsaktualisierungen und Pakete.
FuryBSD - ein brandneuer, quelloffener FreeBSD Desktop. FuryBSD ist eine Hommage an die Desktop-BSD-Projekte der Vergangenheit wie PC-BSD und TrueOS mit seiner graphischen Oberfläche und beinhaltet zusätzliche Werkzeuge wie ein hybrides USB/DVD-Abbild hinzu. FuryBSD ist vollständig frei nutzbar und wird unter der BSD-Lizenz vertrieben.
MidnightBSD - ist ein auf FreeBSD basierendes Betriebssystem, das mit Blick auf Desktop-Benutzer entwickelt wurde. Es enthält die gesamte Software, die Sie für Ihre täglichen Aufgaben erwarten: Mail, Web-Browsing, Textverarbeitung, Spiele und vieles mehr.
pfSense - Eine Firewalldistribution basierend auf FreeBSD mit eine grossen Menge von Fähigkeiten und ausgedehnter IPv6-Unterstützung.
ZRouter - Eine Open Source Firmware-Alternative für eingebettete Geräte, die auf FreeBSD basiert. Entwickelt wurde sie, um die proprietäre Firmware von Standard-Routern zu ersetzen.
Eine Liste von Referenzen von Unternehmen, dessen Produkte und Dienstleistungen auf FreeBSD basieren, finden Sie auf der Webseite der FreeBSD Foundation. Wikipedia pflegt eine Liste von Produkten, die auf FreeBSD basieren.
Der folgende Abschnitt bietet einige Hintergrundinformationen zum FreeBSD Projekt, einschließlich einem kurzen geschichtlichen Abriss, den Projektzielen und dem Entwicklungsmodell.
Das FreeBSD Projekt wurde Anfang 1993 ins Leben gerufen, zum Teil als Ergebnis der Arbeit der letzten drei Koordinatoren des „Unofficial 386BSD Patchkit“: Nate Williams, Rod Grimes und Jordan Hubbard.
Das ursprüngliche Ziel war es, einen zwischenzeitlichen Abzug von 386BSD zu erstellen, um ein paar Probleme zu beseitigen, die das Patchkit-Verfahren nicht lösen konnte. Der frühe Arbeitstitel für das Projekt war „386BSD 0.5“ oder „386BSD Interim“ als Referenz darauf.
386BSD war das Betriebssystem von Bill Jolitz, welches bis zu diesem Zeitpunkt heftig unter fast einjähriger Vernachlässigung litt. Als das Patchkit mit jedem Tag anschwoll und unhandlicher wurde, entschied man sich, Bill Jolitz zu helfen, indem ein übergangsweise „bereinigter“ Abzug zur Verfügung gestellt wurde. Diese Pläne wurden durchkreuzt, als Bill Jolitz plötzlich seine Zustimmung zu diesem Projekt zurückzog, ohne einen Hinweis darauf, was stattdessen geschehen sollte.
Das Trio entschied, dass das Ziel sich weiterhin lohnen würde, selbst ohne die Unterstützung von Bill und so wurde entschieden, den Namen FreeBSD zu verwenden, der von David Greenman geprägt wurde. Die anfänglichen Ziele wurden festgelegt, nachdem man sich mit den momentanen Benutzern des Systems besprach und abzusehen war, dass das Projekt die Chance hatte, Realität zu werden, kontaktierte Jordan Walnut Creek CDROM mit dem Vorhaben, FreeBSDs Verteilung auch auf diejenigen auszuweiten, die noch keinen Internetzugang besaßen. Walnut Creek CDROM unterstützte nicht nur die Idee durch die Verbreitung von FreeBSD auf CD, sondern ging auch so weit dass es dem Projekt eine Maschine mit schneller Internetverbindung zur Verfügung stellte, um damit zu arbeiten. Ohne den von Walnut Creek bisher nie dagewesenen Grad von Vertrauen in ein, zur damaligen Zeit, komplett unbekanntes Projekt, wäre es unwahrscheinlich, dass FreeBSD so weit gekommen wäre, wie es heute ist.
Die erste auf CD-ROM (und netzweit) verfügbare Veröffentlichung war FreeBSD 1.0 im Dezember 1993. Diese basierte auf dem Band der 4.3BSD-Lite („Net/2“) der Universität von Kalifornien in Berkeley. Viele Teile stammten aus 386BSD und von der Free Software Foundation. Gemessen am ersten Angebot, war das ein ziemlicher Erfolg und Sie ließen dem das extrem erfolgreiche FreeBSD 1.1 im Mai 1994 folgen.
Zu dieser Zeit formierten sich unerwartete Gewitterwolken am Horizont, als Novell und die Universität von Kalifornien in Berkeley (UCB) ihren langen Rechtsstreit über den rechtlichen Status des Berkeley Net/2-Bandes mit einem Vergleich beilegten. Eine Bedingung dieser Einigung war es, dass die UCB große Teile des Net/2-Quellcodes als „belastet“ zugestehen musste, und dass diese Besitz von Novell sind, welches den Code selbst einige Zeit vorher von AT&T bezogen hatte. Im Gegenzug bekam die UCB den „Segen“ von Novell, dass sich das 4.4BSD-Lite-Release bei seiner endgültigen Veröffentlichung als unbelastet bezeichnen darf. Alle Net/2-Benutzer sollten auf das neue Release wechseln. Das betraf auch FreeBSD. Dem Projekt wurde eine Frist bis Ende Juli 1994 eingeräumt, das auf Net/2-basierende Produkt nicht mehr zu vertreiben. Unter den Bedingungen dieser Übereinkunft war es dem Projekt noch erlaubt ein letztes Release vor diesem festgesetzten Zeitpunkt herauszugeben. Das war FreeBSD 1.1.5.1.
FreeBSD machte sich dann an die beschwerliche Aufgabe, sich Stück für Stück aus einem neuen und ziemlich unvollständigen Satz von 4.4BSD-Lite-Teilen, wieder aufzubauen. Die „Lite“ -Veröffentlichungen waren deswegen leicht, weil Berkeleys CSRG große Code-Teile, die für ein start- und lauffähiges System gebraucht wurden, aufgrund diverser rechtlicher Anforderungen entfernen musste und weil die 4.4-Portierung für Intel-Rechner extrem unvollständig war. Das Projekt hat bis November 1994 gebraucht diesen Übergang zu vollziehen. Im Dezember wurde dann FreeBSD 2.0 veröffentlicht. Obwohl FreeBSD gerade die ersten Hürden genommen hatte, war dieses Release ein maßgeblicher Erfolg. Diesem folgte im Juni 1995 das robustere und einfacher zu installierende FreeBSD 2.0.5.
Seit dieser Zeit hat FreeBSD eine Reihe von Releases veröffentlicht, die jedes mal die Stabilität, Geschwindigkeit und Menge an verfügbaren Eigenschaften der vorherigen Version verbessert.
Momentan werden langfristige Entwicklungsprojekte im 10.X-CURRENT (Trunk)-Zweig durchgeführt, und Abzüge (Snapshots) der Releases von 10.X werden regelmässig auf den Snapshot-Servern zur Verfügung gestellt.
Das FreeBSD Projekt stellt Software her, die ohne Einschränkungen für beliebige Zwecke eingesetzt werden kann. Viele von uns haben beträchtlich in Quellcode und das Projekt investiert und hätten sicher nichts dagegen, hin und wieder ein wenig finanziellen Ausgleich dafür zu bekommen. Aber in keinem Fall bestehen wir darauf. Wir glauben unsere erste und wichtigste „Mission“ ist es, Software für jeden Interessierten und zu jedem Zweck zur Verfügung zu stellen, damit die Software größtmögliche Verbreitung erlangt und größtmöglichen Nutzen stiftet. Das ist, glaube ich, eines der grundlegenden Ziele freier Software, welche wir mit größter Begeisterung unterstützen.
Der Code in unserem Quellbaum, der unter die General Public License (GPL) oder die Library General Public License (LGPL) fällt, stellt geringfügig mehr Bedingungen. Das aber vielmehr im Sinne von eingefordertem Zugriff, als das übliche Gegenteil der Beschränkungen. Aufgrund zusätzlicher Abhängigkeiten, die sich durch die Verwendung von GPL-Software bei kommerziellem Gebrauch ergeben, bevorzugen wir daher Software unter der transparenteren BSD-Lizenz, wo immer es angebracht ist.
Die Entwicklung von FreeBSD ist ein offener und flexibler Prozess, der durch den Beitrag von buchstäblich tausenden Leuten rund um die Welt ermöglicht wird, wie an der Liste der Beitragenden ersehen können. Die vielen Entwickler können aufgrund der Entwicklungs-Infrastruktur von FreeBSD über das Internet zusammenarbeiten. Wir suchen ständig nach neuen Entwicklern, Ideen und jenen, die sich in das Projekt tiefer einbringen wollen. Nehmen Sie einfach auf der Mailingliste FreeBSD technical discussions Kontakt mit uns auf. Die Mailingliste FreeBSD announcements steht für wichtige Ankündigungen, die alle FreeBSD-Benutzer betreffen, zur Verfügung.
Unabhängig davon ob Sie alleine oder mit anderen eng zusammen arbeiten, enthält die folgende Aufstellung nützliche Informationen über das FreeBSD Projekt und dessen Entwicklungsabläufe.
Der Hauptquellbaum von FreeBSD wurde über viele Jahre
ausschließlich mit CVS
(Concurrent-Versions-System) gepflegt, einem frei
erhältlichen Versionskontrollsystem. Im Juni 2008
begann das FreeBSD Project mit dem Umstieg auf SVN
(Subversion). Dieser Schritt wurde notwendig, weil
durch technische Einschränkungen von
CVS aufgrund des rapide
wachsenden Quellcodebaumes und dem Umfang der bereits
gespeichterten Revisisionsinformationen an dessen
Grenzen zu stoßen begann. Die Repositories des
Dokumentationsprojekts und die Ports-Sammlung wurden
ebenfalls von CVS zu
SVN im Mai und Juli 2012
umgezogen. Lesen Sie dazu Synchronisation der
Quellen für weitere Informationen zur
Synchronisation des FreeBSD
src/
-Repositories
und Die Ports-Sammlung
verwenden für Details zum Beziehen der FreeBSD
Ports-Sammlung.
Die Committer
sind diejenigen Leute, welche
schreibenden Zugriff auf den
Subversion-Baum besitzen und berechtigt sind,
Änderungen an den FreeBSD-Quellen (der Begriff
„Committer“ stammt aus dem
Versionskontrollbefehl commit
, der
dazu verwendet wird, Änderungen in das Repository
zu bringen). Jeder hat die Möglichkeit über die
die
Datenbank für Problemberichte einen
Fehlerreport einzureichen. Bevor Sie einen Fehlerreport
einreichen, sollten Sie auf den FreeBSD Mailinglisten, den
IRC-Kanälen oder in Foren überprüfen, ob das Problem
tatsächlich ein Fehler ist.
Die FreeBSD core team ist mit dem Vorstand vergleichbar, wenn das FreeBSD Projekt ein Unternehmen wäre. Die Hauptaufgabe des Core Teams ist es sicherzustellen, dass sich das Projekt als Ganzes in einem guten Zustand befindet und sich in die richtige Richtung bewegt. Das Einladen von engagierten und verantwortungsvollen Entwicklern zu dem Zweck, sich der Gruppe von Committern anzuschliessen, ist eine der Funktionen des Core Teams, genauso wie neue Mitglieder des Core Teams zu rekrutieren, wenn andere ausscheiden. Das aktuelle Core Team wurde aus einer Menge von Kandidaten aus dem Kreis der Committer im Juni 2020 gewählt. Wahlen werden alle zwei Jahre abgehalten.
Wie die meisten Entwickler auch, sind die Mitglieder des Core Teams Freiwillige, wenn es um die Entwicklung von FreeBSD geht und erhalten keinerlei finanziellen Vorteil aus dem Projekt, deshalb sollte „Verpflichtung“ nicht fehlverstanden werden mit „garantierter Unterstützung“. Die „Vorstands“-Analogie oben ist nicht sehr akkurat und kann vielleicht besser damit umschrieben werden, dass diese Leute ihr Leben für FreeBSD gegen jedwede Vernunft geopfert haben.
Schliesslich stellt die grösste, aber nichtsdestotrotz wichtigste Gruppe von Entwicklern die der Benutzer selbst dar, die stetig Rückmeldungen und Fehlerbehebungen liefert. Der hauptsächliche Weg mit FreeBSDs nicht-zentralisierter Entwicklung Kontakt zu halten, ist, die FreeBSD technical discussions Mailingliste zu abonnieren, auf der solche Dinge diskutiert werden. Lesen Sie dazu Anhang C, Ressourcen im Internet für weitere Informationen über die verschiedenen FreeBSD-Mailinglisten.
Liste der Beitragenden ist eine, die lang ist und stetig wächst, also warum nicht FreeBSD beitreten und noch heute etwas zurückgeben?
Code ist nicht die einzige Art, zu dem Projekt etwas beizutragen. Für eine ausführlichere Liste von Dingen die getan werden müssen, lesen Sie auf der FreeBSD Projektwebseite.
Zusammenfassend ist unser Entwicklungsmodell als eine lose Menge von konzentrischen Kreisen organisiert. Das zentralisierte Modell ist mit der Praktikabilität der Anwender von FreeBSD entworfen worden, die mit der einfachen Art einhergeht, eine zentrale Basis für den Code zu haben und keine potentiellen Beiträge auszuschliessen! Unser Ansporn ist es, ein stabiles Betriebssystem mit einer grossen Menge von kohärenten Anwendungsprogrammen, welches die Benutzer einfach installieren und verwenden können - dieses Modell funktioniert darin sehr gut, dieses Ziel zu erreichen.
Alles was wir von denen verlangen, die uns als FreeBSD-Entwickler beitreten ist, etwas von der gleichen Hingabe an den Erfolg, die seine momentanen Gemeinschaft inne hat, zu besitzen.
Zusätzlich zur Basisdistribution bietet FreeBSD eine
Sammlung von portierter Software mit tausenden der am meisten
nachgefragten Programme an. Als diese Zeilen geschrieben
wurden, gab es über 24,000 Ports! Die Liste der Ports
reicht von HTTP-Servern, zu Spielen, Sprachen, Editoren und so
ziemlich alles, was dazwischen liegt. Die gesamte
Port-Sammlung ist geschätzt 500 MB gross. Um einen Port
zu übersetzen, wechseln Sie einfach in das Verzeichnis des
Programms, das sie installieren möchten und geben
make install
ein und das System erledigt
den Rest. Die gesamte Originaldistribution für jeden Port,
den Sie bauen wird dynamisch heruntergeladen, so dass sie nur
genügend Plattenplatz zum bauen des Ports, den sie haben
möchten, zur Verfügung stellen müssen. Fast jeder Port ist
auch als vorkompiliertes„Paket“, das über das
folgende einfache Kommando (pkg install
)
für diejenigen, die keine kompilierten Port aus den Quellen
wünschen. Weitere Informationen zu Ports und Paketen finden
Sie in Kapitel 4, Installieren von Anwendungen: Pakete und Ports.
Alle unterstützten FreeBSD Versionen bieten eine Option, um
zusätzliche Dokumentation unter
/usr/local/share/doc/freebsd
während des
initialen Systemsetups zu installieren. Dokumentation kann
auch zu einem späteren Zeitpunkt über Pakete installiert
werden, wie es Abschnitt 23.3.2, „Die Dokumentation aus den Ports aktualisieren“
beschreibt. Sie können ebenso die lokal installierten
Anleitungen mit jedem HTML-fähigen Browser lesen, indem Sie
die folgende URL verwenden:
Genauso erhalten Sie auch die Master (und am häufigsten
aktualisierten) Kopien von https://www.FreeBSD.org/
.
Es gibt verschiedene Möglichkeiten, FreeBSD zu installieren, abhängig von der Einsatzumgebung. Dazu gehören:
Abbilder von virtuellen Maschinen, die Sie herunterladen und in einer virtuellen Umgebung einsetzen können. Diese Abbilder können von der FreeBSD Downloadseite heruntergeladen werden. Es gibt Abbilder für KVM („qcow2“), VMWare („vmdk“), Hyper-V („vhd“), sowie Raw-Device Abbilder, die durchgängig unterstützt werden. Dies sind keine Installationsabbilder, sondern vorkonfigurierte („bereits installierte“) Instanzen, die sofort gestartet und konfiguriert werden können.
Abbilder von virtuellen Maschinen, die auf Amazon's AWS Marketplace, Microsoft Azure Marketplace und Google Cloud Platform verfügbar sind, um auf den jeweiligen Hosting-Diensten ausgeführt zu werden. Weitere Informationen zur Bereitstellung von FreeBSD auf Azure finden Sie im entsprechenden Kapitel der Azure Dokumentation.
SD-Karten Abbilder für eingebettete Systeme wie den Raspberry Pi oder BeagleBone Black. Diese Abbilder können von der FreeBSD Downloadseite heruntergeladen werden. Die Dateien müssen unkomprimiert und als Raw-Image auf eine SD-Karte geschrieben werden, von der das System dann booten wird.
Installationsabbilder, um FreeBSD auf einer Festplatte für die üblichen Desktop-, Laptop- oder Serversysteme zu installieren.
Der Rest dieses Kapitels beschreibt den vierten Fall und erklärt, wie man FreeBSD mit dem textbasierten Installationsprogramm bsdinstall installiert.
Die Installationsanweisungen in diesem Kapitel gelten für die i386™- und AMD64-Architekturen. Gegebenenfalls werden spezifische Anweisungen für andere Plattformen erwähnt. Möglicherweise gibt es auch geringfügige Unterschiede zwischen dem Installationsprogramm und dem, was hier gezeigt wird. Sie sollten dieses Kapitel daher als eine Art Wegweiser und nicht als exakte Anleitung betrachten.
Benutzer, die es vorziehen, FreeBSD mit einem graphischen Installationsprogramm zu installieren, sind vielleicht an FuryBSD, GhostBSD oder MidnightBSD interessiert.
Nachdem Sie dieses Kapitel gelesen haben, werden Sie wissen:
welche Mindestanforderungen an die Hardware gestellt werden und welche Architekturen FreeBSD unterstützt.
wie man FreeBSD Installationsmedien erstellt.
wie man bsdinstall startet.
welche Fragen bsdinstall stellt, was sie bedeuten und wie man diese beantwortet.
wie Sie Fehler bei der Installation beheben.
wie Sie eine Live-Version von FreeBSD ausprobieren können, bevor Sie die Installation starten.
Bevor Sie dieses Kapitel lesen, sollten Sie:
Die Liste von unterstützter Hardware lesen, die mit der zu installierenden Version von FreeBSD ausgeliefert wird, um sicherzustellen, dass die Hardware auch unterstützt wird.
Die Hardwareanforderungen zur Installation von FreeBSD variieren mit der Architektur. Hardwarearchitekturen und von FreeBSD unterstützte Geräte sind auf der Seite FreeBSD Release Informationen aufgelistet. Die FreeBSD Download Seite enthält Informationen zur Auswahl des richtigen Abbilds für verschiedene Architekturen.
Für die Installation von FreeBSD sind mindestens 96 MB RAM und 1.5 GB freier Festplattenspeicher erforderlich. Allerdings ist eine solch geringe Menge an Arbeitsspeicher und Speicherplatz nur für spezifische Anwendungen ausreichend, beispielsweise für Embedded-Geräte. Desktop-Systeme benötigen weitaus mehr Ressourcen. 2-4 GB RAM und mindestens 8 GB Speicherplatz sind ein guter Anfang.
Dies sind die Anforderungen an den Prozessor für jede Architektur:
Dies ist die gängigste Art von Prozessor für Desktop- und Laptop-Systeme. Andere Anbieter nennen diese Architektur auch x86-64.
Beispiele für amd64-kompatible Prozessoren umfassen: AMD Athlon™64, AMD Opteron™, multi-core Intel® Xeon™ und Intel® Core™ 2 sowie neuere Prozessoren.
Ältere Desktop- und Laptop-Systeme verwenden oft die 32-Bit x86-Architektur.
Fast alle i386-kompatiblen Prozessoren mit einer Floating-Point-Einheit werden unterstützt. Alle Intel®-Prozessoren 486 oder neuer werden unterstützt.
FreeBSD nutzt die Physical Adress Extensions (PAE), falls die CPU diese Funktion unterstützt. Wenn PAE im Kernel aktiviert ist, wird Speicher über 4 GB vom Kernel erkannt und kann von System verwendet werden. PAE schränkt allerdings auch die Gerätetreiber und anderen Komponenten von FreeBSD ein.
Alle New Word ROM Apple® Mac®-Systeme mit integriertem USB werden unterstützt. SMP wird auf Maschinen mit mehreren CPUs unterstützt.
Ein 32-Bit Kernel kann jedoch nur die ersten 2 GB RAM verwenden.
Systeme, die von FreeBSD/sparc64 unterstützt werden, sind auf der FreeBSD/sparc64-Projektseite aufgelistet.
SMP wird auf allen Systemen mit mehr als einem Prozessor unterstützt. Eine dedizierte Platte wird benötigt, da es nicht möglich ist, eine Platte mit einem anderen Betriebssystem zur gleichen Zeit zu teilen.
Wenn das System die Mindestanforderungen für die Installation von FreeBSD erfüllt, sollte die Installationsdatei heruntergeladen und die Installationsmedien vorbereitet werden. Bevor Sie dies tun, prüfen Sie mit Hilfe dieser Checkliste, ob das System für die Installation bereit ist:
Sichern Sie wichtige Daten
Erstellen Sie immer eine Sicherung aller wichtigen Daten, bevor Sie ein Betriebssystem installieren. Speichern Sie die Daten jedoch nicht auf dem System, auf dem das Betriebssystem installiert wird, sondern nutzen Sie einen Wechseldatenträger, wie beispielsweise ein USB-Laufwerk, oder sichern Sie auf einem anderen System im Netzwerk, oder nutzen einen Online-Backup-Dienst. Überprüfen Sie die Sicherungen, bevor Sie mit der Installation beginnen. Sobald das Installationsprogramm die Festplatte des Systems formatiert, gehen alle gespeicherten Daten unwiderruflich verloren.
Den Installationsort von FreeBSD festlegen
Falls FreeBSD das einzige installierte Betriebssystem sein wird, kann dieser Schritt übersprungen werden. Sollte FreeBSD allerdings die Platte mit anderen Betriebssystemen teilen, müssen Sie entscheiden, welche Platte oder Partition für FreeBSD verwendet werden soll.
Für die Architekturen i386 und amd64 können die Platten in mehrere Partitionen aufgeteilt werden. Dazu stehen Ihnen zwei Partitionsschemas zur Verfügung. Traditionell enthält ein Master Boot Record (MBR) eine Partitionstabelle, welche bis zu vier primäre Partitionen aufnehmen kann. Aus historischen Gründen werden diese primären Partitionen in FreeBSD slices genannt. Eine Begrenzung von nur vier Partitionen ist für große Platten sehr beschränkt, so dass eine dieser primären Partitionen als erweiterte Partition eingesetzt wird. Mehrere logische Partitionen können dann innerhalb der erweiterten Partition angelegt werden. Die GUID-Partitionstabelle (GPT) ist eine neuere und einfachere Methode zur Partition einer Festplatte. Geläufige GPT-Implementierungen erlauben bis zu 128 Partitionen pro Platte, was die Notwendigkeit von logischen Partitionen eliminiert.
FreeBSDs Standard-Bootloader benötigt entweder eine primäre oder eine GPT-Partition. Wenn alle primären oder GPT-Partitionen bereits in Verwendung sind, muss eine davon für FreeBSD zur Verfügung gestellt werden. Benutzen Sie ein Werkzeug zur Veränderung der Partitionsgrößen, wenn Sie eine Partition erstellen möchten, ohne dabei vorhandene Daten zu löschen. Den freigegebenen Platz können Sie dann für die Installation verwenden.
Eine Vielzahl freier und kommerzieller Werkzeuge zur Veränderung der Partitionsgrößen finden Sie unter http://en.wikipedia.org/wiki/List_of_disk_partitioning_software. GParted Live (http://gparted.sourceforge.net/livecd.php) ist eine freie Live-CD, die den GParted-Partitionseditor enthält. GParted ist auch in einer Vielzahl von anderen Linux Live-CD Distributionen enthalten.
Bei richtiger Anwendung können Werkzeuge zur Veränderung von Partitionsgrößen auf sichere Art und Weise Platz für eine neue Partition schaffen. Erstellen Sie trotzdem eine Vollsicherung und überprüfen Sie deren Integrität bevor Sie die Partitionen auf der Platte verändern.
Festplattenpartitionen, die unterschiedliche Betriebssysteme enthalten, ermöglichen es, jeweils eines dieser Systeme zu verwenden. Eine alternative Möglichkeit, mehrere Betriebssysteme gleichzeitig einzusetzen, ohne dabei Partitionen ändern zu müssen, wird im Kapitel 21, Virtualisierung behandelt.
Netzwerkparameter ermitteln
Manche FreeBSD Installationsarten benötigen eine Netzwerkverbindung, um Installationsdateien herunter zu laden. Nach jeder Installation bietet das Installationsprogramm die Möglichkeit, die Netzwerkschnittstellen des Systems zu konfigurieren.
Steht im Netzwerk ein DHCP-Server zur Verfügung, wird dieser im Allgemeinen verwendet, um automatisch Netzwerkeinstellungen vorzunehmen. Falls DHCP nicht verfügbar ist, müssen die folgenden Netzwerkeinstellungen beim lokalen Netzwerkadministrator oder Provider erfragt werden:
Lesen Sie die FreeBSD-Errata
Obwohl das FreeBSD Projekt sich bemüht, jede veröffentlichte Version von FreeBSD so stabil wie möglich zu machen, können sich doch gelegentlich Fehler in den Veröffentlichungsprozess einschleichen. In sehr seltenen Fällen betreffen diese Fehler den Installationsvorgang. Wenn diese Probleme entdeckt und behoben sind, werden dazu Hinweise in der FreeBSD Errata ( https://www.freebsd.org/releases/12.1R/errata.html) auf der FreeBSD Webseite veröffentlicht. Prüfen Sie die Errata vor der Installation, um sicherzustellen, dass es keine Probleme gibt, welche die Installation betreffen.
Informationen und Errata für all diese Veröffentlichungen finden Sie unter den Release Informationen auf der FreeBSD Webseite ( https://www.freebsd.org/releases/index.html).
Das FreeBSD-Installationsprogramm ist keine Anwendung, das aus einem anderen Betriebssystem heraus gestartet werden kann. Laden Sie stattdessen eine Installationsdatei für FreeBSD herunter und brennen Sie den Dateityp auf einen entsprechenden Datenträger (CD, DVD, oder USB). Starten Sie dann das System mit diesem Datenträger.
Die FreeBSD-Installationsmedien sind unter
www.freebsd.org/where.html#download verfügbar. Der
Name der Installationsdatei enthält die Version von FreeBSD,
die Architektur sowie den Dateityp. Wenn Sie beispielsweise
FreeBSD 12.1 auf einem amd64-System von
DVD installieren wollen, laden Sie
FreeBSD-12.1-RELEASE-amd64-dvd1.iso
und
brennen Sie die Datei auf eine DVD.
Starten Sie dann das System mit dieser
DVD.
Die Installationsdateien stehen in verschiedenen Formaten zur Verfügung und variieren je nach Rechnerarchitektur und Medientyp.
Für Rechner,
die mit UEFI (Unified Extensible Firmware
Interface) booten, stehen zusätzliche Installationsdateien zur
Verfügung. Die Namen dieser Dateien enthalten die
Zeichenkette uefi
.
Dateitypen:
-bootonly.iso
: Dies ist die
kleinste Installation, die lediglich das
Installationsprogramm enthält. Hierzu ist während der
Installation eine funktionierende Internetverbindung
erforderlich, da das Installationsprogramm die benötigen
Dateien für die FreeBSD-Installation herunter laden muss.
Diese Datei sollte mit einem
CD-Brennprogramm auf
CD gebrannt werden.
-disc1.iso
: Diese Datei enthält
alle benötigten Dateien für eine FreeBSD-Installation, den
Quellcode und die Ports-Sammlung. Die Datei sollte mit
einem CD-Brennprogramm auf
CD gebrannt werden.
-dvd1.iso
: Diese Datei enthält alle
benötigen Dateien für eine FreeBSD-Installation, den
Quellcode und die Ports-Sammlung. Darüber hinaus enthält
sie eine Reihe von beliebten Binärpaketen zur Installation
eines Window-Managers, sodass Sie ein komplettes System
installieren können, ohne dass Sie eine Verbindung zum
Internet benötigen. Die Datei sollte mit einem
DVD-Brennprogramm auf eine
DVD gebrannt werden.
-memstick.img
: Diese Datei enthält
alle benötigten Dateien für eine FreeBSD-Installation, den
Quellcode und die Ports-Sammlung. Die Datei sollte mit
den nachstehenden Anweisungen auf einen
USB-Stick geschrieben werden.
-mini-memstick.img
: Diese Datei
enthält, wie -bootonly.iso
, keine
Installationsdateien, sondern lädt diese bei Bedarf nach.
Während der Installation wird eine funktionierende
Internetverbindung benötigt. Schreiben Sie die Datei, wie
in Abschnitt 2.3.1.1, „Eine Installationsdatei auf einen
USB-Stick schreiben“ beschrieben, auf einen
USB-Stick.
Nachdem Sie die Datei heruntergeladen haben, laden Sie
CHECKSUM.SHA256
aus dem gleichen
Verzeichnis herunter. Berechnen Sie dann die
Prüfsumme für die Datei. FreeBSD bietet
hierfür sha256(1), das Sie als
sha256
aufrufen
können. Andere Betriebssysteme haben ähnliche
Programme.Dateiname
Vergleichen Sie die berechnete Prüfsumme mit der in
CHECKSUM.SHA256
. Die beiden Prüfsummen
müssen übereinstimmen, ansonsten ist die Datei beschädigt und
muss erneut heruntergeladen werden.
Die *.img
-Datei ist ein komplettes
Abbild (engl. Image) des späteren
USB-Sticks. Die Datei kann
nicht auf das Zielgerät kopiert
werden. Es existieren jedoch mehrere Programme, mit denen
die *.img
-Datei auf einen
USB-Stick geschrieben werden kann. In
diesem Abschnitt werden zwei dieser Programme
vorgestellt.
Bevor Sie fortfahren, machen Sie Sicherungskopien der Daten auf dem USB-Stick. Diese Prozedur wird alle Daten auf dem Stick löschen.
dd
auf einen
USB-Stick schreibenDieses Beispiel verwendet
/dev/da0
als das Zielgerät, auf
welches das Image geschrieben werden soll. Seien Sie
sehr vorsichtig, dass das richtige
Gerät benutzt wird, da das Kommando alle vorhandenen
Daten auf dem Zielgerät zerstört.
Das Werkzeug dd(1) steht unter BSD, Linux® und Mac OS®-Systemen zur Verfügung. Um das Image zu brennen, verbinden Sie den USB-Stick mit dem System und bestimmen Sie dessen Gerätenamen. Geben Sie dann den Namen der Installationsdatei und den Gerätenamen des USB-Sticks an. Dieses Beispiel schreibt die Installation für amd64 auf das erste USB-Gerät im FreeBSD-System.
#
dd if=
FreeBSD-12.1-RELEASE-amd64-memstick.img
of=/dev/da0
bs=1M conv=sync
Wenn dieser Befehl fehlschlägt, stellen Sie sicher,
dass der USB-Stick nicht eingehangen
ist und prüfen Sie den Gerätenamen. Auf einigen
Systemen muss der Befehl vielleicht mit Hilfe von
sudo(8) ausgeführt werden. Die Syntax von
dd(1) variiert leicht zwischen verschiedenen
Plattformen. Zum Beispiel erfordert Mac OS® ein
kleingeschriebenes bs=1m
. Einige Systeme wie
Linux® verwenden vielleicht einen Puffer. Verwenden
Sie dann sync(8), um die Daten zu schreiben.
Versichern Sie sich, dass Sie den korrekten Laufwerksbuchstaben angeben, da die bestehenden Daten des Laufwerks überschrieben und zerstört werden.
Image Writer für Windows® herunterladen
Image Writer für
Windows® ist eine frei verfügbare
Anwendung, welche eine Imagedatei korrekt auf einen
USB-Stick schreiben kann. Laden Sie
diese von
https://sourceforge.net/projects/win32diskimager/
herunter und entpacken Sie sie in ein
Verzeichnis.
Das Image mit Image Writer auf den USB-Stick schreiben
Klicken Sie doppelt auf das
Win32DiskImager-Icon, um
das Programm zu starten. Prüfen Sie dabei, dass der
Laufwerksbuchstabe unter
Device
dem Gerät
entspricht, in dem sich der USB-Stick
befindet. Klicken Sie auf das Ordnersymbol und wählen
Sie das Image aus, welches auf den
USB-Stick geschrieben werden soll.
Um den Image-Dateinamen zu akzeptieren, klicken Sie auf
. Überprüfen
Sie erneut, ob alles stimmt und dass keine Ordner auf
dem USB-Stick in anderen Fenstern
geöffnet sind. Sobald alles bereit ist, klicken Sie
auf , um die
Imagedatei auf den USB-Stick zu
schreiben.
Sie sind jetzt dazu bereit, mit der Installation von FreeBSD zu beginnen.
Es werden bei Installation so lange keine Änderungen an den Festplatten durchgeführt, bis die folgende Meldung erscheint:
Your changes will now be written to disk. If you have chosen to overwrite existing data, it will be PERMANENTLY ERASED. Are you sure you want to commit your changes?
Die Installation kann vor dieser Warnung zu jeder Zeit abgebrochen werden. Falls Zweifel bestehen, dass etwas falsch konfiguriert wurde, schalten Sie einfach den Computer vor diesem Punkt aus und es werden keine Änderungen an der Festplatte vorgenommen.
Dieser Abschnitt beschreibt, wie das System vom Installationsmedium, das nach den Anweisungen in Abschnitt 2.3.1, „Die Installationsmedien vorbereiten“ erstellt wurde, gebootet wird. Wenn Sie einen bootfähigen USB-Stick einsetzen, verbinden Sie diesen mit dem System, bevor Sie den Computer einschalten. Falls die Installation von einer CD startet, müssen Sie den Computer einschalten und die CD so bald wie möglich einlegen. Wie das System konfiguriert werden muss, um von dem verwendeten Installationsmedium zu booten, hängt von der Architektur ab.
Diese Architekturen beinhalten ein BIOS-Menü zur Auswahl des Boot-Gerätes. Abhängig von dem verwendeten Installationsmedium können Sie CD/DVD oder USB als erstes Boot-Gerät auswählen. Die meisten Systeme erlauben es auch, das Boot-Gerät während des Startvorgangs zu wählen, typischerweise durch drücken von F10, F11, F12 oder Esc.
Falls der Computer wie normal startet und das bestehende Betriebssystem lädt, befolgen Sie einen der hier aufgeführten Schritte:
Das Installationsmedium wurde während des Startvorgangs nicht früh genug eingelegt. Lassen Sie das Medium eingelegt und versuchen Sie, den Rechner neu zu starten.
Die Änderungen am BIOS waren nicht richtig oder wurden nicht gespeichert. Überprüfen Sie, dass das richtige Boot-Gerät als erstes Boot-Gerät ausgewählt ist.
Das verwendete System ist zu alt und unterstützt das starten vom gewählten Medium nicht. In diesem Fall kann der Plop Boot Manager (http://www.plop.at/de/bootmanagers.html) verwendet werden, um ältere Computer von CD oder USB-Medien zu starten.
Auf den meisten Maschinen können Sie C
auf der Tastatur gedrückt halten, um von der
CD zu starten. Andernfalls, halten Sie
Command+Option+O+F, oder
Windows+Alt+O+F
auf nicht-Apple® Tastaturen gedrückt. Geben Sie an der
0 >
-Eingabeaufforderung folgendes
ein:
boot cd:,\ppc\loader cd:0
Wenn das System vom Installationsmedium gestartet wird, erscheint folgendes Menü auf dem Bildschirm:
In der Voreinstellung wird das Menü zehn Sekunden auf Benutzereingaben warten, bevor das Installationsprogramm gestartet wird. Drücken Sie die Leertaste, um den Timer anzuhalten. Um eine Option auszuwählen, drücken Sie die entsprechende Nummer bzw. Buchstaben. Die folgenden Optionen stehen zur Verfügung.
Boot Multi User
: Dies wird den
Boot-Prozess von FreeBSD fortsetzen. Wenn der Timer
angehalten wurde, drücken Sie entweder die
1, B, oder
Enter.
Boot Single User
: Dieser Modus kann
verwendet werden, um eine bestehende FreeBSD-Installation zu
reparieren. Dies wird in Abschnitt 12.2.4.1, „Der Single-User Modus“ beschrieben. Drücken Sie
die 2 oder S um in
diesen Modus zu gelangen.
Escape to loader prompt
: Dieser
Modus startet einen Prompt, welcher nur eine begrenzte
Anzahl an Low-Level-Befehlen enthält. Dies wird in
Abschnitt 12.2.3, „Phase Drei“ beschrieben. Drücken Sie
die 3 oder Esc um in
diesen Modus zu gelangen.
Reboot
: Startet das System
neu.
Kernel
: Lädt einen anderen
Kernel.
Configure Boot Options
: Öffnet das
Menü, welches in Abbildung 2.2, „FreeBSD Boot-Optionen Menü“ beschrieben
ist.
Das Boot-Optionen Menü ist in zwei Abschnitte unterteilt. Der erste Abschnitt wird verwendet, um zurück zum Hauptmenü zu gelangen, oder um Optionen zurück auf die Standardwerte zu setzen.
Im zweiten Abschnitt können verschiedene Optionen auf
On
oder Off
gesetzt
werden. Das System wird bei einem Neustart immer mit den
Einstellungen für diese Optionen booten:
ACPI Support
: Wenn das System
während des Bootens hängt, setzen Sie diese Option auf
Off
.
Safe Mode
: Wenn das System trotz
deaktiviertem ACPI Support
immer noch
hängt, setzen Sie diese Option auf
On
.
Single User
: Setzen Sie die Option
auf On
, um eine bestehende
FreeBSD-Installation zu reparieren. Dieser Prozess wird in
Abschnitt 12.2.4.1, „Der Single-User Modus“ beschrieben. Sobald das
Problem behoben ist, setzen Sie die Option wieder auf
Off
.
Verbose
: Wenn Sie während des
Bootens ausführliche Meldungen sehen möchten, zum Beispiel
für die Fehlersuche bei Hardwareproblemen, setzen Sie
diese Option auf On
.
Nachdem Sie die benötigten Auswahlen getroffen haben, drücken Sie die 1 oder die Rücktaste, um zum Hauptmenü zurückzukehren. Drücken Sie dann Enter um den FreeBSD Bootprozess fortzusetzen. Eine Reihe von Boot-Meldungen werden nun im Rahmen der Geräteerkennung von FreeBSD angezeigt. Sobald dieser Prozess abgeschlossen ist, erscheint das Menü aus Abbildung 2.3, „Willkommen-Menü“.
Wählen Sie hier Enter, um in das Installationsprogramm zu gelangen. Der Rest dieses Kapitels beschreibt das Installationsprogramm. Andernfalls verwenden Sie die Pfeiltasten um einen anderen Menüpunkt auszuwählen. kann verwendet werden, um eine Shell zu starten und Zugriff auf die Kommandozeilenprogramme zu erhalten, damit beispielsweise die Platten vor der Installation vorbereitet werden können. kann verwendet werden um FreeBSD vor der Installation auszuprobieren. Die Live-Version wird in Abschnitt 2.11, „Verwendung der Live-CD“ beschrieben.
und drücken SieUm sich die Boot-Meldungen und die Ergebnisse der
Geräteerkennung erneut anzeigen zu lassen, drücken Sie
S gefolgt von Enter.
Dadurch wird eine Shell gestartet, in der Sie die
Ereignisse seitenweise mit
more /var/run/dmesg.boot
lesen können.
Geben Sie exit
ein, um zum
Willkommen-Menü zurückzukehren.
Dieser Abschnitt zeigt die Reihenfolge der Menüs von bsdinstall sowie die Informationen, die während der Installation abgefragt werden. Benutzen Sie die Pfeiltasten zur Navigation und die Leertaste, um einen Menüpunkt zu aktivieren oder zu deaktivieren. Wenn Sie fertig sind, drücken Sie Enter, um die Auswahl zu speichern und zum nächsten Bildschirm zu gelangen.
Bevor die Installation gestartet wird, lädt bsdinstall die Tastaturbelegung, wie in Abbildung 2.4, „Laden der Tastaturbelegung“ gezeigt.
Nachdem die Tastaturbelegung geladen wurde, zeigt bsdinstall das Menü aus Abbildung 2.5, „Bildschirm zur Auswahl der Tastaturbelegung“ an. Wählen Sie die Tastenbelegung, die der am System angeschlossenen Tastatur am nächsten kommt, indem Sie die Pfeiltasten Hoch/Runter verwenden und anschließend Enter drücken.
Durch drücken von Esc wird das Menü verlassen und die Standardbelegung eingestellt. ist eine sichere Option, falls Sie sich unsicher sind, welche Auswahl Sie treffen sollen.
Das nächste bsdinstall-Menü konfiguriert den Rechnernamen, der für das neu zu installierende System verwendet werden soll.
Geben Sie einen für das Netzwerk eindeutigen Rechnernamen
an. Der eingegebene Rechnername sollte ein
voll-qualifizierter Rechnername sein, so wie z.B. machine3.example.com
.
Im nächsten Schritt fragt Sie bsdinstall, die optionalen Komponenten für die Installation auszuwählen.
Die Entscheidung, welche Komponenten auszuwählen sind, hängt größtenteils davon ab, für was das System künftig eingesetzt werden soll und der zur Verfügung stehende Plattenplatz. Der FreeBSD-Kernel und die Systemprogramme (zusammengenommen auch als Basissystem bezeichnet) werden immer installiert. Abhängig vom Typ der Installation, werden manche dieser Komponenten nicht erscheinen.
base-dbg
- Basiswerkzeuge wie
cat,
ls und vielte weitere mit
aktiviertem Debugging.
kernel-dbg
- Kernel und Module mit
aktiviertem Debugging.
lib32-dbg
-
Kompatibilitäts-Bibliotheken mit aktiviertem Debugging,
für die Ausführung von 32-bit-Anwendungen auf einer
64-bit-Version von FreeBSD.
lib32
-
Kompatibilitäts-Bibliotheken, um 32-bit-Anwendungen auf
der 64-bit Version von FreeBSD laufen zu lassen.
ports
- Die FreeBSD
Ports-Sammlung ist eine Sammlung von Dateien, die das
herunterladen, erstellen und installieren von
Drittanbietersoftware automatisiert.
Kapitel 4, Installieren von Anwendungen: Pakete und Ports behandelt die Verwendung der
Ports-Sammlung.
Das Installationsprogramm prüft nicht, ob genügend Plattenplatz zur Verfügung steht. Wählen Sie diese Option nur, wenn die Festplatte über ausreichend Speicher verfügt. Die Ports-Sammlung nimmt etwa 500 MB Plattenplatz ein.
src
- Der vollständige FreeBSD
Quellcode für den Kernel und die Systemprogramme. Obwohl
dies für die meisten Anwendungen nicht benötigt wird, kann
es doch für manche Gerätetreiber, Kernelmodule und einigen
Anwendungen aus der Ports-Sammlung erforderlich sein. Der
Quellcode wird auch benötigt um an FreeBSD selbst
mitzuentwickeln. Der komplette Quellcodebaum benötigt
1 GB Plattenplatz und um das gesamte Betriebssystem
neu zu erstellen, werden zusätzliche 5 GB Platz
benötigt.
tests
- FreeBSD Test-Suite.
Das Menü in Abbildung 2.9, „Installation über das Netzwerk“ erscheint nur bei
der Installation von einer
-bootonly.iso
-CD, da
dieses Installationsmedium keine Kopien der
Installationsdateien enthält. Da die Installationsdateien
über eine Netzwerkverbindung abgerufen werden müssen, weist
dieses Menü darauf hin, dass zunächst die
Netzwerkschnittstelle konfiguriert werden muss. Falls dieses
Menü während der Installation angezeigt wird, befolgen Sie die
Anweisungen in Abschnitt 2.9.1, „Die Netzwerkschnittstelle konfigurieren“.
Im nächsten Menü wird die Methode bestimmt, um den Plattenplatz zuzuweisen.
bsdinstall bietet dem Benutzer vier Methoden zur Zuweisung von Plattenplatz:
Auto (UFS)
richtet die Partitionen
automatisch mit dem UFS
-Dateisystems
ein.
Manual
ermöglicht es
fortgeschrittenen Benutzern, angepasste Partitionen über
Menüoptionen zu erstellen.
Shell
öffnet eine
Eingabeaufforderung, in der fortgeschrittene Benutzer
angepasste Partitionen mit Werkzeugen wie gpart(8),
fdisk(8) und bsdlabel(8) erstellen können.
Auto (ZFS)
erzeugt ein
root-on-ZFS-System mit
optionaler GELI-Verschlüsselung für
Boot Environments.
Dieser Abschnitt beschreibt, was bei der Partitionierung der Platten zu beachten ist und wie die einzelnen Methoden zur Partitionierung angewendet werden.
Wenn Sie Dateisysteme anlegen, sollten Sie beachten, dass
Festplatten auf Daten in den äußeren Spuren schneller
zugreifen können als auf Daten in den inneren Spuren. Daher
sollten die kleineren und oft benutzten Dateisysteme an den
äußeren Rand der Platte gelegt werden. Die größeren
Partitionen wie /usr
sollten in die
inneren Bereiche gelegt werden. Es empfiehlt sich, die
Partitionen in folgender Reihenfolge anzulegen:
/
, swap, /var
und
/usr
.
Die Größe der /var
-Partition ist
abhängig vom Zweck der Maschine. Diese
Partition enthält hauptsächlich Postfächer, Logdateien und
Druckwarteschlangen. Abhängig von der Anzahl an
Systembenutzern und der Aufbewahrungszeit für Logdateien,
können Postfächer und Logdateien unerwartete Größen annehmen.
Die meisten Benutzer benötigen nur selten mehr als ein
Gigabyte für /var
.
Ein paar Mal wird es vorkommen, dass viel
Festplattenspeicher in /var/tmp
benötigt wird. Wenn neue Software mit pkg_add(1)
installiert wird, extrahieren die Paketwerkzeuge eine
vorübergehende Kopie der Pakete unter
/var/tmp
. Die Installation großer
Softwarepakete wie Firefox oder
LibreOffice kann sich wegen zu
wenig Speicherplatz in /var/tmp
als
trickreich herausstellen.
Die /usr
Partition enthält viele
der Hauptbestandteile des Systems, einschließlich der FreeBSD
Ports-Sammlung und den Quellcode des Systems. Für diese
Partition werden mindestens zwei Gigabyte empfohlen.
Behalten Sie bei der Auswahl der Partitionsgrößen den Platzbedarf im Auge. Wenn Sie den Platz auf einer Partition vollständig aufgebraucht haben, eine andere Partition aber kaum benutzen, kann die Handhabung des Systems schwierig werden.
Als Daumenregel sollten Sie doppelt soviel Speicher für die Swap-Partition vorsehen, als Sie Hauptspeicher haben, da die VM-Paging-Algorithmen im Kernel so eingestellt sind, dass sie am besten laufen, wenn die Swap-Partition mindestens doppelt so groß wie der Hauptspeicher ist. Zu wenig Swap kann zu einer Leistungsverminderung im VM page scanning Code führen, sowie Probleme verursachen, wenn später mehr Speicher in die Maschine eingebaut wird.
Auf größeren Systemen mit mehreren SCSI-, oder IDE-Laufwerken an unterschiedlichen Controllern, wird empfohlen, Swap-Bereiche auf bis zu vier Laufwerken einzurichten. Diese Swap-Partitionen sollten ungefähr dieselbe Größe haben. Der Kernel kann zwar mit beliebigen Größen umgehen, aber die internen Datenstrukturen skalieren bis zur vierfachen Größe der größten Partition. Ungefähr gleich große Swap-Partitionen erlauben es dem Kernel, den Swap-Bereich optimal über die Laufwerke zu verteilen. Große Swap-Bereiche, auch wenn sie nicht oft gebraucht werden, sind nützlich, da sich ein speicherfressendes Programm unter Umständen auch ohne einen Neustart des Systems beenden lässt.
Indem Sie ein System richtig partitionieren, verhindern
Sie, dass eine Fragmentierung in den häufig beschriebenen
Partitionen auf die meist nur gelesenen Partitionen
übergreift. Wenn Sie die häufig beschriebenen Partitionen an
den Rand der Platte legen, dann wird die
I/O-Leistung dieser Partitionen steigen.
Die I/O-Leistung ist
natürlich auch für große Partitionen wichtig, doch erzielen
Sie eine größere Leistungssteigerung, wenn Sie
/var
an den Rand der Platte legen.
Bei dieser Methode wird ein Menü die verfügbaren Platten anzeigen. Sollten mehrere Platten angeschlossen sein, wählen Sie diejenige aus, auf der FreeBSD installiert werden soll.
Nachdem Sie die Platte ausgewählt haben, fordert das nächste Menü dazu auf, entweder die gesamte Festplatte für die Installation zu nutzen oder eine Partition aus unbenutzten Speicherplatz zu erstellen. Ein allgemeines Partitionslayout, das die gesamte Platte einnimmt wird erstellt, wenn
ausgewählt wird. Durch die Wahl von wird ein Partitionslayout aus dem unbenutzten Speicherplatz der Platte erstellt.Wenn bsdinstall darauf hin, dass die Festplatte gelöscht wird.
gewählt wurde, weistDas nächste Menü zeigt eine Liste der verfügbaren Partitionsschemas. GPT ist ist normalerweise die geeignetste Wahl für amd64-Rechner. Ältere Rechner, die nicht mit GPT kompatibel sind, sollten MBR benutzen. Die anderen Partitionsschemas werden im Allgemeinen für ungewöhnliche oder ältere Rechner benutzt. Weitere Informationen finden Sie in Tabelle 2.1, „Partitionierungsschemas“.
Nachdem das Partitionslayout nun erstellt wurde, sollten Sie es überprüfen, um sicherzustellen, dass es die Bedürfnisse der Installation erfüllt. Durch die Auswahl von
können die Partitionen wieder auf den ursprünglichen Wert zurückgesetzt werden und durch werden die automatischen FreeBSD Partitionen wiederhergestellt. Partitionen können auch manuell erstellt, geändert oder gelöscht werden. Sollte die Partitionierung richtig sein, wählen Sie aus, um mit der Installation fortzufahren.Sobald die Festplatten konfiguriert sind, bietet das nächste Menü die letzte Möglichkeit, Änderungen vorzunehmen, bevor die ausgewählten Laufwerke formatiert werden. Wenn Änderungen vorgenommen werden müssen, wählen Sie
, um zum Hauptmenü zurückzukehren. Mit wird das Installationsprogramm beendet, ohne Änderungen am Laufwerk vorzunehmen. Wählen Sie , um die Installation zu starten.Um mit der Installation fortzufahren, gehen Sie zu Abschnitt 2.7, „Abrufen der Distributionen“.
Diese Methode öffnet den Partitionseditor:
Durch hervorheben einer Platte (in diesem Fall
ada0
) und die Auswahl von
, wird ein Menü mit
den verfügbaren Partitionierungsschemas angezeigt.
GPT ist normalerweise die beste Wahl für amd64-Computer. Ältere Computer, die nicht mit GPT kompatibel sind, sollten MBR verwenden. Die anderen Partitionsschemas werden für gewöhnlich für ältere Computersysteme benutzt.
Abkürzung | Beschreibung |
---|---|
APM | Apple Partition Map, verwendet von PowerPC®. |
BSD | BSD-Labels ohne einen MBR, manchmal auch „dangerously dedicated mode“ genannt, da nicht-BSD Festplatten-Werkzeuge dies vielleicht nicht erkennen können. |
GPT | GUID Partition Table ( http://en.wikipedia.org/wiki/GUID_Partition_Table). |
MBR | Master Boot Record ( http://en.wikipedia.org/wiki/Master_boot_record). |
VTOC8 | Volume Table Of Contents, von Sun SPARC64 und UltraSPARC Computern verwendet. |
Nachdem das Partitionierungsschema ausgewählt und erstellt wurde, werden durch erneute Auswahl von Tab-Taste können Sie den Cursor zwischen den Feldern bewegen.
die Partitionen erzeugt. Mit derEine FreeBSD-Standardinstallation mit GPT legt mindestens die folgenden drei Partitionen an:
freebsd-boot
- Enthält den
FreeBSD-Bootcode.
freebsd-ufs
- Ein FreeBSD
UFS-Dateisystem.
freebsd-zfs
- Ein FreeBSD
ZFS-Dateisystem. Weitere Informationen
finden Sie in Kapitel 19, Das Z-Dateisystem (ZFS).
freebsd-swap
- FreeBSD
Auslagerungsbereich (swap space).
Die einzelnen GPT-Partitionstypen sind in gpart(8) dokumentiert.
Es können mehrere Dateisystempartitionen erzeugt werden
und manche Leute ziehen es vor, ein traditionelles Layout mit
getrennten Partitionen für die Dateisysteme
/
, /var
,
/tmp
und /usr
zu
erstellen. Lesen Sie dazu Beispiel 2.1, „Ein traditionelles, partitioniertes Dateisystem
erstellen“, um ein Beispiel
zu erhalten.
Größenangaben (Size
) können mit
gängigen Abkürzungen eingegeben werden: K
für Kilobytes, M für Megabytes oder
G für Gigabytes.
Korrekte Sektorausrichtung ermöglicht größtmögliche Geschwindigkeit und das Anlegen von Partitionsgrößen als vielfaches von 4K-Bytes hilft, die passende Ausrichtung auf Platten mit entweder 512-Bytes oder 4K-Bytes Sektorgrößen, festzulegen. Generell sollte die Verwendung von Partitionsgrößen, die sogar vielfache von 1M oder 1G sind, den einfachsten Weg darstellen, um sicher zu stellen, dass jede Partition an einem vielfachen von 4K beginnt. Eine Ausnahme gibt es: momentan sollte die freebsd-boot-Partition aufgrund von Beschränkungen im Bootcode nicht größer sein als 512K.
Ein Einhägepunkt (Mountpoint
) wird
benötigt, falls diese Partition ein Dateisystem enthält.
Falls nur eine einzelne UFS-Partition
erstellt wird, sollte der Einhängepunkt
/
lauten.
Ein label
ist ein Name, durch den diese
Partition angesprochen wird. Festplattennamen oder -nummern
können sich ändern, falls die Platte einmal an einem anderen
Controller oder Port angeschlossen sein sollte, doch das
Partitionslabel ändert sich dadurch nicht. Anstatt auf
Plattennamen und Partitionsnummern in Dateien wie
/etc/fstab
zu verweisen, sorgen Labels
dafür, dass das System Hardwareänderungen eher toleriert.
GPT-Labels erscheinen in
/dev/gpt/
, wenn eine Platte angeschlossen
wird. Andere Partitionierungsschemas besitzen
unterschiedliche Fähigkeiten, Labels zu verwenden und diese
erscheinen in anderen
/dev/
-Verzeichnissen.
Vergeben Sie ein einzigartiges Label für jede Partition,
um Konflikte mit identischen Labels zu
verhindern. Ein paar Buchstaben des Computernamens, dessen
Verwendungszweck oder Ortes kann dem Label hinzugefügt
werden. Beispielsweise labroot
oder
rootfslab
für die UFS
Root-Partition auf einem Laborrechner namens
lab
.
Für ein traditionelles Partitionslayout, in dem sich
/
, /var
,
/tmp
und /usr
in
getrennten Partitionen befinden sollen, erstellen Sie ein
GPT-Partitionsschema und anschließend
die Partitionen selbst. Die gezeigten Partitionsgrößen
sind typisch für eine Festplatte von 20 G. Falls mehr
Platz verfügbar ist, sind größere Swap oder
/var
-Partitionen nützlich. Den hier
gezeigten Beschreibungen sind bsp
für
„Beispiel“ vorangestellt, jedoch sollten Sie
andere, einzigartige Beschreibungen verwenden, wie oben
beschrieben.
Standardmäßig erwartet FreeBSDs
gptboot
, dass die erste
UFS-Partition die
/
-Partition ist.
Partitionstyp | Grösse | Eingehängt als | Beschreibung |
---|---|---|---|
freebsd-boot | 512K | ||
freebsd-ufs | 2G | / | bsprootfs |
freebsd-swap | 4G | bspswap | |
freebsd-ufs | 2G | /var | bspvarfs |
freebsd-ufs | 1G | /tmp | bsptmpfs |
freebsd-ufs | Akzeptieren Sie die Standardeinstellungen (Rest der Platte) | /usr | bspusrfs |
Nachdem die Partitionen erzeugt wurden, wählen Sie Abschnitt 2.7, „Abrufen der Distributionen“ fortzusetzen.
, um die Installation mitDieser Modus funktioniert nur mit ganzen Laufwerken und wird alle vorhandenen Daten auf der Platte löschen. Das Konfigurationsmenü für ZFS bietet einige Optionen, um die Erstellung des Pools zu beeinflussen.
Hier eine Zusammenfassung der Optionen, die in diesem Menü benutzt werden können:
Install
- Setzt die Installation
mit den ausgewählten Optionen fort.
Pool Type/Disks
- Erlaubt die
Konfiguration des Pool Type
und der
Festplatte(n), die den Pool bilden werden. Das
ZFS-Installationsprogramm
unterstützt derzeit nur die Erstellung eines einzelnen
Top-Level-Vdev, außer im Stripe-Modus. Um komplexere
Pools zu erstellen, folgen Sie den Anweisungen in
Abschnitt 2.6.5, „Shell Partitionierung“, um den Pool
zu erstellen.
Rescan Devices
- Aktualisiert die
Liste der verfügbaren Festplatten.
Disk Info
- Dieses Menü wird
verwendet, um Datenträger zu inspizieren, einschließlich
ihrer Partitionstabelle und weitere Informationen wie die
Modell- und Seriennummer des Geräts.
Pool Name
- Legt den Namen des
Pools fest. Der Standard ist
zroot.
Force 4K Sectors?
- Erzwingt die
Verwendung von 4K-Sektoren. Im Standard erstellt die
Installation automatisch Partitionen, die an 4K-Grenzen
ausgerichtet sind. Bei ZFS wird die Verwendung von
4K-Sektoren erzwungen. Dies ist selbst bei Festplatten
mit 512-Byte-Sektoren sicher und hat den zusätzlichen
Vorteil, dass Pools, die auf solchen Festplatten mit
erstellt werden, auch in Zukunft 4K-Sektoren haben können,
entweder als zusätzlicher Speicherplatz oder als Ersatz
für ausgefallene Platten. Drücken Sie
Enter, um die Verwendung von 4K-Sektoren
zu konfigurieren.
Encrypt Disks?
- Das Verschlüsseln
der Datenträger mit GELI. Weitere
Informationen zur Datenträgerverschlüsselung finden Sie in
Abschnitt 17.12.2, „Plattenverschlüsselung mit
geli
“. Drücken Sie
Enter um eine Auswahl zu treffen.
Partition Scheme
- Erlaubt die
Auswahl des Partitionsschemas. GPT ist
die empfohlene Option. Drücken Sie
Enter, um zwischen den verschiedenen
Optionen zu wählen.
Swap Size
- Legt die Größe des
Swap-Speichers fest.
Mirror Swap?
- Erlaubt es, den
Swap-Speicher zwischen den Platten zu spiegeln. Beachten
Sie jedoch, dass die Aktivierung dazu führt, dass
Crash Dumps nicht mehr
funktionieren. Drücken Sie Enter, um
diese Option zu aktivieren/deaktivieren.
Encrypt Swap?
- Erlaubt es, den
Swap-Speicher zu verschlüsseln. Der Swap-Speicher wird
bei jedem Systemstart mit einem temporären Schlüssel
verschlüsselt, der bei einem Neustart des Systems
verworfen wird. Drücken Sie Enter,
diese Option zu aktivieren/deaktivieren. Weitere
Informationen zur Verschlüsselung des Swap-Speichers
finden Sie in Abschnitt 17.13, „Den Auslagerungsspeicher verschlüsseln“.
Wählen Sie T um den Pool Typ und die Festplatte(n) zu konfigurieren, die den Pool bilden werden.
Hier eine Zusammenfassung der Pool-Typen, die in diesem Menü ausgewählt werden können:
stripe
-
Striping bietet maximalen
Speicherplatz für alle angeschlossenen Geräte, aber keine
Redundanz. Fällt eine Platte aus, sind die Daten im Pool
unwiderruflich verloren.
mirror
- Bei der Spiegelung wird
eine vollständige Kopie aller Daten auf jeder Platte
gespeichert. Die Spiegelung bietet eine gute Leistung
beim Lesen, da die Daten von allen Platten parallel
gelesen werden. Die Leistung beim Schreiben ist
langsamer, da die Daten auf alle Platten im Pool
geschrieben werden müssen. Hiermit können alle Platten
bis auf eine ausfallen. Diese Option erfordert mindestens
zwei Platten.
raid10
-
Striped Mirrors. Bieten die
beste Leistung, aber den geringsten Speicherplatz. Diese
Option erfordert mindestens eine gerade Anzahl von Platten
und mindestens vier Platten.
raidz1
- Einzelnes redundantes
RAID. Ermöglicht den Ausfall einer Platte. Für diese
Option sind mindestens drei Festplatten
erforderlich.
raidz2
- Doppeltes redundantes
RAID. Ermöglicht den Ausfall von zwei Platten. Für diese
Option sind mindestens vier Festplatten
erforderlich.
raidz3
- Dreifaches redundantes
RAID. Ermöglicht den Ausfall von drei Platten. Für diese
Option sind mindestens fünf Festplatten
erforderlich.
Sobald ein Pool-Typ (Pool Type
)
ausgewählt wurde, wird eine Liste der
verfügbaren Laufwerke angezeigt und der Benutzer wird
aufgefordert, eine oder mehrere Laufwerke für die Erstellung
des Pools auszuwählen. Anschließend wie die Konfiguration
geprüft um zu gewährleisten, dass genug Laufwerke ausgewählt
wurden. Wählen Sie
um zur Auswahl
der Laufwerke zurückzukehren, oder
um den
Pool Type
zu ändern.
Wenn eine oder mehrere Platten in der Liste fehlen, oder wenn Festplatten angebunden wurden, nachdem das Installationsprogramm gestartet wurde, wählen Sie
um die Laufwerke nochmals zu suchen und anzuzeigen.Um zu vermeiden, dass versehentlich die falsche Platte gelöscht wird, können Sie das
-Menü verwenden. Dieses Menü zeigt verschiedene Informationen, einschließlich der Partitionstabelle, der Modellnummer und der Seriennummer, falls verfügbar.Wählen Sie N, um den Pool-Namen zu konfigurieren. Geben Sie den gewünschten Namen ein und wählen Sie dann , um den Namen zu speichern, oder , um zum Hauptmenü zurückzukehren und den Standard zu belassen.
Wählen Sie S, um die Größe des Swap-Speichers festzulegen. Geben Sie die gewünschte Größe ein und wählen Sie dann , um die Einstellung zu speichern, oder , um zum Hauptmenü zurückzukehren und den Standard zu belassen.
Wenn alle Optionen wie gewünscht konfiguriert sind, wählen Sie oben im Menü die Option
. Das Installationsprogramm bietet dann eine letzte Chance zum Abbrechen, bevor der Inhalt der ausgewählten Laufwerke zerstört wird, um den ZFS-Pool zu erstellen.Wenn die GELI Plattenverschlüsselung aktiviert wurde, fordert das Installationsprogramm zweimal zur Eingabe der Passphrase auf. Anschließend beginnt die Initialisierung der Verschlüsselung.
Danach wird die Installation normal weitergeführt. Um mit der Installation fortzufahren, lesen Sie Abschnitt 2.7, „Abrufen der Distributionen“.
bsdinstall bietet bei
fortgeschrittenen Installationen womöglich nicht die
benötigte Flexibilität. Erfahrene Benutzer können die
Option im Menü auswählen, um
die Laufwerke manuell zu partitionieren, Dateisysteme zu
erstellen, /tmp/bsdinstall_etc/fstab
zu
befüllen und Dateisysteme unter /mnt
einzuhängen. Geben Sie anschließend exit
ein, um zu bsdinstall
zurückzukehren und die Installation fortzusetzen.
Die Installationsdauer hängt von den gewählten Distributionen, dem Installationsmedium und der Geschwindigkeit des Computers ab. Eine Reihe von Nachrichten werden angezeigt, um den Fortschritt darzustellen.
Zunächst formatiert das Installationsprogramm die
ausgewählten Platten und initialisiert die Partitionen.
Bei bootonly media
oder
mini memstick
werden als
nächstes die benötigten Komponenten heruntergeladen:
Als nächstes wird die Integrität der Distributionsdateien überprüft, um sicherzustellen, dass diese während des Ladevorgangs nicht beschädigt oder unsauber vom Installationsmedium gelesen wurden:
Zum Schluss werden die überprüften Distributionsdateien auf die Festplatte entpackt:
Sobald alle benötigten Distributionsdateien entpackt wurden, wird bsdinstall das erste Menü für die Arbeiten nach der Installation anzeigen. Die zur Verfügung stehenden Konfigurationsoptionen werden im nächsten Abschnitt beschrieben.
Zuerst muss das root
-Passwort gesetzt werden.
Die eingegebenen Zeichen werden dabei nicht auf dem Bildschirm
angezeigt. Nachdem das Passwort eingegeben wurde, muss es zur
Bestätigung erneut eingetippt werden. Damit werden auch
Tippfehler verhindert.
Die nächsten Menüs werden verwendet, um die korrekte Ortszeit zu ermitteln. Dazu muss die gewünschte geographische Region, das Land und die Zeitzone ausgewählt werden. Das Setzen der Zeitzone erlaubt es dem System automatische Korrekturen vorzunehmen, beispielsweise beim Wechsel von Sommer- auf Winterzeit.
Das hier gezeigte Beispiel bezieht sich auf einen Rechner in der Zeitzone des spanischen Festlands. Die Auswahl ist je nach geographischer Lage unterschiedlich.
Wählen Sie das zutreffende Land mit den Pfeiltasten und durch anschließendes drücken von Enter aus.
Die passende Zeitzone wird durch die Pfeiltasten und anschließendes drücken von Enter ausgewählt.
Bestätigen Sie, dass die Abkürzung für die Zeitzone korrekt ist.
Das entsprechende Datum wird mit den Pfeiltasten und das anschließende Drücken von
gewählt. Andernfalls kann die Auswahl durch Drücken von übersprungen werden.Die entsprechende Uhrzeit wird mit den Pfeiltasten und das anschließende Drücken von
gewählt. Andernfalls kann die Auswahl durch Drücken von übersprungen werden.Zusätzliche Systemdienste, die zur Startzeit aktiviert werden sollen, können im folgenden Menü eingeschaltet werden. All diese Dienste sind optional. Starten Sie nur die Dienste, die zur korrekten Funktion des Systems benötigt werden.
Die folgenden Dienste können über dieses Menü aktiviert werden:
local_unbound
- Aktiviert den
lokalen unbound
DNS-Cache. Bedenken Sie, dass dies der Unbound des
Basissystems ist und nur als lokaler
Cache-Forwarding-Resolver gedacht ist. Möchten Sie
einen DNS-Server für das gesamte
Netzwerk einrichten, installieren Sie bitte
dns/unbound.
sshd
- Der Secure Shell
(SSH)-Daemon für Fernzugriff über eine
verschlüsselte Verbindung. Aktivieren Sie diesen Dienst
nur dann, wenn das System für Fernzugriff zur Verfügung
stehen soll.
moused
- Aktivieren Sie diesen
Dienst, wenn Sie Mausunterstützung auf der Systemkonsole
benötigen.
ntpdate
- Aktiviert die
automatische Synchronisation der Uhrzeit beim booten.
Diese Funktionalität ist ebenfalls im ntpd(8)-Daemon
verfügbar. In naher Zukunft soll das Programm
ntpdate(8) entfernt werden.
ntpd
- Der Network Time Protocol
(NTP)-Daemon zur automatischen
Uhrzeitsynchronisation. Aktivieren Sie diesen Dienst,
wenn es im Netzwerk einen Windows®-, Kerberos- oder
LDAP-Server gibt.
powerd
- Systemwerkzeug zur
Leistungsregelung und für Stromsparfunktionen.
dumpdev
- Aktiviert die
Absturzaufzeichnung, welche sehr nützlich sein kann, um
Systemfehler aufzuspüren. Daher wird Anwendern
empfohlen, diese Option zu aktivieren.
Im nächsten Menü können Sicherheitsoptionen aktiviert werden. Alle diese Optionen sind optional. Es wird jedoch empfohlen, sie zu aktivieren.
Folgende Optionen können in diesem Menü aktiviert werden:
hide_uids
- Versteckt die Prozesse
von anderen Benutzern, um zu verhindern, dass
unprivilegierte Benutzer laufende Prozesse von
anderen Benutzern (UID) sehen können.
hide_gids
- Versteckt die Prozesse
anderer Gruppen, um zu verhindern, dass unprivilegierte
Benutzer laufende Prozesse von anderen Gruppen (GID)
sehen können.
hide_jails
- Versteckt
Jail-Prozesse, um zu verhindern, dass
unprivilegierte Benutzer die in den Jails laufenden
Prozesse sehen können.
read_msgbuf
- Deaktiviert den
Lesezugriff auf den Nachrichtenpuffer des Kernels für
nicht privilegierte Benutzer. Dadurch wird verhindert,
dass dmesg(8) zum Anzeigen von Nachrichten aus dem
Nachrichtenpuffer des Kernels verwendet wird.
proc_debug
- Die Deaktivierung von
Prozess-Debugging-Funktionen für unprivilegierte Benutzer
deaktiviert einige IPC-Dienste und procfs-Funktionen,
ptrace() und ktrace(). Beachten Sie, dass dadurch auch
die Nutzung von Werkzeugen wie lldb(1),
truss(1), procstat(1) und einige
Debugging-Funktionen von Skriptsprachen wie PHP, für
unprivilegierte Benutzer unterbunden wird.
random_pid
- Zufällig generierte
PID für neu erstellte Prozesse.
clear_tmp
- Bereinigt das
Verzeichnis /tmp
beim
Systemstart.
disable_syslogd
- Diese Option
verhindert, dass syslogd einen
Netzwerk-Socket öffnet. In der Voreinstellung startet
FreeBSD syslogd auf sichere Weise
mit -s
. Das verhindert, dass der
Daemon auf Port 514 auf UDP-Anfragen lauscht. Wenn diese
Option aktiviert ist, läuft
syslogd mit dem Schalter
-ss
, dass
syslogd daran hindert, einen
Port zu öffnen. Weitere Informationen finden Sie in
syslogd(8).
disable_sendmail
- Deaktiviert den
sendmail MTA.
secure_console
- Wenn diese Option
aktiviert ist, fragt das System im Single-User-Modus nach
dem root"
-Passwort.
disable_ddtrace
- DTrace kann in
einem Modus laufen, der sich tatsächlich auf den laufenden
Kernel auswirkt. Destruktive Aktionen dürfen nicht
benutzt werden, es sei denn, sie wurden explizit
aktiviert. Um diese Option bei der Verwendung von
DTrace zu aktivieren, benutzen Sie
-w
. Weitere Informationen finden Sie
in dtrace(1).
Das nächste Menü fordert Sie dazu auf, mindestens ein
Benutzerkonto zu erstellen. Es wird empfohlen, sich als
normaler Benutzer am System anzumelden und nicht als
root
-Benutzer.
Wenn man als root
angemeldet ist, gibt es
so gut wie keine Beschränkungen oder Schutz vor dem, was man
tun kann. Die Anmeldung als normaler Benutzer ist daher
sicherer und bietet mehr Schutz.
Wählen Sie
, um neue Benutzer hinzuzufügen.Folgen Sie den Anweisungen und geben Sie die angeforderten
Informationen für das Benutzerkonto ein. Das Beispiel in
Abbildung 2.44, „Benutzerinformationen eingeben“ erstellt ein Konto für
den Benutzer asample
.
Die folgenden Informationen müssen eingegeben werden:
Username
- Der Name des Benutzers,
den man zur Anmeldung eingeben muss. Es ist üblich, den
ersten Buchstaben des Vornamens zusammen mit dem Nachnamen
zu kombinieren. Jeder Benutzername ist möglich, solange
er für das System einzigartig ist. Es wird zwischen Groß-
und Kleinschreibung unterschieden und der Benutzername
sollte keine Leerzeichen enthalten.
Full name
- Der volle Name des
Benutzers. Dieser darf auch Leerzeichen enthalten und
dient als Beschreibung für das Benutzerkonto.
Uid
- User ID.
Normalerweise wird dieses Feld leer gelassen, so dass das
System einen Wert vergibt.
Login group
- Die Benutzergruppe.
Normalerweise bleibt dieses Feld leer, um die
Standardgruppe zu akzeptieren.
Invite
- Zusätzliche Gruppen zu denen
der Benutzer als Mitglied hinzugefügt werden soll.
Falls der Benutzer administrativen Zugriff benötigt,
tragen Sie hier user
into
other groups?wheel
ein.
Login class
- In der Regel bleibt
dieses Feld leer.
Shell
- Die interaktive Shell für
diesen Benutzer. Tragen Sie hier eine der aufgeführten
Shells ein. Weitere Informationen über Shells finden Sie
im Abschnitt 3.9, „Shells“.
Home directory
- Das
Heimatverzeichnis des Benutzers. Die Vorgabe ist für
gewöhnlich richtig.
Home directory permissions
-
Zugriffsrechte auf das Heimatverzeichnis des Benutzers.
Die Vorgabe ist normalerweise die passende.
Use password-based authentication?
- Normalerweise yes
, damit der Benutzer
bei der Anmeldung sein Passwort eingeben muss.
Use an empty password?
-
Normalerweise no
, da ein leeres
Passwort unsicher ist.
Use a random password?
-
Normalerweise no
, damit der
Benutzer sein Passwort am nächsten Prompt selber
vergeben kann.
Enter password
- Das Passwort für
diesen Benutzer. Eingegebene Zeichen werden nicht am
Bildschirm angezeigt.
Enter password again
- Das Passwort
muss zur Überprüfung erneut eingegeben werden.
Lock out the account after
creation?
- Normalerweise
no
, damit sich der Benutzer anmelden
kann.
Nachdem alles eingegeben wurde, wird eine Zusammenfassung
angezeigt und das System fragt Sie, dies so korrekt ist.
Falls ein Eingabefehler gemacht wurde, geben Sie
no
ein und versuchen es erneut. Falls
alles in Ordnung ist, geben Sie yes
ein, um
den neuen Benutzer anzulegen.
Falls es mehr Benutzer hinzuzufügen gibt, beantworten Sie
die Frage Add another user?
mit
yes
. Geben Sie no
ein,
wird das hinzufügen von Benutzern beendet und die Installation
fortgesetzt.
Für weitere Informationen zum hinzufügen von Benutzern und deren Verwaltung, lesen Sie Abschnitt 3.3, „Benutzer und grundlegende Account-Verwaltung“.
Nachdem alles installiert und konfiguriert wurde, bekommen Sie noch eine letzte Chance, um Einstellungen zu verändern.
Verwenden Sie dieses Menü, um noch letzte Änderungen oder zusätzliche Konfigurationen vor dem Abschließen der Installation zu tätigen.
Add User
- Beschrieben in
Abschnitt 2.8.5, „Benutzer hinzufügen“.
Root Password
- Beschrieben in
Abschnitt 2.8.1, „Setzen des root
-Passworts“.
Hostname
- Beschrieben in
Abschnitt 2.5.2, „Den Rechnernamen festlegen“.
Network
- Beschrieben in
Abschnitt 2.9.1, „Die Netzwerkschnittstelle konfigurieren“.
Services
- Beschrieben in
Abschnitt 2.8.3, „Dienste aktivieren“.
Time Zone
- Beschrieben in
Abschnitt 2.8.2, „Setzen der Zeitzone“.
Handbook
- Herunterladen und
installieren des FreeBSD Handbuchs.
Nachdem die letzten Konfigurationsschritte beendet sind, wählen Sie
.bsdinstall wird nach zusätzlichen Konfigurationen, die noch zu tätigen sind, fragen, bevor in das neue System gebootet wird. Wählen Sie , um in eine Shell innerhalb des neuen Systems zu wechseln oder , um mit dem letzten Schritt der Installation zu beginnen.
Wenn weitere Konfigurationen oder besondere Einstellungen benötigt werden, wählen Sie
, um das Installationsmedium im Live-CD Modus zu starten.Wenn die Installation vollständig ist, wählen Sie
, um den Computer neu zu starten und das neu installierte FreeBSD-System zu booten. Vergessen Sie nicht, das FreeBSD Installationsmedium zu entfernen, oder der Computer wird erneut davon starten.Wenn FreeBSD startet, werden viele Informationsmeldungen
ausgegeben. Nachdem das System den Startvorgang abgeschlossen
hat, wird eine Anmeldeaufforderung angezeigt. Geben Sie am
login:
den Benutzernamen ein, den Sie
während der Installation hinzugefügt haben. Vermeiden
Sie es, sich als root
anzumelden. Lesen Sie
Abschnitt 3.3.1.3, „Der Superuser-Account“, wenn Sie
administrativen Zugriff benötigen.
Um Nachrichten, die während des Bootens angezeigt
wurden, zu sehen, aktivieren Sie durch drücken von
Scroll-Lock den
scroll-back buffer. Die Tasten
PgUp, PgDn und die
Pfeiltasten dienen zur Navigation durch die Nachrichten.
Durch erneutes drücken von Scroll-Lock wird
der Bildschirm wieder entsperrt und kehrt zur normalen
Anzeige zurück. Mit
less /var/run/dmesg.boot
können Sie sich
diese Nachrichten im laufenden Betrieb ansehen. Durch
drücken von q kehren Sie wieder zur
Kommandozeile zurück.
Wenn sshd in Abbildung 2.41, „Auswahl zusätzlicher Dienste“ aktiviert wurde, ist der erste Start ein bisschen langsamer, weil das System die RSA- und DSA-Schlüssel erzeugen muss. Die nachfolgenden Startvorgänge werden dann wieder schneller sein. Wie in diesem Beispiel zu sehen ist, werden die Fingerabdrücke der Schlüssel am Bildschirm ausgegeben:
Generating public/private rsa1 key pair. Your identification has been saved in /etc/ssh/ssh_host_key. Your public key has been saved in /etc/ssh/ssh_host_key.pub. The key fingerprint is: 10:a0:f5:af:93:ae:a3:1a:b2:bb:3c:35:d9:5a:b3:f3 root@machine3.example.com The key's randomart image is: +--[RSA1 1024]----+ | o.. | | o . . | | . o | | o | | o S | | + + o | |o . + * | |o+ ..+ . | |==o..o+E | +-----------------+ Generating public/private dsa key pair. Your identification has been saved in /etc/ssh/ssh_host_dsa_key. Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub. The key fingerprint is: 7e:1c:ce:dc:8a:3a:18:13:5b:34:b5:cf:d9:d1:47:b2 root@machine3.example.com The key's randomart image is: +--[ DSA 1024]----+ | .. . .| | o . . + | | . .. . E .| | . . o o . . | | + S = . | | + . = o | | + . * . | | . . o . | | .o. . | +-----------------+ Starting sshd.
Lesen Sie Abschnitt 13.8, „OpenSSH“ für weitere Informationen zu Fingerabdrücken und SSH.
FreeBSD installiert standardmäßig keine graphische Umgebung. Kapitel 5, Das X-Window-System enthält Informationen zur Installation und Konfiguration eines graphischen Window Managers.
Das korrekte herunterfahren eines FreeBSD-Computers hilft,
beugt dem Datenverlust vor und schützt sogar die Hardware vor
Schäden. Schalten Sie nicht den Strom ab, bevor das
System ordnungsgemäß heruntergefahren wurde!
Wenn der Benutzer ein Mitglied der wheel
-Gruppe ist, können Sie
zum Superuser durch die Eingabe von su
und
der anschließenden Eingabe des Passworts von root
werden. Geben Sie dann
shutdown -p now
ein. Das System wird
jetzt sauber heruntergefahren und, falls die Hardware es
unterstützt, den Rechner ausschalten.
Als nächstes wird eine Liste der gefundenen Netzwerkschnittstellen gezeigt. Wählen Sie die Schnittstelle aus, die Sie konfigurieren möchten.
Wenn Sie eine Ethernet-Schnittstelle ausgewählt haben, fährt das Installationsprogramm mit dem Menü aus Abbildung 2.53, „Auswahl von IPv4“ fort. Wenn Sie eine drahtlose Netzwerkschnittstelle ausgewählt haben, wird das System nach drahtlosen Zugriffspunkten (Access Points) suchen:
Drahtlose Netzwerke werden durch einen Service Set Identifier (SSID) identifiziert. Der SSID ist ein kurzer, eindeutiger Name, der für jedes Netzwerk vergeben wird. SSIDs, die während des Scans gefunden wurden, werden aufgelistet, gefolgt von einer Beschreibung der Verschlüsselungsarten, die für dieses Netzwerk verfügbar sind. Falls die gewünschte SSID nicht in der Liste auftaucht, wählen Sie
, um erneut einen Scanvorgang durchzuführen. Falls dann das gewünschte Netzwerk immer noch nicht erscheint, überprüfen Sie die Antenne auf Verbindungsprobleme oder versuchen Sie, näher an den Access point zu gelangen. Scannen Sie erneut nach jeder vorgenommenen Änderung.Geben Sie nun die Verschlüsselungsinformationen ein, um sich mit dem drahtlosen Netzwerk zu verbinden. WPA2 wird als Verschlüsselung dringend empfohlen, da ältere Verschlüsselungsmethoden, wie WEP, nur wenig Sicherheit bieten. Wenn das Netzwerk WPA2 verwendet, geben Sie das Passwort (auch bekannt als Pre-Shared Key PSK) ein. Aus Sicherheitsgründen werden die in das Eingabefeld eingegeben Zeichen nur als Sternchen angezeigt.
Wählen Sie, ob eine IPv4-Adresse auf der Ethernet-Schnittstelle oder der drahtlosen Schnittstelle konfiguriert werden soll.
Es gibt zwei Arten, ein IPv4-Netzwerk zu konfigurieren. DHCP wird automatisch die Netzwerkschnittstelle richtig konfigurieren und sollte verwendet werden, wenn das Netzwerk über einen DHCP-Server verfügt. Eine statische IP-Konfiguration erfordert die manuelle Eingabe von Netzwerkinformationen.
Geben Sie keine zufällig gewählten Netzwerkinformationen ein, da dies nicht funktionieren wird. Holen Sie sich die in Erforderliche Informationen zum Netzwerk gezeigten Informationen vom Netzwerkadministrator oder Serviceprovider, falls kein DHCP-Server verfügbar ist.
Falls ein DHCP-Server zur Verfügung steht, wählen Sie im nächsten Menü
, um die Netzwerkschnittstelle automatisch einrichten zu lassen. Dieser Vorgang kann einige Sekunden dauern.Wenn kein DHCP-Server zur Verfügung steht, wählen Sie
und tragen Sie die folgenden Informationen in das Menü ein:IP Address
- Die
IPv4-Adresse, welche diesem
Computer zugewiesen werden soll. Diese Adresse muss
eindeutig sein und darf nicht bereits von einem anderen
Gerät im lokalen Netzwerk verwendet werden.
Subnet Mask
- Die
Subnetzmaske des Netzwerks.
Default Router
- Die
IP-Adresse des Defaultrouters im
Netzwerk.
Das nächste Menü fragt, ob die Schnittstelle für IPv6 konfiguriert werden soll. Falls IPv6 verfügbar ist und verwendet werden soll, wählen Sie
aus.IPv6 besitzt ebenfalls zwei Arten der Konfiguration. StateLess Address AutoConfiguration, (SLAAC) wird automatisch die richtigen Informationen von einem lokalen Router abfragen. Lesen Sie http://tools.ietf.org/html/rfc4862 für weitere Informationen. Eine statische Konfiguration verlangt die manuelle Eingabe von Netzwerkinformationen.
Wenn ein IPv6-Router verfügbar ist, wählen Sie im nächsten Menü
, um die Netzwerkschnittstelle automatisch konfigurieren zu lassen.Wenn kein IPv6-Router zur Verfügung steht, wählen Sie
und tragen Sie die folgenden Adressinformationen in dieses Menü ein:IPv6 Address
- Die zugewiesene
IPv6-Adresse, welche dem Computer
zugeteilt werden soll. Diese Adresse muss eindeutig sein
und nicht bereits von einer anderen Netzwerkkomponente im
lokalen Netzwerk verwendet werden.
Default Router
- Die
IPv6-Adresse des Defaultrouters im
Netzwerk.
Das letzte Menü der Netzwerkkonfiguration konfiguriert
den Domain Name System
(DNS) Resolver, welcher Hostnamen von
und zu Netzwerkadressen umwandelt. Falls
DHCP oder SLAAC
verwendet wurde, um die Netzwerkschnittstelle zu
konfigurieren, ist die Konfiguration für den Resolver
möglicherweise bereits eingetragen. Andernfalls geben Sie
den lokalen Netzwerkdomänennamen in das Feld
Search
ein. DNS #1
und DNS #2
sind die
IPv4- und/oder
IPv6-Adressen der lokalen
DNS-Server. Zumindest ein
DNS-Server wird benötigt.
Sobald die Schnittstelle konfiguriert ist, bestimmen Sie einen Spiegelserver, welcher in der gleichen Region auf der Welt beheimatet ist, wie der Computer, auf dem FreeBSD installiert wird. Dateien können so viel schneller übertragen werden, wenn der Spiegelserver sich näher am Zielcomputer befindet und die Installationszeit wird somit reduziert.
Dieser Abschnitt behandelt einfache Fehlerbehebungen für die Installation, wie beispielsweise häufig auftretende Fehler, die von Anwendern berichtet wurden.
Überprüfen Sie die Hardware Notes (
https://www.freebsd.org/releases/index.html) nach der
Version von FreeBSD, um sicher zu stellen, dass die Hardware auch
unterstützt wird. Wenn die Hardware unterstützt wird und Sie
immer noch Abstürze oder andere Probleme erleben, müssen Sie
einen eigenen Kernel bauen. Diese Prozedur wird in Kapitel 8, Konfiguration des FreeBSD-Kernels beschrieben. Das erlaubt es,
Unterstützung für Geräte, die im
GENERIC
-Kernel nicht vorhanden sind,
hinzuzufügen. Der Kernel ist mit der Annahme konfiguriert, dass
die Hardwaregeräte sich in ihren Fabrikeinstellungen in Bezug
auf IRQs, I/O-Adressen und
DMA-Kanälen befinden. Wenn die Hardware neu
konfiguriert wurde, werden Sie möglicherweise die Konfiguration
des Kernels bearbeiten und diesen neu erstellen müssen, um FreeBSD
mitzuteilen, wo es gewisse Dinge finden kann.
Manche Installationsprobleme können Aktualisierung der Firmware auf verschiedenen Hardwarekomponenten verhindert oder verringert werden, meistens am Mainboard. Mit Mainboard-Firmware ist für gewöhnlich das BIOS gemeint. Die meisten Mainboard- und Computerhersteller haben eine Webseite mit Aktualisierungen und Informationen zur Durchführung.
Hersteller raten meist von einer Aktualisierung des Mainboard-BIOS ab, außer es gibt einen guten Grund dafür, wie beispielsweise eine kritische Aktualisierung. Der Aktualisierungsvorgang kann schiefgehen, was das BIOS unvollständig macht und den Computer nicht mehr starten lässt.
Wenn das System während der Geräteerkennung beim
Starten hängt oder sich während der Installation merkwürdig
verhält, ist ACPI vielleicht der Übeltäter.
FreeBSD macht auf i386- und amd64-Plattformen starken
Gebrauch vom ACPI-Dienst, um dem System bei
der Konfiguration während des
Startvorgangs zu helfen. Leider existieren immer noch Fehler im
ACPI-Treiber, in den Mainboards und der
BIOS-Firmware. ACPI kann
durch setzen der Einstellung
hint.acpi.0.disabled
im dritten Teil des
Bootloaders deaktiviert werden:
set hint.acpi.0.disabled="1"
Dies wird nach jedem Neustart des Systems wieder
zurückgesetzt, also ist es notwendig, die Zeile
hint.acpi.0.disabled="1"
zu der Datei
/boot/loader.conf
hinzuzufügen. Weitere
Informationen über den Bootloader lassen sich in Abschnitt 12.1, „Übersicht“ nachlesen.
Das Willkommensmenü von bsdinstall, welches in Abbildung 2.3, „Willkommen-Menü“ gezeigt wird, enthält eine Option. Die Live-CD ist für Benutzer, die sich fragen, ob FreeBSD das richtige Betriebssystem für sie ist und die vor der Installation noch einige Merkmale und Eigenschaften testen wollen.
Die folgenden Punkte sollten beachtet werden, bevor die
benutzt wird:Um Zugriff auf das System zu bekommen, wird eine
Authentifizierung benötigt. Der Benutzername ist
root
und das
Kennwort bleibt leer.
Da das System direkt von dem Installationsmedium ausgeführt wird, ist die Geschwindigkeit deutlich langsamer als bei einem System, das auf einer Festplatte installiert ist.
Diese Option enthält nur eine Eingabeaufforderung und keine graphische Oberfläche.
Dieses Kapitel umfasst die grundlegenden Kommandos und Funktionsweisen des FreeBSD-Betriebssystems. Viel von diesem Material gilt auch für jedes andere UNIX®-artige System. Neue Benutzer von FreeBSD sollten dieses Kapitel aufmerksam lesen.
Dieser Abschnitt behandelt die folgenden Themen:
virtuelle Konsolen,
Erstellung und Verwaltung von Benutzern und Gruppen in FreeBSD,
Zugriffsrechte unter UNIX® sowie Datei-Flags unter FreeBSD,
Zugriffskontrolllisten für Dateisysteme,
die Verzeichnisstruktur von FreeBSD,
Organisation von Dateisystemen unter FreeBSD,
Ein- und Abhängen von Dateisystemen,
Prozesse, Dämonen und Signale,
Shells und die Login-Umgebung,
Texteditoren,
Geräte und Gerätedateien,
wie Sie in den Manualpages nach weiteren Informationen suchen können.
Wenn das FreeBSD-System so konfiguriert wurde, dass es ohne eine grafische Benutzeroberfläche startet, wird das System nach dem Start einen Anmeldeprompt ausgeben, wie in diesem Beispiel zu sehen:
FreeBSD/amd64 (pc3.example.org) (ttyv0) login:
Die erste Zeile enthält einige Informationen über das
System. amd64
zeigt an, dass auf dem
System in diesem Beispiel eine 64-Bit Version von FreeBSD
läuft. Der Hostname ist
pc3.example.org
und
ttyv0
gibt an, dass dies die
„Systemkonsole“ ist. Die zweite Zeile zeigt den
Anmeldeprompt.
Da FreeBSD ein Mehrbenutzersystem ist, muss es die verschiedenen Benutzer voneinander unterscheiden können. Dies wird dadurch erreicht, dass sich jeder Benutzer zuerst am System anmelden muss, um Zugriff auf die Programme zu bekommen. Jeder Benutzer hat einen eindeutigen „Benutzernamen“ und ein persönliches „Kennwort“.
Um sich auf der Systemkonsole anzumelden, geben Sie den Benutzernamen ein, der während der Systeminstallation, wie in Abschnitt 2.8.5, „Benutzer hinzufügen“ beschrieben, konfiguriert wurde und drücken Sie Enter. Geben Sie dann das zum Benutzernamen zugeordnete Passwort ein und drücken Enter. Das Passwort wird aus Sicherheitsgründen nicht angezeigt.
Sobald das richtige Passwort eingegeben wird, wird die
Nachricht des Tages (MOTD) gefolgt von
einer Eingabeaufforderung ausgegeben. In Abhängigkeit der
verwendeten Shell des Benutzers wird der Prompt mit dem
Zeichen #
, $
oder
%
dargestellt. Der Prompt zeigt an, dass
der Benutzer jetzt an der FreeBSD Systemkonsole angemeldet ist
und nun alle verfügbaren Befehle probieren kann.
Obwohl die Systemkonsole dazu verwendet werden kann, um mit dem System zu interagieren, wird sich ein Benutzer in der Regel an einer virtuellen Konsole im FreeBSD-System anmelden. Das liegt daran, dass die Systemmeldungen standardmäßig auf der Systemkonsole angezeigt werden und somit die Meldungen des Befehls oder einer Datei, die der Benutzer gerade bearbeitet, überschrieben werden.
In der Voreinstellung ist FreeBSD so konfiguriert, dass viele virtuelle Konsolen zur Eingabe von Befehlen zur Verfügung stehen. Jede virtuelle Konsole verfügt über einen eigenen Anmeldeprompt und eine Shell. Sie können ganz einfach zwischen den virtuellen Konsolen umschalten. Dies ist vergleichbar mit mehreren geöffneten Fenstern in einer graphischen Umgebung.
Die Tastenkombinationen
Alt+F1
bis
Alt+F8
sind in FreeBSD zum Umschalten zwischen virtuellen Konsolen
reserviert. Verwenden Sie
Alt+F1
um auf die Systemkonsole (ttyv0
) zu
wechseln,
Alt+F2
für die erste virtuelle Konsole (ttyv1
,
Alt+F3
für die zweite virtuelle Konsole (ttyv2
,
und so weiter. Wenn Sie Xorg als
graphische Oberfläche benutzen, können Sie mit
StrgAltF1
zur virtuellen Konsole zurückkehren.
Beim Wechsel von einer Konsole zur nächsten wird die Bildschirmausgabe von FreeBSD verwaltet. Dies erzeugt die Illusion mehrerer Bildschirme und Tastaturen, an denen Kommandos abgesetzt werden können. Die Programme, die in einer virtuellen Konsole gestartet werden, laufen auch dann weiter, wenn der Benutzer auf eine andere virtuelle Konsole wechselt.
Lesen Sie kbdcontrol(1), vidcontrol(1), atkbd(4), syscons(4) sowie vt(4) für eine recht technische Beschreibung der FreeBSD-Konsole und der Tastatur-Treiber.
In FreeBSD wird die Anzahl der verfügbaren virtuellen
Konsolen in diesem Abschnitt von
/etc/ttys
konfiguriert:
# name getty type status comments # ttyv0 "/usr/libexec/getty Pc" xterm on secure # Virtual terminals ttyv1 "/usr/libexec/getty Pc" xterm on secure ttyv2 "/usr/libexec/getty Pc" xterm on secure ttyv3 "/usr/libexec/getty Pc" xterm on secure ttyv4 "/usr/libexec/getty Pc" xterm on secure ttyv5 "/usr/libexec/getty Pc" xterm on secure ttyv6 "/usr/libexec/getty Pc" xterm on secure ttyv7 "/usr/libexec/getty Pc" xterm on secure ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure
Um eine virtuelle Konsole zu deaktivieren, setzen Sie ein
Kommentarzeichen (#
an den Anfang der Zeile
für die entsprechende Konsole. Um bspw. die Anzahl der
verfügbaren virtuellen Konsolen von acht auf vier zu
reduzieren, setzen Sie ein #
an den Anfang
der letzten vier Zeilen, den virtuellen Konsolen
ttyv5
bis ttyv8
.
Kommentieren Sie nicht die Zeile für die Systemkonsole
ttyv0
aus! Beachten Sie, dass die
letzte virtuelle Konsole (ttyv8
) zum
Wechsel auf die graphische Oberfläche gedacht ist, wenn
Xorg wie im Kapitel 5, Das X-Window-System installiert und
konfiguriert ist.
ttys(5) enthält eine ausführliche Beschreibung der Spalten dieser Datei und der verfügbaren Optionen für virtuelle Konsolen.
Das FreeBSD Boot-Menü verfügt über eine Option
„Boot Single User“. Wird diese Option
gewählt, bootet das System in einen speziellen Modus, der als
„Single-User-Modus“ bekannt ist. Dieser Modus
wird normalerweise zur Reparatur des Systems verwendet,
bspw. wenn das System nicht mehr startet, oder das
root
-Passwort
zurückgesetzt werden muss. Im Single-User-Modus haben Sie
keinen Zugriff auf das Netzwerk und es stehen Ihnen keine
weiteren virtuellen Konsolen zur Verfügung. Allerdings
haben Sie vollen Zugriff auf das System und in der
Voreinstellung wird das root
-Passwort nicht
benötigt. Aus diesem Grund wird ein physischer Zugriff
auf die Tastatur benötigt, um in diesem Modus zu booten.
Zur Absicherung eines FreeBSD-Systems sollte ermittelt werden,
welche Personen physischen Zugriff auf die Tastatur bekommen
sollen.
Die Einstellungen für den Single-User-Modus befinden sich
diesem Abschnitt von /etc/ttys
:
# name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off secure
In der Voreinstellung ist der Status auf
secure
eingestellt. Das setzt voraus, dass
der physische Zugriff auf die Tastatur entweder unwichtig ist,
oder über eine Sicherheitsrichtlinie geregelt wird. Wenn der
Status auf insecure
eingestellt wird, wird
davon ausgegangen, dass die Umgebung selbst unsicher ist, da
jeder Zugriff auf die Tastatur hat. FreeBSD wird dann nach dem
root
-Passwort
fragen, wenn ein Benutzer versucht in den Single-User-Modus zu
booten.
Setzen Sie insecure
nicht
leichtfertig ein! Wenn das
root
-Passwort
vergessen wird, wird es schwierig in den
Single-User-Modus zu gelangen, wenn man den Bootprozess von
FreeBSD nicht genau versteht.
Der Standard-Videomodus der FreeBSD-Konsole kann auf jeden
Modus eingestellt werden, der von der Grafikkarte und dem
Monitor unterstützt wird (beispielsweise 1024x768 oder
1280x1024). Um eine andere Einstellung zu verwenden, muss
das VESA
-Modul geladen werden:
#
kldload vesa
Um festzustellen, welche Video-Modi von der Hardware unterstützt werden, nutzen Sie vidcontrol(1). Um eine Liste aller unterstützten Modi zu sehen, verwenden Sie diesen Befehl:
#
vidcontrol -i mode
Die Ausgabe dieses Befehls listet alle Videomodi, die von
der Hardware unterstützt werden. Um einen neuen Video-Modi zu
wählen, wird der entsprechende Modus als
root
-Benutzer an
vidcontrol(1) übergeben:
#
vidcontrol MODE_279
Um diese Einstellung dauerhaft zu speichern, muss
folgende Zeile in /etc/rc.conf
hinzugefügt werden:
allscreens_flags="MODE_279"
FreeBSD ermöglicht es mehreren Benutzern, den Computer zur selben Zeit zu benutzen. Es kann immer nur ein Benutzer vor der Konsole sitzen, aber es können sich beliebig viele Benutzer über das Netzwerk am System anmelden. Jeder Benutzer muss einen Account haben, um das System benutzen zu können.
Nachdem Sie dieses Kapitel gelesen haben, werden Sie
die verschiedenen Account-Typen von FreeBSD kennen,
wissen, wie Sie Accounts angelegen, verändern oder löschen,
wissen, wie Sie Limits für einen Benutzer oder eine Gruppe setzen, um beispielsweise Ressourcen, wie Speicher oder CPU-Zeit einzuschränken,
wissen, wie Sie Gruppen erstellen und Benutzer zu diesen Gruppen hinzufügen.
Jeder Zugriff auf das FreeBSD-System geschieht über Accounts und alle Prozesse werden von Benutzern gestartet, also sind Benutzer- und Account-Verwaltung von wesentlicher Bedeutung.
Es gibt drei Haupttypen von Accounts: Systembenutzer, Benutzer-Accounts und der Superuser-Account.
Systembenutzer starten Dienste wie DNS, Mail-Server und Web-Server. Der Grund dafür ist die Sicherheit; wenn die Programme von dem Superuser gestartet werden, können Sie ohne Einschränkungen handeln.
Beispiele von Systembenutzern sind
daemon
,
operator
,
bind
,
news
und
www
.
Bei der Verwendung der Gruppe operator
ist Vorsicht
geboten, da dem Benutzer unbeabsichtigt Privilegien
gewährt werden könnten, beispielsweise zum Herunterfahren
oder Neustarten des Systems, oder der Zugriff auf alle
Geräte in /dev
.
nobody
ist der
generische unprivilegierte Systembenutzer. Bedenken Sie
aber, dass je mehr Dienste nobody
benutzen, desto mehr
Dateien und Prozesse diesem Benutzer gehören und dieser
Benutzer damit umso privilegierter wird.
Benutzer-Accounts sind realen Personen zugeordnet und sind das primäre Mittel des Zugriffs das System. Jede Person, die Zugriff auf das System bekommt, sollte einen eindeutigen Benutzer-Account besitzen. Dies erlaubt es dem Administrator herauszufinden, wer was macht. Gleichzeitig werden die Benutzer daran gehindert, die Einstellungen anderer Benutzer zu zerstören.
Jeder Benutzer kann die eigene Umgebung anpassen, bspw. seine voreingestellte Shell, Editor, Tastenbelegungen und Spracheinstellungen.
Mit jedem Account eines FreeBSD-Systems sind bestimmte Informationen verknüpft:
Der Loginname wird am login:
Prompt eingegeben. Jeder Benutzer muss einen
eindeutigen Benutzernamen haben. Es gibt eine Reihe
von Regeln für die Erstellung von gültigen Loginnamen,
die in passwd(5) dokumentiert sind. Es wird aus
Kompatibilitätsgründen empfohlen, Benutzernamen zu
verwenden, die aus Kleinbuchstaben bestehen und bis zu
acht Zeichen lang sind.
Jeder Account ist mit einem Passwort verknüpft.
Die User ID (UID) ist eine Zahl, die verwendet wird, um die Benutzer auf dem FreeBSD-System eindeutig zu identifizieren. Programme, die einen Loginnamen akzeptieren, wandeln diesen zuerst in eine UID um. Es wird empfohlen, nur UIDs kleiner 65535 zu verwenden, da höhere Werte Kompatibilitätsprobleme mit einigen Anwendungen verursachen können.
Die Group ID (GID) ist eine Zahl, die verwendet wird, um die primäre Gruppe eines Benutzers eindeutig zu identifizieren. Gruppen sind ein Mechanismus zur Steuerung des Zugriffs auf Ressourcen über die GID eines Benutzers anstelle der UID. Dies kann die Größe einiger Konfigurationsdateien signifikant reduzieren und ermöglicht es Benutzern, Mitglied mehreren Gruppen zu sein. Es wird empfohlen, GIDs kleiner 65535 zu verwenden, da höhere Werte bei einigen Anwendungen große Probleme verursachen können.
Login-Klassen erweitern das Gruppenkonzept. Sie erhöhen die Flexibilität des Systems in der Handhabung der verschiedenen Accounts. Login-Klassen werden auch im Abschnitt 13.13.1, „Login-Klassen konfigurieren“ diskutiert.
In der Voreinstellung verfallen Passwörter nicht. Allerdings können Passwortwechsel nach einer gewissen Zeit auf Basis einzelner Accounts erzwungen werden.
In der Voreinstellung verfallen unter FreeBSD keine Accounts. Wenn Sie Accounts einrichten, die nur für eine bestimmte Zeit gültig sein sollen, beispielsweise Accounts für Teilnehmer eines Praktikums, können Sie mit pw(8) die Gültigkeitsdauer des Accounts angeben. Nachdem die angegebene Zeitspanne verstrichen ist, kann dieser Account nicht mehr zum Anmelden verwendet werden, obwohl alle Verzeichnisse und Dateien, die diesem Account gehören, noch vorhanden sind.
FreeBSD identifiziert einen Account eindeutig über den Loginnamen, der aber keine Ähnlichkeit mit dem richtigen Namen des Benutzers haben muss. Ähnlich wie bei einem Kommentar, kann diese Information Leerzeichen, Großbuchstaben und mehr als 8 Zeichen enthalten.
Das Heimatverzeichnis gibt den vollständigen Pfad
zu dem Verzeichnis an, in dem sich der Benutzer nach
erfolgreicher Anmeldung befindet. Es ist üblich, alle
Heimatverzeichnisse unter
oder
/home/Loginname
anzulegen. Im Heimatverzeichnis oder in dort
angelegten Verzeichnissen werden die Dateien eines
Benutzers gespeichert./usr/home/Loginname
Grundsätzlich ist die Shell, von denen es viele unterschiedliche gibt, eine Schnittstelle zum System. Die bevorzugte Shell eines Benutzers kann seinem Account zugeordnet werden.
Der Superuser-Account, normalerweise root
genannt, ist
vorkonfiguriert und erleichtert die Systemverwaltung, sollte
aber nicht für alltägliche Aufgaben wie das Verschicken und
Empfangen von Mails, Erforschen des Systems oder
Programmierung benutzt werden.
Der Superuser kann, im Gegensatz zu normalen Benutzer-Accounts, ohne Beschränkungen operieren und die falsche Anwendung des Superuser-Accounts kann in spektakulären Katastrophen resultieren. Benutzer-Accounts sind nicht in der Lage, das System versehentlich zu zerstören, deswegen wird empfohlen, normale Benutzer-Accounts zu verwenden, solange nicht zusätzliche Privilegien benötigt werden.
Kommandos, die Sie als Superuser eingeben, sollten Sie immer doppelt und dreifach überprüfen, da ein zusätzliches Leerzeichen oder ein fehlender Buchstabe irreparablen Datenverlust bedeuten kann.
Es gibt mehrere Möglichkeiten Superuser-Rechte zu
bekommen. Obwohl man sich direkt als root
anmelden kann, wird von
dieser Methode dringend abgeraten.
Verwenden Sie stattdessen su(1) um zum Superuser zu
werden. Wenn Sie noch ein -
eingeben,
wird der Benutzer auch die Umgebung des Root-Benutzers
erben. Der Benutzer, der diesen Befehl ausführt muss
Mitglied der Gruppe wheel
sein, oder der
Befehl schlägt fehl. Zudem muss der Benutzer das Kennwort
für den Benutzer-Account root
kennen.
In diesem Beispiel wird der Benutzer nur zum Superuser,
um make install
auszuführen, da dieser
Befehl Superuser-Rechte erfordert. Nachdem der Befehl
ausgeführt wurde, kann der Benutzer exit
eingeben, um den Superuser-Account zu verlassen und zu den
Privilegien des Benutzer-Accounts zurückkehren.
%
configure
%
make
%
su -
Password:#
make install
#
exit
%
Das in FreeBSD enthaltene su(1) funktioniert gut für einzelne Systeme oder in kleineren Netzwerken, mit nur einem Administrator. Eine Alternative ist es, das Paket oder den Port security/sudo zu installieren. Diese Software bietet eine Protokollierung von Aktivitäten und ermöglicht es dem Administrator zu bestimmen, welche Benutzer welche Befehle als Superuser ausführen dürfen.
FreeBSD stellt eine Vielzahl an Programmen bereit, um Accounts zu verändern. Die gebräuchlichsten Kommandos sind in Tabelle 3.1, „Programme zur Verwaltung von Benutzer-Accounts“ gefolgt von einer detaillierten Beschreibung, zusammengefasst. Weitere Informationen und Anwendungsbeispiele finden Sie in der Manualpage des jeweiligen Programms.
Programm | Zusammenfassung |
---|---|
adduser(8) | Das empfohlene Werkzeug, um neue Accounts zu erstellen. |
rmuser(8) | Das empfohlene Werkzeug, um Accounts zu löschen. |
chpass(1) | Ein flexibles Werkzeug, um Informationen in der Account-Datenbank zu verändern. |
passwd(1) | Ein Werkzeug, um Passwörter von Accounts zu ändern. |
pw(8) | Ein mächtiges und flexibles Werkzeug um alle Informationen über Accounts zu ändern. |
Das empfohlene Programm zum Hinzufügen neuer Benutzer
ist adduser(8). Wenn ein neuer Benutzer
hinzugefügt wird, aktualisiert das Programm automatisch
/etc/passwd
und
/etc/group
. Es erstellt auch das
Heimatverzeichnis für den Benutzer, kopiert die
Standardkonfigurationsdateien aus
/usr/share/skel
und kann optional
eine ,,Willkommen``-Nachricht an den neuen Benutzer
versenden. Das Programm muss als Superuser ausgeführt
werden.
Das Werkzeug adduser(8) arbeitet interaktiv und
führt durch die einzelnen Schritte, wenn ein neues
Benutzerkonto erstellt wird. Wie in Beispiel 3.2, „Einen Benutzer unter FreeBSD anlegen“ zu sehen
ist, müssen Sie entweder die benötigte Information eingeben
oder Return drücken, um den Vorgabewert in
eckigen Klammern zu akzeptieren. In diesem Beispiel wird
der Benutzer in die Gruppe wheel
aufgenommen, was es
ihm erlaubt mit su(1) zum Superuser zu werden. Wenn
Sie fertig sind, können Sie entweder einen weiteren Benutzer
erstellen oder das Programm beenden.
#
adduser
Username:jru
Full name:J. Random User
Uid (Leave empty for default): Login group [jru]: Login group is jru. Invite jru into other groups? []:wheel
Login class [default]: Shell (sh csh tcsh zsh nologin) [sh]:zsh
Home directory [/home/jru]: Home directory permissions (Leave empty for default): Use password-based authentication? [yes]: Use an empty password? (yes/no) [no]: Use a random password? (yes/no) [no]: Enter password: Enter password again: Lock out the account after creation? [no]: Username : jru Password : **** Full Name : J. Random User Uid : 1001 Class : Groups : jru wheel Home : /home/jru Shell : /usr/local/bin/zsh Locked : no OK? (yes/no):yes
adduser: INFO: Successfully added (jru) to the user database. Add another user? (yes/no):no
Goodbye!#
Wenn Sie das Passwort eingeben, werden weder Passwort noch Sternchen angezeigt. Passen Sie auf, dass Sie das Passwort korrekt eingeben.
Benutzen Sie rmuser(8) als Superuser, um einen Account vollständig aus dem System zu entfernen. Dieses Programm führt die folgenden Schritte durch:
Entfernt den crontab(1) Eintrag des Benutzers, wenn dieser existiert.
Entfernt alle at(1) jobs, die dem Benutzer gehören.
Schließt alle Prozesse des Benutzers.
Entfernt den Benutzer aus der lokalen Passwort-Datei des Systems.
Entfernt optional das Heimatverzeichnis des Benutzers, falls es dem Benutzer gehört.
Entfernt eingegangene E-Mails des Benutzers
aus /var/mail
.
Entfernt alle Dateien des Benutzers aus temporären
Dateispeicherbereichen wie
/tmp
.
Entfernt den Loginnamen von allen Gruppen, zu denen
er gehört, aus /etc/group
. Wenn
eine Gruppe leer wird und der Gruppenname mit dem
Loginnamen identisch ist, wird die Gruppe entfernt. Das
ergänzt sich mit den einzelnen Benutzer-Gruppen, die von
adduser(8) für jeden neuen Benutzer erstellt
werden.
Der Superuser-Account kann nicht mit rmuser(8) entfernt werden, da dies in den meisten Fällen das System unbrauchbar macht.
Als Vorgabe wird ein interaktiver Modus benutzt.
rmuser
#
rmuser jru
Matching password entry: jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh Is this the entry you wish to remove?y
Remove user's home directory (/home/jru)?y
Removing user (jru): mailspool home passwd.#
Jeder Benutzer kann chpass(1) verwenden, um die Shell und persönliche Informationen des Benutzerkontos zu verändern. Der Superuser kann dieses Werkzeug benutzen, um zusätzliche Kontoinformationen für alle Benutzer zu ändern.
Werden neben dem optionalen Loginnamen keine weiteren Optionen angegeben, zeigt chpass(1) einen Editor mit Account-Informationen an. Wenn der Benutzer den Editor verlässt, wird die Account-Datenbank mit den neuen Informationen aktualisiert.
Dieses Programm fragt nach dem Verlassen des Editors nach dem Passwort, es sei denn, man ist als Superuser angemeldet.
In Beispiel 3.4, „chpass
als Superuser
verwenden“ hat der
Superuser chpass jru
eingegeben. Es
werden die Felder ausgegeben, die für diesen Benutzer
geändert werden können. Wenn stattdessen jru
diesen Befehl aufruft,
werden nur die letzten sechs Felder ausgegeben. Dies ist in
Beispiel 3.5, „chpass
als normaler Benutzer
verwenden“ zu sehen.
chpass
als Superuser
verwenden#Changing user database information for jru. Login: jru Password: * Uid [#]: 1001 Gid [# or name]: 1001 Change [month day year]: Expire [month day year]: Class: Home directory: /home/jru Shell: /usr/local/bin/zsh Full Name: J. Random User Office Location: Office Phone: Home Phone: Other information:
chpass
als normaler Benutzer
verwenden#Changing user database information for jru. Shell: /usr/local/bin/tcsh Full Name: J. Random User Office Location: Office Phone: Home Phone: Other information:
Die Kommandos chfn(1) und chsh(1) sind nur
Verweise auf chpass(1), genauso wie ypchpass(1),
ypchfn(1) und ypchsh(1). Da
NIS automatisch unterstützt wird, ist
es nicht notwendig das yp
vor dem
Kommando einzugeben. NIS wird später
im Kapitel 29, Netzwerkserver besprochen.
Jeder Benutzer kann mit passwd(1) einfach sein Passwort ändern. Um eine versehentliche oder unbefugte Änderung zu verhindern, muss bei einem Passwortwechsel zunächst das ursprüngliche Passwort eingegeben werden, bevor das neue Passwort festgelegt werden kann.
%
passwd
Changing local password for jru. Old password: New password: Retype new password: passwd: updating the database... passwd: done
Der Superuser kann jedes beliebige Passwort ändern, indem er den Benutzernamen an passwd(1) übergibt. Das Programm fordert den Superuser nicht dazu auf, das aktuelle Passwort des Benutzers einzugeben. Dadurch kann das Passwort geändert werden, falls der Benutzer sein ursprüngliches Passwort vergessen hat.
#
passwd jru
Changing local password for jru. New password: Retype new password: passwd: updating the database... passwd: done
Wie bei chpass(1) ist yppasswd(1) nur ein Verweis auf passwd(1). NIS wird von jedem dieser Kommandos unterstützt.
Mit dem Werkzeug pw(8) können Accounts und Gruppen erstellt, entfernt, verändert und angezeigt werden. Dieses Kommando dient als Schnittstelle zu den Benutzer- und Gruppendateien des Systems. pw(8) besitzt eine Reihe mächtiger Kommandozeilenschalter, die es für die Benutzung in Shell-Skripten geeignet machen, doch finden neue Benutzer die Bedienung des Kommandos komplizierter, als die der anderen hier vorgestellten Kommandos.
Eine Gruppe ist einfach eine Zusammenfassung von Accounts. Gruppen werden durch den Gruppennamen und die GID identifiziert. Der Kernel von FreeBSD entscheidet anhand der UID und der Gruppenmitgliedschaft eines Prozesses, ob er dem Prozess etwas erlaubt oder nicht. Wenn jemand von der GID eines Benutzers oder Prozesses spricht, meint er damit meistens die erste Gruppe der Gruppenliste.
Die Zuordnung von Gruppennamen zur GID
steht in /etc/group
, einer Textdatei mit
vier durch Doppelpunkte getrennten Feldern. Im ersten Feld
steht der Gruppenname, das zweite enthält ein verschlüsseltes
Passwort, das dritte gibt die GID an und
das vierte besteht aus einer Komma separierten Liste der
Mitglieder der Gruppe. Eine ausführliche Beschreibung der
Syntax dieser Datei finden Sie in group(5).
Wenn Sie /etc/group
nicht von Hand
editieren möchten, können Sie pw(8) zum Editieren
benutzen. Das folgende Beispiel zeigt das Hinzufügen einer
Gruppe mit dem Namen teamtwo
:
#
pw groupadd teamtwo
#
pw groupshow teamtwo
teamtwo:*:1100:
1100
ist die GID der
Gruppe teamtwo
.
Momentan hat teamtwo
noch keine
Mitglieder. Mit dem folgenden Kommando wird der Benutzer
jru
in die Gruppe
teamtwo
aufgenommen.
#
pw groupmod teamtwo -M jru
#
pw groupshow teamtwo
teamtwo:*:1100:jru
Als Argument von -M
geben Sie eine Komma
separierte Liste von Mitgliedern an, die in die Gruppe
aufgenommen werden sollen. Aus den vorherigen Abschnitten ist
bekannt, dass die Passwort-Datei ebenfalls eine Gruppe für
jeden Benutzer enthält. Das System teilt dem Benutzer
automatisch eine Gruppe zu, die aber vom
groupshow
Kommando von pw(8) nicht
angezeigt wird. Diese Information wird allerdings von
id(1) und ähnlichen Werkzeugen angezeigt. Das heißt,
dass pw(8) nur /etc/group
manipuliert, es wird nicht versuchen, zusätzliche
Informationen aus /etc/passwd
zu
lesen.
#
pw groupmod teamtwo -m db
#
pw groupshow teamtwo
teamtwo:*:1100:jru,db
Die Argumente zur Option -m
ist eine
durch Komma getrennte Liste von Benutzern, die der Gruppe
hinzugefügt werden sollen. Anders als im vorherigen Beispiel
werden diese Benutzer in die Gruppe aufgenommen und ersetzen
nicht die bestehenden Benutzer in der Gruppe.
id
die Gruppenzugehörigkeit
bestimmen%
id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)
In diesem Beispiel ist jru
Mitglied von
jru
und
teamtwo
.
Weitere Informationen zu diesem Befehl und dem Format von
/etc/group
finden Sie in pw(8) und
group(5).
In FreeBSD besitzt jede Datei und jedes Verzeichnis einen Satz von Zugriffsrechten. Es stehen mehrere Programme zum Anzeigen und Bearbeiten dieser Rechte zur Verfügung. Ein Verständnis für die Funktionsweise von Zugriffsrechten ist notwendig, um sicherzustellen, dass Benutzer nur auf die von ihnen benötigten Dateien zugreifen können und nicht auf die Dateien des Betriebssystems oder von anderen Benutzern.
In diesem Abschnitt werden die traditionellen Zugriffsrechte von UNIX® beschrieben. Informationen zu feingranularen Zugriffsrechten für Dateisysteme finden Sie im Abschnitt 13.9, „Zugriffskontrolllisten für Dateisysteme (ACL)“.
In UNIX® werden die grundlegenden Zugriffsrechte in
drei Typen unterteilt: Lesen, Schreiben und Ausführen.
Diese Zugriffstypen werden verwendet, um den Dateizugriff
für den Besitzer der Datei, die Gruppe und alle anderen zu
bestimmen. Die Lese-, Schreib- und Ausführungsberechtigungen
werden mit den Buchstaben r
,
w
und x
dargestellt.
Alternativ können die Berechtigungen als binäre Zahlen
dargestellt werden, da jede Berechtigung entweder aktiviert
oder deaktiviert (0
) ist. Wenn die
Berechtigung als Zahl dargestellt wird, ist die Reihenfolge
immer als rwx
zu lesen, wobei
r
den Wert 4
hat,
w
den Wert 2
und
x
den Wert 1
.
In Tabelle 4.1 sind die einzelnen nummerischen und
alphabetischen Möglichkeiten zusammengefasst. Das Zeichen
-
in der Spalte
„Auflistung im Verzeichnis“ besagt, dass eine
Berechtigung deaktiviert ist.
Wert | Zugriffsrechte | Auflistung im Verzeichnis |
---|---|---|
0 | Kein Lesen, Kein Schreiben, Kein Ausführen | --- |
1 | Kein Lesen, Kein Schreiben, Ausführen | --x |
2 | Kein Lesen, Schreiben, Kein Ausführen | -w- |
3 | Kein Lesen, Schreiben, Ausführen | -wx |
4 | Lesen, Kein Schreiben, Kein Ausführen | r-- |
5 | Lesen, Kein Schreiben, Ausführen | r-x |
6 | Lesen, Schreiben, Kein Ausführen | rw- |
7 | Lesen, Schreiben, Ausführen | rwx |
Benutzen Sie das Argument -l
mit
ls(1), um eine ausführliche Verzeichnisauflistung
zu sehen, die in einer Spalte die Zugriffsrechte für den
Besitzer, die Gruppe und alle anderen enthält.
Die Ausgabe von ls -l
könnte
wie folgt aussehen:
%
ls -l
total 530 -rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile -rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile -rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt
Das erste Zeichen (ganz links) der ersten Spalte zeigt an,
ob es sich um eine normale Datei, ein Verzeichnis, ein
zeichenorientiertes Gerät, ein Socket oder irgendeine andere
Pseudo-Datei handelt. In diesem Beispiel zeigt
-
eine normale Datei an. Die nächsten drei
Zeichen, dargestellt als rw-
, ergeben die
Rechte für den Datei-Besitzer. Die drei Zeichen danach
r--
die Rechte der Gruppe, zu der die Datei
gehört. Die letzten drei Zeichen, r--
,
geben die Rechte für den Rest der Welt an. Ein Minus
bedeutet, dass das Recht nicht gegeben ist. In diesem Beispiel
sind die Zugriffsrechte also: der Eigentümer kann die Datei
lesen und schreiben, die Gruppe kann lesen und alle anderen
können auch nur lesen. Entsprechend obiger Tabelle
wären die Zugriffsrechte für diese Datei
644
, worin jede Ziffer die drei Teile der
Zugriffsrechte dieser Datei verkörpert.
Wie kontrolliert das System die Rechte von Hardware-Geräten?
FreeBSD behandelt die meisten Hardware-Geräte als Dateien, welche
Programme öffnen, lesen und mit Daten beschreiben können. Diese
speziellen Gerätedateien sind in /dev
gespeichert.
Verzeichnisse werden ebenfalls wie Dateien behandelt. Sie haben Lese-, Schreib- und Ausführ-Rechte. Das Ausführungs-Bit hat eine etwas andere Bedeutung für ein Verzeichnis als für eine Datei. Die Ausführbarkeit eines Verzeichnisses bedeutet, dass in das Verzeichnis, zum Beispiel mit cd(1), gewechselt werden kann. Das bedeutet auch, dass in dem Verzeichnis auf Dateien, deren Namen bekannt sind, zugegriffen werden kann, vorausgesetzt die Zugriffsrechte der Dateien lassen dies zu.
Das Leserecht auf einem Verzeichnis erlaubt es, sich den Inhalt des Verzeichnisses anzeigen zu lassen. Um eine Datei mit bekanntem Namen in einem Verzeichnis zu löschen, müssen auf dem Verzeichnis Schreib- und Ausführ-Rechte gesetzt sein.
Es gibt noch mehr Rechte, aber die werden vor allem in speziellen Umständen benutzt, wie zum Beispiel bei SetUID-Binaries und Verzeichnissen mit gesetztem Sticky-Bit. Mehr über Zugriffsrechte von Dateien und wie sie gesetzt werden, finden Sie in chmod(1).
Symbolische Zugriffsrechte verwenden Zeichen anstelle von
oktalen Werten, um die Berechtigungen für Dateien oder
Verzeichnisse festzulegen. Zugriffsrechte verwenden die
Syntax Wer
,
Aktion
und
Berechtigung
. Die folgenden Werte
stehen zur Auswahl:
Option | Symbol | Bedeutung |
---|---|---|
Wer | u | Benutzer (user) |
Wer | g | Gruppe (group) |
Wer | o | Andere (other) |
Wer | a | Alle |
Aktion | + | Berechtigungen hinzufügen |
Aktion | - | Berechtigungen entziehen |
Aktion | = | Berechtigungen explizit setzen |
Berechtigung | r | lesen (read) |
Berechtigung | w | schreiben (write) |
Berechtigung | x | ausführen (execute) |
Berechtigung | t | Sticky-Bit |
Berechtigung | s | Set-UID oder Set-GID |
Diese symbolischen Werte werden zusammen mit chmod(1)
verwendet. Beispielsweise würde der folgende Befehl den Zugriff
auf FILE
für alle anderen Benutzer
verbieten:
%
chmod go= FILE
Wenn Sie mehr als eine Änderung der Rechte einer
Datei vornehmen wollen, können Sie eine durch Kommata
getrennte Liste der Rechte angeben. Das folgende Beispiel
entzieht der Gruppe und der Welt die Schreibberechtigung auf
FILE
und fügt für jeden
Ausführungsrechte hinzu:
%
chmod go-w,a+x
FILE
Zusätzlich zu den Zugriffsrechten unterstützt FreeBSD auch
die Nutzung von „Datei-Flags“. Diese erhöhen die
Sicherheit des Systems, indem sie eine verbesserte Kontrolle
von Dateien erlauben. Verzeichnisse werden allerdings nicht
unterstützt. Mit dem Einsatz von Datei-Flags kann sogar
root
daran gehindert
werden, Dateien zu löschen oder zu verändern.
Datei-Flags werden mit chflags(1) verändert. Um
beispielsweise auf der Datei file1
das
„unlöschbar“-Flag zu aktivieren, geben Sie
folgenden Befehl ein:
#
chflags sunlink file1
Um dieses Flag zu deaktivieren, setzen Sie ein
„no“ vor sunlink
:
#
chflags nosunlink file1
Um die Flags einer Datei anzuzeigen, verwenden Sie
ls(1) zusammen mit -lo
:
#
ls -lo file1
-rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 file1
Einige Datei-Flags können nur vom
root
-Benutzer
gesetzt oder gelöscht werden. Andere wiederum können
auch vom Eigentümer der Datei gesetzt werden. Weitere
Informationen hierzu finden sich in chflags(1) und
chflags(2).
Anders als die Berechtigungen, die bereits angesprochen
wurden, existieren drei weitere Einstellungen, über die alle
Administratoren Bescheid wissen sollten. Dies sind die
Berechtigungen setuid
,
setgid
und
sticky
.
Diese Einstellungen sind wichtig für manche UNIX®-Operationen, da sie Funktionalitäten zur Verfügung stellen, die normalerweise nicht an gewöhnliche Anwender vergeben wird. Um diese zu verstehen, muss der Unterschied zwischen der realen und der effektiven Benutzer-ID erwähnt werden.
Die reale Benutzer-ID ist die UID,
welche den Prozess besitzt oder gestartet hat. Die effektive
UID ist diejenige, als die der Prozess
läuft. Beispielsweise wird passwd(1) mit der realen ID
des Benutzers ausgeführt, der sein Passwort ändert. Um jedoch
die Passwortdatenbank zu bearbeiten, wird es effektiv als
root
-Benutzer
ausgeführt. Das ermöglicht es normalen Benutzern, ihr
Passwort zu ändern, ohne einen
Permission Denied-Fehler angezeigt zu
bekommen.
Die setuid-Berechtigung kann durch das Voranstellen bei einer Berechtigungsgruppe mit der Nummer Vier (4) gesetzt werden, wie im folgenden Beispiel gezeigt wird:
#
chmod 4755 suidexample.sh
Die Berechtigungen auf
sehen jetzt wie folgt aus:suidexample.sh
-rwsr-xr-x 1 trhodes trhodes 63 Aug 29 06:36 suidexample.sh
Beachten Sie, dass ein s
jetzt Teil der
Berechtigungen des Dateibesitzers geworden ist, welches das
Ausführen-Bit ersetzt. Dies ermöglicht es Werkzeugen mit
erhöhten Berechtigungen zu laufen, wie beispielsweise
passwd
.
Die nosuid
mount(8)-Option
bewirkt, dass solche Anwendungen stillschweigend scheitern,
ohne den Anwender darüber zu informieren. Diese Option ist
nicht völlig zuverlässig, da ein
nosuid
-Wrapper in der Lage wäre, dies zu
umgehen.
Um dies in Echtzeit zu beobachten, öffnen Sie zwei
Terminals. Starten Sie auf einem passwd
als normaler Benutzer. Während es auf die Passworteingabe
wartet, überprüfen Sie die Prozesstabelle und sehen Sie sich
die Informationen für passwd(1) an:
Im Terminal A:
Changing local password for trhodes Old Password:
Im Terminal B:
#
ps aux | grep passwd
trhodes 5232 0.0 0.2 3420 1608 0 R+ 2:10AM 0:00.00 grep passwd root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd
Obwohl passwd(1) als normaler Benutzer ausgeführt
wird, benutzt es die effektive UID von
root
.
Die setgid
-Berechtigung führt die
gleiche Aktion wie die setuid
-Berechtigung
durch, allerdings verändert sie die Gruppenberechtigungen.
Wenn eine Anwendung oder ein Werkzeug mit dieser Berechtigung
ausgeführt wird, erhält es die Berechtigungen basierend auf
der Gruppe, welche die Datei besitzt und nicht die des
Benutzers, der den Prozess gestartet hat.
Um die setgid
-Berechtigung auf einer
Datei zu setzen, geben Sie chmod(1) eine führende
Zwei (2) mit:
#
chmod 2755 sgidexample.sh
Beachten Sie in der folgenden Auflistung, dass das
s
sich jetzt in dem Feld befindet, das für
die Berechtigungen der Gruppe bestimmt ist:
-rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 sgidexample.sh
Obwohl es sich bei dem in diesen Beispielen gezeigten Shellskript um eine ausführbare Datei handelt, wird es nicht mit einer anderen EUID oder effektiven Benutzer-ID ausgeführt. Das ist so, weil Shellskripte keinen Zugriff auf setuid(2)-Systemaufrufe erhalten.
Die setuid
und
setgid
Berechtigungs-Bits können die
Systemsicherheit verringern, da sie erhöhte Rechte
ermöglichen. Das dritte Berechtigungs-Bit, das
sticky bit
kann die Sicherheit eines
Systems erhöhen.
Wenn das sticky bit
auf einem
Verzeichnis angewendet wird, erlaubt es das Löschen von
Dateien nur durch den Besitzer der Datei. Dies ist nützlich,
um die Löschung von Dateien in öffentlichen Verzeichnissen wie
/tmp
, durch Benutzer denen diese Dateien
nicht gehören, zu verhindern. Um diese Berechtigung
anzuwenden, stellen Sie der Berechtigung eine Eins (1)
voran:
#
chmod 1777 /tmp
Das sticky bit
kann anhand des
t
ganz am Ende der Berechtigungen abgelesen
werden.
#
ls -al / | grep tmp
drwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmp
Die FreeBSD-Verzeichnishierarchie ist die Grundlage, um ein umfassendes Verständnis des Systems zu erlangen. Das wichtigste Verzeichnis ist das Root-Verzeichnis „/“. Dieses Verzeichnis ist das erste, das während des Bootens eingehangen wird. Es enthält das notwendige Basissystem, um das Betriebssystem in den Mehrbenutzerbetrieb zu bringen. Das Root-Verzeichnis enthält auch die Mountpunkte für Dateisysteme, die beim Wechsel in den Multiuser-Modus eingehängt werden.
Ein Mountpunkt ist ein Verzeichnis, in das zusätzliche
Dateisysteme (in der Regel unterhalb des Wurzelverzeichnisses)
eingehängt werden können. Dieser Vorgang wird in
Abschnitt 3.6, „Festplatten, Slices und Partitionen“ ausführlich beschrieben.
Standard-Mountpunkte sind /usr
,
/var
, /tmp
,
/mnt
sowie /cdrom
.
Auf diese Verzeichnisse verweisen üblicherweise Einträge
in /etc/fstab
. Diese Datei ist
eine Tabelle mit verschiedenen Dateisystemen und Mountpunkten,
vom System gelesen werden. Die meisten der Dateisysteme in
/etc/fstab
werden beim Booten automatisch
durch das Skript rc(8) gemountet, wenn die zugehörigen
Einträge nicht mit noauto
versehen sind. Weitere Informationen zu diesem Thema finden Sie
im Abschnitt 3.7.1, „Die fstab
Datei“.
Eine vollständige Beschreibung der Dateisystem-Hierarchie finden Sie in hier(7). Die folgende Aufstellung gibt einen kurzen Überblick über die am häufigsten verwendeten Verzeichnisse:
Verzeichnis | Beschreibung |
---|---|
/ | Wurzelverzeichnis des Dateisystems. |
/bin/ | Grundlegende Werkzeuge für den Single-User-Modus sowie den Mehrbenutzerbetrieb. |
/boot/ | Programme und Konfigurationsdateien, die während des Bootens benutzt werden. |
/boot/defaults/ | Vorgaben für die Boot-Konfiguration. Weitere Details finden Sie in loader.conf(5). |
/dev/ | Gerätedateien. Weitere Details finden Sie in intro(4). |
/etc/ | Konfigurationsdateien und Skripten des Systems. |
/etc/defaults/ | Vorgaben für die System Konfigurationsdateien. Weitere Details finden Sie in rc(8). |
/etc/mail/ | Konfigurationsdateien von MTAs wie sendmail(8). |
/etc/periodic/ | Täglich, wöchentlich oder monatlich laufende Skripte, die von cron(8) gestartet werden. Weitere Details finden Sie in periodic(8). |
/etc/ppp/ | Konfigurationsdateien von ppp(8). |
/mnt/ | Ein leeres Verzeichnis, das von Systemadministratoren häufig als temporärer Mountpunkt genutzt wird. |
/proc/ | Prozess Dateisystem. Weitere Details finden Sie in procfs(5) und mount_procfs(8). |
/rescue/ | Statisch gelinkte Programme zur Wiederherstellung des Systems, wie in rescue(8) beschrieben. |
/root/ | Home Verzeichnis von root . |
/sbin/ | Systemprogramme und administrative Werkzeuge, die grundlegend für den Single-User-Modus und den Mehrbenutzerbetrieb sind. |
/tmp/ | Temporäre Dateien, die für gewöhnlich bei einem
Neustart des Systems verloren gehen. Häufig wird ein
speicherbasiertes Dateisystem unter
/tmp eingehängt. Dieser Vorgang
kann automatisiert werden, wenn tmpmfs-bezogene
Variablen von rc.conf(5) verwendet werden, oder
ein entsprechender Eintrag in
/etc/fstab existiert. Weitere
Informationen finden Sie in mdmfs(8). |
/usr/ | Der Großteil der Benutzerprogramme und Anwendungen. |
/usr/bin/ | Gebräuchliche Werkzeuge, Programmierhilfen und Anwendungen. |
/usr/include/ | Standard C include-Dateien. |
/usr/lib/ | Bibliotheken. |
/usr/libdata/ | Daten verschiedener Werkzeuge. |
/usr/libexec/ | System-Dämonen und System-Werkzeuge, die von anderen Programmen ausgeführt werden. |
/usr/local/ | Lokale Programme und Bibliotheken. Die
Ports-Sammlung von FreeBSD benutzt dieses Verzeichnis
als Zielverzeichnis für Anwendungen. Innerhalb von
/usr/local sollte das von
hier(7) beschriebene Layout für
/usr benutzt werden. Das
man Verzeichnis wird direkt unter
/usr/local anstelle unter
/usr/local/share angelegt. Die
Dokumentation der Ports findet sich in
share/doc/ . |
/usr/obj/ | Von der Architektur abhängiger Verzeichnisbaum,
der durch das Bauen von /usr/src
entsteht. |
/usr/ports/ | Die FreeBSD-Ports-Sammlung (optional). |
/usr/sbin/ | System-Dämonen und System-Werkzeuge, die von Benutzern ausgeführt werden. |
/usr/share/ | Von der Architektur unabhängige Dateien. |
/usr/src/ | Quelldateien von BSD und/oder lokalen Ergänzungen. |
/var/ | Wird für mehrere Zwecke genutzt und enthält
Logdateien, temporäre Daten und Spooldateien.
Manchmal wird ein speicherbasiertes Dateisystem unter
/var
eingehängt. Dieser Vorgang kann automatisiert werden,
wenn die varmfs-bezogenen Variablen von
rc.conf(5) verwendet werden, oder ein
entsprechender Eintrag in
/etc/fstab existiert. Weitere
Informationen finden Sie in mdmfs(8). |
/var/log/ | Verschiedene Logdateien des Systems. |
/var/mail/ | Postfächer der Benutzer. |
/var/spool/ | Verschiedene Spool-Verzeichnisse der Drucker- und Mailsysteme. |
/var/tmp/ | Temporäre Dateien, die in der Regel auch bei
einem Neustart des Systems erhalten bleiben, es sei
denn, bei /var handelt es sich um
ein speicherbasiertes Dateisystem. |
/var/yp/ | NIS maps. |
FreeBSD identifiziert Dateien anhand eines Dateinamens. In
Dateinamen wird zwischen Groß- und Kleinschreibung
unterschieden: readme.txt
und
README.TXT
bezeichnen daher zwei
verschiedene Dateien. FreeBSD benutzt keine Dateiendungen, um den
Typ der Datei zu bestimmen, egal ob es sich um ein Programm, ein
Dokument oder um andere Daten handelt.
Dateien werden in Verzeichnissen gespeichert. In einem Verzeichnis können sich keine oder hunderte Dateien befinden. Ein Verzeichnis kann auch andere Verzeichnisse enthalten und so eine Hierarchie von Verzeichnissen aufbauen, die die Ablage von Daten erleichtert.
In Dateinamen werden Verzeichnisse durch einen
Schrägstrich (/
,
Slash) getrennt. Wenn z.B.
das Verzeichnis foo
ein Verzeichnis
bar
enthält, in dem sich die Datei
readme.txt
befindet, lautet der
vollständige Name der Datei (oder der
Pfad zur Datei)
foo/bar/readme.txt
. Beachten Sie, dass
sich dies von Windows® unterscheidet, wo der
\
(Backslash
für die Trennung von Datei- und Verzeichnisnamen verwendet wird.
FreeBSD benutzt keine Laufwerkbuchstaben oder Laufwerknamen im
Pfad. Beispielsweise würde man unter FreeBSD nicht
c:\foo\bar\readme.txt
eingeben.
Verzeichnisse und Dateien werden in einem Dateisystem gespeichert. Jedes Dateisystem besitzt genau ein Wurzelverzeichnis, das so genannte Root-Directory. Dieses Wurzelverzeichnis kann weitere Verzeichnisse enthalten. Ein Dateisystem wird als Wurzeldateisystem festgelegt, und jedes weitere Dateisystem wird unter dem Wurzeldateisystem eingehangen. Daher scheint jedes Verzeichnis, unabhängig von der Anzahl der Platten, auf derselben Platte zu liegen.
Betrachten wir die drei Dateisysteme A
,
B
und C
. Jedes
Dateisystem besitzt ein eigenes Wurzelverzeichnis, das zwei
andere Verzeichnisse enthält: A1
,
A2
, B1
,
B2
, C1
und
C2
.
Das Wurzeldateisystem soll A
sein.
ls(1) zeigt darin die beiden Verzeichnisse
A1
und A2
an.
Der Verzeichnisbaum sieht wie folgt aus:
Ein Dateisystem wird in einem Verzeichnis eines anderen
Dateisystems eingehangen. Wir hängen nun das Dateisystem
B
in das Verzeichnis
A1
ein. Das Wurzelverzeichnis von
B
ersetzt nun das Verzeichnis
A1
und die Verzeichnisse des Dateisystems
B
werden sichtbar:
Jede Datei in den Verzeichnissen
B1
oder B2
kann
über den Pfad /A1/B1
oder
/A1/B2
erreicht werden. Dateien aus dem
Verzeichnis /A1
sind jetzt verborgen.
Wenn das Dateisystem B
wieder
abgehangen wird
(umount), erscheinen die
verborgenen Dateien wieder.
Wenn das Dateisystem B
unter dem
Verzeichnis A2
eingehangen würde, sähe der Verzeichnisbaum
so aus:
Die Dateien des Dateisystems B
wären
unter den Pfaden /A2/B1
und
/A2/B2
erreichbar.
Dateisysteme können übereinander eingehangen werden. Der
folgende Baum entsteht, wenn im letzten Beispiel das
Dateisystem C
in das Verzeichnis
B1
des Dateisystems
B
eingehangen wird:
C
könnte auch im Verzeichnis
A1
eingehangen
werden:
Sie können sogar mit nur einem großen Dateisystem auskommen. Dies hat mehrere Nachteile und einen Vorteil.
Die Dateisysteme können mit unterschiedlichen
Optionen (mount options)
eingehangen werden. Beispielsweise kann das
Wurzeldateisystem schreibgeschützt eingehangen werden,
sodass es für Benutzer nicht möglich ist, versehentlich
kritische Dateien zu editieren oder zu löschen.
Von Benutzern beschreibbare Dateisysteme
wie /home
können mit der Option nosuid
eingehangen werden, wenn sie von anderen Dateisystemen
getrennt sind. Die SUID- und
GUID-Bits verlieren auf solchen
Dateisystemen ihre Wirkung und die Sicherheit des
Systems kann dadurch erhöht werden.
Die Lage von Dateien im Dateisystem wird, abhängig vom Gebrauch des Dateisystems, automatisch von FreeBSD optimiert. Ein Dateisystem mit vielen kleinen Dateien, die häufig geschrieben werden, wird anders behandelt als ein Dateisystem mit wenigen großen Dateien. Mit nur einem Dateisystem ist diese Optimierung unmöglich.
In der Regel übersteht ein FreeBSD-Dateisystem auch einen Stromausfall. Allerdings kann ein Stromausfall zu einem kritischen Zeitpunkt das Dateisystem beschädigen. Wenn die Daten über mehrere Dateisysteme verteilt sind, lässt sich das System mit hoher Wahrscheinlichkeit noch starten. Dies erleichtert das Zurückspielen von Datensicherungen.
Dateisysteme haben eine festgelegte Größe. Es kann passieren, dass Sie eine Partition vergrößern müssen. Dies ist nicht leicht: Sie müssen die Daten sichern, das Dateisystem vergrößert anlegen und die gesicherten Daten zurückspielen.
FreeBSD kennt den Befehl growfs(8), mit dem man Dateisysteme im laufenden Betrieb vergrößern kann.
Dateisysteme befinden sich in Partitionen (damit sind
nicht die normalen MS-DOS®-Partitionen gemeint). Jede
Partition wird mit einem Buchstaben von a
bis h
bezeichnet und kann nur ein
Dateisystem enthalten. Dateisysteme können daher über ihren
Mount-Point, den Punkt an dem sie eingehangen sind, oder
den Buchstaben der Partition, in der sie liegen, identifiziert
werden.
FreeBSD benutzt einen Teil der Platte für den Swap-Bereich, um virtuellen Speicher zur Verfügung zu stellen. Dadurch kann der Rechner Anwendungen mehr Speicher zur Verfügung stellen als tatsächlich eingebaut ist. Wenn der Speicher knapp wird, kann FreeBSD nicht benutzte Daten in den Swap-Bereich auslagern. Die ausgelagerten Daten können später wieder in den Speicher geholt werden (dafür werden dann andere Daten ausgelagert).
Für einige Partitionen gelten besondere Konventionen:
Partition | Konvention |
---|---|
a | Enthält normalerweise das Wurzeldateisystem. |
b | Enthält normalerweise den Swap-Bereich. |
c | Ist normalerweise genauso groß wie die Slice in der
die Partition liegt. Werkzeuge, die auf der kompletten
Slice arbeiten, wie ein Bad-Block-Scanner, können so die
c -Partition benutzen. Für gewöhnlich
wird in dieser Partition kein Dateisystem
angelegt. |
d | Früher hatte die d -Partition
eine besondere Bedeutung. Heute ist dies nicht mehr
der Fall und die Partition d kann
wie jede andere Partition auch verwendet
werden. |
In FreeBSD werden Festplatten in Slices, welche in Windows® als Partitionen bekannt sind, aufgeteilt und von 1 bis 4 durchnummeriert. Diese werden dann in Partitionen unterteilt, welche wiederum Dateisysteme enthalten und mit Buchstaben benannt werden.
Die Slice-Nummern werden mit vorgestelltem
s
hinter den Gerätenamen gestellt:
„da0s1“ ist die erste Slice
auf dem ersten SCSI-Laufwerk. Auf einer
Festplatte gibt es höchstens vier Slices. In einer Slice des
passenden Typs kann es weitere logische Slices geben. Diese
erweiterten Slices werden ab fünf durchnummeriert:
„ada0s5“ ist die erste
erweiterte Slice auf einer SATA-Platte. Diese Geräte werden
von Dateisystemen benutzt, die sich in einer kompletten Slice
befinden müssen.
Slices, „dangerously dedicated“-Festplatten
und andere Platten enthalten Partitionen, die mit Buchstaben
von a
bis h
bezeichnet
werden. Der Buchstabe wird an den Gerätenamen gehangen:
„da0a“ ist die
a
-Partition des ersten
da
-Laufwerks. Dieses Laufwerk ist
„dangerously dedicated“.
„ada1s3e“ ist
die fünfte Partition in der dritten Slice der zweiten
SATA-Platte.
Schließlich wird noch jede Festplatte des Systems eindeutig bezeichnet. Der Name einer Festplatte beginnt mit einem Code, der den Typ der Platte bezeichnet. Es folgt eine Nummer, die angibt, um welche Festplatte es sich handelt. Anders als bei Slices werden Festplatten von Null beginnend durchnummeriert. Gängige Festplatten-Namen sind in Tabelle 3.3, „Laufwerk-Codes“ aufgeführt.
Wenn Sie eine Partition angeben, beinhaltet das den
Plattennamen, s
, die Slice-Nummer und den
Buchstaben der Partition. Einige Beispiele finden Sie in
Beispiel 3.12, „Namen von Platten, Slices und Partitionen“.
Der Aufbau einer Festplatte wird in Beispiel 3.13, „Aufteilung einer Festplatte“ dargestellt.
Bei der Installation von FreeBSD legen Sie Slices auf der Festplatte an, erstellen Partitionen für FreeBSD innerhalb der Slice, erstellen ein Dateisystem oder Auslagerungsbereiche und entscheiden, welche Dateisysteme wo eingehangen werden.
Laufwerkstyp | Gerätename |
---|---|
SATA- und IDE-Festplatten | ada oder
ad |
SCSI-Festplatten und USB-Speichermedien | da |
SATA- und IDE-CD-ROM-Laufwerke | cd oder
acd |
SCSI-CD-ROM-Laufwerke | cd |
Diskettenlaufwerke | fd |
Verschiedene proprietäre CD-ROM-Laufwerke | mcd für Mitsumi
CD-ROM und scd
für Sony CD-ROM |
SCSI-Bandlaufwerke | sa |
IDE-Bandlaufwerke | ast |
RAID-Laufwerke | Beispiele sind aacd für
Adaptec® AdvancedRAID, mlxd für
Mylex®, amrd für AMI MegaRAID®,
idad für Compaq Smart RAID,
twed für 3ware® RAID. |
Name | Bedeutung |
---|---|
ada0s1a | Die erste Partition (a )
in der ersten Slice (s1 ) der
ersten SATA-Festplatte
(ada0 ). |
da1s2e | Die fünfte Partition (e )
der zweiten Slice (s2 ) auf
der zweiten SCSI-Festplatte
(da1 ). |
Das folgende Diagramm zeigt die Sicht von FreeBSD auf die
erste SATA-Festplatte des Systems. Die
Platte soll 250 GB groß sein und eine 80 GB große
Slice (MS-DOS®-Partitionen) sowie eine 170 GB große
Slice enthalten. Die erste Slice enthält ein Windows®
NTFS-Dateisystem
(C:
), die zweite Slice enthält eine
FreeBSD-Installation. Die FreeBSD-Installation in diesem Beispiel
verwendet vier Datenpartitionen und einen
Auslagerungsbereich.
Jede der vier Partitionen enthält ein Dateisystem. Das
Wurzeldateisystem ist die a
-Partition.
In der d
-Partition befindet sich
/var
und in der
f
-Partition befindet sich
/usr
. Die
c
-Partition bezieht sich auf die gesamte
Slice und wird nicht für gewöhnliche Partitionen
verwendet.
Ein Dateisystem wird am besten als ein Baum mit der
Wurzel /
veranschaulicht.
/dev
, /usr
, und
die anderen Verzeichnisse im Rootverzeichnis sind Zweige,
die wiederum eigene Zweige wie /usr/local
haben können.
Es gibt verschiedene Gründe, bestimmte dieser Verzeichnisse
auf eigenen Dateisystemen anzulegen. /var
enthält log/
, spool/
sowie verschiedene andere temporäre
Dateien und kann sich daher schnell füllen. Es empfiehlt sich,
/var
von /
zu trennen,
da es schlecht ist, wenn das Root-Dateisystem voll
läuft.
Ein weiterer Grund bestimmte Verzeichnisbäume auf andere Dateisysteme zu legen, ist gegeben, wenn sich die Verzeichnisbäume auf gesonderten physikalischen oder virtuellen Platten, wie Network File System oder CD-ROM-Laufwerken, befinden.
Während des Boot-Prozesses (Kapitel 12, FreeBSDs Bootvorgang)
werden in /etc/fstab
aufgeführte
Verzeichnisse, sofern sie nicht mit der Option
noauto
versehen sind, automatisch angehangen.
Diese Datei enthält Einträge in folgendem Format:
device
/mount-point
fstype
options
dumpfreq
passno
device
Ein existierender Gerätename wie in Tabelle 3.3, „Laufwerk-Codes“ beschrieben.
mount-point
Ein existierendes Verzeichnis, auf dem das Dateisystem gemountet wird.
fstype
Der Typ des Dateisystems,
der an mount(8) weitergegeben wird. FreeBSDs
Standarddateisystem ist ufs
.
options
Entweder rw
für beschreibbare Dateisysteme oder ro
für schreibgeschützte Dateisysteme, gefolgt von
weiteren benötigten Optionen. Eine häufig verwendete
Option ist noauto
für Dateisysteme,
die während der normalen Bootsequenz nicht angehangen
werden sollen. Weitere Optionen finden sich
in mount(8).
dumpfreq
Wird von dump(8) benutzt, um bestimmen
zu können, welche Dateisysteme gesichert werden müssen.
Fehlt der Wert, wird 0
angenommen.
passno
Bestimmt die Reihenfolge, in der die Dateisysteme
überprüft werden sollen. Für Dateisysteme, die
übersprungen werden sollen, ist
passno
auf 0
zu
setzen. Für das Root-Dateisystem, das vor allen anderen
überprüft werden muss, sollte der Wert von
passno
1
betragen.
Allen anderen Dateisystemen sollten Werte größer
1
zugewiesen werden. Wenn mehrere
Dateisysteme den gleichen Wert besitzen, wird
fsck(8) versuchen, diese parallel zu
überprüfen.
Lesen Sie fstab(5) für weitere Informationen über das
Format von /etc/fstab
und dessen
Optionen.
Dateisysteme werden mit mount(8) eingehängt. In der grundlegenden Form wird es wie folgt benutzt:
#
mount
device
mountpoint
Dieser Befehl bietet viele Optionen, die in mount(8) beschrieben werden. Die am häufigsten verwendeten Optionen sind:
mount
-a
Hängt alle Dateisysteme aus
/etc/fstab
an. Davon ausgenommen
sind Dateisysteme, die mit „noauto“
markiert sind, die mit der Option -t
ausgeschlossen wurden und Dateisysteme, die schon
angehangen sind.
-d
Führt alles bis auf den
mount
-Systemaufruf aus.
Nützlich ist diese Option in Verbindung
mit -v
. Damit wird angezeigt, was
mount(8) tatsächlich versuchen
würde, um das Dateisystem anzuhängen.
-f
Erzwingt das Anhängen eines unsauberen Dateisystems (riskant) oder die Rücknahme des Schreibzugriffs, wenn der Status des Dateisystems von beschreibbar auf schreibgeschützt geändert wird.
-r
Hängt das Dateisystem schreibgeschützt ein. Dies
kann auch durch Angabe von -o ro
erreicht werden.
-t
fstype
Hängt das Dateisystem mit dem angegebenen Typ an,
oder hängt nur Dateisysteme mit dem angegebenen Typ
an, wenn -a
angegeben wurde.
„ufs“ ist das Standarddateisystem.
-u
Aktualisiert die Mountoptionen des Dateisystems.
-v
Geschwätzig sein.
-w
Hängt das Dateisystem beschreibbar an.
Die folgenden Optionen können durch eine Kommata
separierte Liste an -o
übergeben
werden:
SetUID und SetGID Bits werden auf dem Dateisystem nicht beachtet. Dies ist eine nützliche Sicherheitsfunktion.
umount(8) hängt ein Dateisystem ab. Dieser Befehl
akzeptiert als Parameter entweder
einen Mountpoint, einen Gerätenamen, -a
oder -A
.
Jede Form akzeptiert -f
, um das
Abhängen zu erzwingen, und -v
, um
etwas geschwätziger zu sein. Seien Sie bitte vorsichtig mit
-f
, da der Computer abstürzen kann oder es
können Daten auf dem Dateisystem beschädigt werden.
Um alle Dateisysteme abzuhängen, oder nur diejenigen, die
mit -t
gelistet werden, wird
-a
oder -A
benutzt.
Beachten Sie, dass -a
das Root-Dateisystem
nicht aushängt.
FreeBSD ist ein Multitasking-Betriebssystem. Jedes Programm, das zu irgendeiner Zeit läuft wird als Prozess bezeichnet. Jedes laufende Kommando startet mindestens einen neuen Prozess. Dazu gibt es eine Reihe von Systemprozessen, die von FreeBSD ausgeführt werden.
Jeder Prozess wird durch eine eindeutige Nummer
identifiziert, die Prozess-ID
(PID) genannt wird. Prozesse haben
ebenso wie Dateien einen Besitzer und eine Gruppe, die
festlegen, welche Dateien und Geräte der Prozess benutzen kann.
Die meisten Prozesse haben auch einen Elternprozess, der sie
gestartet hat. Beispielsweise ist die Shell ein Prozess. Jedes
in Shell gestartete Kommando ist dann ein neuer Prozess, der die
Shell als Elternprozess besitzt. Die Ausnahme hiervon ist ein
spezieller Prozess namens init(8), der beim booten immer
als erstes gestartet wird und der immer die
PID 1
hat.
Manche Programme erwarten keine Eingaben vom Benutzer und lösen sich bei erster Gelegenheit von ihrem Terminal. Ein Webserver zum Beispiel antwortet auf Web-Anfragen und nicht auf Benutzereingaben. Mail-Server sind ein weiteres Beispiel für diesen Typ von Anwendungen. Diese Programme sind als Dämonen bekannt. Der Begriff Dämon stammt aus der griechischen Mythologie und bezeichnet ein Wesen, das weder gut noch böse ist und welches unsichtbar nützliche Aufgaben verrichtet. Deshalb ist das BSD Maskottchen dieser fröhlich aussehende Dämon mit Turnschuhen und Dreizack.
Programme, die als Dämon laufen, werden entsprechend einer
Konvention mit einem „d“ am Ende benannt.
BIND steht beispielsweise für
Berkeley Internet Name Domain, das tatsächlich laufende Programm
heißt aber named
. Der
Apache Webserver wird
httpd
genannt und der Druckerspool-Dämon
heißt lpd(8). Dies ist allerdings nur eine Konvention.
Der Dämon der Anwendung Sendmail
heißt beispielsweise sendmail
und nicht
maild
.
Um die Prozesse auf dem System zu sehen, benutzen Sie ps(1) und top(1). Eine statische Liste der laufenden Prozesse, deren PIDs, Speicherverbrauch und die Kommandozeile, mit der sie gestartet wurden, erhalten Sie mit ps(1). Um alle laufenden Prozesse in einer Anzeige zu sehen, die alle paar Sekunden aktualisiert wird, so dass Sie interaktiv sehen können was der Computer macht, benutzen Sie top(1).
In der Voreinstellung zeigt ps(1) nur die laufenden Prozesse, die dem Benutzer gehören. Zum Beispiel:
%
ps
PID TT STAT TIME COMMAND 8203 0 Ss 0:00.59 /bin/csh 8895 0 R+ 0:00.00 ps
Die Ausgabe von ps(1) ist in einer Anzahl von Spalten
organisiert. Die PID
Spalte zeigt die
Prozess-ID. PIDs werden von 1 beginnend
bis 99999 zugewiesen und fangen wieder von vorne an. Ist eine
PID bereits vergeben, wird diese allerdings
nicht erneut vergeben. Die Spalte TT
zeigt
den Terminal, auf dem das Programm läuft.
STAT
zeigt den Status des Programms und
TIME
gibt die Zeit an, die das Programm auf
der CPU gelaufen ist. Dies ist nicht unbedingt die Zeit, die
seit dem Start des Programms vergangen ist, da die meisten
Programme hauptsächlich auf bestimmte Dinge warten, bevor sie
wirklich CPU-Zeit verbrauchen. Unter der Spalte
COMMAND
findet sich schließlich die
Kommandozeile, mit der das Programm gestartet wurde.
ps(1) besitzt viele Optionen, um die angezeigten
Informationen zu beeinflussen. Eine nützliche Kombination ist
auxww
. a
zeigt
Information über alle laufenden Prozesse aller Benutzer. Der
Name des Besitzers des Prozesses, sowie Informationen
über den Speicherverbrauch werden mit u
angezeigt. x
zeigt auch Dämonen-Prozesse an,
und ww
veranlasst ps(1) die komplette
Kommandozeile für jeden Befehl anzuzeigen, anstatt sie
abzuschneiden, wenn sie zu lang für die Bildschirmausgabe
wird.
Die Ausgabe von top(1) sieht in etwa so aus:
%
top
last pid: 9609; load averages: 0.56, 0.45, 0.36 up 0+00:20:03 10:21:46 107 processes: 2 running, 104 sleeping, 1 zombie CPU: 6.2% user, 0.1% nice, 8.2% system, 0.4% interrupt, 85.1% idle Mem: 541M Active, 450M Inact, 1333M Wired, 4064K Cache, 1498M Free ARC: 992M Total, 377M MFU, 589M MRU, 250K Anon, 5280K Header, 21M Other Swap: 2048M Total, 2048M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 557 root 1 -21 r31 136M 42296K select 0 2:20 9.96% Xorg 8198 dru 2 52 0 449M 82736K select 3 0:08 5.96% kdeinit4 8311 dru 27 30 0 1150M 187M uwait 1 1:37 0.98% firefox 431 root 1 20 0 14268K 1728K select 0 0:06 0.98% moused 9551 dru 1 21 0 16600K 2660K CPU3 3 0:01 0.98% top 2357 dru 4 37 0 718M 141M select 0 0:21 0.00% kdeinit4 8705 dru 4 35 0 480M 98M select 2 0:20 0.00% kdeinit4 8076 dru 6 20 0 552M 113M uwait 0 0:12 0.00% soffice.bin 2623 root 1 30 10 12088K 1636K select 3 0:09 0.00% powerd 2338 dru 1 20 0 440M 84532K select 1 0:06 0.00% kwin 1427 dru 5 22 0 605M 86412K select 1 0:05 0.00% kdeinit4
Die Ausgabe ist in zwei Abschnitte geteilt. In den ersten
fünf Kopfzeilen finden sich die zuletzt zugeteilte
PID, die Systemauslastung
(engl. load average), die
Systemlaufzeit (die Zeit seit dem letzten Reboot) und die
momentane Zeit. Die weiteren Zahlen im Kopf beschreiben wie
viele Prozesse momentan laufen, wie viel
Speicher und Swap verbraucht wurde und wie viel Zeit das
System in den verschiedenen CPU-Modi verbringt. Wenn das
ZFS-Kernelmodul geladen ist, dann zeigt
die Zeile ARC
, wie
viele Daten aus dem Cache gelesen wurden.
Darunter befinden sich einige Spalten mit ähnlichen Informationen wie in der Ausgabe von ps(1), beispielsweise die PID, den Besitzer, die verbrauchte CPU-Zeit und das Kommando, das den Prozess gestartet hat. top(1) zeigt in zwei Spalten den Speicherverbrauch des Prozesses an. Die erste Spalte gibt den gesamten Speicherverbrauch des Prozesses an, in der zweiten Spalte wird der aktuelle Verbrauch angegeben.
Die Anzeige wird von top(1) automatisch alle zwei
Sekunden aktualisiert. Ein anderer Intervall kann mit
-s
spezifiziert werden.
Eine Möglichkeit mit einem laufenden
Prozess zu kommunizieren, ist über das Versenden von
Signalen mittels kill(1). Es gibt
eine Reihe von verschiedenen Signalen. Manche haben eine
feste Bedeutung, während andere in der Dokumentation der
Anwendung beschrieben sind. Ein Benutzer kann ein Signal nur
an einen Prozess senden, welcher ihm gehört. Wird versucht
ein Signal an einen Prozess eines anderen Benutzers zu senden,
resultiert dies in einem Zugriffsfehler mangels fehlender
Berechtigungen. Die Ausnahme ist der root
-Benutzer, welcher jedem
Prozess Signale senden kann.
FreeBSD kann auch ein Signal an einen Prozess senden. Wenn
eine Anwendung schlecht geschrieben ist und auf Speicher
zugreift, auf den sie nicht zugreifen soll, so sendet FreeBSD dem
Prozess das Segmentation Violation
Signal (SIGSEGV
). Wenn eine Anwendung
programmiert wurde, den alarm(3) Systemaufruf zu
benutzen, um nach einiger Zeit benachrichtigt zu werden,
bekommt sie das „Alarm“-Signal
(SIGALRM
) gesendet.
Zwei Signale können benutzt werden, um einen Prozess zu
stoppen: SIGTERM
und
SIGKILL
. SIGTERM
fordert den Prozess höflich zum Beenden auf. Der Prozess kann
das Signal abfangen und hat dann Gelegenheit Logdateien zu
schließen und die Aktion, die er durchführte, abzuschließen.
In manchen Situationen kann der Prozess
SIGTERM
ignorieren, wenn er eine Aktion
durchführt, die nicht unterbrochen werden darf.
SIGKILL
kann von keinem Prozess
ignoriert werden. Wird einem Prozess
SIGKILL
geschickt, dann wird FreeBSD diesen
sofort beenden[1].
Andere häufig verwendete Signale sind
SIGHUP
, SIGUSR1
und
SIGUSR2
. Da diese Signale für allgemeine
Zwecke vorgesehen sind, werden verschiedene Anwendungen
unterschiedlich auf diese Signale reagieren.
Ändern Sie beispielsweise die Konfiguration eines
Webservers, so muss dieser angewiesen werden, seine
Konfiguration neu zu lesen. Ein Neustart von
httpd
würde dazu führen, dass der Server
für kurze Zeit nicht erreichbar ist. Senden Sie dem Dämon
stattdessen das SIGHUP
-Signal. Es sei
erwähnt, dass verschiedene Dämonen sich anders verhalten.
Lesen Sie die Dokumentation des entsprechenden Dämonen um zu
überprüfen, ob der Dämon bei einem SIGHUP
die gewünschten Ergebnisse erzielt.
Das folgende Beispiel zeigt, wie Sie inetd(8) ein
Signal schicken. Die Konfigurationsdatei von
inetd(8) ist /etc/inetd.conf
.
Diese Konfigurationsdatei liest inetd(8) ein,
wenn er SIGHUP
empfängt.
Suchen Sie mit pgrep(1) die PID des Prozesses, dem Sie ein Signal schicken wollen. In diesem Beispiel ist die PID von inetd(8) 198:
%
pgrep -l inetd
198 inetd -wW
Benutzen Sie kill(1), um ein Signal zu senden.
Da inetd(8) dem Benutzer root
gehört, müssen
Sie zuerst mit su(1)
root
werden:
%
su
Password:
#
/bin/kill -s HUP 198
kill(1) wird, wie andere UNIX® Kommandos auch,
keine Ausgabe erzeugen, wenn das Kommando erfolgreich war.
Wird versucht, einem Prozess der nicht dem Benutzer
gehört, ein Signal zu senden, dann wird die Meldung
kill: PID
: Operation
not permitted ausgegeben. Ein Tippfehler
bei der Eingabe der PID führt dazu,
dass das Signal an einen falschen Prozess gesendet wird,
was zu negativen Ergebnissen führen kann, oder das Signal
wird an eine PID gesendet die derzeit
nicht in Gebrauch ist, was zu dem Fehler
kill: PID
: No such
process führt.
/bin/kill
benutzen?: Viele Shells stellen kill
als
internes Kommando zur Verfügung, das heißt die Shell
sendet das Signal direkt, anstatt
/bin/kill
zu starten. Beachten
Sie, dass die unterschiedlichen Shells eine andere
Syntax benutzen, um die Namen der Signale anzugeben.
Anstatt jede Syntax zu lernen, kann es einfacher sein,
/bin/kill
direkt aufzurufen.
Beim Versenden von anderen Signalen, ersetzen Sie
TERM
oder KILL
in der
Kommandozeile mit dem Namen des Signals.
Das zufällige Beenden eines Prozesses kann gravierende
Auswirkungen haben. Insbesondere init(8), mit der
PID 1, ist ein Spezialfall.
/bin/kill -s KILL 1
ist ein schneller,
jedoch nicht empfohlener Weg, das System herunterzufahren.
Überprüfen Sie die Argumente von kill(1)
immer zweimal
bevor Sie Return
drücken.
Eine Shell stellt eine
Kommandozeilen-Schnittstelle zur Interaktion mit dem
Betriebssystem zur Verfügung. Sie empfängt Befehle von einem
Eingabekanal und führt diese aus. Viele Shells bieten
eingebaute Funktionen, die die tägliche Arbeit erleichtern,
beispielsweise eine Dateiverwaltung, die Vervollständigung von
Dateinamen (Globbing), Kommandozeilen-Editor, sowie Makros und
Umgebungsvariablen. FreeBSD enthält einige Shells, darunter die
Bourne Shell (sh(1)) und die verbesserte C-Shell
(tcsh(1)). Weitere Shells, wie zsh
oder
bash
, befinden sich in der
Ports-Sammlung.
Die verwendete Shell ist letztlich eine Frage des
Geschmacks. Ein C-Programmierer, findet vielleicht eine
C-artige Shell wie tcsh(1) angenehmer. Ein
Linux®-Benutzer bevorzugt vielleicht bash
.
Jede Shell hat ihre speziellen Eigenschaften, die mit der
bevorzugten Arbeitsumgebung des Benutzers harmonieren kann oder
nicht. Deshalb stehen mehrere Shells zur Auswahl.
Ein verbreitetes Merkmal in Shells ist die
Dateinamen-Vervollständigung. Nachdem der Benutzer einige
Buchstaben eines Kommandos oder eines Dateinamen eingeben hat,
vervollständigt die Shell den Rest durch
drücken der Tab-Taste. Angenommen, Sie
haben zwei Dateien foobar
und
football
. Um foobar
zu löschen, kann der Benutzer rm foo
eingeben
und Tab drücken um den Dateinamen zu
vervollständigen.
Die Shell wird lediglich rm foo
anzeigen.
Sie konnte den Dateinamen nicht vervollständigen, da sowohl
foobar
als auch
football
mit foo
anfangen. Einige Shells geben einen Signalton aus, oder zeigen
alle Möglichkeiten an, wenn mehr als ein Name mit dem gegebenen
Muster übereinstimmt. Der Benutzer muss dann
weitere Zeichen eingeben, damit die Shell den gewünschten
Dateinamen bestimmen kann. Durch Eingabe von
t
und erneutes Drücken von
Tab ist die Shell in der Lage, den gewünschten
Dateinamen zu vervollständigen.
Ein weiteres Merkmal der Shell ist der Gebrauch von Umgebungsvariablen. Dies sind veränderbare Schlüsselpaare im Umgebungsraum der Shell, die jedes von der Shell aufgerufene Programm lesen kann. Daher enthält der Umgebungsraum viele Konfigurationsdaten für Programme. Tabelle 3.4, „Gebräuchliche Umgebungsvariablen“ zeigt verbreitete Umgebungsvariablen und deren Bedeutung. Beachten Sie, dass die Namen der Umgebungsvariablen immer in Großbuchstaben geschrieben sind:
Variable | Beschreibung |
---|---|
USER | Name des angemeldeten Benutzers. |
PATH | Liste mit Verzeichnissen (getrennt durch Doppelpunkt) zum Suchen nach Programmen. |
DISPLAY | Der Name des Xorg-Bildschirms, auf dem Ausgaben erfolgen sollen. |
SHELL | Die aktuelle Shell. |
TERM | Name des Terminaltyps des Benutzers. Benutzt, um die Fähigkeiten des Terminals zu bestimmen. |
TERMCAP | Datenbankeintrag der Terminal Escape Codes, benötigt um verschieden Terminalfunktionen auszuführen. |
OSTYPE | Typ des Betriebssystems. |
MACHTYPE | Die CPU-Architektur des Systems. |
EDITOR | Vom Benutzer bevorzugter Text-Editor. |
PAGER | Vom Benutzer bevorzugter Text-Betrachter. |
MANPATH | Liste mit Verzeichnissen (getrennt durch Doppelpunkt) zum Suchen nach Manualpages. |
Das Setzen von Umgebungsvariablen unterscheidet sich
von Shell zu Shell. In tcsh(1) und csh(1) wird dazu
setenv
benutzt. sh(1) und
bash
benutzen export
um
Umgebungsvariablen zu setzen. Dieses Beispiel für die
tcsh(1)-Shell setzt die Variable EDITOR
auf
/usr/local/bin/emacs
:
%
setenv EDITOR /usr/local/bin/emacs
Der entsprechende Befehl für bash
wäre:
%
export EDITOR="/usr/local/bin/emacs"
Um eine Umgebungsvariable zu expandieren, geben Sie in der
Kommandozeile das Zeichen $
vor dessen Namen
ein. Zum Beispiel gibt echo $TERM
den
aktuellen Wert von$TERM
aus.
Shells behandeln Spezialzeichen, so genannte Metazeichen,
als besondere Darstellungen für Daten. Das häufigste Zeichen
ist *
, das eine beliebige Anzahl Zeichen in
einem Dateinamen repräsentiert. Metazeichen können zur
Vervollständigung von Dateinamen (Globbing) benutzt werden.
Beispielsweise liefert echo *
nahezu das
gleiche wie ls
, da die Shell alle Dateinamen
die mit *
übereinstimmen, an
echo
weitergibt.
Um zu verhindern, dass die Shell ein Sonderzeichen
interpretiert, schützt man es, indem man einen
Backslash (\
) voranstellt. Zum Beispiel
zeigt echo $TERM
die Einstellung des
Terminals an, wohingegen echo \$TERM
einfach
die Zeichenfolge $TERM
ausgibt.
Der einfachste Weg die Standard Shell zu ändern, ist
chsh
zu benutzen.
chsh
startet den Editor, welcher durch
die Umgebungsvariable EDITOR
gesetzt ist.
Standardmäßig ist dies vi(1). Tragen Sie in die Zeile
die mit Shell:
beginnt, den absoluten Pfad
der neuen Shell ein.
Alternativ setzt chsh -s
die Shell,
ohne dabei einen Editor aufzurufen. Um die Shell zum Beispiel
auf bash
zu ändern, geben Sie folgenden
Befehl ein:
%
chsh -s /usr/local/bin/bash
Die neue Shell muss in
/etc/shells
aufgeführt sein. Wurde die
Shell aus der FreeBSD Ports-Sammlung installiert, so wie in
Kapitel 4, Installieren von Anwendungen: Pakete und Ports beschrieben, sollte sie automatisch
zu dieser Datei hinzugefügt worden sein. Wenn der Eintrag
fehlt, nutzen Sie folgenden Befehl, und ersetzen Sie den
Pfad mit dem Pfad zur gewünschten Shell:
#
echo
/usr/local/bin/bash
>> /etc/shells
Danach kann chsh(1) erneut aufgerufen werden.
Die UNIX®-Shell ist nicht nur ein Kommandozeileninterpreter, sie ist ein leistungsfähiges Werkzeug, das Benutzern die Ausführung von Befehlen ermöglicht. Es kann die Ein- und Ausgabe umleiten und Befehle miteinander verketten, um die finale Ausgabe zu verbessern. Diese Funktionalität, gepaart mit den eingebauten Befehlen, bietet dem Benutzer eine Umgebung, welche die Effizienz erheblich steigern kann.
Als Redirection bezeichnet man die Umleitung der Ein- oder Ausgabe in einen anderen Befehl oder Datei. Um beispielsweise die Ausgabe des Befehls ls(1) in eine Datei zu schreiben, muss die Ausgabe umgeleitet werden:
%
ls > Verzeichnis_Ausgabe.txt
Die Datei Verzeichnis_Ausgabe.txt
enthält nun den Verzeichnisinhalt. Einige Befehle, wie
beispielsweise sort(1), können verwendet werden um von
der Eingabe zu lesen. Wenn Sie die Ausgabe sortieren möchten,
müssen Sie die Eingabe umleiten:
%
sort < Verzeichnis_Ausgabe.txt
Die Eingabe wird sortiert und auf dem Bildschirm ausgegeben. Um diese Ausgabe wiederum in eine Datei umzuleiten, kann die Ausgabe von sort(1) umgeleitet werden:
%
sort < Verzeichnis_Ausgabe.txt > Sortierte_Ausgabe.txt
In den bisherigen Beispielen wurden für die Umleitung Dateideskriptoren verwendet. Jedes UNIX®-System verfügt über drei Dateideskriptoren: Standardeingabe (stdin), Standardausgabe (stdout) und Stardardfehlerausgabe (stderr). Jeder Deskriptor hat einen bestimmten Zweck. Die Eingabe könnte von einer Tastatur, einer Maus oder einem anderen Eingabegerät stammen. Die Ausgabe könnte der Bildschirm oder ein Drucker sein. Die Standardfehlerausgabe wird zur Diagnose und für Fehlermeldungen verwendet. Alle drei Deskriptoren arbeiten I/O basiert und werden häufig als Streams bezeichnet.
Die Verwendung von Deskriptoren erlaubt es der Shell, die Ein- und Ausgabe von verschiedenen Kommandos umzuleiten und zu teilen. Eine weitere Möglichkeit zur Umleitung bietet der Pipe-Operator.
Der UNIX® Pipe-Operator „|“ wird verwendet, um die Ausgabe eines Kommandos an ein anderes Programm zu übergeben. Grundsätzlich bedeutet dies, dass die Standardausgabe eines Programms als Standardeingabe für ein weiteres Programm verwendet wird. Ein Beispiel:
%
cat Verzeichnis_Auflistung.txt | sort | less
In diesem Beispiel wird der Inhalt von
Verzeichnis_Auflistung.txt
sortiert und
die Ausgabe an less(1) übergeben. Dies erlaubt es dem
Benutzer, die Ausgabe Schritt für Schritt und im eigenen Tempo
zu betrachten.
Die meiste Konfiguration unter FreeBSD wird durch das Editieren von Textdateien erledigt. Deshalb ist es eine gute Idee, mit einem Texteditor vertraut zu werden. FreeBSD hat ein paar davon im Basissystem und sehr viel mehr in der Ports-Sammlung.
Ein einfach zu erlernender Editor ist ee(1), was für
easy editor steht. Um diesen
Editor zu starten, gibt man in der Kommandozeile ee
ein, wobei
filename
filename
den Namen der zu
editierenden Datei darstellt. Einmal im Editor, finden sich
alle Editor-Funktionen oben im Display aufgelistet. Das
Einschaltungszeichen (^
) steht für die
Ctrl (oder Strg) Taste, mit
^e
ist also die Tastenkombination
Ctrl+e
gemeint. Um ee(1) zu verlassen, drücken Sie
Esc und wählen dann im Hauptmenü leave
editor
aus. Der Editor fragt nach, ob Sie speichern
möchten, wenn die Datei verändert wurde.
FreeBSD verfügt über leistungsfähigere Editoren wie vi(1) als Teil des Basissystems. Andere Editoren wie editors/emacs und editors/vim sind Teil der Ports-Sammlung. Diese Editoren bieten höhere Funktionalität, jedoch auf Kosten einer etwas schwierigeren Erlernbarkeit. Das Erlernen eines leistungsfähigeren Editors, wie vim oder Emacs, kann auf lange Sicht Zeit einsparen.
Viele Anwendungen, die Dateien verändern oder Texteingabe
erwarten, werden automatisch einen Texteditor öffnen. Um den
Standardeditor zu ändern, wird die Umgebungsvariable
EDITOR
gesetzt, wie im Abschnitt
Abschnitt 3.9, „Shells“ beschrieben.
Der Begriff Gerät wird meist in Verbindung mit Hardware wie
Laufwerken, Druckern, Grafikkarten oder Tastaturen gebraucht.
Der Großteil der Meldungen, die beim Booten von FreeBSD angezeigt
werden, beziehen sich auf gefundene Geräte. Eine Kopie dieser
Bootmeldungen wird in /var/run/dmesg.boot
gespeichert.
Jedes Gerät verfügt über einen Gerätenamen und Gerätenummer.
Zum Beispiel steht ada0
für die erste
SATA Festplatte, während kbd0
die
Tastatur repräsentiert.
Auf die meisten Geräte wird unter FreeBSD über spezielle
Gerätedateien im /dev
Verzeichnis
zugegriffen.
Die umfassendste Dokumentation rund um FreeBSD gibt es in
Form von Manualpages. Annähernd jedes Programm im System
bringt eine kurze Referenzdokumentation mit, die die
grundsätzliche Funktion und verschiedene Parameter
erklärt. Diese Manuals können mit man
eingesehen werden:
%
man
Kommando
Kommando
ist der Name des
Kommandos, über das man etwas erfahren will. Um
beispielsweise mehr über das Kommando ls(1) zu
erfahren, geben Sie ein:
%
man ls
Die Manualpages sind in nummerierte Sektionen unterteilt, die jeweils ein Thema darstellen. In FreeBSD sind die folgenden Sektionen verfügbar:
Benutzerkommandos.
Systemaufrufe und Fehlernummern.
Funktionen der C Bibliothek.
Gerätetreiber.
Dateiformate.
Spiele und andere Unterhaltung.
Verschiedene Informationen.
Systemverwaltung und -Kommandos.
Kernel Schnittstellen.
In einigen Fällen kann dasselbe Thema in mehreren
Sektionen auftauchen. Es gibt zum Beispiel ein
chmod
Benutzerkommando und einen
chmod()
Systemaufruf. Um man(1)
mitzuteilen, aus welcher Sektion die Information angezeigt
werden soll, kann die Sektionsnummer mit angeben
werden:
%
man 1 chmod
Dies wird Ihnen die Manualpage für das Benutzerkommando chmod(1) zeigen. Verweise auf eine Sektion der Manualpages werden traditionell in Klammern gesetzt. So bezieht sich chmod(1) auf das Benutzerkommando und chmod(2) auf den Systemaufruf.
Wenn das Kommando nicht bekannt ist, kann
man -k
benutzt werden, um nach
Schlüsselbegriffen in den Kommandobeschreibungen zu
suchen:
%
man -k
Dieser Befehl zeigt eine Liste von Kommandos, deren Beschreibung das Schlüsselwort „mail“ enthält. Die gleiche Funktionalität erhalten Sie auch, wenn Sie apropos(1) benutzen.
Um die Beschreibungen der Kommandos in
/usr/bin
zu lesen, geben Sie ein:
%
cd /usr/bin
%
man -f * | more
Dasselbe erreichen Sie durch Eingabe von:
%
cd /usr/bin
%
whatis * | more
FreeBSD enthält verschiedene Anwendungen und Utilities der
Free Software Foundation (FSF). Zusätzlich zu den Manualpages
können diese Programme Hypertext-Dokumente enthalten, die
info
-Seiten genannt werden. Diese
Dokumente können mit info(1) ansehen kann. Wenn
editors/emacs installiert ist, kann auch
der info-Modus von emacs benutzt
werden.
Um info(1) zu benutzen, geben Sie ein:
%
info
Eine kurze Einführung gibt es mit
h
; eine Befehlsreferenz erhalten Sie durch
Eingabe von: ?
.
[1] Es gibt Fälle, in denen ein Prozess nicht unterbrochen werden kann. Wenn ein Prozess zum Beispiel eine Datei von einem anderen Rechner auf dem Netzwerk liest und dieser Rechner nicht erreichbar ist, dann ist der Prozess nicht zu unterbrechen. Wenn der Prozess den Lesezugriff nach einem Timeout von typischerweise zwei Minuten aufgibt, dann wird er beendet.
FreeBSD enthält eine umfassende Sammlung von Systemwerkzeugen, die Teil des Basissystems sind. Darüber hinaus stellt FreeBSD zwei sich ergänzende Methoden zur Installation von Drittanbieter-Software zur Verfügung: Die Ports-Sammlung zur Installation aus dem Quellcode sowie Pakete zur Installation von vorkompilierten binären Softwarepaketen. Beide Methoden können benutzt werden, um Anwendungen von lokalen Medien oder über das Netzwerk zu installieren.
Dieses Kapitel behandelt die folgenden Themen:
Den Unterschied zwischen binären Softwarepaketen und Ports.
Wie man Drittanbieter-Software findet, die nach FreeBSD portiert wurde.
Wie Binärpakete mit pkg verwaltet werden.
Den Bau von Drittanbieter-Software aus dem Quellcode mithilfe der Ports-Sammlung.
Wie man die Dateien findet, die zusammen mit der Anwendung installiert wurden.
Was zu tun ist, wenn die Installation einer Software fehlschlägt.
Die typischen Schritte zur Installation von Drittanbieter-Software auf einem UNIX® System sind:
Download der Software, die als Quelltext oder im Binärformat vorliegen kann.
Auspacken der Software. Dies ist typischerweise ein mit compress(1), gzip(1), bzip2(1) oder xz(1) komprimiertes Tar-Archiv.
Durchsuchen der Dokumentation, die sich in
INSTALL
, README
oder mehreren Dateien im Verzeichnis
doc/
befindet, nach Anweisungen, wie
die Software zu installieren ist.
Kompilieren der Software, wenn sie als Quelltext
vorliegt. Dazu muss vielleicht das
Makefile
angepasst, oder
configure
ausgeführt werden.
Testen und installieren der Software.
Ein FreeBSD-Port ist eine Sammlung von Dateien, die das Kompilieren der Quelltexte einer Anwendung automatisieren. Die Dateien, die ein Port umfasst enthalten alle notwendigen Informationen um die Anwendung herunterzuladen, zu extrahieren, anzupassen und zu installieren.
Wenn die Software nicht bereits für FreeBSD angepasst und getestet wurde, muss vielleicht sogar der Quelltext angepasst werden, damit die Software funktioniert.
Bislang wurden über 24,000 Anwendungen von Drittanbietern nach FreeBSD portiert. Falls möglich, werden diese Anwendungen als vorkompilierte Pakete zur Verfügung gestellt.
Pakete können mit FreeBSDs Paketverwaltungswerkzeugen manipuliert werden.
Pakete und Ports beachten Abhängigkeiten zwischen Anwendungen. Wenn ein Paket oder die Ports-Sammlung benutzt wird, um eine Anwendung zu installieren, dann werden fehlende Bibliotheken zuerst installiert, sofern sie nicht schon vorher installiert waren.
Ein FreeBSD-Paket enthält vorkompilierte Kopien aller Befehle
für eine Anwendung, sowie zusätzliche Konfigurationsdateien und
Dokumentation. Pakete können mit den pkg(8)-Befehlen, wie
pkg install
, manipuliert werden.
Obwohl beide Technologien gleichartig sind, so haben Pakete und Ports jeweils ihre eigenen Stärken. Welche Technologie eingesetzt wird, hängt letzten Endes von den Anforderungen ab, die an eine bestimmte Anwendung gestellt werden.
Das komprimierte Paket einer Anwendung ist normalerweise kleiner als das komprimierte Archiv der Quelltexte.
Pakete müssen nicht mehr kompiliert werden. Dies ist ein Vorteil, wenn große Pakete wie Mozilla, KDE oder GNOME auf langsamen Maschinen installiert werden.
Wenn Sie Pakete verwenden, brauchen Sie nicht zu verstehen, wie Software unter FreeBSD kompiliert wird.
Da die Pakete auf möglichst vielen System laufen sollen, werden Optionen beim Übersetzen zurückhaltend gesetzt. Wird eine Anwendung über die Ports übersetzt, können die Optionen nach eigenen Bedürfnissen angepasst werden.
Die Eigenschaften einiger Anwendungen werden über Optionen zum Zeitpunkt des Übersetzens festgelegt. Apache kann zum Beispiel über eine große Auswahl an eingebauten Optionen konfiguriert werden.
Für einige Fälle existieren verschiedene
Pakete einer Anwendung, die beim Übersetzen
unterschiedlich konfiguriert wurden. Für
Ghostscript gibt es ein
ghostscript
-Paket und ein
ghostscript-nox11
-Paket, die sich durch
die Xorg Unterstützung
unterscheiden. Das Erstellen von verschiedenen Paketen wird
aber schnell unhandlich, wenn eine Anwendung mehr als ein
oder zwei Optionen zum Zeitpunkt des Übersetzens
besitzt.
Die Lizenzbestimmungen mancher Software verbietet ein Verbreiten in binärer Form. Diese Software muss als Quelltext, der durch den Benutzer kompiliert werden muss, ausgeliefert werden.
Einige Leute trauen binären Distributionen nicht, oder sie ziehen es vor den Quelltext zu lesen, um diesen nach möglichen Problemen zu durchsuchen.
Der Quellcode wird benötigt, um individuelle Anpassungen anzuwenden.
Wenn Sie über aktualisierte Ports informiert sein wollen, lesen Sie die Mailinglisten FreeBSD ports und FreeBSD ports bugs.
Bevor Sie eine Anwendung installieren, informieren Sie
sich auf der Seite https://vuxml.FreeBSD.org/
über mögliche Sicherheitsprobleme mit der Anwendung, oder
führen Sie pkg audit -F
aus, um alle
installierten Pakete auf bekannte Sicherheitslücken zu
überprüfen.
Der Rest dieses Kapitels beschreibt, wie man Software Dritter mit Paketen und Ports unter FreeBSD installiert und verwaltet.
Die Anzahl der nach FreeBSD portierten Anwendungen steigt ständig. Es gibt einige Wege, um nach Anwendungen zu suchen:
Die FreeBSD-Webseite stellt unter https://www.FreeBSD.org/ports/ eine aktuelle und durchsuchbare Liste aller Anwendungen zur Verfügung. Die Ports können nach dem Namen den Anwendung, oder über die Software-Kategorie durchsucht werden.
Dan Langille verwaltet FreshPorts.org, das eine umfassende Suchfunktion bietet und Änderungen an den Anwendungen in der Ports-Sammlung verfolgt. Registrierte Benutzer können eine Merkliste erstellen, um automatisch eine E-Mail zu erhalten, sobald ein Port von dieser Liste aktualisiert wurde.
Wenn Sie bei der Suche nach einer bestimmten Anwendung nicht weiter kommen, versuchen Sie eine Webseite wie SourceForge.net oder GitHub.com. Schauen Sie dann auf der FreeBSD-Webseite nach, ob die Anwendung portiert wurde.
Das Paket Repository nach einer Anwendung durchsuchen:
#
pkg search
git-subversion-subversion
1.9.2
java-subversion-1.8.8_2
p5-subversion-1.8.8_2
py27-hgsubversion-1.6
py27-subversion-1.8.8_2
ruby-subversion-1.8.8_2
subversion-1.8.8_2
subversion-book-4515
subversion-static-1.8.8_2
subversion16-1.6.23_4
subversion17-1.7.16_2
Die Paketnamen enthalten jeweils die Versionsnummer.
Wenn ein Port von python abhängt, wird auch die
Versionsnummer von python ausgegeben, mit der die Anwendung
gebaut wurde. Für einige Ports stehen sogar mehrere
Versionen zur Verfügung. Im Fall von
Subversion gibt es drei
verschiedene Versionen, mit unterschiedlichen Optionen. In
diesem Fall wird die Version von
Subversion statisch gelinkt.
Wenn Sie ein Paket installieren, ist es am besten den
Ursprung des Ports anzugeben, also den Pfad in der
Ports-Sammlung. Wiederholen Sie
pkg search
mit -o
um den
Ursprung der Pakete anzuzeigen:
#
pkg search -o
devel/git-subversion java/java-subversion devel/p5-subversion devel/py-hgsubversion devel/py-subversion devel/ruby-subversion devel/subversion16 devel/subversion17 devel/subversion devel/subversion-book devel/subversion-staticsubversion
Zudem unterstützt pkg search
die
Suche mit regulären Ausdrücken, nach exakten Treffern, nach
der Beschreibung oder nach anderen Feldern in der
Repository-Datenbank. Nach der Installation von
ports-mgmt/pkg oder
ports-mgmt/pkg-devel, finden Sie in
pkg-search(8) weitere Details.
Wenn die Ports-Sammlung bereits installiert ist, gibt es
mehrere Methoden, um die lokale Version dieser Port-Sammlung
abzufragen. Verwenden Sie
whereis
um herauszufinden, in welcher Kategorie ein Port ist, wobei
Datei
Datei
der Name des Programms ist,
das installiert werden soll:
#
whereis lsof
lsof: /usr/ports/sysutils/lsof
Alternativ kann der echo(1)-Befehl verwendet werden:
#
echo /usr/ports/*/*lsof*
/usr/ports/sysutils/lsof
Beachten Sie aber, dass dieser Befehl auch alle Dateien
im Verzeichnis /usr/ports/distfiles
findet, auf die der angegebene Suchbegriff passt.
Ein weiterer Weg nach Software zu suchen besteht darin,
die eingebaute Suchfunktion der Ports-Sammlung zu benutzen.
Wechseln Sie dazu in das Verzeichnis
/usr/ports
, und rufen Sie make
search
name=
auf, wobei Anwendungsname
Anwendungsname
der
Name der Software ist. Um zum Beispiel nach
lsof
zu suchen:
#
cd /usr/ports
#
make search name=lsof
Port: lsof-4.88.d,8 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Maint: ler@lerctr.org Index: sysutils B-deps: R-deps:
Der integrierte Suchmechanismus verwendet eine Datei
mit Index-Informationen. Erscheint eine Meldung, dass der
INDEX
benötigt wird, führen Sie
make fetchindex
aus, um die aktuelle
Index-Datei herunterzuladen. Mit einem vorhandenen
INDEX
ist
make search
in der Lage, die gewünschte
Suche durchzuführen.
Die „Path:“-Zeile zeigt an, wo der Port zu finden ist.
Um weniger Informationen zu erhalten, benutzen Sie die
Funktion quicksearch
:
#
cd /usr/ports
#
make quicksearch name=lsof
Port: lsof-4.88.d,8 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1))
Erweiterte Suchen führen Sie mit
make search
key=
oder
Text
make quicksearch
key=
aus. Damit
werden Portnamen, Kommentare, Beschreibungen und
Abhängigkeiten nach Text
Text
durchsucht. Dies kann sehr nützlich sein, wenn der
Name des Programms nicht bekannt ist.
Bei der Verwendung von search
und quicksearch
wird Groß- und
Kleinschreibung bei der Suche ignoriert. Die Suche nach
„LSOF“ wird dieselben Ergebnisse wie die Suche
nach „lsof“ liefern.
pkg ist der Nachfolger für die traditionellen Paketverwaltungswerkzeuge von FreeBSD. Es bietet viele Funktionen, die den Umgang mit Binärpaketen schneller und einfacher machen.
Wenn Sie lediglich vorgefertigte Binärpakete von den FreeBSD Spiegeln benutzen möchten, ist pkg für die Verwaltung von Paketen ausreichend.
Falls Sie jedoch die Software aus dem Quellcode bauen oder eigene Repositories verwenden, benötigen Sie ein separates Paketverwaltungswerkzeug.
pkg ist kein Ersatz für diese Werkzeuge. Während diese Werkzeuge Drittanbieter-Software sowohl aus Binärpaketen als auch aus der Ports-Sammlung installieren können, so installiert pkg ausschließlich Binärpakete.
FreeBSD enthält ein Bootstrap-Programm, welches
pkg zusammen mit den Manualpages
installiert. pkg wurde für FreeBSD
Versionen ab 10.X
entwickelt.
Nicht alle FreeBSD Versionen unterstüzen den folgenden Bootstrap Prozess. Eine aktuelle Liste finden Sie unter https://pkg.FreeBSD.org/. Andernfalls muss pkg aus der Ports-Sammlung oder als Binärpaket installiert werden.
Um das Bootstrap Programm zu starten, geben Sie folgendes ein:
#
/usr/sbin/pkg
Sie müssen eine Internetverbindung haben, damit der Bootstrap Prozess funktioniert.
Um den Port zu installieren, geben Sie stattdessen folgendes ein:
#
cd /usr/ports/ports-mgmt/pkg
#
make
#
make install clean
Bei der Aktualisierung eines bestehenden Systems, welches ursprünglich die alten pkg_* Werkzeuge verwendet hat, muss die Datenbank in das neue Format konvertiert werden, damit die neuen Werkzeuge wissen, welche Pakete bereits installiert sind. Sobald pkg installiert ist, muss die Paketdatenbank mit dem folgenden Befehl vom traditionellen Format in das neue Format konvertiert werden:
#
pkg2ng
Auf neu installieren Systemen, auf denen noch keine Software von Drittanbietern installiert wurde, kann dieser Schritt entfallen.
Die Konvertierung ist unwiderruflich. Sobald die Paketdatenbank in das Format von pkg umgewandelt wurde, sollten die traditionellen pkg_* Werkzeuge nicht mehr benutzt werden.
Bei der Konvertierung der Paketdatenbank können Fehler ausgegeben werden, wenn die Inhalte auf die neue Version umgewandelt werden. Im Allgemeinen können diese Fehler ignoriert werden. Wenn pkg2ng fertig ist, wird eine Liste von Software ausgegeben, die nicht erfolgreich konvertiert werden konnte. Diese Anwendungen müssen manuell neu installiert werden.
Um sicherzustellen, dass die Ports-Sammlung neue
Pakete mit pkg und nicht mit
den traditionellen Formaten registriert, muss in
FreeBSD 10.X
und früheren
Versionen folgende Zeile in
/etc/make.conf
hinzugefügt werden:
WITH_PKGNG= yes
In der Voreinstellung benutzt pkg die Pakete der FreeBSD-Spiegel (das Repository). Wenn Sie ein eigenes Paket-Repository erstellen möchten, lesen Sie Abschnitt 4.6, „Pakete mit Poudriere bauen“
Weitere Konfigurationsoptionen für pkg sind in pkg.conf(5) beschrieben.
Informationen zur Bedienung von
pkg ist in pkg(8) verfügbar.
Alternativ kann pkg
ohne zusätzliche Argumente aufgerufen werden.
Jedes Argument von pkg ist in
seiner spezifischen Manualpage dokumentiert. Um
beispielsweise die Manualpage von
pkg install
zu lesen, geben Sie einen der
folgenden Befehle ein:
#
pkg help install
#
man pkg-install
Der Rest dieses Abschnitts beschreibt die typischen Verwaltungsaufgaben für Binärpakete, die mit pkg erledigt werden können. Jedes gezeigte Kommando verfügt über Optionen, um das Verhalten anzupassen. Details und weitere Beispiele finden Sie in den Manualpages der einzelnen Kommandos.
Der vierteljährliche Zweig (Quarterly) bietet eine besser vorhersehbare und stabilere Erfahrung bei der Installation und Aktualisierung von Ports und Paketen. Dies wird im Wesentlichen dadurch erreicht, das nur Aktualisierungen zugelassen werden, die nicht zum Funktionsumfang gehören. Der vierteljährliche Zweig zielt darauf ab, Sicherheitskorrekturen (Aktualisierungen und Rückportierungen von Commits), Fehlerbehebungen und Port-Konformität oder Framework-Änderungen zu erhalten. Der vierteljährliche Zweig wird zu Beginn eines jeden Quartals im Januar, April, Juli und Oktober von HEAD abgetrennt. Die Zweige werden nach dem Jahr (YYYY) und dem Quartal (Q1 - Q4) benannt, in dem sie erstellt wurden. Zum Beispiel wird der Zweig, der im Januar 2016 erstellt wurde, 2016Q1 genannt. Der neueste Zweig (Latest) stellt die aktuellsten Versionen der Pakete zur Verfügung.
Um vom Quarterly auf Latest zu wechseln, führen Sie die folgenden Befehle aus:
#
cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf
Bearbeiten Sie die Datei
/usr/local/etc/pkg/FreeBSD.conf
und
ändern Sie in der url:
-Zeile die
Zeichenkette quarterly in
latest.
Das Ergebnis sollte wie folgt aussehen:
FreeBSD: { url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest", mirror_type: "srv", signature_type: "fingerprints", fingerprints: "/usr/share/keys/pkg", enabled: yes }
Führen Sie zuletzt diesen Befehl aus, um die neuen Repository-Metadaten zu aktualisieren:
#
pkg update -f
Informationen über bereits installierte Pakete können
mit pkg info
angezeigt werden. Dabei
wird, wenn keine weiteren Optionen angegeben werden, die
Version und die Beschreibung aller Pakete oder eines
einzelnen Pakets ausgegeben.
Um zu ermitteln welche Version von pkg installiert ist, geben Sie folgendes ein:
#
pkg info pkg
pkg-1.1.4_1
Ein Binärpaket installieren Sie mit dem folgenden
Befehl, wobei paketname
der Name
des zu installierenden Pakets ist:
#
pkg install
paketname
Dieser Befehl verwendet Daten aus dem Repository um zu bestimmen, welche Version der Software und welche Abhängigkeiten installiert werden müssen. Um beispielsweise curl zu installieren:
#
pkg install curl
Updating repository catalogue /usr/local/tmp/All/curl-7.31.0_1.txz 100% of 1181 kB 1380 kBps 00m01s /usr/local/tmp/All/ca_root_nss-3.15.1_1.txz 100% of 288 kB 1700 kBps 00m00s Updating repository catalogue The following 2 packages will be installed: Installing ca_root_nss: 3.15.1_1 Installing curl: 7.31.0_1 The installation will require 3 MB more space 0 MB to be downloaded Proceed with installing packages [y/N]:y
Checking integrity... done [1/2] Installing ca_root_nss-3.15.1_1... done [2/2] Installing curl-7.31.0_1... done Cleaning up cache files...Done
Das neue Paket und jedes weitere Paket, das als Abhängigkeit installiert wurde, ist in der Liste der installierten Pakete zu sehen:
#
pkg info
ca_root_nss-3.15.1_1 The root certificate bundle from the Mozilla Project curl-7.31.0_1 Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers pkg-1.1.4_6 New generation package manager
Wird ein Paket nicht mehr benötigt, kann es mit
pkg delete
entfernt werden. Zum
Beispiel:
#
pkg delete curl
The following packages will be deleted: curl-7.31.0_1 The deletion will free 3 MB Proceed with deleting packages [y/N]:y
[1/1] Deleting curl-7.31.0_1... done
Installierte Pakete können mit diesem Kommando auf die neuesten Versionen aktualisiert werden:
#
pkg upgrade
Dieses Kommando vergleicht und aktualisiert die installierten Versionen der Pakete mit denen im Repository.
Regelmäßig werden Sicherheitslücken in Drittanbieter-Software entdeckt. pkg besitzt einen eingebauten Auditing-Mechanismus. Um die auf dem System installierte Software auf Sicherheitslücken zu prüfen, geben Sie folgenden Befehl ein:
#
pkg audit -F
Das Entfernen eines Pakets kann möglicherweise Abhängigkeiten hinterlassen, die nicht mehr benötigt werden. Unnötige Pakete, die als Abhängigkeit von anderen Paketen installiert wurden, können automatisch erfasst und entfernt werden:
#
pkg autoremove
Packages to be removed: ca_root_nss-3.15.1_1 The autoremoval will free 723 kB Proceed with autoremoval of packages [y/N]:y
Deinstalling ca_root_nss-3.15.1_1... done
Pakete, die als Abhängigkeiten installiert werden, bezeichnet man als automatische Pakete. Nichtautomatische Pakete, also die Pakete, die explizit nicht als Abhängigkeit von einem anderen Paket installiert wurden, können wie folgt angezeigt werden:
#
pkg prime-list
nginx openvpn sudo
pkg prime-list
ist ein Alias-Befehl,
der in /usr/local/etc/pkg.conf
definiert
ist. Es gibt noch weitere Befehle die Sie verwenden können,
um die Paketdatenbank des Systems abzufragen. Beispielsweise
kann der Befehl pkg prime-origins
benutzt
werden, um das ursprüngliche Portverzeichnis der oben
gezeigten Liste zu erhalten:
#
pkg prime-origins
www/nginx security/openvpn security/sudo
Diese Liste kann verwendet werden, um alle auf einem System installierten Pakete mit Hilfe von Werkzeugen wie ports-mgmt/poudriere oder ports-mgmt/synth neu zu erstellen.
Um ein bereits installiertes Paket als automatisches Paket zu kennzeichnen, können Sie folgenden Befehl benutzen:
#
pkg set -A 1 devel/cmake
Sobald ein Paket nicht mehr genutzt wird und es als
automatisch gekennzeichnet ist, wird es durch
pkg autoremove
erfasst.
Das kennzeichnen eines installierten Pakets als nicht automatisch kann wie folgt gemacht werden:
#
pkg set -A 0 devel/cmake
Im Gegensatz zum alten Paketverwaltungssystem beinhaltet pkg einen eigenen Mechanismus zur Sicherung der Paketdatenbank. Diese Funktionalität ist standardmäßig aktiviert.
Um das Skript daran zu hindern, eine Sicherung der
Paketdatenbank zu erstellen, muss in periodic.conf(5)
daily_backup_pkgdb_enable="NO"
gesetzt
werden.
Um den Inhalt einer früheren Paketdatenbank
wiederherzustellen, geben Sie folgendes Kommando ein und
ersetzen Sie /path/to/pkg.sql
durch den Speicherort der gesicherten Datenbank:
#
pkg backup -r
/path/to/pkg.sql
Wenn Sie eine Sicherung wiederherstellen, die von
einem periodic
Skript erstellt wurde,
müssen Sie diese zuerst dekomprimieren.
Um eine manuelle Sicherung der
pkg Paketdatenbank zu erstellen,
führen Sie den folgenden Befehl aus, und ersetzen Sie
/path/to/pkg.sql
durch einen
geeigneten Dateinamen:
#
pkg backup -d
/path/to/pkg.sql
Standardmäßig speichert pkg
Pakete in einem Cache-Verzeichnis, welches in
pkg.conf(5) in der Variablen
PKG_CACHEDIR
definiert wird. Nur Kopien der
neusten installierten Pakete werden beibehalten. Ältere
Versionen von pkg haben alle
Pakete aufbewahrt. Um diese veralteten Pakete zu entfernen,
geben Sie folgendes ein:
#
pkg clean
Um alle Pakte aus dem Cache-Verzeichnis zu löschen, geben Sie ein:
#
pkg clean -a
Bei Software aus der FreeBSD Ports-Sammlung kann es
vorkommen, dass die Hauptversionsnummer geändert wird.
Dafür hat pkg ein eingebautes
Kommando, um die Quelle eines Pakets zu aktualisieren. Dies
ist nützlich, wenn zum Beispiel lang/php5
zu lang/php53 umbenannt wurde, damit
lang/php5 jetzt die Version
5.4
integrieren kann.
Um die Quelle des Pakets für das obige Beispiel zu ändern, geben Sie folgendes ein:
#
pkg set -o lang/php5:lang/php53
Ein weiteres Beispiel: Um lang/ruby18 auf lang/ruby19 zu aktualisieren, geben Sie folgendes ein:
#
pkg set -o lang/ruby18:lang/ruby19
In diesem letzten Beispiel wird die Quelle der
Bibliotheken von libglut
von
graphics/libglut auf
graphics/freeglut geändert:
#
pkg set -o graphics/libglut:graphics/freeglut
Bei einem Wechsel der Paketquelle ist es notwendig, die Pakete neu zu installieren, welche von dem Paket abhängig sind, das seine Paketquelle geändert hat. Um eine Neuinstallation von abhängigen Paketen zu erzwingen, führen Sie folgenden Befehl aus:
#
pkg install -Rf
graphics/freeglut
Die Ports-Sammlung ist eine Reihe von
Makefile
s, Patches und Beschreibungen.
Die Dateien für den Bau und die Installation von einzelnen
Anwendungen unter FreeBSD werden als Port
bezeichnet.
In der Voreinstellung wird die Ports-Sammlung im
Verzeichnis /usr/ports
gespeichert.
Bevor eine Anwendung aus den Ports erstellt werden kann, muss zuerst die Ports-Sammlung installiert werden. Wenn dies nicht bereits bei der Installation von FreeBSD geschehen ist, benutzen Sie eine der beiden Methoden um sie zu installieren:
FreeBSDs Basissystem enthält mit Portsnap ein schnelles und benutzerfreundliches Werkzeug zur Installation der Ports-Sammlung und die bevorzugte Wahl für die meisten Benutzer, die noch nicht FreeBSD-CURRENT benutzen. Dieses Programm stellt eine Verbindung zu einem FreeBSD-Server her, überprüft den gesicherten Schlüssel und lädt eine aktuelle Kopie der Ports-Sammlung herunter. Der Schlüssel wird benötigt, um die Integrität der heruntergeladenen Dateien zu untersuchen.
Laden Sie einen komprimierten Snapshot der
Ports-Sammlung in
/var/db/portsnap
:
#
portsnap fetch
Wenn Sie Portsnap das erste
Mal verwenden, müssen Sie den Snapshot nach
/usr/ports
extrahieren:
#
portsnap extract
Nach dem ersten Einsatz von
Portsnap, kann
/usr/ports
wie folgt aktualisiert
werden:
#
portsnap fetch
#
portsnap update
Bei der Verwendung von fetch
können
die extract
oder
update
Operationen nacheinander
ausgeführt werden, etwa so:
#
portsnap fetch update
Wird mehr Kontrolle über die Ports-Sammlung benötigt, oder wenn die lokalen Änderungen beibehalten werden sollen, oder Sie FreeBSD-CURRENT benutzen, kann Subversion benutzt werden, um die Ports-Sammlung zu laden. Lesen Sie den Subversion Primer für eine detaillierte Beschreibung von Subversion.
Subversion muss installiert sein, bevor die Ports-Sammlung geladen werden kann. Ist eine lokale Kopie der Ports-Sammlung bereits vorhanden, installieren Sie Subversion wie folgt:
#
cd /usr/ports/devel/subversion
#
make install clean
Wenn keine lokale Kopie der Ports-Sammlung vorhanden ist, oder pkg zur Verwaltung von Paketen benutzt wird, kann Subversion als Paket installiert werden:
#
pkg install subversion
Laden Sie eine Kopie der Ports-Sammlung:
#
svn checkout https://svn.FreeBSD.org/ports/head /usr/ports
Nach dem erstmaligen
checkout mit
Subversion kann
/usr/ports
wie folgt aktualisiert
werden:
#
svn update /usr/ports
Die Ports-Sammlung enthält eine Reihe von Verzeichnissen, die jeweils eine Softwarekategorie repräsentieren. Jede Kategorie hat für jede einzelne Anwendung ein weiteres Unterverzeichnis. Jedes Unterverzeichnis enthält Dateien, die FreeBSD sagen, wie ein Programm kompiliert und installiert werden muss. Diese Dateien werden auch Port-„Gerüst“ genannt. Jedes Port-„Gerüst“ beinhaltet die folgenden Dateien und Verzeichnisse:
Makefile
: enthält Anweisungen, die
spezifizieren, wie die Anwendung kompiliert wird und wohin
die Komponenten installiert werden sollten.
distinfo
: enthält die Namen und
die Prüfsummen der Dateien, die heruntergeladen werden
müssen, um den Port zu bauen.
files
: dieses Verzeichnis
enthält Patches, welche das Übersetzen und Installieren
der Anwendung unter FreeBSD ermöglichen. Zudem können noch
weitere Dateien, die für die Übersetzung des Ports
verwendet werden, enthalten sein.
pkg-descr
: enthält
eine ausführlichere Beschreibung der Anwendung.
pkg-plist
: eine Liste
aller Dateien, die durch diesen Port installiert werden.
Außerdem sind hier Informationen enthalten, die zum
Entfernen des Ports benötigt werden.
Einige Ports beinhalten noch
pkg-message
oder weitere Dateien, die vom
Port-System benutzt werden, um spezielle Situationen zu
handhaben. Wenn Sie mehr über diese Dateien oder das
Port-System erfahren wollen, lesen Sie das
FreeBSD Porter's Handbook.
Ein Port enthält nicht den eigentlichen Quellcode, der
auch als „Distfile“ bekannt ist. Der
heruntergeladene Quellcode wird automatisch nach
/usr/ports/distfiles
extrahiert.
Dieser Abschnitt beschreibt die grundlegende Benutzung
der Ports-Sammlung, um Software zu installieren oder zu
deinstallieren. Eine ausführliche Beschreibung der
einzelnen make
-Targets finden Sie in
ports(7).
Stellen Sie sicher, dass die Ports-Sammlung
aktuell ist, bevor Sie einen Port kompilieren.
Informieren Sie sich vorher zusätzlich unter https://vuxml.FreeBSD.org/ über
mögliche Sicherheitsprobleme des zu installierenden Ports.
Alternativ können Sie pkg audit -F
ausführen, bevor Sie einen neuen Port installieren. Die
täglich laufende Sicherheitsprüfung des Systems aktualisiert
ebenfalls die Datenbank und prüft installierte Anwendungen
auf vorhandene Sicherheitsprobleme. Weitere Informationen
finden Sie in pkg-audit(8) und periodic(8).
Die Benutzung der Ports-Sammlung setzt eine funktionierende Internetverbindung und Superuser-Rechte voraus.
Um einen Port zu installieren, wechseln Sie in das
Verzeichnis des Ports, den Sie installieren möchten. Geben
Sie dann make install
am Prompt ein:
#
cd /usr/ports/sysutils/lsof
#
make install
>> lsof_4.88D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/. ===> Extracting for lsof-4.88 ... [Ausgabe des Auspackens weggelassen] ... >> Checksum OK for lsof_4.88D.freebsd.tar.gz. ===> Patching for lsof-4.88.d,8 ===> Applying FreeBSD patches for lsof-4.88.d,8 ===> Configuring for lsof-4.88.d,8 ... [configure-Ausgabe weggelassen] ... ===> Building for lsof-4.88.d,8 ... [Ausgabe der Übersetzung weggelassen] ... ===> Installing for lsof-4.88.d,8 ... [Ausgabe der Installation weggelassen] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. /usr/local/bin/lsof#
Da lsof
eine Anwendung ist, die mit
erhöhten Rechten läuft, wird nach der Installation eine
Sicherheitswarnung angezeigt. Sobald die Installation
abgeschlossen ist, erscheint wieder der Prompt.
Um die Suche nach Kommandos zu beschleunigen, speichern
einige Shells eine Liste der verfügbaren Kommandos in den
durch die Umgebungsvariable PATH
gegebenen
Verzeichnissen. Benutzer der tcsh
müssen
eventuell rehash
eintippen, um die neu
installierten Kommandos benutzen zu können, ohne den
vollständigen Pfad anzugeben. Benutzer der Shell
sh
müssen stattdessen
hash -r
eintippen. Weitere Informationen
finden Sie in der Dokumentation der jeweiligen Shell.
Bei der Installation wird ein Arbeitsverzeichnis erstellt, das alle temporären Dateien enthält, die während des Bauvorgangs benötigt werden. Wenn dieses Verzeichnis nach der Installation entfernt wird, spart dies Plattenplatz und minimiert mögliche Probleme bei der Aktualisierung des Ports auf eine neuere Version:
#
make clean
===> Cleaning for lsof-4.88.d,8#
Sie können zwei Schritte sparen, wenn Sie bei der
Kompilierung des Ports gleich
make install clean
eingeben.
Einige Ports bieten Optionen, mit denen zusätzliche
Funktionen oder Sicherheitsoptionen eingestellt werden
können. Beispiele dafür sind
www/firefox,
security/gpgme und
mail/sylpheed-claws. Wenn ein Port von
anderen Ports abhängig ist und diese über zusätzliche
Abhängigkeiten und Optionen verfügen, wird mehrmals ein
Menü ausgegeben, wo der Benutzer verschiedene Optionen
wählen kann. Um dies zu vermeiden und die Konfiguration in
einem Stück zu erledigen, wechseln Sie in das
Verzeichnis des Ports und geben Sie
make config-recursive
ein. Führen Sie
danach make install [clean]
aus, um den
Port zu kompilieren und zu installieren.
Bei der Verwendung von
config-recursive
wird eine
Liste von Ports, die konfiguriert werden, vom
Target all-depends-list
erstellt. Es wird empfohlen,
make config-recursive
so lange
auszuführen, bis alle Optionen der abhängigen Ports
definiert sind und keine Optionen und Menüs mehr
erscheinen. Damit soll sichergestellt werden, dass alle
Optionen konfiguriert wurden.
Es gibt diverse Möglichkeiten, dieses Menü nach dem
Bau eines Ports erneut aufzurufen, um Optionen zu
entfernen, hinzuzufügen oder anzupassen. Sie können
beispielsweise mit cd
in das
Verzeichnis des Ports wechseln und dort
make config
eingeben. Eine andere
Möglichkeit ist make showconfig
. Eine
weitere Alternative bietet
make rmconfig
, das alle ursprünglich
gewählten Optionen zurücksetzt und es Ihnen dadurch
ermöglicht, die Konfiguration erneut zu beginnen. Die
eben erwähnten Optionen werden ausführlich in
ports(7) beschrieben.
Die Ports-Sammlung benutzt zum Herunterladen von
Dateien fetch(3), das diverse Umgebungsvariablen
unterstützt. Die Variablen
FTP_PASSIVE_MODE
, FTP_PROXY
und FTP_PASSWORD
müssen unter Umständen
gesetzt werden, wenn das FreeBSD-System hinter einer Firewall
oder einem FTP/HTTP-Proxy arbeitet. Eine vollständige
Liste der unterstützten Variablen finden Sie in
fetch(1).
Benutzer ohne eine ständige Internet-Verbindung können
make fetch
im Verzeichnis
/usr/ports
ausführen, um die
benötigten Dateien herunterzuladen. Es ist auch möglich,
make fetch
nur in einem Teil des Baums,
wie /usr/ports/net
, aufzurufen. Die
Dateien von allen abhängigen Ports werden mit diesem
Kommando allerdings nicht heruntergeladen. Wenn Sie diese
Dateien ebenfalls herunterladen wollen, benutzen Sie
stattdessen
make fetch-recursive
.
In einigen seltenen Fällen ist es erforderlich, die
benötigten Dateien von einem anderen Ort als den im Port
definierten MASTER_SITES
herunterzuladen. Sie können
MASTER_SITES
mit dem folgenden Kommando
überschreiben:
#
cd /usr/ports/
directory
#
make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/
fetch
Die Variablen WRKDIRPREFIX
und
PREFIX
überschreiben das voreingestellte
Bau- und Zielverzeichnis. Zum Beispiel:
#
make WRKDIRPREFIX=/usr/home/example/ports install
Dieses Kommando baut den Port unter
/usr/home/example/ports
und installiert
ihn unter /usr/local
.
Die Variable PREFIX
legt das
Installations-Verzeichnis fest:
#
make PREFIX=/usr/home/example/local install
In diesem Beispiel wird der Port unter
/usr/ports
gebaut und nach
/usr/home/example/local
installiert.
Sie können beide Variablen auch zusammen benutzen:
#
make WRKDIRPREFIX=../ports PREFIX=../local install
Alternativ können diese Variablen auch als Umgebungsvariablen gesetzt werden. In der Manualpage Ihrer Shell finden Sie Anweisungen, wie Umgebungsvariablen gesetzt werden.
Installierte Ports können mit
pkg delete
wieder deinstalliert werden.
Beispiele für dieses Kommando finden Sie in
pkg-delete(8).
Alternativ kann make deinstall
im
Verzeichnis des Ports aufgerufen werden:
#
cd /usr/ports/sysutils/lsof
#
make deinstall
===> Deinstalling for sysutils/lsof ===> Deinstalling Deinstallation has been requested for the following 1 packages: lsof-4.88.d,8 Thee deinstallation will free 229 kB [1/1] Deleting lsof-4.88.d,8... done
Es wird empfohlen die Nachrichten zu lesen, die ausgegeben werden, wenn ein Port deinstalliert wird. Wenn der Port noch Anwendungen hat, die von ihm abhängig sind, werdenn diese am Bildschirm angezeigt, aber die Deinstallation wird forgesetzt. In solchen Fällen ist es besser, die Anwendung neu zu installieren, um fehlende Abhängigkeiten zu vermeiden.
Im Laufe der Zeit stehen neuere Versionen der Software in der Ports-Sammlung zur Verfügung. In diesem Abschnitt wird beschrieben, wie Sie bestimmen, welche Software aktualisiert werden kann und wie das Upgrade durchzuführen ist.
Um festzustellen, ob neuere Versionen der installierten Ports verfügbar sind, stellen Sie sicher, dass die neueste Version der Ports-Sammlung installiert ist. Dies wird in Prozedur 4.1, „Installation mit Portsnap“ und Prozedur 4.2, „Installation mit Subversion“ beschrieben. Führen Sie unter FreeBSD 10 und neueren Versionen, bzw. auf Systemen die bereits mit pkg arbeiten, den folgenden Befehl aus, um eine Liste der installierten Ports zu erhalten für die eine aktuelle Version existiert:
#
pkg version -l "<"
Mit FreeBSD 9.X
und älteren
Versionen kann stattdessen dieser Befehl verwendet
werden:
#
pkg_version -l "<"
Lesen Sie zuerst
/usr/ports/UPDATING
, bevor
Sie einen Port aktualisieren. In dieser Datei werden
Probleme und zusätzlich durchzuführende
Schritte bei der Aktualisierung einzelner Ports
beschrieben. Dazu gehören solche Dinge wie
geänderte Dateiformate, verschobene Konfigurationsdateien,
aber auch Inkompatibilitäten zu einer
Vorgängerversion. Notieren Sie sich alle Anweisungen der
Ports, die aktualisiert werden müssen. Folgen Sie den
Anweisungen, wenn Sie das Upgrade durchführen.
Die Ports-Sammlung enthält mehrere Werkzeuge, um die eigentliche Aktualisierung durchzuführen. Jedes hat seine Stärken und Schwächen.
Historisch gesehen verwenden die meisten Installationen entweder Portmaster oder Portupgrade. Synth ist eine neuere Alternative.
Es bleibt dem Systemadministrator überlassen, welches dieser Werkzeuge für ein bestimmtes System am besten geeignet ist. Es wird empfohlen, die Daten zu sichern, bevor Sie eines dieser Werkzeuge verwenden.
ports-mgmt/portmaster ist ein sehr kleines Werkzeug zum Aktualisieren von Ports. Es wurde entwickelt, um mit den Werkzeugen aus dem FreeBSD Basissystem zu arbeiten, ohne dabei von anderen Ports oder Datenbanken abhängig zu sein. Sie können das Programm aus der Ports-Sammlung installieren:
#
cd /usr/ports/ports-mgmt/portmaster
#
make install clean
Portmaster teilt Ports in vier Kategorien ein:
Root Port: hat keine Abhängigkeiten und andere Ports sind nicht von diesem Port abhängig.
Trunk Port: hat keine Abhängigkeiten, aber andere Ports sind von diesem Port abhängig.
Branch Port: hat Abhängigkeiten und andere Ports sind von diesem Port abhängig.
Leaf Port: hat Abhängigkeiten, aber andere Ports sind nicht von diesem Port abhängig.
Um eine Liste der installierten Ports anzuzeigen und nach neueren Versionen zu suchen, verwenden Sie:
#
portmaster -L
===>>> Root ports (No dependencies, not depended on) ===>>> ispell-3.2.06_18 ===>>> screen-4.0.3 ===>>> New version available: screen-4.0.3_1 ===>>> tcpflow-0.21_1 ===>>> 7 root ports ... ===>>> Branch ports (Have dependencies, are depended on) ===>>> apache22-2.2.3 ===>>> New version available: apache22-2.2.8 ... ===>>> Leaf ports (Have dependencies, not depended on) ===>>> automake-1.9.6_2 ===>>> bash-3.1.17 ===>>> New version available: bash-3.2.33 ... ===>>> 32 leaf ports ===>>> 137 total installed ports ===>>> 83 have new versions available
Um alle installierten Ports zu aktualisieren, verwenden Sie folgenden Befehl:
#
portmaster -a
In der Voreinstellung erzeugt
Portmaster eine
Sicherheitskopie, bevor ein installierter Port gelöscht
wird. Ist die Installation der neuen Version erfolgreich,
wird dieses Backup wieder gelöscht. Wollen Sie das Backup
lieber manuell löschen, verwenden Sie die Option
-b
beim Aufruf von
Portmaster. Durch die
Verwendung von -i
wird
Portmaster im interaktiven
Modus gestartet und fragt bei jedem zu aktualisierenden
Port nach, wie weiter vorgegangen werden soll. Viele
weitere Optionen stehen zur Verfügung. Lesen Sie die
Manualpage von portmaster(8) für weitere Einzelheiten
in Bezug auf ihre Nutzung.
Treten während der Aktualisierung Fehler auf, verwenden
Sie die Option -f
, um alle Ports zu
aktualisieren beziehungsweise neu zu bauen:
#
portmaster -af
Portmaster ist auch in der Lage, neue Ports zu installieren, wobei zuvor alle abhängigen Ports aktualisiert werden. Um diese Funktion zu nutzen, geben Sie den Pfad des Ports in der Ports-Sammlung an:
#
portmaster
shells/bash
Weitere Informationen über
ports-mgmt/portmaster finden Sie in der
Beschreibung pkg-descr
.
ports-mgmt/portupgrade ist ein weiteres Werkzeug zur Aktualisierung von Ports. Es installiert eine Reihe von Anwendungen, die für die Verwaltung von Ports verwendet werden können. Das Programm ist jedoch von Ruby abhängig. Um den Port zu installieren, geben Sie ein:
#
cd /usr/ports/ports-mgmt/portupgrade
#
make install clean
Durchsuchen Sie vor jedem Update die Liste der
installierten Ports mit pkgdb -F
und
beheben Sie alle gefundenen Probleme.
Benutzen Sie portupgrade -a
, um
automatisch alle veralteten Ports auf dem System zu
aktualisieren. Verwenden Sie zusätzlich den Schalter
-i
, wenn Sie individuell entscheiden
wollen, ob ein Port aktualisiert werden soll:
#
portupgrade -ai
Um nur eine spezifische Anwendung zu aktualisieren,
verwenden Sie portupgrade
. Es ist
wichtig den Schalter Paketname
-R
zu benutzen, um
zuvor alle Ports zu aktualisieren, die von dem gegebenen
Anwendung abhängen.
#
portupgrade -R firefox
Um Pakete anstelle von Ports zu installieren, verwenden
Sie den Schalter -P
. Mit dieser
Option durchsucht Portupgrade
die in der Umgebungsvariablen PKG_PATH
aufgeführten Verzeichnisse nach Paketen. Sind
lokal keine Pakete vorhanden, versucht
Portupgrade die Pakete
über das Netz herunterzuladen. Gibt es die Pakete
weder lokal noch auf entfernten Rechnern, werden die Ports
verwendet. Um die Nutzung von Ports gänzlich zu verhindern,
benutzen Sie die Option -PP
.
Portupgrade würde dann abbrechen,
falls keine Pakete zur Verfügung stehen.
#
portupgrade -PP gnome3
Wenn Sie nur die Quelldateien des Ports, oder die Pakete
mit -P
herunterladen möchten, ohne die
Anwendung zu bauen oder zu installieren, geben Sie den
Schalter -F
an. Weitere Informationen zu
den verfügbaren Schaltern finden Sie in der Manualpage von
portupgrade(1).
Weitere Informationen über
ports-mgmt/portupgrade finden Sie in der
Beschreibung pkg-descr
.
Die Nutzung der Ports-Sammlung wird im Laufe der Zeit viel
Plattenplatz verschlingen. Nach dem Bau und der Installation
eines Ports, wird make clean
die temporären
Arbeitsverzeichnisse work
aufräumen.
Portmaster wird dieses Verzeichnis
nach der Installation eines Ports automatisch entfernen
(es sei denn, die Option -K
wird verwendet).
Wenn Portupgrade
installiert ist, wird der folgende Befehl alle Arbeitsverzeichnisse
der lokalen Ports-Sammlung entfernen:
#
portsclean -C
Zusätzlich werden sich im Laufe der Zeit zahlreiche
veraltete Distfiles in
/usr/ports/distfiles
ansammeln. Mit
Portupgrade können alle Distfiles
gelöscht werden, die vom keinem Port mehr benötigt
werden:
#
portsclean -D
Portupgrade kann alle Distfiles löschen, die von keinem derzeit installierten Port benötigt werden:
#
portsclean -DD
Wenn Portmaster installiert ist, benutzen Sie diesen Befehl:
#
portmaster --clean-distfiles
In der Voreinstellung arbeitet dieses Programm interaktiv und fragt den Benutzer um Bestätigung, bevor ein Distfile gelöscht wird.
Zusätzlich zu diesen Kommandos gibt es noch port-mgmt/pkg_cutleaves. Dieses Werkzeug automatisiert die Deinstallation von installierten Ports, die nicht weiter benötigt werden.
Poudriere ist ein unter der BSD-Lizenz stehendes Werkzeug zum Erstellen und Testen von FreeBSD-Paketen. Dieses Programm nutzt FreeBSD Jails, um die Pakete in einer isolierten Umgebung zu bauen. Diese Jails können verwendet werden, um Pakete für andere Versionen von FreeBSD zu bauen, oder um auf einem amd64-System Pakete für i386 zu bauen. Sobald die Pakete gebaut sind, haben sie das gleiche Format wie auf den offiziellen Spiegeln. Die Pakete können dann mit pkg(8) oder anderen Paketverwaltungswerkzeugen benutzt werden.
Poudriere wird über das Paket
oder den Port ports-mgmt/poudriere
installiert. Die Installation beinhaltet eine
Beispielkonfiguration in
/usr/local/etc/poudriere.conf.sample
.
Kopieren Sie diese Datei nach
/usr/local/etc/poudriere.conf
. Bearbeiten
Sie dann die kopierte Datei, um die Konfiguration
anzupassen.
Obwohl ZFS für
poudriere nicht zwingend erforderlich
ist, so hat die Nutzung doch einige Vorteile. Wird
ZFS eingesetzt, muss in
/usr/local/etc/poudriere.conf
die Variable
ZPOOL
definiert, und die Variable
FREEBSD_HOST
auf einen nahe gelegenen
Spiegel gesetzt werden. Die Definition von
CCACHE_DIR
erlaubt die Verwendung von
devel/ccache, um die Bauzeit für häufig
kompilierten Code verkürzen. Es kann vorteilhaft sein, die
poudriere-Datasets in einem separaten
Verzeichnis auf /poudriere
einzuhängen.
Die Werte der anderen Konfigurationsvariablen sind in der Regel
angemessen und brauchen nicht geändert werden.
Die Anzahl der Kerne im Prozessor wird verwendet um zu bestimmen, wie viele Bauprozesse parallel ausgeführt werden. Stellen Sie ausreichend virtuellen Speicher bereit, entweder in Form von RAM oder als Swap-Speicher. Ist der virtuelle Speicher aufgebraucht, bricht der Bauprozess ab und die Jails stürzen ab, was zu seltsamen Fehlermeldungen führt.
Nach der Konfiguration muss
poudriere initialisiert werden,
damit es eine Jail mit der benötigten Ports-Sammlung startet.
Geben Sie mit -j
den Namen der Jail und mit
-v
die gewünschte FreeBSD-Version an. Auf
FreeBSD/amd64-Systemen kann die Architektur mit dem
Schalter -a
und i386
oder
amd64
gesetzt werden. Der voreingestellte
Wert für die Architektur können Sie sich mit
uname
anzeigen lassen.
#
poudriere jail -c -j
[00:00:00] Creating 11amd64 fs at /poudriere/jails/11amd64... done [00:00:00] Using pre-distributed MANIFEST for FreeBSD 11.4-RELEASE amd64 [00:00:00] Fetching base for FreeBSD 11.4-RELEASE amd64 /poudriere/jails/11amd64/fromftp/base.txz 125 MB 4110 kBps 31s [00:00:33] Extracting base... done [00:00:54] Fetching src for FreeBSD 11.4-RELEASE amd64 /poudriere/jails/11amd64/fromftp/src.txz 154 MB 4178 kBps 38s [00:01:33] Extracting src... done [00:02:31] Fetching lib32 for FreeBSD 11.4-RELEASE amd64 /poudriere/jails/11amd64/fromftp/lib32.txz 24 MB 3969 kBps 06s [00:02:38] Extracting lib32... done [00:02:42] Cleaning up... done [00:02:42] Recording filesystem state for clean... done [00:02:42] Upgrading using ftp /etc/resolv.conf -> /poudriere/jails/11amd64/etc/resolv.conf Looking up update.FreeBSD.org mirrors... 3 mirrors found. Fetching public key from update4.freebsd.org... done. Fetching metadata signature for 11.4-RELEASE from update4.freebsd.org... done. Fetching metadata index... done. Fetching 2 metadata files... done. Inspecting system... done. Preparing to download files... done. Fetching 124 patches.....10....20....30....40....50....60....70....80....90....100....110....120.. done. Applying patches... done. Fetching 6 files... done. The following files will be added as part of updating to 11.4-RELEASE-p1: /usr/src/contrib/unbound/.github /usr/src/contrib/unbound/.github/FUNDING.yml /usr/src/contrib/unbound/contrib/drop2rpz /usr/src/contrib/unbound/contrib/unbound_portable.service.in /usr/src/contrib/unbound/services/rpz.c /usr/src/contrib/unbound/services/rpz.h /usr/src/lib/libc/tests/gen/spawnp_enoexec.sh The following files will be updated as part of updating to 11.4-RELEASE-p1: […] Installing updates...Scanning //usr/share/certs/blacklisted for certificates... Scanning //usr/share/certs/trusted for certificates... done. 11.4-RELEASE-p1 [00:04:06] Recording filesystem state for clean... done [00:04:07] Jail 11amd64 11.4-RELEASE-p1 amd64 is ready to be used11amd64
-v11.4-RELEASE
#
poudriere ports -c -p
[00:00:00] Creating local fs at /poudriere/ports/local... done [00:00:00] Checking out the ports tree... donelocal
-m svn+https
poudriere kann auf einem einzelnen Rechner Ports mit mehreren Konfigurationen bauen, in mehreren Jails und aus unterschiedlichen Ports-Sammlungen. Spezifische Konfigurationen für diese Kombinationen werden Sets genannt. Lesen Sie den Abschnitt CUSTOMIZATION in poudriere(8) für weitere Einzelheiten nach der Installation von port-mgmt/poudriere oder ports-mgmt/poudriere-devel.
Die hier gezeigte Konfiguration verwendet eine einzelne
Jail-, Port- und Set-spezifische
make.conf
in
/usr/local/etc/poudriere.d
. Der
verwendete Dateiname in diesem Beispiel wird aus einer
Kombination von Jailnamen, Portnamen und Setnamen zusammen
gesetzt:
.
Die 11amd64-local-workstation
-make.confmake.conf
des Systems und diese neue
Datei werden verwendet, um die make.conf
für die Jail zu erzeugen.
Die zu bauenden Pakete werden in
eingetragen:11amd64-local-workstation
-pkglist
editors/emacs devel/git ports-mgmt/pkg ...
Die Optionen und Abhängigkeiten für die Ports werden wie folgt konfiguriert:
#
poudriere options -j
11amd64
-plocal
-zworkstation
-f11amd64-local-workstation-pkglist
Schließlich werden die Pakete gebaut und ein Paket-Repository erstellt:
#
poudriere bulk -j
11amd64
-plocal
-zworkstation
-f11amd64-local-workstation-pkglist
Während der Ausführung zeigt Ctrl+t
den aktuellen Status des Baus an.
Poudriere speichert zudem Dateien
in /poudriere/logs/bulk/jailname
. Diese
Dateien kann ein Webserver nutzen, um Informationen über den
Bau anzuzeigen.
Nach der Fertigstellung stehen die Pakete im poudriere Repository für die Installation zur Verfügung.
Weitere Informationen zu poudriere finden Sie in poudriere(8) und unter https://github.com/freebsd/poudriere/wiki.
Obwohl es möglich ist ein eigenes Repository zusammen mit
dem offiziellen Repository zu nutzen, ist es manchmal
sinnvoll das offizielle Repository zu deaktivieren. Dazu
wird eine Konfigurationsdatei erstellt, welche die offizielle
Konfigurationsdatei überschreibt. Erzeugen Sie dazu
/usr/local/etc/pkg/repos/FreeBSD.conf
mit dem folgenden Inhalt:
FreeBSD: { enabled: no }
Am einfachsten ist es, das poudriere Repository über
HTTP zur Verfügung zu stellen. Setzen Sie
einen Webserver auf, der die Dateien des Paketverzeichnisses
ausliefert, zum Beispiel
/usr/local/poudriere/data/packages/
.
11amd64
bezeichnet dabei den Namen des Baus.11amd64
Wenn die URL des Paket Repositories
http://pkg.example.com/11amd64
ist, dann
sollte die Konfiguration des Repositories in
/usr/local/etc/pkg/repos/custom.conf
wie folgt aussehen:
custom: {
url: "http://pkg.example.com/11amd64
",
enabled: yes,
}
Unabhängig davon, ob die Software aus einem binären Paket oder aus einem Port installiert wird, benötigen die meisten Anwendungen von Drittanbietern ein gewisses Maß an Konfiguration, nachdem sie installiert wurden. Die folgenden Kommandos und Speicherorte helfen Ihnen dabei festzustellen, was mit der Anwendung zusammen installiert wurde.
Die meisten Anwendungen installieren mindestens eine
Konfigurationsdatei nach
/usr/local/etc
. Falls die Anwendung
viele Konfigurationsdateien enthält, wird ein
Unterverzeichnis erstellt um die Dateien zu speichern. Oft
werden die Konfigurationsdateien mit einem Suffix wie
beispielsweise .sample
installiert.
Die Konfigurationsdateien sollten überprüft und ggf.
bearbeitet werden, um die Anforderungen des Systems zu
erfüllen. Um eine Konfigurationsdatei zu bearbeiten,
kopieren Sie diese zunächst ohne die Erweiterung
.sample
.
Wenn die Anwendung Dokumentation zur Verfügung stellt,
wird diese nach /usr/local/share/doc
installiert. Viele Anwendungen installieren auch
Manualpages. Diese Dokumentation sollten Sie lesen, bevor
Sie fortfahren.
Einige Anwendungen laufen als Dienst und müssen vor
dem ersten Start in /etc/rc.conf
eingetragen werden. Diese Anwendungen installieren meist
ein Skript in /usr/local/etc/rc.d
.
Weitere Informationen finden Sie im Abschnitt 11.2, „Start von Diensten“.
In der Voreinstellung führen Anwendungen weder ihr Startskript bei der Installation aus, noch führen sie ihr Stopskript während der Deinstallation aus. Diese Entscheidung bleibt dem einzelnen Systemadministrator überlassen.
Benutzer der csh(1) sollten
rehash
ausführen, um die neu
installierten Programme nutzen zu können.
Benutzen Sie pkg info
, um die
Dateien, Manualpages und Binaries zu ermitteln, die mit der
Anwendung installiert wurden.
Wenn sich ein Port nicht bauen oder installieren lässt, versuchen Sie folgendes:
Stellen Sie fest, ob die Datenbank mit den Problemberichten bereits einen Lösungsvorschlag enthält. Ist dies der Fall, kann die vorgeschlagene Lösung getestet werden.
Bitten Sie den Betreuer des Ports um Hilfe. Geben Sie
dazu make maintainer
ein oder lesen Sie
das Makefile
im Verzeichnis des Ports,
um an die E-Mail-Adresse zu kommen. Vergessen Sie nicht
die Zeile mit $FreeBSD:
aus dem
Makefile
und die Ausgabe bis zur
Fehlermeldung mitzuschicken.
Einige Ports werden nicht von einer Einzelperson,
sondern von einer
Mailingliste betreut. Viele (aber nicht alle)
dieser Adressen haben die Form <freebsd-
.
Denken Sie daran, wenn Sie Ihre Fragen formulieren.NameDerListe
@FreeBSD.org>
Dies gilt insbesondere für Ports, die von
<ports@FreeBSD.org>
betreut
werden. Derartige Ports haben überhaupt keinen
Betreuer. Korrekturen und Unterstützung kommen daher nur
von Personen, die diese Mailingliste abonniert haben.
Gerade in diesem Bereich werden jederzeit zusätzliche
freiwillige Helfer benötigt!
Erhalten Sie auf Ihre Anfrage keine Antwort, benutzen Sie Bugzilla, um einen Problembericht zu erstellen. Bevor Sie einen solchen Bericht erstellen, lesen Sie den Artikel Writing FreeBSD Problem Reports.
Reparieren Sie ihn! Das FreeBSD Porter's Handbook enthält eine detaillierte Beschreibung des Portsystems. Damit sind Sie in der Lage, einen zeitweilig kaputten Port zu reparieren oder einen eigenen Port zu erstellen.
Installieren Sie das Paket anstelle des Ports. Anweisungen hierzu finden Sie in Abschnitt 4.4, „Benutzen von pkg zur Verwaltung von Binärpaketen“.
Bei einer Installation von FreeBSD mit bsdinstall wird nicht automatisch eine grafische Benutzeroberfläche installiert. Dieses Kapitel beschreibt die Installation und Konfiguration von Xorg, das eine grafische Umgebung über das quelloffene X-Window-System zur Verfügung stellt. Weiterhin wird beschrieben, wie Sie eine Desktop-Umgebung oder einen Window Manager finden und installieren können.
Benutzer die eine Installationsmethode bevorzugen, welche automatisch Xorg konfiguriert, sollten sich FuryBSD, GhostBSD oder MidnightBSD ansehen.
Weitere Informationen über Video-Hardware, die von Xorg unterstützt wird, finden Sie auf der x.org Webseite.
Nachdem Sie dieses Kapitel gelesen haben, werden Sie
Die Komponenten des X-Window-Systems und ihr Zusammenspiel kennen.
Wissen, wie Xorg installiert und konfiguriert wird.
Wissen, wie verschiedene Window-Manager und Desktop-Umgebungen installiert und konfiguriert werden.
Wissen, wie TrueType®-Schriftarten mit Xorg benutzt werden.
Wissen, wie Sie die grafische Anmeldung (XDM) einrichten.
Bevor Sie dieses Kapitel lesen, sollten Sie
Wissen, wie Sie Software Dritter, wie in Kapitel 4, Installieren von Anwendungen: Pakete und Ports beschrieben, installieren.
Obwohl es nicht nötig ist, alle Details der verschiedenen Komponenten des X Window Systems und deren Zusammenspiel zu kennen, kann es trotzdem nützlich sein die Grundlagen dieser Komponenten zu verstehen:
X wurde von Anfang an netzwerktransparent entworfen und verwendet ein „Client-Server-Modell“. In diesem Modell läuft der „X-Server“ auf dem Rechner, an dem die Tastatur, der Bildschirm und die Maus angeschlossen ist. Der Server ist für Dinge wie die Verwaltung des Bildschirms und die Verarbeitung von Tastatur- und Maus-Eingaben sowie anderer Ein- und Ausgabegeräte, wie beispielsweise ein Tablet oder ein Videoprojektor, verantwortlich. Dieses Modell verwirrt viele Leute, die erwarten, dass der „X-Server“ der leistungsstarke Rechner im Maschinenraum und der „X-Client“ ihr Arbeitsplatzrechner ist.
Jede X-Anwendung, wie beispielsweise XTerm oder Firefox ist ein „X-Client“. Der Client sendet dem Server Nachrichten wie „Zeichne an diesen Koordinaten ein Fenster“ und der Server sendet dem Client Nachrichten der Art „Der Benutzer hat gerade den Ok-Knopf gedrückt“.
In kleinen Umgebungen laufen der X-Server und die X-Clients auf demselben Rechner. Es ist auch möglich, den X-Server auf einem weniger leistungsfähigen Rechner laufen zu lassen und die X-Anwendungen auf einem leistungsfähigeren Rechner zu betreiben. In diesem Fall kommunizieren der X-Server und die X-Clients über das Netzwerk.
X schreibt nicht vor, wie Fenster auf dem Bildschirm
auszusehen haben, wie sie mit der Maus zu verschieben
sind, welche Tastenkombinationen benutzt werden sollen um
zwischen den Fenstern zu wechseln, wie die Fensterrahmen
aussehen, oder ob diese Schaltflächen zum schließen haben.
Stattdessen gibt X die Verantwortung für all diese Sachen
an eine separate Window-Manager
Anwendung ab. Es stehen zahlreiche
Window-Manager
zur Verfügung. Jeder
Window-Manager bietet ein anderes Erscheinungsbild:
einige unterstützen virtuelle Bildschirme, andere erlauben
Tastenkombinationen zur Verwaltung des Bildschirms.
Einige besitzen eine „Start“ Schaltfläche und
in manchen lässt sich das Aussehen und Verhalten der
Anwendung über Themes
beliebig einstellen. Window-Manager stehen in der
Kategorie x11-wm
der Ports-Sammlung
zur Verfügung.
Jeder Window-Manager wird unterschiedlich konfiguriert. Einige erwarten eine manuell erstellte Konfigurationsdatei, während andere ein grafisches Werkzeug für die meisten Konfigurationsarbeiten anbieten.
KDE und GNOME werden als Desktop-Umgebungen bezeichnet, da sie eine ganze Reihe von Anwendungen für typische Desktop-Aufgaben enthalten. Dazu zählen beispielsweise Office-Pakete, Webbrowser und Spiele.
Der Window-Manager ist für die Methode verantwortlich, mit der ein Fenster den Fokus bekommt. Jedes System, das Fenster verwendet muss entscheiden, wie ein Fenster aktiviert wird, damit es Eingaben empfangen kann. Das aktive Fenster sollte zudem sichtbar gekennzeichnet werden.
Eine Methode wird „click-to-focus“ genannt. Ein Fenster wird aktiv, wenn es mit der Maus angeklickt wird. Eine weitere Methode ist „focus-follows-mouse“. Hier hat liegt der Fokus auf dem Fenster, auf dem sich der Mauszeiger befindet. Wird der Mauszeiger in ein anderes Fenster bewegt, so erhält dieses Fenster den Fokus. Eine dritte Methode ist „sloppy-focus“. Hier wechselt der Fokus nur dann, wenn sich der Mauszeiger in ein neues Fenster bewegt und nicht, wenn er das aktive Fenster verlässt. Ist der Mauszeiger auf der Desktop Oberfläche, so bleibt der Fokus auf dem zuletzt verwendeten Fenster. Bei der Methode „click-to-focus“ wird das aktive Fenster durch einen Mausklick festgelegt. Dabei kann das Fenster vor alle anderen Fenster gesetzt werden. Alle Eingaben werden dann, unabhängig von der Position des Mauszeigers, dem aktiven Fenster zugeordnet.
Die verschiedenen Window-Manager unterstützen noch andere Methoden. Alle unterstützen jedoch „click-to-focus“ und die meisten von ihnen auch die anderen Methoden. Lesen Sie die Dokumentation des Window-Managers um festzustellen, welche Methoden zur Verfügung stehen.
Widget bezeichnet Objekte, die in irgendeiner Weise geklickt oder manipuliert werden können. Dazu gehören buttons (Schaltflächen), check buttons (Schaltfläche für Mehrfachauswahlen), radio buttions (Schaltfläche für Einfachauswahlen), Icons und Auswahllisten. Eine Widget-Sammlung ist eine Reihe von Widgets, die verwendet werden um grafische Anwendungen zu erstellen. Es gibt mehrere populäre Widget-Sammlungen, einschließlich Qt, das von KDE benutzt wird, und GTK+, das von GNOME benutzt wird. Als Folge dessen, haben Anwendungen einen bestimmten look and feel, je nachdem welche Widget-Sammlung benutzt wurde, um die Anwendung zu erstellen.
In FreeBSD kann Xorg als Paket oder Port installiert werden.
Die Installation des Pakets ist zwar schneller, dafür können weniger Optionen angepasst werden:
#
pkg install xorg
Die nachstehenden Kommandos bauen und installieren Xorg aus der Ports-Sammlung:
#
cd /usr/ports/x11/xorg
#
make install clean
Bei beiden Vorgehensweisen wird ein vollständiges Xorg-System installiert. Für die meisten Anwender ist die Installation des Binärpakets die bessere Option.
Eine kleinere Version des Xorg-Systems für erfahrene Anwender ist mit x11/xorg-minimal verfügbar. Die meisten Dokumente, Bibliotheken und Anwendungen werden hierbei nicht installiert. Einige Anwendungen erfordern jedoch diese zusätzlichen Komponenten, um ordnungsgemäß zu funktionieren.
Xorg unterstützt die meisten gängigen Grafikkarten, Tastaturen und Zeigegeräte.
Grafikkarten, Monitore und Eingabegeräte werden
automatisch erkannt und müssen nicht manuell konfiguriert
werden. Erstellen Sie keine xorg.conf
und führen Sie nicht -configure
aus, es sei
denn, die automatische Konfiguration schlägt fehl.
Wenn Xorg bereits zuvor auf diesem Computer verwendet wurde, verschieben oder entfernen Sie alle vorhandenen Konfigurationsdateien:
#
mv /etc/X11/xorg.conf ~/xorg.conf.etc
#
mv /usr/local/etc/X11/xorg.conf ~/xorg.conf.localetc
Fügen Sie die Benutzer, die
Xorg verwenden, zur Gruppe
video
oder
wheel
hinzu, um die 3D-Beschleunigung zu aktivieren. Um den
Benutzer jru
in eine der
verfügbaren Gruppen hinzuzufügen:
#
pw groupmod video -m
jru
|| pw groupmod wheel -mjru
Der Window-Manager twm ist standardmäßig enthalten und wird auch gestartet, wenn Xorg startet:
%
startx
Auf einigen älteren Versionen von FreeBSD muss die Systemkonsole auf vt(4) eingestellt sein, damit der Wechsel auf die Konsole ordnungsgemäß funktioniert. Informationen dazu finden Sie im Abschnitt 5.4.3, „Kernel Mode Setting (KMS)“.
Um die 3D-Beschleunigung für Grafikkarten zu ermöglichen,
ist der Zugriff auf /dev/dri
notwendig.
In der Regel ist es am einfachsten, die Benutzer zur Gruppe
video
oder
wheel
hinzuzufügen. In diesem Beispiel wird pw(8) verwendet,
um den Benutzer slurms
zu der
Gruppe video
hinzuzufügen, bzw. zur Gruppe
wheel
, falls die
Gruppe video
nicht
existiert:
#
pw groupmod video -m
slurms
|| pw groupmod wheel -mslurms
Wenn der Computer die Anzeige von der Konsole auf eine höhere Bildschirmauflösung für X umstellt, muss der Videoausgabe-Modus eingestellt werden. Neuere Versionen von Xorg verwenden dazu ein System innerhalb des Kernels, um diesen Modus effizienter zu ändern. Ältere Versionen von FreeBSD verwenden dafür sc(4), welches jedoch nicht mit dem KMS-System umgehen kann. Das führt dazu, dass nach dem Schließen von X die Konsole leer bleibt, obwohl sie weiterhin funktioniert. Die neuere vt(4) Konsole vermeidet dieses Problem.
Fügen Sie diese Zeile in
/boot/loader.conf
ein um vt(4) zu
aktivieren:
kern.vty=vt
Eine manuelle Konfiguration ist in der Regel nicht erforderlich. Bitte erstellen Sie keine manuellen Konfigurationsdateien, es sei denn, die automatische Konfiguration funktioniert nicht.
Xorg sucht in verschiedenen
Verzeichnissen nach Konfigurationsdateien. Unter FreeBSD ist
/usr/local/etc/X11/
das bevorzugte
Verzeichnis für diese Dateien. Die Verwendung dieses
Verzeichnisses hilft dabei, Anwendungsdateien vom
Betriebssystem getrennt zu halten.
Das Speichern von Konfigurationsdateien unter
/etc/X11/
funktioniert immer noch,
allerdings vermischt diese Methode Anwendungsdateien mit
Dateien des Basissystems und wird daher nicht
empfohlen.
Anstatt die traditionelle
xorg.conf
zu verwenden, ist es
einfacher, mehrere Dateien, die jeweils eine bestimmte
Einstellung konfigurieren, zu verwenden. Diese Dateien
werden im Unterverzeichnis xorg.conf.d/
des Hauptverzeichnisses gespeichert. Der vollständige Pfad
ist normalerweise
/usr/local/etc/X11/xorg.conf.d/
.
Beispiele für diese Dateien werden später in diesem Abschnitt vorgestellt.
Die traditionelle, einzelne
xorg.conf
funktioniert weiterhin, ist
jedoch nicht so übersichtlich und flexibel wie die
Verwendung von mehreren Dateien im Unterverzeichnis
xorg.conf.d/
.
Aufgrund von Änderungen in neueren Versionen von FreeBSD ist es nun möglich, Grafiktreiber zu benutzen, die aus der Ports-Sammlung oder als Pakete bereitgestellt werden. Die folgenden Treiber sind mit graphics/drm-kmod verfügbar:
2D- und 3D-Beschleunigung wird auf den meisten Intel KMS driver Grafikkarten von Intel® unterstützt.
Name des Treibers: i915kms
2D- und 3D-Beschleunigung wird auf den meisten älteren Radeon KMS driver Grafikkarten von AMD® unterstützt.
Name des Treibers: radeonkms
2D- und 3D-Beschleunigung wird auf den meisten neueren AMD KMS driver Grafikkarten von AMD® unterstützt.
Name des Treibers: amdgpu
Eine Liste der unterstützten GPUs finden Sie unter https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units und https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units.
3D-Beschleunigung wird von den meisten Intel®-Grafikkarten unterstützt, einschließlich Ivy Bridge (HD Graphics 2500, 4000 und P4000), Iron Lake (HD Graphics) und Sandy Bridge (HD Graphics 2000).
Treibername: intel
Weitere Informationen finden Sie unter https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units.
2D- und 3D-Beschleunigung wird von den meisten Radeon-Karten bis zur HD6000-Serie unterstützt.
Treibername: radeon
Weitere Informationen finden Sie unter https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units.
Verschiedene NVIDIA Treiber sind in der
Kategorie x11
der Ports-Sammlung
enthalten. Installieren Sie den Treiber, der für die
Grafikkarte benötigt wird.
Weitere Informationen finden Sie unter https://en.wikipedia.org/wiki/List_of_Nvidia_graphics/processing_units.
Einige Notebooks besitzen zusätzlich zum Chipsatz oder Prozessor einen Grafikprozessor. Optimus kombiniert Intel® und NVIDIA Hardware. Umschaltbare Grafik bzw. Hybride Grafik ist eine Kombination aus Intel®, oder AMD® Prozessor mit AMD® Radeon GPU.
Die Implementierungen dieser Hybrid-Grafik-Systeme variieren und Xorg in FreeBSD ist nicht in der Lage, alle Versionen der Hardware zu betreiben.
Einige Computer bieten jedoch eine BIOS-Option, um eine der beiden Grafikkarten zu deaktivieren oder den diskreten Modus einzuschalten. Zum Beispiel ist es manchmal möglich, die NVIDIA GPU in einem Optimus-System zu deaktivieren. Intel® Video kann dann mit einem Intel® Treiber verwendet werden.
Die BIOS-Einstellungen sind
abhängig vom Modell des Computers. In manchen
Situationen können beide GPUs
aktiviert bleiben. Um solch ein System lauffähig zu
machen genügt es bereits, nur die
Haupt-GPU im Abschnitt
Device
der Konfigurationsdatei zu
setzen.
Treiber für weniger gebräuchliche Grafikkarten
finden Sie in der Kategorie
x11-drivers
der
Ports-Sammlung.
Karten, die nicht durch einen speziellen Treiber unterstützt werden, sind vielleicht noch mit dem Treiber x11-drivers/xf86-video-vesa nutzbar. Dieser Treiber wird von x11/xorg installiert. Der Treiber kann auch manuell als x11-drivers/xf86-video-vesa installiert werden. Xorg versucht immer diesen Treiber zu verwenden, wenn für die Grafikkarte kein passender Treiber gefunden wird.
x11-drivers/xf86-video-scfb ist ein ähnlicher Treiber, der mit vielen UEFI und ARM® Computern funktioniert.
Den Intel® Treiber in einer Konfigurationsdatei einstellen:
/usr/local/etc/X11/xorg.conf.d/driver-intel.conf
Section "Device" Identifier "Card0" Driver "intel" # BusID "PCI:1:0:0" EndSection
Wenn mehr als eine Grafikkarte vorhanden ist, kann
der Eintrag BusID
verwendet werden,
um die gewünschte Karte auszuwählen. Eine Liste der
BusID
s der Grafikkarten kann mit
pciconf -lv | grep -B3 display
ausgegeben werden.
Den Radeon Treiber in einer Konfigurationsdatei einstellen:
/usr/local/etc/X11/xorg.conf.d/driver-radeon.conf
Section "Device" Identifier "Card0" Driver "radeon" EndSection
Den VESA Treiber in einer Konfigurationsdatei einstellen:
/usr/local/etc/X11/xorg.conf.d/driver-vesa.conf
Section "Device" Identifier "Card0" Driver "vesa" EndSection
Den Treiber scfb
für
UEFI- oder ARM®-Computer
auswählen:
scfb
Treiber über eine
Datei auswählen/usr/local/etc/X11/xorg.conf.d/driver-scfb.conf
Section "Device" Identifier "Card0" Driver "scfb" EndSection
Fast alle Monitore unterstützen den Extended Display Identification Data Standard (EDID). Xorg verwendet EDID um mit dem Monitor zu kommunizieren und die unterstützten Auflösungen und Bildwiederholfrequenzen zu erkennen. Xorg wählt dann die für den Monitor am besten geeignete Kombination von Einstellungen.
Weitere vom Monitor unterstützte Auflösungen, können in der Konfigurationsdatei, oder nach dem Start des X-Servers mit xrandr(1) gesetzt werden.
Führen Sie xrandr(1) ohne Parameter aus, um eine Liste von Video-Ausgängen und erkannten Monitor-Modi zu sehen:
%
xrandr
Screen 0: minimum 320 x 200, current 3000 x 1920, maximum 8192 x 8192 DVI-0 connected primary 1920x1200+1080+0 (normal left inverted right x axis y axis) 495mm x 310mm 1920x1200 59.95*+ 1600x1200 60.00 1280x1024 85.02 75.02 60.02 1280x960 60.00 1152x864 75.00 1024x768 85.00 75.08 70.07 60.00 832x624 74.55 800x600 75.00 60.32 640x480 75.00 60.00 720x400 70.08 DisplayPort-0 disconnected (normal left inverted right x axis y axis) HDMI-0 disconnected (normal left inverted right x axis y axis)
Die Auflistung zeigt, dass der
DVI-0
Ausgang benutzt wird, um eine
Bildschirmauflösung von 1920x1200 bei einer
Bildwiederholrate von 60 Hz anzuzeigen. An den
Anschlüssen DisplayPort-0
und
HDMI-0
sind keine Monitore
angeschlossen.
Die anderen Anzeigemodi können mit xrandr(1) ausgewählt werden. Um beispielsweise auf 1280x1024 bei 60 Hz umzuschalten:
%
xrandr --mode 1280x1024 --rate 60
Häufig wird für einen Videoprojektor der externe Videoausgang eines Notebooks verwendet.
Die Typen und Anzahl der Videoanschlüsse variiert
zwischen den Geräten und auch die Ausgabe variiert von
Treiber zu Treiber. Was für den einen Treiber
HDMI-1
ist, nennt ein anderer Treiber
vielleicht HDMI1
. Führen Sie daher
zunächst xrandr(1) aus, um alle verfügbaren
Anschlüsse aufzulisten.
%
xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192 LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm 1366x768 60.04*+ 1024x768 60.00 800x600 60.32 56.25 640x480 59.94 VGA1 connected (normal left inverted right x axis y axis) 1280x1024 60.02 + 75.02 1280x960 60.00 1152x864 75.00 1024x768 75.08 70.07 60.00 832x624 74.55 800x600 72.19 75.00 60.32 56.25 640x480 75.00 72.81 66.67 60.00 720x400 70.08 HDMI1 disconnected (normal left inverted right x axis y axis) DP1 disconnected (normal left inverted right x axis y axis)
Vier Ausgänge wurden gefunden: das integrierte Panel
LVDS1
, sowie die externen Anschlüsse
VGA1
, HDMI1
und
DP1
.
Der Videoprojektor wurde am Ausgang
VGA1
angeschlossen. xrandr(1)
wird nun verwendet, um diese Ausgabe auf die native
Auflösung des Projektors einzustellen und den
zusätzlichen Platz auf der rechten Seite des Desktops
hinzuzufügen:
%
xrandr --output VGA1 --auto --right-of LVDS1
--auto
wählt die Auflösung und
Aktualisierungsrate die von EDID
ermittelt wurden. Wenn die Auflösung nicht richtig
ermittelt wurde, kann ein fester Wert mit
--mode
anstelle von
--auto
angegeben werden.
Beispielsweise können die meisten Projektoren mit einer
Auflösung von 1024x768 betrieben werden, die mit
--mode 1024x768
gesetzt wird.
xrandr(1) wird häufig aus
.xinitrc
ausgeführt, um den
entsprechenden Modus zu setzen wenn X startet.
Eine Bildschirmauflösung von 1024x768 in einer Konfigurationsdatei einstellen:
/usr/local/etc/X11/xorg.conf.d/screen-resolution.conf
Section "Screen" Identifier "Screen0" Device "Card0" SubSection "Display" Modes "1024x768" EndSubSection EndSection
Die wenigen Monitore, die EDID
nicht beherrschen, können durch setzen von
HorizSync
und
VertRefresh
auf den Bereich der
vom Monitor unterstützten Frequenzen konfiguriert
werden.
/usr/local/etc/X11/xorg.conf.d/monitor0-freq.conf
Section "Monitor" Identifier "Monitor0" HorizSync 30-83 # kHz VertRefresh 50-76 # Hz EndSection
Die standardisierte Position von Tasten auf einer Tastatur wird als Layout bezeichnet. Layouts und andere einstellbare Parameter werden in xkeyboard-config(7) beschrieben.
In der Voreinstellung ist ein US-amerikanisches
Layout aktiv. Um ein alternatives Layout zu wählen,
setzen Sie die Optionen
XkbLayout
und
XkbVariant
in der Klasse
InputClass
. Dies wird für alle
Eingabegeräte der entsprechenden Klasse angewendet
werden.
Dieses Beispiel konfiguriert ein deutsches Tastaturlayout.
/usr/local/etc/X11/xorg.conf.d/keyboard-de.conf
Section "InputClass" Identifier "KeyboardDefaults" MatchIsKeyboard "on" Option "XkbLayout" "de" EndSection
Hier werden die Tastaturlayouts für Vereinigte Staaten, Spanien und Ukraine gesetzt. Mit Alt+Shift können Sie zwischen den einzelnen Layouts wechseln. Für eine verbesserte Steuerung des Layouts kann x11/xxkb oder x11/sbxkb benutzt werden.
/usr/local/etc/X11/xorg.conf.d/kbd-layout-multi.conf
Section "InputClass" Identifier "All Keyboards" MatchIsKeyboard "yes" Option "XkbLayout" "us,es,ua" EndSection
X kann über eine Tastenkombination geschlossen
werden. Standardmäßig ist die Tastenkombination
jedoch nicht gesetzt, da sie mit Tastaturbefehlen für
einige Anwendungen in Konflikt steht. Die Aktivierung
dieser Option erfordert Änderungen in der Sektion
InputDevice
für die
Tastatur:
/usr/local/etc/X11/xorg.conf.d/keyboard-zap.conf
Section "InputClass" Identifier "KeyboardDefaults" MatchIsKeyboard "on" Option "XkbOptions" "terminate:ctrl_alt_bksp" EndSection
Wenn Sie unter FreeBSD 12.1 das Paket
xorg-server 1.20.8 oder eine
neuere Version installiert haben, und Sie auch nicht
den moused(8)-Daemon verwenden, fügen Sie
kern.evdev.rcpt_mask=12
in
/etc/sysctl.conf
ein.
Viele Parameter für die Maus können über Konfigurationseinstellungen eingestellt werden. mousedrv(4) enthält eine vollständige Liste.
Die Anzahl der Maustasten wird in
xorg.conf
im Abschnitt
InputDevice
für die Maus
festgelegt. Um die Anzahl der Tasten auf
7 zu setzen:
/usr/local/X11/xorg.conf.d/mouse0-buttons.conf
Section "InputDevice" Identifier "Mouse0" Option "Buttons" "7" EndSection
In einigen Fällen funktioniert die Autokonfiguration nicht mit bestimmter Hardware, oder es wird eine andere Konfiguration benötigt. Für diese Fälle kann eine benutzerdefinierte Konfigurationsdatei erstellt werden.
Erstellen Sie keine manuellen Konfigurationsdateien, sofern dies nicht erforderlich ist. Eine unnötige manuelle Konfiguration kann den ordnungsgemäßen Betrieb verhindern.
Eine Konfigurationsdatei kann, basierend auf der von Xorg erfassten Hardware erzeugt werden. Diese Konfigurationsdatei ist ein guter Ausgangspunkt für angepasste Konfigurationen.
Erzeugung einer xorg.conf
:
#
Xorg -configure
Die Konfigurationsdatei wird in
/root/xorg.conf.new
gespeichert. Machen
Sie alle gewünschten Änderungen an dieser Datei. Danach
testen Sie die Datei mit:
#
Xorg -retro -config /root/xorg.conf.new
Nachdem die neue Konfiguration angepasst und getestet
wurde, kann die Konfiguration in kleinere Dateien unter
/usr/local/etc/X11/xorg.conf.d/
aufgeteilt werden.
Die Schriftarten, die mit Xorg ausgeliefert werden, eignen sich ganz und gar nicht für Desktop-Publishing-Anwendungen. Große Schriftarten zeigen bei Präsentationen deutliche Treppenstufen und kleine Schriftarten sind fast unleserlich. Es gibt allerdings mehrere hochwertige Type 1 Schriftarten (PostScript®), die mit Xorg benutzt werden können. Beispielsweise enthalten die URW-Schriftarten (x11-fonts/urwfonts) hochwertige Versionen gängiger Type 1 Schriftarten (unter anderem Times Roman®, Helvetica®, Palatino®). Die Sammlung Freefonts (x11-fonts/freefonts) enthält viele weitere Schriftarten, doch sind diese für den Einsatz in Grafikprogrammen wie Gimp gedacht und nicht für den alltäglichen Gebrauch. Weiterhin kann Xorg mit einem Minimum an Aufwand konfiguriert werden, damit TrueType®-Schriftarten benutzt werden können. Mehr dazu erfahren Sie in der Manualpage X(7) und im Abschnitt 5.5.2, „TrueType®-Schriftarten“.
Die Type 1 Schriftarten lassen sich als Paket wie folgt installieren:
#
pkg install urwfonts
Alternativ können die Schriftarten aus der Ports-Sammlung gebaut und installiert werden:
#
cd /usr/ports/x11-fonts/urwfonts
#
make install clean
Analog lassen sich Freefont und andere Sammlungen
installieren. Damit der X-Server diese Schriftarten erkennt,
fügen Sie eine entsprechende Zeile in die Konfigurationsdatei
des X-Servers (/etc/X11/xorg.conf
)
hinzu:
FontPath "/usr/local/share/fonts/urwfonts/"
Alternativ kann in der X-Sitzung das folgende Kommando abgesetzt werden:
%
xset fp+ /usr/local/share/fonts/urwfonts
%
xset fp rehash
Jetzt kennt der X-Server die neuen Schriftarten, jedoch
nur bis zu Ende der Sitzung. Soll die Änderung dauerhaft
sein, müssen die Befehle in ~/.xinitrc
eingetragen werden, wenn X mittels startx
gestartet wird, beziehungsweise in
~/.xsession
, wenn ein grafischer
Login-Manager, wie XDM verwendet
wird. Eine dritte Möglichkeit besteht darin,
/usr/local/etc/fonts/local.conf
zu
verwenden, was im Abschnitt 5.5.3, „Anti-aliasing“ demonstriert
wird.
Xorg besitzt eine eingebaute Unterstützung zur
Darstellung von TrueType®-Schriftarten. Hierzu existieren
zwei verschiedene Module, die diese Funktionalität aktivieren
können. In diesem Beispiel wird das Freetype-Modul benutzt,
da es besser mit anderen Werkzeugen, die
TrueType®-Schriftarten darstellen, übereinstimmt. Um das
Freetype-Modul zu aktivieren, muss die folgende Zeile zum
Abschnitt "Module"
in
/etc/X11/xorg.conf
hinzugefügt
werden.
Load "freetype"
Erstellen Sie ein Verzeichnis für die
TrueType®-Schriftarten (beispielsweise
/usr/local/share/fonts/TrueType
) und
kopieren Sie alle Schriftarten dorthin. Beachten Sie, dass
die Schriftarten für Xorg im
UNIX®/MS-DOS®/Windows®-Format vorliegen müssen und nicht
direkt von einem Apple® Mac® übernommen werden können.
Sobald die Dateien in das Verzeichnis kopiert wurden,
verwenden Sie mkfontscale um
fonts.dir
zu erstellen, damit X
weiß, dass diese neuen Dateien installiert wurden.
mkfontscale
kann als Paket installiert
werden:
#
pkg install mkfontscale
Erstellen Sie dann einen Index der Schriftarten für X:
#
cd /usr/local/share/fonts/TrueType
#
mkfontscale
Geben Sie dem System das TrueType®-Verzeichnis, wie im Abschnitt 5.5.1, „Type 1 Schriftarten“ beschrieben, bekannt:
#
xset fp+ /usr/local/share/fonts/TrueType
#
xset fp rehash
Oder fügen Sie eine FontPath
-Zeile in
xorg.conf
ein.
Jetzt sollten Gimp, Apache OpenOffice und alle anderen X-Anwendungen die TrueType®-Schritarten erkennen. Extrem kleine Schriftarten (Webseiten, die mit hoher Auflösung betrachtet werden) und sehr große Schriftarten (in StarOffice™) werden jetzt viel besser aussehen.
Alle Schriftarten in Xorg,
die in den Verzeichnissen
/usr/local/share/fonts/
und
~/.fonts/
gefunden werden, werden
automatisch für Anti-aliasing an Anwendungen zur Verfügung
gestellt, die Xft beherrschen. Die meisten aktuellen
Anwendungen beherrschen Xft, dazu gehören auch
KDE,
GNOME und
Firefox.
In
/usr/local/etc/fonts/local.conf
werden die Schriftarten, die mit dem Anti-aliasing-Verfahren
benutzt werden sollen und die Eigenschaften des Verfahrens
festgelegt. In diesem Abschnitt wird nur die grundlegende
Konfiguration von Xft beschrieben. Weitere Details entnehmen
Sie bitte der Hilfeseite fonts-conf(5).
Die Datei local.conf
ist ein
XML-Dokument. Achten Sie beim
Editieren der Datei daher auf die richtige Groß- und
Kleinschreibung und darauf, dass alle Tags geschlossen
sind. Die Datei beginnt mit der üblichen XML-Deklaration
gefolgt von einer DOCTYPE-Definition und dem
<fontconfig>
-Tag:
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig>
Wie vorher erwähnt, stehen schon alle Schriftarten
in /usr/local/share/fonts/
und
~/.fonts/
für Anwendungen, die
Xft unterstützen, zur Verfügung. Um ein Verzeichnis außerhalb
dieser beiden Bäume zu benutzen, fügen Sie eine Zeile wie die
nachstehende in
/usr/local/etc/fonts/local.conf
hinzu:
<dir>/path/to/my/fonts</dir>
Wenn Sie neue Schriftarten hinzugefügt haben, müssen Sie den Schriftarten-Cache neu aufbauen:
#
fc-cache -f
Das Anti-aliasing-Verfahren zeichnet Ränder leicht
unscharf, dadurch werden kleine Schriften besser lesbar und
der Treppenstufen-Effekt bei wird großen Schriften vermieden.
Auf normale Schriftgrößen sollte das Verfahren aber nicht
angewendet werden, da dies die Augen zu sehr anstrengt. Um
kleinere Schriftgrößen als 14 Punkt von dem Verfahren
auszuschließen, fügen Sie in local.conf
die nachstehenden Zeilen ein:
<match target="font"> <test name="size" compare="less"> <double>14</double> </test> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match> <match target="font"> <test name="pixelsize" compare="less" qual="any"> <double>14</double> </test> <edit mode="assign" name="antialias"> <bool>false</bool> </edit> </match>
Das Anti-aliasing-Verfahren kann die Abstände einiger
Fixschriften falsch darstellen, dies fällt besonders unter
KDE auf. Sie können das Problem
umgehen, indem Sie die Abstände dieser Schriften auf den Wert
100
festsetzen. Fügen Sie die
nachstehenden Zeilen hinzu:
<match target="pattern" name="family"> <test qual="any" name="family"> <string>fixed</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match> <match target="pattern" name="family"> <test qual="any" name="family"> <string>console</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match>
Damit werden die Namen der gebräuchlichen Fixschriften auf
"mono"
abgebildet. Für diese Schriften
setzen Sie dann den Abstand fest:
<match target="pattern" name="family"> <test qual="any" name="family"> <string>mono</string> </test> <edit name="spacing" mode="assign"> <int>100</int> </edit> </match>
Bestimmte Schriftarten, wie Helvetica, können
Probleme mit dem Anti-Aliasing-Verfahren verursachen.
In der Regel erscheinen diese Schriftarten dann vertikal
halbiert. Im schlimmsten Fall stürzen Anwendungen als Folge
davon ab. Sie vermeiden dies, indem Sie betroffene
Schriftarten in local.conf
von dem
Verfahren ausnehmen:
<match target="pattern" name="family"> <test qual="any" name="family"> <string>Helvetica</string> </test> <edit name="family" mode="assign"> <string>sans-serif</string> </edit> </match>
Nachdem Sie local.conf
editiert
haben, müssen Sie sicherstellen, dass die Datei mit dem Tag
</fontconfig>
endet. Ist das
nicht der Fall, werden die Änderungen nicht
berücksichtigt.
Benutzer können personalisierte Einstellungen in
~/.fonts.conf
vornehmen. Diese Datei
verwendet die gleiche XML-Syntax wie im obigen
Beispiel.
Mit einem LCD können Sie
sub-pixel sampling anstelle von
Anti-aliasing einsetzen. Dieses Verfahren behandelt die
horizontal getrennten Rot-, Grün- und Blau-Komponenten eines
Pixels gesondert und verbessert damit (teilweise sehr wirksam)
die horizontale Auflösung. Die nachstehende Zeile in
local.conf
aktiviert diese
Funktion:
<match target="font"> <test qual="all" name="rgba"> <const>unknown</const> </test> <edit name="rgba" mode="assign"> <const>rgb</const> </edit> </match>
Abhängig von der Art Ihres Bildschirms
müssen Sie anstelle von rgb
eines
der folgenden verwenden: bgr
,
vrgb
oder vbgr
.
Experimentieren Sie und vergleichen, was besser
aussieht.
Xorg enthält den X-Display-Manager XDM, um Sitzungen zu verwalten. XDM stellt eine graphische Anmeldemaske zur Verfügung, in der Sie den Server, auf dem eine Sitzung laufen soll, auswählen können und in der Sie die Autorisierungs-Informationen, wie Benutzername und Passwort, eingeben können.
Dieser Abschnitt zeigt, wie der X-Displaymanager konfiguriert wird. Einige grafische Oberflächen enthalten ihre eigenen graphischen Login-Manager. Eine Anleitung zur Konfiguration des GNOME Display-Managers finden Sie im Abschnitt 5.7.1, „GNOME“. Eine Anleitung zur Konfiguration des KDE Display Managers finden Sie im Abschnitt 5.7.2, „KDE“.
XDM kann über das Paket oder
den Port x11/xdm installiert werden. Nach
der Installation lässt sich XDM
durch einen Eintrag in /etc/ttys
bei
jedem Start des Rechners aktivieren:
ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure
Ändern Sie den Wert off
zu
on
und speichern Sie die Datei.
ttyv8
zeigt an, dass
XDM auf dem neunten virtuellen
Terminal ausgeführt wird.
Die Konfigurationsdateien von
XDM befinden sich in
/usr/local/etc/X11/xdm
. Dieses
Verzeichnis enthält einige Dateien, mit denen das Verhalten
und Aussehen von XDM beeinflusst
werden kann, sowie ein paar Skripte und Programme
zur Einrichtung des Desktops. Eine Zusammenfassung der
Aufgaben dieser Dateien beschreibt die Tabelle 5.1, „Die Konfigurationsdateien von XDM“. Die genaue Syntax und
Verwendung wird in xdm(1) beschrieben.
Datei | Beschreibung |
---|---|
Xaccess | Verbindungen zu XDM
werden über das „X Display Manager Connection
Protocol“ (XDMCP)
hergestellt. Xaccess enthält
die Client-Berechtigungen zur Steuerung der
XDMCP-Verbindungen entfernter
Maschinen. In der Voreinstellung erlaubt diese
Datei keine Verbindungen von entfernten
Maschinen. |
Xresources | Diese Datei steuert das Erscheinungsbild der
Bildschirmauswahl und Anmeldemasken von
XDM. In der
Voreinstellung erscheint ein rechteckiges
Anmeldefenster, dass den Hostnamen und einen
Anmeldeprompt mit „Login:“ und
„Password“ anzeigt. Das Format dieser
Datei entspricht den Dateien im Verzeichnis
app-defaults , die
in der Dokumentation von
Xorg beschrieben
sind. |
Xservers | Diese Datei enthält eine Liste entfernter Rechner, die in der Bildschirmauswahl angeboten werden. |
Xsession | Dieses Skript wird von
XDM aufgerufen, nachdem
sich ein Benutzer erfolgreich angemeldet hat. Es
verweist auf ein angepasstes Skript in
~/.xsession . |
Xsetup_* | Diese Skripten werden automatisch ausgeführt,
bevor die Bildschirmauswahl oder die Anmeldemasken
angezeigt werden. Für jeden lokalen Bildschirm gibt
es ein Skript namens Xsetup_* ,
wobei * die lokale
Bildschirmnummer ist. Normalerweise werden damit
ein oder zwei Programme, wie
xconsole , im Hindergrund
gestartet. |
xdm-config | Konfiguration für alle auf der Maschine verwalteten Bildschirme. |
xdm-errors | Enthält Fehler, die vom Server generiert
werden. Wenn ein von XDM
verwalteter Bildschirm hängen bleibt, suchen Sie in
dieser Datei nach Fehlermeldungen. Für jede Sitzung
werden die Meldungen auch in die Datei
~/.xsession-errors des
Benutzers geschrieben. |
xdm-pid | Die Prozess-ID des gerade laufenden XDM-Prozesses. |
In der Voreinstellung können sich nur Benutzer auf dem selben System über XDM anmelden. Um es Benutzern anderer Systeme zu ermöglichen, sich mit dem Bildschirm-Server zu verbinden, muss der Zugriffsregelsatz bearbeitet und der Listener aktiviert werden.
Um XDM so zu konfigurieren,
dass jede Verbindung angenommen wird, kommentieren Sie die
Zeile DisplayManager.requestPort
in
/usr/local/etc/X11/xdm/xdm-config
aus,
indem Sie der Zeile ein !
voranstellen.
! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with xdm DisplayManager.requestPort: 0
Speichern Sie die Änderungen und starten Sie
XDM neu. Um den Fernzugriff zu
beschränken, sehen Sie sich die Beispiele in
/usr/local/etc/X11/xdm/Xaccess
an.
Zusätzliche Informationen finden Sie in xdm(1)
Dieser Abschnitt beschreibt die Installation der drei
beliebtesten grafischen Oberflächen unter FreeBSD. Eine
Oberfläche kann alles von einem einfachen Window-Manager bis hin
zu kompletten Anwendungen sein. Mehr als einhundert grafische
Oberflächen stehen in der Kategorie x11-wm
der Ports-Sammlung zur Verfügung.
GNOME ist eine benutzerfreundliche Oberfläche. Es besitzt eine Leiste, mit der Anwendungen gestartet werden und die Statusinformationen anzeigen kann. Programme und Daten können auf der Oberfläche abgelegt werden und Standardwerkzeuge stehen zur Verfügung. Es gibt Konventionen, die es Anwendungen leicht machen, zusammenzuarbeiten und ein konsistentes Erscheinungsbild garantieren. Weitere Informationen zu GNOME unter FreeBSD finden Sie unter https://www.FreeBSD.org/gnome. Die Webseite enthält zusätzliche Informationen über die Installation, Konfiguration und Verwaltung von GNOME unter FreeBSD.
Diese grafische Oberfläche kann als Paket installiert werden:
#
pkg install gnome3
Um GNOME stattdessen aus der Ports-Sammlung zu übersetzen, nutzen Sie das folgende Kommando. GNOME ist eine große Anwendung, die sogar auf einem schnellen Computer einige Zeit zum Übersetzten benötigt.
#
cd /usr/ports/x11/gnome3
#
make install clean
GNOME benötigt ein
eingehängtes /proc
Dateisystem. Fügen
Sie daher die folgende Zeile in
/etc/fstab
ein, damit procfs(5)
beim Systemstart automatisch eingehängt wird:
proc /proc procfs rw 0 0
GNOME benötigt
D-Bus und
HAL für einen Nachrichtenbus und
Hardware Abstraktion. Diese Anwendungen werden automatisch
als Abhängigkeiten von GNOME
installiert. Aktivieren Sie die Dienste in
/etc/rc.conf
, sodass sie automatisch
gestartet werden wenn das System bootet:
dbus_enable="YES" hald_enable="YES"
Nach der Installation weisen Sie
Xorg an,
GNOME zu starten. Der einfachste
Weg, dies zu tun, ist über den GNOME Display Manager
GDM, der als Teil des
GNOME-Desktops installiert wird.
Um GDM zu aktivieren, fügen Sie
folgende Zeile in /etc/rc.conf
ein:
gdm_enable="YES"
In der Regel ist es ratsam, alle
GNOME-Dienste zu starten.
Um dies zu erreichen, fügen Sie die folgende Zeile in
/etc/rc.conf
ein:
gnome_enable="YES"
GDM wird nun automatisch gestartet, wenn das System hochfährt.
GNOME kann alternativ auch
von der Kommandozeile gestartet werden, wenn eine
entsprechend konfigurierte ~/.xinitrc
vorliegt. Existiert diese Datei bereits, ersetzen Sie den
Aufruf des Window-Managers durch
/usr/local/bin/gnome-session.
Wenn .xinitrc
nicht existiert,
erstellen Sie die Datei mit folgendem Befehl:
%
echo "exec /usr/local/bin/gnome-session" > ~/.xinitrc
Eine dritte Methode ist, XDM
als Display-Manager zu verwenden. In diesem Fall erstellen
Sie eine ausführbare ~/.xsession
:
%
echo "exec /usr/local/bin/gnome-session" > ~/.xsession
KDE ist eine weitere, leicht zu benutzende Desktop-Umgebung. Dieser Desktop bietet eine Sammlung von Anwendungen mit einheitlichem Erscheinungsbild (look and feel), einheitlichen Menüs, Werkzeugleisten, Tastenkombinationen, Farbschemata, Internationalisierung und einer zentralen, dialoggesteuerten Desktop-Konfiguration. Weitere Informationen zu KDE finden Sie unter http://www.kde.org/. Spezifische Informationen für FreeBSD finden Sie unter http://freebsd.kde.org.
Um KDE als Paket zu installieren, geben Sie ein:
#
pkg install x11/kde5
Um KDE stattdessen aus dem Quellcode zu übersetzen, verwenden Sie das folgende Kommando. Bei der Installation wird ein Menü zur Auswahl der Komponenten angezeigt. KDE ist eine große Anwendung, die sogar auf einem schnellen Computer einige Zeit zum Übersetzen benötigt.
#
cd /usr/ports/x11/kde5
#
make install clean
KDE benötigt ein
eingehängtes /proc
. Fügen
Sie diese Zeile in /etc/fstab
ein,
um das Dateisystem automatisch beim Systemstart
einzuhängen:
proc /proc procfs rw 0 0
KDE benötigt
D-Bus und
HAL für einen Nachrichtenbus und
Hardware Abstraktion. Diese Anwendungen werden automatisch
als Abhängigkeiten von KDE
installiert. Aktivieren Sie die Dienste in
/etc/rc.conf
, sodass sie automatisch
gestartet werden wenn das System bootet:
dbus_enable="YES" hald_enable="YES"
Seit KDE Plasma 5 wird der KDE Display-Manager KDM nicht weiterentwickelt. Eine mögliche Alternative ist SDDM. Sie können das Paket wie folgt installieren:
#
pkg install x11/sddm
Fügen Sie anschließend folgende Zeile in
/etc/rc.conf
ein:
sddm_enable="YES"
Eine zweite Möglichkeit KDE zu
starten, ist startx
in der Kommandozeile
einzugeben. Damit dies funktioniert, wird folgende Zeile in
~/.xinitrc
benötigt:
exec ck-launch-session startplasma-x11
Eine dritte Möglichkeit ist KDE
über XDM zu starten. Um dies zu
tun, erstellen Sie eine ausführbare
~/.xsession
wie folgt:
%
echo "exec ck-launch-session startkde" > ~/.xsession
Sobald KDE gestartet wird, finden Sie im integrierten Hilfesystem weitere Informationen zur Benutzung der verschiedenen Menüs und Anwendungen.
Xfce ist eine Desktop-Umgebung, basierend auf den von GNOME verwendeten GTK+-Bibliotheken. Es hat einen geringeren Speicherbedarf und stellt dabei einen schlichten, effizienten und einfach zu benutzenden Desktop zur Verfügung. Xfce ist vollständig konfigurierbar, verfügt über eine Programmleiste mit Menüs, Applets und einen Programmstarter. Zudem sind ein Datei-Manager und ein Sound-Manager enthalten und das Programm ist über Themes anpassbar. Da es schnell, leicht und effizient ist, eignet sich Xfce ideal für ältere oder langsamere Rechner mit wenig Speicher. Weitere Informationen zu Xfce finden Sie unter http://www.xfce.org.
Um das Paket Xfce zu installieren, geben Sie folgendes ein:
#
pkg install xfce
Um stattdessen den Port zu übersetzen:
#
cd /usr/ports/x11-wm/xfce4
#
make install clean
Xfce benutzt
D-Bus als Nachrichtenbus. Die
Komponente wird automatisch als Abhängigkeit von
Xfce installiert. Um
D-Bus beim Hochfahren des Systems
zu starten, fügen Sie folgende Zeile in
/etc/rc.conf
ein:
dbus_enable="YES"
Im Gegensatz zu GNOME oder
KDE, besitzt
Xfce keinen eigenen
Login-Manager. Damit Xfce von
der Kommandozeile mit startx
gestartet
werden kann, muss zunächst ~/.xinitrc
mit diesem Befehl erstellt werden:
%
echo ". /usr/local/etc/xdg/xfce4/xinitrc" > ~/.xinitrc
Alternativ dazu kann XDM
verwendet werden. Um diese Methode zu konfigurieren,
erstellen Sie eine ausführbare
~/.xsession
:
%
echo ". /usr/local/etc/xdg/xfce4/xinitrc" > ~/.xsession
Der Einsatz von hübschen 3D-Effekten ist eine Möglichkeit, die Benutzerfreundlichkeit eines Desktop-Rechners zu erhöhen.
Die Installation des Compiz Fusion Pakets ist einfach, aber bei der Konfiguration sind ein paar Schritte notwendig, die nicht in der Dokumentation des Ports beschrieben werden.
Desktop-Effekte erzeugen eine hohe Last auf der Grafikkarte. Für nVidia-basierte Grafikkarten sind die proprietären Treiber für eine gute Leistung erforderlich. Benutzer anderer Grafikkarten können diesen Abschnitt überspringen und mit der Konfiguration von Xorg fortfahren.
Lesen Sie die FAQ zu diesem Thema, um herauszufinden, wie der richtige nVidia-Treiber ermittelt werden kann.
Nachdem der richtige Treiber für die Karte ermittelt wurde, kann er wie jedes andere Paket installiert werden.
Um beispielsweise den aktuellsten Treiber zu installieren:
#
pkg install x11/nvidia-driver
Der Treiber erstellt ein Kernelmodul, welches beim
Systemstart geladen werden muss. Fügen folgende Zeile in
/boot/loader.conf
ein:
nvidia_load="YES"
Um das Kernelmodul direkt in den laufenden Kernel zu
laden, kann der Befehl kldload nvidia
eingeben werden. Allerdings wurde festgestellt, dass einige
Versionen von Xorg nicht richtig funktionieren, wenn der
Treiber nicht beim Systemstart geladen wurde. Nach der
Änderung in /boot/loader.conf
wird
daher ein Neustart des Systems empfohlen.
Wenn das Kernelmodul geladen ist, muss in der Regel nur
noch eine einzige Zeile in xorg.conf
geändert werden, um den proprietären Treiber zu
aktivieren:
Suchen Sie folgende Zeile in
/etc/X11/xorg.conf
:
Driver "nv"
und ändern Sie die Zeile zu:
Driver "nvidia"
Wenn Sie nun die grafische Oberfläche starten, sollten Sie vom nVidia Startbildschirm begrüßt werden. Alles sollte wie gewohnt funktionieren.
Um Compiz Fusion zu
aktivieren, muss /etc/X11/xorg.conf
angepasst werden:
Fügen Sie diesen Abschnitt hinzu, um Composite-Effekte zu aktivieren:
Section "Extensions" Option "Composite" "Enable" EndSection
Suchen Sie den Abschnitt „Screen“, der ähnlich wie hier gezeigt aussehen sollte:
Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" ...
und fügen Sie die beiden folgenden Zeilen hinzu (z.B. nach „Monitor“):
DefaultDepth 24 Option "AddARGBGLXVisuals" "True"
Suchen Sie den Abschnitt „Subsection“, der sich auf die gewünschte Bildschirmauflösung bezieht. Wenn Sie z.B. 1280x1024 verwenden möchten, suchen Sie den folgenden Abschnitt. Sollte die gewünschte Auflösung nicht in allen Unterabschnitten vorhanden sein, können Sie den entsprechenden Eintrag manuell hinzufügen:
SubSection "Display" Viewport 0 0 Modes "1280x1024" EndSubSection
Für Composite-Effekte wird eine Farbtiefe von 24 Bit benötigt. Ändern Sie dazu den obigen Abschnitt wie folgt:
SubSection "Display" Viewport 0 0 Depth 24 Modes "1280x1024" EndSubSection
Zuletzt muss noch sichergestellt werden, dass die Module „glx“ und „extmod“ im Abschnitt „Module“ geladen werden:
Section "Module" Load "extmod" Load "glx" ...
Die vorangegangenen Einstellungen können automatisch mit
x11/nvidia-xconfig erledigt werden, indem
Sie folgende Kommandos als root
ausführen:
#
nvidia-xconfig --add-argb-glx-visuals
#
nvidia-xconfig --composite
#
nvidia-xconfig --depth=24
Die Installation von Compiz Fusion ist so einfach wie die Installation jedes anderen Pakets:
#
pkg install x11-wm/compiz-fusion
Wenn die Installation abgeschlossen ist, starten Sie (als normaler Benutzer) den grafischen Desktop mit folgendem Befehl:
%
compiz --replace --sm-disable --ignore-desktop-hints ccp &
%
emerald --replace &
Der Bildschirm wird für einige Sekunden flackern, da der Window Manager (z.B. Metacity, wenn Sie GNOME benutzen) von Compiz Fusion ersetzt wird. Emerald kümmert sich um die Fensterdekoration (z.B. die Schatzflächenn schließen, minimieren und maximieren, Titelleisten, usw.).
Sie können dieses einfache Skript anpassen und es dann beim Start automatisch ausführen lassen (z.B. durch Hinzufügen von „Sessions“ beim GNOME-Desktop):
#! /bin/sh compiz --replace --sm-disable --ignore-desktop-hints ccp & emerald --replace &
Speichern Sie die Datei in Ihrem Heimatverzeichnis,
beispielsweise als start-compiz
und
machen Sie die Datei ausführbar:
%
chmod +x ~/start-compiz
Benutzen Sie dann die grafische Oberfläche, um das Skript zu GNOME-Desktop unter , , ).
hinzuzufügen (beimUm die gewünschten Effekte und Einstellungen zu konfigurieren, starten Sie (wieder als normaler Benutzer) den Compiz Config Einstellungs—Manager:
%
ccsm
In GNOME finden Sie diese Einstellungen wieder im Menü unter , .
Wenn Sie „gconf support“ während der
Installation ausgewählt haben, können Sie diese Einstellungen
auch im gconf-editor
unter
apps/compiz
finden.
Wenn die Maus nicht funktioniert, müssen Sie diese zuerst
konfigurieren. In neueren Versionen von
Xorg werden die
InputDevice
-Abschnitte in
xorg.conf
ignoriert, um stattdessen die
automatisch erkannten Geräte zu verwenden. Um das alte
Verhalten wiederherzustellen, fügen Sie folgende Zeile zum
Abschnitt ServerLayout
oder
ServerFlags
dieser Datei hinzu:
Option "AutoAddDevices" "false"
Wie zuvor erwähnt, wird standardmäßig der hald-Dienst automatisch die Tastatur erkennen. Es kann jedoch passieren, dass das Tastaturlayout oder das Modell nicht korrekt erkannt wird. Grafische Oberflächen wie GNOME, KDE oder Xfce stellen Werkzeuge für die Konfiguration der Tastatur bereit. Es ist allerdings auch möglich, die Tastatureigenschaften direkt zu setzen, entweder mit Hilfe von setxkbmap(1) oder mit einer Konfigurationsregel von hald.
Wenn Sie zum Beispiel eine PC 102-Tasten Tastatur mit
französischem Layout verwenden möchten, müssen sie eine
Tastaturkonfigurationsdatei x11-input.fdi
für hald im Verzeichnis
/usr/local/etc/hal/fdi/policy
anlegen.
Diese Datei sollte die folgenden Zeilen enthalten:
<?xml version="1.0" encoding="iso-8859-1"?> <deviceinfo version="0.2"> <device> <match key="info.capabilities" contains="input.keyboard"> <merge key="input.x11_options.XkbModel" type="string">pc102</merge> <merge key="input.x11_options.XkbLayout" type="string">fr</merge> </match> </device> </deviceinfo>
Wenn diese Datei bereits existiert, kopieren Sie nur die Zeilen in die Datei, welche die Tastaturkonfiguration betreffen.
Sie müssen Ihren Computer neu starten, um hald zu zwingen, diese Datei einzulesen.
Es ist auch möglich, die gleiche Konfiguration von einem X-Terminal oder einem Skript über den folgenden Befehl heraus zu tätigen:
%
setxkbmap -model pc102 -layout fr
/usr/local/share/X11/xkb/rules/base.lst
enthält die zur Verfügung stehenden Tastatur- und
Layoutoptionen.
Die Konfigurationsdatei xorg.conf.new
kann nun an bestimmte Bedürfnisse angepasst werden. Öffnen
Sie die Datei in einem Editor, wie emacs(1) oder
ee(1). Falls der Monitor ein älteres oder ungewöhnliches
Modell ist und keine automatische Erkennung unterstützt, können
die Synchronisationsfrequenzen im Abschnitt
"Monitor"
der
xorg.conf.new
eingetragen werden.
Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Monitor Model" HorizSync 30-107 VertRefresh 48-120 EndSection
Die meisten Monitore unterstützen die automatische Erkennung der Synchronisationsfrequenzen, so dass eine manuelle Eingabe der Werte nicht erforderlich ist. Für die wenigen Monitore, die keine automatische Erkennung unterstützen, sollten nur die vom Hersteller zur Verfügung gestellten Werte eingegeben werden, um einen möglichen Schaden zu vermeiden.
X unterstützt die Energiesparfunktionen (DPMS, Energy Star)
für Monitore. Mit xset(1) können die Zeitlimits für die
DPMS-Modi standby, suspend, off vorgeben, oder zwingend
aktiviert werden. Die DPMS-Funktionen können mit der folgenden
Zeile im Abschnitt "Monitor"
aktiviert
werden:
Option "DPMS"
Die gewünschte Auflösung und Farbtiefe stellen sie im
Abschnitt "Screen"
ein:
Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 Modes "1024x768" EndSubSection EndSection
Mit DefaultDepth
wird die standardmäßige
Farbtiefe angegeben. Mit der Option -depth
von
Xorg(1) lässt sich die vorgegebene Farbtiefe überschreiben.
Modes
gibt die Auflösung für die angegebene
Farbtiefe an. Die Farbtiefe im Beispiel beträgt 24 Bits pro
Pixel, die zugehörige Auflösung ist 1024x768 Pixel. Beachten
Sie, dass in der Voreinstellung nur Standard-VESA-Modi der
Grafikkarte angegeben werden können.
Sichern Sie die Konfigurationsdatei. Testen Sie anschließend die Konfiguration, wie oben beschrieben.
Bei der Fehlersuche stehen Ihnen die Protokolldateien von
Xorg zur Verfügung. Die
Protokolle enthalten Informationen über alle Geräte, die mit
dem Xorg-Server verbunden ist.
Die Namen der
Xorg-Protkolldateien haben das
Format /var/log/Xorg.0.log
. Der exakte
Name der Datei variiert dabei von
Xorg.0.log
bis
Xorg.8.log
, und so weiter.
Wenn alles funktioniert, installieren Sie die Datei an einen
Ort, an dem Xorg(1) sie finden kann. Typischerweise ist
dies /etc/X11/xorg.conf
oder
/usr/local/etc/X11/xorg.conf
.
#
cp xorg.conf.new /etc/X11/xorg.conf
Damit ist die Konfiguration von Xorg abgeschlossesn. Xorg kann nun mit dem Programm startx(1) gestartet werden. Alternativ kann der Xorg-Server auch mithilfe von xdm(1) gestartet werden.
Der Intel® i810-Chipset benötigt den Treiber
agpgart
, die AGP-Schnittstelle für
Xorg. Die Manualpage für den
Treiber agp(4) enthält weitere Informationen.
Ab jetzt kann die Hardware wie jede andere Grafikkarte
auch konfiguriert werden. Beachten Sie, dass der Treiber
agp(4) nicht nachträglich in einen laufenden Kernel
geladen werden kann. Er muss entweder fest im Kernel
eingebunden sein, oder beim Systemstart über
/boot/loader.conf
geladen werden.
Dieser Abschnitt geht über die normalen Konfigurationsarbeiten hinaus und setzt ein wenig Vorwissen voraus. Selbst wenn die Standardwerkzeuge zur X-Konfiguration bei diesen Geräten nicht zum Erfolg führen, gibt es in den Protokolldateien genug Informationen, mit denen Sie letztlich doch einen funktionierenden X-Server konfigurieren können. Alles, was Sie dazu benötigen, ist ein Texteditor.
Aktuelle Widescreen-Formate (wie WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, und andere mehr) unterstützen Seitenverhältnisse wie 16:10 oder 10:9, die unter X Probleme verursachen können. Bei einem Seitenverhältnis von 16:10 sind beispielsweise folgende Auflösungen möglich:
2560x1600
1920x1200
1680x1050
1440x900
1280x800
Irgendwann wird die Konfiguration vereinfacht werden,
dass nur noch die Auflösung als Mode
in
Section "Screen"
eingtragen wird,
so wie hier:
Section "Screen" Identifier "Screen 0" Device "Card 0" Monitor "Monitor0" Default Depth 24 SubSection "Display" ViewPort 0 0 Depth 24 Modes "1680x1050" EndSubSection EndSection
Xorg ist intelligent genug, um die Informationen zu den Auflösungen über I2C/DDC zu beziehen, und weiß daher, welche Auflösungen und Frequenzen der Widescreen-Monitor unterstützt.
Wenn diese ModeLines
in den
Treiberdateien nicht vorhanden sind, kann es sein, dass Sie
Xorg beim Finden der korrekten
Werte unterstützen müssen. Dazu extrahieren Sie die
benötigten Informationen aus
/var/log/Xorg.0.log
und
erzeugen daraus eine funktionierende
ModeLine
. Suchen Sie nach Zeilen ähnlich
den folgenden:
(II) MGA(0): Supported additional Video Mode: (II) MGA(0): clock: 146.2 MHz Image Size: 433 x 271 mm (II) MGA(0): h_active: 1680 h_sync: 1784 h_sync_end 1960 h_blank_end 2240 h_border: 0 (II) MGA(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1089 v_border: 0 (II) MGA(0): Ranges: V min: 48 V max: 85 Hz, H min: 30 H max: 94 kHz, PixClock max 170 MHz
Diese Informationen werden auch als EDID-Informationen
bezeichnet. Um daraus eine funktionierende
ModeLine
zu erzeugen, müssen lediglich die
Zahlen in die korrekte Reihenfolge gebracht werden:
ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>
Die korrekte ModeLine
in
Section "Monitor"
würde für dieses Beispiel
folgendermaßen aussehen:
Section "Monitor" Identifier "Monitor1" VendorName "Bigname" ModelName "BestModel" ModeLine "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089 Option "DPMS" EndSection
Nachdem diese Äderungen durchgeführt sind, sollte X auch auf Ihrem neuen Widescreen-Monitor starten.
5.9.3.1. | Ich habe Compiz Fusion installiert und anschließend die hier erwähnten Kommandos eingegeben. Nun fehlen den Fenstern die Titelleisten und Schaltflächen. Was kann ich tun? |
Wahrscheinlich fehlt eine Einstellung in
| |
5.9.3.2. | Wenn ich Compiz Fusion starte, bringt dass den X-Server zum Absturz. Was kann ich tun? |
Wenn Sie
(EE) NVIDIA(0): Failed to initialize the GLX module; please check in your X (EE) NVIDIA(0): log file that the GLX module has been loaded in your X (EE) NVIDIA(0): server, and that the module is the NVIDIA GLX module. If (EE) NVIDIA(0): you continue to encounter problems, Please try (EE) NVIDIA(0): reinstalling the NVIDIA driver. Dies ist für gewöhnlich der Fall, wenn Sie Xorg aktualisieren. Sie müssen das Paket x11/nvidia-driver neu installieren, damit GLX neu gebaut wird. |
Nach den Grundlagen beschäftigt sich das Handbuch mit oft benutzten Funktionen von FreeBSD. Die Kapitel behandeln die nachstehenden Themen:
Beliebte und nützliche Werkzeuge wie Browser, Büroanwendungen und Programme zum Anzeigen von Dokumenten.
Multimedia-Werkzeuge für FreeBSD.
Erstellung eines angepassten FreeBSD-Kernels, um zusätzliche Funktionen zu aktivieren.
Ausführliche Beschreibung des Drucksystems, sowohl für direkt angeschlossene Drucker als auch für Netzwerkdrucker.
Ausführung von Linux-Anwendungen auf einem FreeBSD-System.
Damit Sie einige Kapitel verstehen, sollten Sie vorher andere Kapitel gelesen haben. Die Übersicht zu jedem Kapitel zählt die Voraussetzungen für das erolgreiche Durcharbeiten des Kapitels auf.
Obwohl FreeBSD wegen seiner Leistung und Stabilität vor allem auf Serversystemen sehr beliebt ist, so ist es auch für den täglichen Einsatz als Desktop geeignet. Mit über 24,000 Anwendungen, die als Pakete oder Ports vorliegen, ist es leicht einen individuellen Desktop zu bauen, auf dem eine Vielzahl von Desktop-Anwendungen laufen. Dieses Kapitel zeigt, wie Sie die zahlreichen Desktop-Anwendungen, wie Web-Browser, Office-Pakete, Dokumentbetrachter und Finanzsoftware, installieren können.
Benutzer die es vorziehen eine vorkonfigurierte Desktop-Version von FreeBSD zu installieren, anstatt das System von Grund auf zu konfigurieren, sollten sich FuryBSD, GhostBSD oder MidnightBSD ansehen.
Bevor Sie dieses Kapitel lesen, sollten Sie wissen:
wie zusätzliche Anwendungen als Paket oder aus der Ports-Sammlung installiert werden. Dies wird in Kapitel 4, Installieren von Anwendungen: Pakete und Ports beschrieben.
wie X und ein Window-Manager installiert wird. Dies wird in Kapitel 5, Das X-Window-System beschrieben.
Informationen zur Konfiguration von Multimedia-Anwendungen finden Sie in Kapitel 7, Multimedia.
FreeBSD besitzt keinen vorinstallierten Browser, stattdessen enthält das www-Verzeichnis der Ports-Sammlung viele Browser, die als Paket oder aus der Ports-Sammlung installiert werden können.
Die Desktop-Umgebungen KDE und GNOME verfügen über eigene HTML-Browser. Weitere Informationen zur Einrichtung dieser Umgebungen finden Sie in Abschnitt 5.7, „Grafische Oberflächen“.
Besonders schlanke Browser sind www/dillo2, www/links und www/w3m.
Dieser Abschnitt demonstriert, wie die folgenden gängigen Webbrowser installiert werden, sowie den Ressourcenbedarf, den Installationsaufwand beim Übersetzen des Ports, oder ob die Anwendung wichtige Abhängigkeiten benötigt.
Anwendung | Ressourcenbedarf | Installationsaufwand aus den Ports | Anmerkungen |
---|---|---|---|
Firefox | mittel | hoch | FreeBSD, Linux® und lokalisierte Versionen sind verfügbar |
Konqueror | mittel | hoch | Benötigt KDE-Biliotheken |
Chromium | mittel | hoch | Benötigt Gtk+ |
Firefox ist ein Open-Source Browser. Er bietet eine dem HTML-Standard konforme Anzeige, Browserfenster als Tabs, Blockierung von Pop-up-Fenstern, Erweiterungen, verbesserte Sicherheit und mehr. Firefox basiert auf der Mozilla Codebasis.
Installieren Sie das Paket der aktuellen Release-Version von Firefox:
#
pkg install firefox
Um stattdessen die Extended Support Release (ESR) Version zu installieren, benutzen Sie:
#
pkg install firefox-esr
Alternativ kann auch die Ports-Sammlung verwendet werden,
um die gewünschte Version von
Firefox aus dem Quellcode zu
installieren. Dieses Beispiel baut
www/firefox, wobei sich
firefox
durch die ESR oder die
lokalisierte Version ersetzen lässt.
#
cd /usr/ports/www/firefox
#
make install clean
Konqueror ist mehr als nur ein Webbrowser, da es ebenfalls Dateimanager und Multimedia-Betrachter ist. Es unterstützt sowohl WebKit als auch sein eigenes KHTML. WebKit wird von vielen modernen Browsern verwendet, einschließlich Chromium.
Das Konqueror-Paket wird wie folgt installiert:
#
pkg install konqueror
Alternativ können Sie den Port installieren:
#
cd /usr/ports/www/konqueror
#
make install clean
Chromium ist ein quelloffenes Browserprojekt mit dem Ziel ein sicheres, schnelleres und stabileres Surferlebnis im Web zu ermöglichen. Chromium ermöglicht surfen mit Tabs, Blockieren von Pop-Ups, Erweiterungen und vieles mehr. Chromium ist das Open Source Projekt, welches auf dem Google Chrome Webbrowser basiert.
Chromium kann als Paket durch die Eingabe des folgenden Befehls installiert werden:
#
pkg install chromium
Als Alternative kann Chromium aus dem Quellcode durch die Ports Collection übersetzt werden:
#
cd /usr/ports/www/chromium
#
make install clean
Die ausführbare Datei für
Chromium ist
/usr/local/bin/chrome
und
nicht
/usr/local/bin/chromium
.
Neue Benutzer suchen oft ein komplettes Office-Paket oder eine leicht zu bedienende Textverarbeitung. Einige graphische Oberflächen wie KDE enthalten zwar ein Office-Paket, diese werden unter FreeBSD jedoch nicht standardmäßig installiert. Unabhängig von der installierten graphischen Oberfläche können diverse Office-Pakete jederzeit installiert werden.
Dieser Abschnitt demonstriert, wie die folgenden gängigen Büroanwendungen installiert werden, sowie den Ressourcenbedarf, den Installationsaufwand beim Übersetzen des Ports, oder ob die Anwendung wichtige Abhängigkeiten benötigt.
Anwendung | Ressourcenbedarf | Installationsaufwand aus den Ports | wichtige Abhängigkeiten |
---|---|---|---|
Calligra | niedrig | hoch | KDE |
AbiWord | niedrig | niedrig | Gtk+ oder GNOME |
The Gimp | niedrig | hoch | Gtk+ |
Apache OpenOffice | hoch | enorm | JDK™ und Mozilla |
LibreOffice | etwas hoch | enorm | Gtk+, KDE/ GNOME oder JDK™ |
Die KDE-Gemeinschaft stellt ein Office-Paket bereit, das auch separat von KDE eingesetzt werden kann. Calligra umfasst Standardkomponenten, die auch in anderen Office-Paketen enthalten sind. Words ist die Textverarbeitung, Sheets die Tabellenkalkulation, mit Stage werden Präsentationen erstellt und Karbon ist ein Zeichenprogramm.
In FreeBSD kann editors/calligra als Paket oder Port installiert werden. Um das Paket zu installieren, geben Sie folgendes ein:
#
pkg install calligra
Wenn das Paket nicht verfügbar ist, benutzen Sie stattdessen die Ports-Sammlung:
#
cd /usr/ports/editors/calligra
#
make install clean
AbiWord ist eine freie Textverarbeitung, die dem Erscheinungsbild von Microsoft® Word ähnlich ist. Das Programm ist schnell, besitzt viele Funktionen und ist benutzerfreundlich.
AbiWord kann viele Dateiformate
importieren oder exportieren, unter anderem auch propietäre
wie Microsoft® .rtf
.
Das AbiWord-Paket installieren Sie wie folgt:
#
pkg install abiword
Sollte das Paket nicht zur Verfügung stehen, kann es über die Ports-Sammlung installiert werden:
#
cd /usr/ports/editors/abiword
#
make install clean
The GIMP ist ein ausgereiftes Bildverarbeitungsprogramm mit dem Bilder erstellt oder retuschiert werden können. Es kann sowohl als einfaches Zeichenprogramm oder zum retuschieren von Fotografien benutzt werden. Das Programm besitzt eine eingebaute Skriptsprache und es existieren sehr viele Plugins. The GIMP kann zahlreiche Formate lesen und speichern und stellt Schnittstellen zu Scannern und Tablets zur Verfügung.
Um das Paket zu installieren, geben Sie ein:
#
pkg install gimp
Benutzen Sie alternativ die Ports-Sammlung:
#
cd /usr/ports/graphics/gimp
#
make install clean
Die Kategorie graphics (freebsd.org/ports/graphics.html) der Ports-Sammlung enthält für The Gimp verschiedene Plugins, Hilfedateien und Handbücher.
Apache OpenOffice ist eine Open Source Büroanwendung, die unter Leitung der Apache Software Foundation weiterentwickelt wird. Es enthält die typischen Anwendungen eines Office-Pakets: Textverarbeitung, Tabellenkalkulation, Präsentation und ein Zeichenprogramm. Die Bedienung gleicht anderen Office-Paketen und das Programm kann zahlreiche Dateiformate importieren und exportieren. Es gibt lokalisierte Versionen mit angepassten Menüs, Rechtschreibkontrollen und Wörterbüchern.
Die Textverarbeitung von Apache OpenOffice speichert Dateien im XML-Format. Dadurch wird die Verwendbarkeit der Dateien auf anderen Systemen erhöht und die Handhabung der Daten vereinfacht. Die Tabellenkalkulation besitzt eine Makrosprache und eine Schnittstelle zu Datenbanken. Apache OpenOffice läuft stabil auf Windows®, Solaris™, Linux®, FreeBSD und Mac OS® X. Weitere Informationen über Apache OpenOffice finden Sie auf openoffice.org. Spezifische Informationen für FreeBSD finden Sie auf porting.openoffice.org/freebsd/.
Apache OpenOffice installieren Sie wie folgt:
#
pkg install apache-openoffice
Nachdem das Paket installiert ist, geben Sie folgenden ein, um Apache OpenOffice zu starten:
%
openoffice-
X.Y.Z
wobei X.Y.Z
die Versionsnummer
von Apache OpenOffice darstellt.
Nach dem ersten Start werden einige Fragen gestellt. Außerdem
wird im Heimatverzeichnis des Benutzers ein Verzeichnis
.openoffice.org
angelegt.
Falls das gewünschte Apache OpenOffice-Paket nicht verfügbar ist, kann immer noch der Port übersetzt werden. Es erfordert jedoch eine Menge Plattenplatz und ziemlich viel Zeit um die Quellen zu übersetzten.
#
cd /usr/ports/editors/openoffice-4
#
make install clean
Um eine lokalisierte Version zu bauen, ersetzen Sie den letzten Befehl durch:
#
make LOCALIZED_LANG=
Ihre_Sprache
install clean
Ersetzen Sie Ihre_Sprache
durch den korrekten ISO-Code. Eine Liste der
unterstützten Codes steht in
files/Makefile.localized
, die sich im
Portsverzeichnis befindet.
LibreOffice ist ein frei verfügbares Office-Paket, welches von documentfoundation.org entwickelt wird. Es mit anderen großen Office-Paketen kompatibel und für eine Vielzahl von Plattformen erhältlich. Es ist ein Fork von Apache OpenOffice unter neuem Namen, das alle Anwendungen in einem kompletten Office-Paket enthält: Textverarbeitung, Tabellenkalkulation, Präsentationsmanager, Zeichenprogramm, Datenbankmanagementprogramm und ein Werkzeug zum Erstellen und Bearbeiten von mathematischen Formeln. Das Programm steht in verschiedenen Sprachen zur Verfügung, und die Internationalisierung wurde auf die Oberfläche, Rechtschreibkorrektur und die Wörterbücher ausgeweitet.
Das Textverarbeitungsprogramm von LibreOffice benutzt ein natives XML-Dateiformat für erhöhte Portabilität und Flexibilität. Die Tabellenkalkulation enthält eine Makrosprache und kann mit externen Datenbanken Verbindungen herstellen. LibreOffice ist stabil und läuft nativ auf Windows®, Linux®, FreeBSD und Mac OS® X. Weitere Informationen zu LibreOffice finden Sie unter libreoffice.org.
Um die englische Version von LibreOffice als Paket zu installieren, geben Sie folgenden Befehl ein:
#
pkg install libreoffice
Die Kategorie editors (
freebsd.org/ports/editors.html)
der Ports-Sammlung enthält viele Lokalisierungen für
LibreOffice. Wenn Sie ein
lokalisiertes Paket installieren, ersetzen Sie
libreoffice
durch den Namen des
lokalisierten Pakets.
Wenn das Paket installiert ist, geben Sie folgendes Kommando ein, um LibreOffice zu starten:
%
libreoffice
Während des ersten Starts werden einige Fragen
gestellt. Außerdem wird im Heimatverzeichinis des Benutzers
ein Verzeichnis .libreoffice
angelegt.
Falls das gewünschte LibreOffice-Paket nicht verfügbar ist, kann immer noch der Port übersetzt werden. Es erfordert jedoch eine Menge Plattenplatz und ziemlich viel Zeit um die Quellen zu übersetzten. Dieses Beispiel übersetzt die englische Version:
#
cd /usr/ports/editors/libreoffice
#
make install clean
Um eine lokalisierte Version zu bauen, wechseln Sie mit
cd
in das Portverzeichnis der
gewünschten Sprache. Unterstützte Sprachen finden Sie in
der Kategorie editors (
freebsd.org/ports/editors.html) der
Ports-Sammlung.
Einige neuere Dokumentformate, die sich aktuell großer Beliebtheit erfreuen, können Sie sich mit den im Basissystem enthaltenen Programmen möglicherweise nicht ansehen. Dieser Abschnitt zeigt, wie Sie die folgenden Dokumentbetrachter installieren können:
Die nachstehenden Anwendungen werden behandelt:
Anwendung | Ressourcenbedarf | Installationsaufwand aus den Ports | wichtige Abhängigkeiten |
---|---|---|---|
Xpdf | niedrig | niedrig | FreeType |
gv | niedrig | niedrig | Xaw3d |
Geeqie | niedrig | niedrig | Gtk+ oder GNOME |
ePDFView | niedrig | niedrig | Gtk+ |
Okular | niedrig | hoch | KDE |
Für Benutzer, die einen schnellen PDF-Betrachter bevorzugen, bietet Xpdf eine schlanke und effiziente Alternative, die wenig Ressourcen benötigt. Da das Programm die Standard X-Zeichensätze benutzt, ist es nicht auf andere Toolkits angewiesen.
Um das Xpdf-Paket zu installieren, geben Sie folgendes ein:
#
pkg install xpdf
Wenn das Paket nicht verfügbar ist, benutzen Sie die Ports-Sammlung:
#
cd /usr/ports/graphics/xpdf
#
make install clean
Starten Sie nach der Installation
xpdf
und aktivieren Sie das Menü
mit der rechten Maustaste.
gv kann PostScript®- und PDF-Dokumente anzeigen. Es stammt von ghostview ab, hat aber wegen der Xaw3d-Bibliothek eine schönere Benutzeroberfläche. gv besitzt viele konfigurierbare Funktionen, wie z. B. Ausrichtung, Papiergröße, Skalierung und Kantenglättung (Anti-Aliasing). Fast jede Operation kann sowohl mit der Tastatur als auch mit der Maus durchgeführt werden.
Installieren Sie das gv-Paket wie folgt:
#
pkg install gv
Benutzen Sie die Ports-Sammlung, wenn das Paket nicht zur Verfügung steht:
#
cd /usr/ports/print/gv
#
make install clean
Geeqie ist ein Fork des nicht mehr betreuten GQview Projekts, mit dem Ziel die Entwicklung weiter voranzutreiben und bestehende Fehlerkorrekturen zu integrieren. Mit Geeqie lassen sich Bilder verwalten. Es kann unter anderem Bilder anzeigen, einen externen Editor starten und eine Vorschau (thumbnail) erzeugen. Zudem beherrscht Geeqie einen Diashow-Modus und einige grundlegende Dateioperationen, was die Verwaltung von Bildern und das auffinden von doppelten Dateien erleichtert. Geeqie unterstützt Vollbild-Ansicht und Internationalisierung.
Um das Geeqie-Paket zu installieren, geben Sie folgendes ein:
#
pkg install geeqie
Wenn das Paket nicht verfügbar ist, benutzen Sie die Ports-Sammlung:
#
cd /usr/ports/graphics/geeqie
#
make install clean
ePDFView ist ein leichtgewichtiger PDF-Betrachter, der nur die Gtk+- und Poppler-Bibliotheken benötigt. Es befindet sich derzeit noch in Entwicklung, kann aber bereits die meisten PDF-Dateien (auch verschlüsselte) öffnen, speichern und über CUPS drucken.
Um das Paket ePDFView zu installieren, geben Sie folgendes ein:
#
pkg install epdfview
Benutzen Sie die Ports-Sammlung, falls das Paket nicht verfügbar ist:
#
cd /usr/ports/graphics/epdfview
#
make install clean
Okular ist ein universeller Dokumentbetrachter der auf KPDF für KDE basiert. Es kann die meisten Formate öffnen, einschließlich PDF, PostScript®, DjVu, CHM, XPS und ePub.
Um das Paket Okular zu installieren, geben Sie folgendes ein:
#
pkg install okular
Benutzen Sie die Ports-Sammlung, falls das Paket nicht verfügbar ist:
#
cd /usr/ports/graphics/okular
#
make install clean
Zur Verwaltung der persönlichen Finanzen können einige leistungsfähige und einfach zu bedienende Anwendungen installiert werden. Einige von ihnen unterstützen verbreitete Formate, darunter Dateiformate, die von Quicken und Excel verwendet werden.
Dieser Abschnitt behandelt die folgenden Anwendungen:
Anwendung | Ressourcenbedarf | Installationsaufwand aus den Ports | wichtige Abhängigkeiten |
---|---|---|---|
GnuCash | niedrig | hoch | GNOME |
Gnumeric | niedrig | hoch | GNOME |
KMyMoney | niedrig | hoch | KDE |
GnuCash ist Teil des GNOME-Projekts, mit dem Ziel, leicht zu bedienende und leistungsfähige Anwendungen bereitzustellen. Mit GnuCash können Einnahmen und Ausgaben, Bankkonten und Wertpapiere verwaltet werden. Das Programm ist leicht zu bedienen und genügt dennoch hohen Ansprüchen.
GnuCash stellt ein Register, ähnlich dem in einem Scheckheft und ein hierarchisches System von Konten zur Verfügung. Eine Transaktion kann in einzelne Teile aufgespaltet werden. GnuCash kann Quicken-Dateien (QIF) importieren und einbinden. Weiterhin unterstützt das Programm die meisten internationalen Formate für Zeitangaben und Währungen. Die Bedienung des Programms kann durch zahlreiche Tastenkombinationen und dem automatischen Vervollständigen von Eingaben beschleunigt werden.
Das GnuCash-Paket installieren Sie wie folgt:
#
pkg install gnucash
Wenn das Paket nicht zur Verfügung steht, benutzen Sie die Ports-Sammlung:
#
cd /usr/ports/finance/gnucash
#
make install clean
Gnumeric ist eine Tabellenkalkulation, die von der GNOME-Gemeinschaft entwickelt wird. Das Programm kann Eingaben anhand des Zellenformats oder einer Folge von Eingaben vervollständigen. Dateien verbreiteter Formate, wie die von Excel, Lotus 1-2-3 oder Quattro Pro lassen sich importieren. Es besitzt viele eingebaute Funktionen und Zellenformate, darunter die üblichen wie Zahl, Währung, Datum, Zeit, und viele weitere.
Installieren Sie das Gnumeric-Paket mit folgendem Kommando:
#
pkg install gnumeric
Wenn das Paket nicht zur Verfügung steht, benutzen Sie die Ports-Sammlung:
#
cd /usr/ports/math/gnumeric
#
make install clean
KMyMoney ist ein Programm zur Verwaltung der persönlichen Finanzen, das von der KDE-Gemeinschaft entwickelt wird. KMyMoney hat das Ziel, wichtige Funktionen zu bieten, die auch von kommerziellen Programmen zur Verwaltung der persönlichen Finanzen unterstützt werden. Zudem zählen eine einfache Bedienung sowie korrekte doppelte Buchführung zu den herausragenden Fähigkeiten dieses Programms. KMyMoney unterstützt den Import von Datendateien im Format Quicken (QIF), kann Investionen verfolgen, unterstützt verschiedene Währungen und bietet umfangreiche Reportmöglichkeiten.
Um das Paket KMyMoney zu installieren, geben Sie folgendes ein:
#
pkg install kmymoney-kde4
Sollte das Paket nicht verfügbar sein, benutzen Sie die Ports-Sammlung:
#
cd /usr/ports/finance/kmymoney2-kde4
#
make install clean
FreeBSD unterstützt viele unterschiedliche Soundkarten, die Benutzern den Genuss von Highfidelity-Klängen auf dem Computer ermöglichen. Dazu gehört unter anderem die Möglichkeit, Tonquellen in den Formaten MPEG Audio Layer 3 (MP3), Waveform Audio File (WAV), Ogg Vorbis und vielen weiteren Formaten aufzunehmen und wiederzugeben. Darüber hinaus enthält die FreeBSD Ports-Sammlung Anwendungen, die das Bearbeiten von aufgenommenen Tonspuren, das Hinzufügen von Klangeffekten und die Kontrolle der angeschlossenen MIDI-Geräte erlauben.
FreeBSD unterstützt auch die Wiedergabe von Videos und DVDs. Die FreeBSD Ports-Sammlung enthält Anwendungen, um verschiedene Video-Medien wiederzugeben, zu kodieren und zu konvertieren.
Dieses Kapitel beschreibt die Einrichtung von Soundkarten, Video-Wiedergabe, TV-Tuner Karten und Scannern unter FreeBSD. Es werden auch einige Anwendungen beschrieben, die für die Verwendung dieser Geräte zur Verfügung stehen.
Dieses Kapitel behandelt die folgenden Punkte:
Konfiguration einer Soundkarte in FreeBSD.
Fehlersuche bei Sound Einstellungen.
Wiedergabe und Kodierung von MP3s und anderen Audio-Formaten.
Vorbereitung des Systems für die Wiedergabe von Videos.
Wiedergabe von DVDs,
.mpg
- und
.avi
-Dateien.
Rippen von CDs und DVDs.
Konfiguration von TV-Karten.
Installation und Konfiguration von MythTV.
Konfiguration von Scannern
Konfiguration von Bluetooth-Kopfhörern
Bevor Sie dieses Kapitel lesen, sollten Sie:
Wissen, wie Sie Anwendungen installieren (Kapitel 4, Installieren von Anwendungen: Pakete und Ports).
Bevor Sie die Konfiguration beginnen, sollten Sie in Erfahrung bringen welches Soundkartenmodell und welcher Chip benutzt wird. FreeBSD unterstützt eine Reihe Soundkarten. Die Hardware-Notes zählen alle unterstützten Karten und deren Treiber für FreeBSD auf.
Um die Soundkarte benutzen zu können, muss der richtige Gerätetreiber geladen werden. Am einfachsten ist es, das Kernelmodul für die Soundkarte mit kldload(8) zu laden. Dieses Beispiel lädt den Treiber für einen integrierten Chipsatz, basierend auf der Intel Spezifikation:
#
kldload snd_hda
Um den Treiber automatisch beim Systemstart zu laden,
fügen Sie folgende Zeile in
/boot/loader.conf
ein:
snd_hda_load="YES"
Weitere ladbare Soundmodule sind in
/boot/defaults/loader.conf
aufgeführt.
Wenn Sie nicht sicher sind, welchen Gerätetreiber Sie laden
müssen, laden Sie das Modul
snd_driver
:
#
kldload snd_driver
Der Treiber snd_driver
ist ein
Meta-Treiber, der alle gebräuchlichen Treiber lädt und die Suche
nach dem richtigen Treiber vereinfacht. Durch Hinzufügen des
Meta-Treibers in /boot/loader.conf
können
alternativ alle Audio-Treiber geladen werden.
Um zu ermitteln, welcher Treiber für die Soundkarte vom
Meta-Treiber snd_driver
geladen wurde,
geben Sie cat /dev/sndstat
ein.
Die Unterstützung für die Soundkarte kann auch direkt in den Kernel kompiliert werden. Weitere Informationen über den Bau eines Kernels finden Sie im Kapitel 8, Konfiguration des FreeBSD-Kernels.
Bei der Verwendung eines eigenen Kernels müssen Sie sicherstellen, dass der Treiber für das Audio-Framework in der Kernelkonfigurationsdatei vorhanden ist:
device sound
Als Nächstes muss die Unterstützung für die Soundkarte hinzugefügt werden. Um das Beispiel mit dem integrierten Intel Audio-Chipsatz aus dem vorherigen Abschnitt fortzusetzen, verwenden Sie die folgende Zeile in der Kernelkonfigurationsdatei:
device snd_hda
Lesen Sie die Manualpage des Treibers, um den entsprechenden Gerätenamen herauszufinden.
Nicht PnP-fähige ISA-Soundkarten benötigen eventuell
Einstellungen, wie IRQ und I/O-Port in
/boot/device.hints
. Während des
Systemstarts liest der loader(8) diese Datei und reicht
die Einstellungen an den Kernel weiter. Für eine alte
Creative SoundBlaster® 16 ISA-Karte, die sowohl den
snd_sbc(4)- als auch den
snd_sb16
-Treiber benötigt, müssen die
folgenden Zeilen in die Kernelkonfigurationsdatei eingetragen
werden:
device snd_sbc device snd_sb16
Wenn die Karte den I/O-Port 0x220
und
IRQ 5
benutzt, müssen folgende Zeilen
zusätzlich in /boot/device.hints
hinzugefügt werden:
hint.sbc.0.at="isa" hint.sbc.0.port="0x220" hint.sbc.0.irq="5" hint.sbc.0.drq="1" hint.sbc.0.flags="0x15"
Die Syntax für /boot/device.hints
wird in sound(4), sowie in der Manualpage des
jeweiligen Treibers beschrieben.
Das Beispiel verwendet die vorgegebenen Werte. Falls die Karteneinstellungen andere Werte vorgeben, müssen die Werte in der Kernelkonfiguration angepasst werden. Weitere Informationen zu dieser Soundkarte finden Sie in snd_sbc(4).
Nachdem Sie den neuen Kernel gestartet oder das
erforderliche Modul geladen haben, sollte die
Soundkarte erkannt werden. Führen Sie
dmesg | grep pcm
aus, um dies zu
überprüfen. Diese Ausgabe stammt von einem System mit
einem integrierten Conexant CX20590 Chipsatz:
pcm0: <NVIDIA (0x001c) (HDMI/DP 8ch)> at nid 5 on hdaa0 pcm1: <NVIDIA (0x001c) (HDMI/DP 8ch)> at nid 6 on hdaa0 pcm2: <Conexant CX20590 (Analog 2.0+HP/2.0)> at nid 31,25 and 35,27 on hdaa1
Der Status der Karte kann auch mit diesem Kommando geprüft werden:
#
cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64) Installed devices: pcm0: <NVIDIA (0x001c) (HDMI/DP 8ch)> (play) pcm1: <NVIDIA (0x001c) (HDMI/DP 8ch)> (play) pcm2: <Conexant CX20590 (Analog 2.0+HP/2.0)> (play/rec) default
Die Ausgabe kann für jede Soundkarte anders aussehen.
Wenn das Gerät pcm
nicht erscheint,
prüfen Sie die Kernelkonfigurationsdatei und stellen Sie
sicher, dass der richtige Treiber geladen oder in den Kernel
kompiliert wurde. Im nächsten Abschnitt werden häufig
auftretende Probleme sowie deren Lösungen besprochen.
Jetzt sollte die Soundkarte unter FreeBSD funktionieren. Wenn ein CD- oder DVD-Laufwerk an die Soundkarte angeschlossen ist, können Sie jetzt mit cdcontrol(1) eine CD abspielen:
%
cdcontrol -f /dev/acd0 play 1
Audio CDs besitzen eine spezielle Kodierung. Daher sollten sie nicht mit mount(8) in das Dateisystem eingehangen werden.
Es gibt viele Anwendungen, wie audio/workman, die eine bessere Benutzerschnittstelle besitzen. Zur Wiedergabe von MP3-Audiodateien kann audio/mpg123 installiert werden.
Eine weitere schnelle Möglichkeit die Karte zu
prüfen, ist es, Daten an das Gerät
/dev/dsp
zu senden:
%
cat
Datei
> /dev/dsp
Für
kann
eine beliebige Datei verwendet werden. Wenn Sie einige
Geräusche hören, funktioniert die Soundkarte.Datei
Die Gerätedateien /dev/dsp*
werden automatisch erzeugt, wenn sie das erste Mal benötigt
werden. Werden sie nicht verwendet, sind sie hingegen nicht
vorhanden und tauchen daher auch nicht in der Ausgabe von
ls(1) auf.
Die Verbindung zu einem Bluetooth-Gerät wird in diesem Abschnitt nicht erläutert. Dazu finden Sie weitere Informationen in Abschnitt 31.5, „Bluetooth“.
Damit Bluetooth zusammen mit dem Soundsystem von FreeBSD funktioniert, müssen Benutzer zuerst audio/virtual_oss installieren:
#
pkg install virtual_oss
audio/virtual_oss setzt voraus, dass
cuse
in den Kernel geladen wird:
#
kldload cuse
Führen Sie folgenden Befehl aus, damit
cuse
beim Systemstart automatisch geladen
wird:
#
sysrc -f /boot/loader.conf cuse_load=yes
Um Kopfhörer mit audio/virtual_oss zu benutzten, muss nach der Verbindung mit einem Bluetooth-Audiogerät ein virtuelles Gerät erstellt werden:
#
virtual_oss -C 2 -c 2 -r 48000 -b 16 -s 768 -R /dev/null -P /dev/bluetooth/
headphones
-d dsp
headphones
ist in diesem
Beispiel ein Hostname aus
/etc/bluetooth/hosts
. Stattdessen
kann auch BT_ADDR
verwendet werden.
Weitere Informationen finden Sie in virtual_oss(8).
Tabelle 7.1, „Typische Fehlermeldungen“ zeigt typische Fehlermeldungen sowie deren Lösungen:
Fehler | Lösung |
---|---|
sb_dspwr(XX) timed out | Der I/O-Port ist nicht korrekt angegeben. |
bad irq XX | Der IRQ ist falsch angegeben. Stellen Sie sicher, dass der angegebene IRQ mit dem Sound IRQ übereinstimmt. |
xxx: gus pcm not attached, out of memory | Es ist nicht genug Speicher verfügbar, um das Gerät zu betreiben. |
xxx: can't open /dev/dsp! | Überprüfen Sie mit |
Moderne Grafikkarten beinhalten oft auch ihre eigenen
Soundtreiber, um HDMI zu verwenden.
Diese Audiogeräte werden manchmal vor der eigentlichen,
separaten Soundkarte aufgeführt und dadurch nicht als das
Standardgerät zum Abspielen von Tönen benutzt. Um zu
prüfen, ob das der Fall ist, führen Sie
dmesg aus und suchen Sie nach der
Zeichenfolge pcm
. Die Ausgabe sieht in
etwa so aus:
... hdac0: HDA Driver Revision: 20100226_0142 hdac1: HDA Driver Revision: 20100226_0142 hdac0: HDA Codec #0: NVidia (Unknown) hdac0: HDA Codec #1: NVidia (Unknown) hdac0: HDA Codec #2: NVidia (Unknown) hdac0: HDA Codec #3: NVidia (Unknown) pcm0: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 0 nid 1 on hdac0 pcm1: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 1 nid 1 on hdac0 pcm2: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 2 nid 1 on hdac0 pcm3: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 3 nid 1 on hdac0 hdac1: HDA Codec #2: Realtek ALC889 pcm4: <HDA Realtek ALC889 PCM #0 Analog> at cad 2 nid 1 on hdac1 pcm5: <HDA Realtek ALC889 PCM #1 Analog> at cad 2 nid 1 on hdac1 pcm6: <HDA Realtek ALC889 PCM #2 Digital> at cad 2 nid 1 on hdac1 pcm7: <HDA Realtek ALC889 PCM #3 Digital> at cad 2 nid 1 on hdac1 ...
In diesem Beispiel wurde die Grafikkarte
(NVidia
) vor der Soundkarte
(Realtek ALC889
) aufgeführt. Um die
Soundkarte als Standardabspielgerät einzusetzen, ändern Sie
hw.snd.default_unit
auf die Einheit, welche
für das Abspielen benutzt werden soll:
#
sysctl hw.snd.default_unit=
n
Hier repräsentiert n
die Nummer
der Soundkarte, die verwendet werden soll, in diesem Beispiel
also 4
. Sie können diese Änderung
dauerhaft machen, indem Sie die folgende Zeile in
/etc/sysctl.conf
hinzufügen:
hw.snd.default_unit=4
Oft sollen mehrere Tonquellen gleichzeitig abgespielt werden. FreeBSD verwendet dazu virtuelle Tonkanäle. Virtuelle Kanäle mischen die Tonquellen im Kernel, sodass mehrere Kanäle benutzt werden können, als von der Hardware unterstützt werden.
Drei sysctl(8) Optionen stehen zur Konfiguration der virtuellen Kanäle zur Verfügung:
#
sysctl dev.pcm.0.play.vchans=4
#
sysctl dev.pcm.0.rec.vchans=4
#
sysctl hw.snd.maxautovchans=4
Im Beispiel werden vier virtuelle Kanäle
eingerichtet, eine im Normalfall ausreichende Anzahl.
Sowohl dev.pcm.0.play.vchans=4
und
dev.pcm.0.rec.vchans=4
sind die Anzahl
der virtuellen Kanäle des Geräts pcm0
,
die fürs Abspielen und Aufnehmen verwendet werden und sie
können konfiguriert werden, sobald das Gerät existiert. Da
das Modul pcm
unabhängig von den
Hardware-Treibern geladen werden kann, gibt
hw.snd.maxautovchans
die Anzahl der
virtuellen Kanäle an, die später eingerichtete Audiogeräte
erhalten. Lesen Sie pcm(4) für weitere
Informationen.
Die Anzahl der virtuellen Kanäle kann nicht geändert werden, solange das Gerät genutzt wird. Schließen Sie daher zuerst alle Programme wie Musikabspielprogramme oder Sound-Daemonen, die auf dieses Gerät zugreifen.
Die korrekte pcm
-Gerätedatei
wird automatisch zugeteilt, wenn ein Programm das Gerät
/dev/dsp0
anfordert.
Die Voreinstellungen des Mixers sind im Treiber
pcm(4) fest kodiert. Es gibt zwar viele Anwendungen
und Dienste, die den Mixer einstellen können und die
eingestellten Werte bei jedem Start wieder setzen, am
einfachsten ist es allerdings, die Standardwerte für den Mixer
direkt im Treiber einzustellen. Der Mixer kann mit den
entsprechenden Werten in
/boot/device.hints
eingestellt
werden:
hint.pcm.0.vol="50"
Die Zeile setzt die Lautstärke des Mixers
beim Laden des Moduls pcm(4) auf den Wert
50
.
Dieser Abschnitt beschreibt einige unter FreeBSD verfügbare MP3-Player. Zudem wird beschrieben, wie Audio-CDs gerippt und MP3s kodiert und dekodiert werden.
Ein beliebter graphischer MP3-Player ist Audacious, welcher WinAmp-Skins und zusätzliche Plugins unterstützt. Die Benutzerschnittstelle ist leicht zu erlernen und enthält eine Playlist, einen graphischen Equalizer und vieles mehr. Diejenigen, die bereits mit WinAmp vertraut sind, werden Audacious sehr leicht zu benutzen finden. Unter FreeBSD kann Audacious als Port oder Paket multimedia/audacious installiert werden. Audacious ist ein Ableger von XMMS.
Das Paket audio/mpg123 ist ein alternativer, kommandozeilenorientierter MP3-Player. Nach der Installation kann die abzuspielende MP3-Datei auf der Kommandozeile angegeben werden. Geben Sie auch das entsprechende Soundkarte an, falls das System über mehrere Audiogeräte verfügt:
#
mpg123
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3 version 1.18.1; written and copyright by Michael Hipp and others free software (LGPL) without any warranty but with best wishes Playing MPEG stream from Foobar-GreatestHits.mp3 ... MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo-a /dev/dsp1.0 Foobar-GreatestHits.mp3
Weitere MP3-Player stehen in der FreeBSD Ports-Sammlung zur Verfügung.
Bevor eine ganze CD oder einen CD-Track in das MP3-Format umgewandelt werden kann, müssen die Audiodaten von der CD auf die Festplatte gerippt werden. Dabei werden die CDDA (CD Digital Audio) Rohdaten in WAV-Dateien kopiert.
Die Anwendung cdda2wav
, die im
sysutils/cdrtools Paket enthalten
ist, kann zum Rippen der Audiodaten von CDs
genutzt werden.
Wenn die Audio CD in dem Laufwerk
liegt, kann der folgende Befehl als root
ausgeführt werden, um
eine ganze CD in einzelne
WAV-Dateien zu rippen:
#
cdda2wav -D
0,1,0
-B
In diesem Beispiel bezieht sich der Schalter -D
auf das
SCSI-Gerät 0,1,0
0,1,0
, das
die zu rippende CD enthält. Benutzen Sie
cdrecord -scanbus
um die richtigen
Geräteparameter für das System zu bestimmen.
Um einzelne Tracks zu rippen, benutzen Sie
-t
wie folgt:
#
cdda2wav -D
0,1,0
-t 7
Um mehrere Tracks zu rippen, zum Beispiel die Tracks eins bis sieben, können Sie wie folgt einen Bereich angeben:
#
cdda2wav -D
0,1,0
-t 1+7
Wenn Sie von einem ATAPI (IDE) CD-ROM-Laufwerk rippen, geben Sie den Gerätenamen anstelle der SCSI-Gerätenummer an. Dieses Beispiel rippt Track 7 von einem IDE-Laufwerk:
#
cdda2wav -D
/dev/acd0 -t 7
Alternativ können mit dd
ebenfalls
Audio-Stücke von ATAPI-Laufwerken kopiert
werden. Dies wird in Abschnitt 17.5.5, „Kopieren von Audio-CDs“ erläutert.
Lame ist ein weitverbreiteter MP3-Encoder, der als Port audio/lame installiert werden kann. Wegen Patentproblemen ist kein Paket verfügbar.
Der folgende Befehl konvertiert die gerippte
WAV-Datei
in audio01.wav
um:audio01.mp3
#
lame -h -b
128
--tt "Foo Liedtietel
" --ta "FooBar Künstler
" --tl "FooBar Album
" \ --ty "2014
" --tc "Gerippt und kodiert von Foo
" --tg "Musikrichtung
"audio01.wav audio01.mp3
128 kbits ist die gewöhnliche
MP3-Bitrate, wohingegen die Bitraten 160
und 192 kbits eine höhere Qualität bieten. Je höher die
Bitrate ist, desto mehr Speicherplatz benötigt die
resultierende MP3-Datei. Die Option
-h
verwendet den „higher quality but a
little slower“ (höhere Qualität, aber etwas
langsamer) Modus. Die Schalter, die mit
--t
beginnen, sind
ID3-Tags, die in der Regel Informationen
über das Lied enthalten und in die
MP3-Datei eingebettet sind. Weitere
Optionen können in der Manualpage von
lame nachgelesen werden.
Um aus MP3-Dateien eine Audio CD zu erstellen, müssen diese zuerst in ein nicht komprimiertes Format umgewandelt werden. Verwenden Sie XMMS um die Datei im WAV-Format zu schreiben und mpg123, um die MP3-Datei in rohe PCM-Audiodaten umzuwandeln.
Um audio01.mp3
mit
mpg123 umzuwandeln, geben Sie den
Namen der PCM-Datei an:
#
mpg123 -s
audio01.mp3
>audio01.pcm
So verwenden Sie XMMS um eine MP3-Datei in das WAV-Format zu konvertieren:
Starten Sie XMMS.
Klicken Sie mit der rechten Maustaste, um das XMMS-Menu zu öffnen.
Wählen Sie Preferences
im
Untermenü Options
.
Ändern Sie das Output-Plugin in „Disk Writer Plugin“.
Drücken Sie Configure
.
Geben Sie ein Verzeichnis ein, in das Sie die unkomprimierte Datei schreiben wollen.
Laden Sie die MP3-Datei wie gewohnt in XMMS mit einer Lautstärke von 100% und einem abgeschalteten EQ.
Drücken Sie Play
und es wird
so aussehen, als spiele XMMS
die MP3-Datei ab, aber keine Musik ist
zu hören. Der Player überspielt die
MP3-Datei in eine Datei.
Vergessen Sie nicht, das Output-Plugin wieder in den Ausgangszustand zurückzusetzen um wieder MP3-Dateien anhören zu können.
cdrecord kann mit beiden Formaten Audio-CDs erstellen. Der Dateikopf von WAV-Dateien erzeugt am Anfang des Stücks ein Knacken. Der Dateikopf mit dem Port oder Paket audio/sox entfernt werden:
%
sox -t wav -r 44100 -s -w -c 2
track.wav track.raw
Lesen Sie Abschnitt 17.5, „Erstellen und Verwenden von CDs“, um mehr Informationen zur Benutzung von CD-Brennern mit FreeBSD zu erhalten.
Bevor Sie beginnen, sollten Sie das Modell
und den benutzten Chip der Videokarte kennen. Obwohl
Xorg viele Videokarten
unterstützt, können nicht alle Karten Videos
schnell genug wiedergeben. Eine Liste der Erweiterungen,
die der Xorg-Server für eine
Videokarte unterstützt, erhalten Sie unter laufendem
Xorg mit
xdpyinfo
.
Halten Sie eine kurze MPEG-Datei bereit, mit der
Sie Wiedergabeprogramme und deren Optionen testen können.
Da einige DVD-Spieler in der Voreinstellung
das DVD-Gerät mit
/dev/dvd
ansprechen oder diesen Namen fest
einkodiert haben, ist es vielleicht hilfreich symbolische Links
auf die richtigen Geräte anzulegen:
#
ln -sf /dev/acd0 /dev/dvd
Aufgrund der Beschaffenheit devfs(5) gehen gesondert
angelegte Links wie diese bei einem Neustart des Systems
verloren. Damit die symbolischen Links automatisch beim
Neustart des Systems angelegt werden, fügen Sie die folgende
Zeile in /etc/devfs.conf
ein:
link acd0 dvd
Das Entschlüsseln von DVDs erfordert den Aufruf bestimmter Funktionen, sowie Schreibzugriff auf das DVD-Gerät.
Xorg benutzt Shared-Memory und es wird empfohlen, die nachstehenden sysctl(8)-Variablen auf die gezeigten Werte zu erhöhen:
kern.ipc.shmmax=67108864 kern.ipc.shmall=32768
Es gibt einige Möglichkeiten, Videos unter Xorg abzuspielen. Welche Möglichkeit funktioniert, hängt stark von der verwendeten Hardware ab.
Gebräuchliche Video-Schnittstellen sind:
Xorg: normale Ausgabe über Shared-Memory.
XVideo: Eine Erweiterung der Xorg-Schnittstelle, die Videos in jedem X11-Drawable anzeigen kann. Diese Erweiterung bietet auch auf leistungsschwachen Maschinen eine gute Qualität der Wiedergabe. Der nächste Abschnitt beschreibt, wie Sie feststellen, ob diese Erweiterung ausgeführt wird.
SDL: Simple DirectMedia Layer ist eine portable Schnittstelle für verschiedene Betriebssysteme, mit denen Anwendungen plattformunabhängig und effizient Ton und Grafik benutzen können. SDL bietet eine hardwarenahe Schnittstelle, die manchmal schneller ist als die Xorg-Schnittstelle. Unter FreeBSD kann SDL über das Paket oder den Port devel/sdl20 installiert werden.
DGA: Direct Graphics Access ist
eine Xorg-Erweiterung die es
Anwendungen erlaubt, am
Xorg-Server vorbei direkt in
den Framebuffer zu schreiben. Da die Anwendung und der
Xorg-Server auf gemeinsame
Speicherbereiche zugreifen, müssen die Anwendungen unter
dem Benutzer root
laufen. Die
DGA-Erweiterung kann mit dga(1)
getestet werden. Wenn DGA ausgeführt
wird, ändert sich die Farbe des Bildschrims, wenn eine
Taste gedrückt wird. Drücken Sie zum Beenden
q.
SVGAlib: Eine Schnittstelle zur Grafikausgabe auf der Konsole.
Ob die Erweiterung läuft, entnehmen Sie der
Ausgabe von xvinfo
:
%
xvinfo
XVideo wird untertsützt, wenn die Ausgabe in etwa wie folgt aussieht:
X-Video Extension version 2.2 screen #0 Adaptor #0: "Savage Streams Engine" number of ports: 1 port base: 43 operations supported: PutImage supported visuals: depth 16, visualID 0x22 depth 16, visualID 0x23 number of attributes: 5 "XV_COLORKEY" (range 0 to 16777215) client settable attribute client gettable attribute (current value is 2110) "XV_BRIGHTNESS" (range -128 to 127) client settable attribute client gettable attribute (current value is 0) "XV_CONTRAST" (range 0 to 255) client settable attribute client gettable attribute (current value is 128) "XV_SATURATION" (range 0 to 255) client settable attribute client gettable attribute (current value is 128) "XV_HUE" (range -180 to 180) client settable attribute client gettable attribute (current value is 0) maximum XvImage size: 1024 x 1024 Number of image formats: 7 id: 0x32595559 (YUY2) guid: 59555932-0000-0010-8000-00aa00389b71 bits per pixel: 16 number of planes: 1 type: YUV (packed) id: 0x32315659 (YV12) guid: 59563132-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) id: 0x30323449 (I420) guid: 49343230-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) id: 0x36315652 (RV16) guid: 52563135-0000-0000-0000-000000000000 bits per pixel: 16 number of planes: 1 type: RGB (packed) depth: 0 red, green, blue masks: 0x1f, 0x3e0, 0x7c00 id: 0x35315652 (RV15) guid: 52563136-0000-0000-0000-000000000000 bits per pixel: 16 number of planes: 1 type: RGB (packed) depth: 0 red, green, blue masks: 0x1f, 0x7e0, 0xf800 id: 0x31313259 (Y211) guid: 59323131-0000-0010-8000-00aa00389b71 bits per pixel: 6 number of planes: 3 type: YUV (packed) id: 0x0 guid: 00000000-0000-0000-0000-000000000000 bits per pixel: 0 number of planes: 0 type: RGB (packed) depth: 1 red, green, blue masks: 0x0, 0x0, 0x0
Einige der aufgeführten Formate, wie YUV2 oder YUV12 existieren in machen XVideo-Implementierungen nicht. Dies kann zu Problemen mit einigen Spielern führen.
XVideo wird wahrscheinlich von der Karte nicht unterstützt, wenn die Ausgabe wie folgt aussieht:
X-Video Extension version 2.2 screen #0 no adaptors present
Wenn die XVideo-Erweiterung auf der Karte nicht läuft, wird es nur etwas schwieriger, die Anforderungen für die Wiedergabe von Videos zu erfüllen.
Dieser Abschnitt behandelt Anwendungen aus der FreeBSD-Ports-Sammlung, die für die Wiedergabe von Videos genutzt werden können.
MPlayer ist ein auf Geschwindigkeit und Flexibilität ausgelegter Video-Spieler für die Kommandozeile mit optionaler graphischer Oberfläche. Weitere graphische Oberflächen für MPlayer stehen in der FreeBSD Ports-Sammlung zur Verfügung.
MPlayer kann als Paket oder Port multimedia/mplayer installiert werden. Der Bau von MPlayer berücksichtigt die vorhandene Hardware und es können zahlreiche Optionen ausgewählt werden. Aus diesen Gründen ziehen es manche Benutzer vor, den Port zu übersetzen, anstatt das Paket zu installieren.
Die Optionen sollten beim Bau des Ports überprüft werden, um dem Umfang der Unterstützung, mit dem der Port gebaut wird, zu bestimmen. Wenn eine Option nicht ausgewählt wird, ist MPlayer nicht in der Lage, diese Art von Video-Format wiederzugeben. Mit den Pfeiltasten und der Leertaste können die erforderlichen Formate ausgewählt werden. Wenn Sie fertig sind, drücken Sie Enter, um den Bau und die Installation fortzusetzen.
In der Voreinstellung wird das Paket oder der Port das
mplayer
-Kommandozeilenprogramm und das
graphische Programm gmplayer
bauen. Um
Videos zu dekodieren, installieren Sie den Port
multimedia/mencoder. Aus
lizenzrechtlichen Gründen steht ein Paket von
MEncoder nicht zur
Verfügung.
MPlayer erstellt beim
ersten Start ~/.mplayer
im
Heimatverzeichnis des Benutzers. Dieses Verzeichnis
enthält die voreingestellten Konfigurationseinstellungen
für den Benutzer.
Dieser Abschnitt beschreibt nur ein paar wenige Anwendungsmöglichkeiten. Eine vollständige Beschreibung der zahlreichen Möglichkeiten finden Sie in der Manualpage von mplayer(1).
Um die Datei
abzuspielen, geben Sie die Video-Schnittstelle mit
testfile.avi
-vo
an:
%
mplayer -vo xv
testfile.avi
%
mplayer -vo sdl
testfile.avi
%
mplayer -vo x11
testfile.avi
#
mplayer -vo dga
testfile.avi
#
mplayer -vo 'sdl:dga'
testfile.avi
Es lohnt sich, alle Option zu testen. Die erzielte Geschwindigkeit hängt von vielen Faktoren ab und variiert beträchtlich je nach eingesetzter Hardware.
Wenn Sie eine DVD abspielen wollen,
ersetzen Sie
durch
testfile.avi
-dvd://
.
N
Gerät
N
ist die Nummer des
Stücks, das Sie abspielen wollen und
gibt
den Gerätenamen der DVD an. Das
nachstehende Kommando spielt das dritte Stück von
Gerät
/dev/dvd
:
#
mplayer -vo dga -dvd://3 /dev/dvd
Das standardmäßig verwendete
DVD-Laufwerk kann beim Bau des
MPlayer-Ports mit der Option
WITH_DVD_DEVICE=/pfad/zum/gerät
festgelegt werden. Die Voreinstellung verwendet das
Gerät /dev/cd0
. Weitere Details
finden Sie in Makefile.options
des
Ports.
Die Tastenkombinationen zum Abbrechen, Anhalten
und Weiterführen der Wiedergabe entnehmen Sie
der Ausgabe von mplayer -h
oder der
mplayer(1) Manualpage.
Weitere nützliche Optionen für die
Wiedergabe sind -fs -zoom
zur Wiedergabe
im Vollbild-Modus und -framedrop
zur Steigerung der Geschwindigkeit.
Jeder Benutzer kann häufig verwendete Optionen in
seine ~/.mplayer/config
eintragen:
vo=xv fs=yes zoom=yes
mplayer
kann verwendet werden, um
DVD-Stücke in
.vob
-Dateien zu rippen. Das zweite
Stück einer DVD wandeln Sie wie folgt
in eine Datei um:
#
mplayer -dumpstream -dumpfile out.vob -dvd://2 /dev/dvd
Die Ausgabedatei out.vob
wird im MPEG-Format
abgespeichert.
Jeder Benutzer, der mehr Informationen über Video unter UNIX® sammeln möchte, sollte mplayerhq.hu/DOCS konsultieren, da es technisch sehr informativ ist. Diese Dokumentation sollte ebenfalls studiert werden, bevor Fehlerberichte eingereicht werden.
Vor der Verwendung von mencoder
ist es hilfreich, sich mit den auf mplayerhq.hu/DOCS/HTML/en/mencoder.html
beschriebenen Optionen vertraut zu machen.
Es gibt unzählige Möglichkeiten die Qualität zu verbessern,
die Bitrate zu verringern und Formate zu konvertieren.
Einige davon haben erhebliche Auswirkungen auf die
Geschwindigkeit. Falsche Kombinationen von
Kommandozeilenparametern ergeben eventuell Dateien, die
selbst mplayer
nicht mehr wiedergeben
kann.
Hier ist ein Beispiel für eine einfache Kopie:
%
mencoder
input.avi
-oac copy -ovc copy -ooutput.avi
Wenn Sie in eine Datei rippen, benutzen Sie
die Option -dumpfile
von
mplayer
.
Um
nach MPEG4 mit MPEG3 für den Ton zu konvertieren, muss
zunächst der Port audio/lame
installiert werden. Aus lizenzrechtlichen Gründen ist ein
Paket nicht verfügbar. Wenn der Port installiert ist,
geben Sie ein:input.avi
%
mencoder
input.avi
-oac mp3lame -lameopts br=192 \ -ovc lavc -lavcopts vcodec=mpeg4:vhq -ooutput.avi
Die Ausgabedatei lässt sich mit Anwendungen wie
mplayer
oder
xine
abspielen.
input.avi
kann durch
-dvd://1 /dev/dvd
ersetzt und das
Kommando als root
ausgeführt werden,
um ein DVD-Stück direkt zu
konvertieren. Da vielleicht ein paar Versuche nötig sind,
um das gewünschte Ergebnis zu erhalten, empfiehlt es sich
das Stück zuerst in eine Datei zu schreiben und
anschließend die Datei weiter zu bearbeiten.
xine ist ein Video-Spieler mit einer wiederverwendbaren Bibliothek und ein Programm, das durch Plugins erweitert werden kann. Es kann als Paket oder Port multimedia/xine installiert werden.
Für einen reibungslosen Betrieb benötigt xine entweder eine schnelle CPU mit einer schnellen Grafikkarte, oder die XVideo-Erweiterung. Am schnellsten läuft xine mit der XVideo-Erweiterung.
In der Voreinstellung startet xine eine grafische Benutzeroberfläche. Über die Menüs können dann bestimmte Dateien geöffnet werden.
Alternativ kann xine auch über die Kommandozeile aufgerufen werden, um Dateien direkt wiederzugeben:
%
xine -g -p
mymovie.avi
Weitere Informationen und Tipps zur Fehlerbehebung finden Sie unter xine-project.org/faq.
Transcode ist eine Sammlung von Werkzeugen zur Umwandlung von Video- und Audio-Dateien. Transcode mischt Video-Dateien und kann kaputte Video-Dateien reparieren. Die Werkzeuge werden als Filter verwendet, das heißt die Ein- und Ausgaben verwenden stdin/stdout.
Unter FreeBSD kann Transcode als Paket oder Port multimedia/transcode installiert werden. Viele Benutzer bevorzugen es den Port zu bauen, da er ein Menü bereitstellt, wo die entsprechenden Formate für den Bau ausgewählt werden können. Mit den Pfeiltasten und der Leertaste können die erforderlichen Formate ausgewählt werden. Wenn Sie fertig sind, drücken Sie Enter, um den Bau und die Installation fortzusetzen.
Dieses Beispiel zeigt, wie eine DivX-Datei in eine PAL MPEG-1-Datei konvertiert wird:
%
transcode -i
input.avi
-V --export_prof vcd-pal -o output_vcd%
mplex -f 1 -o
output_vcd.mpg output_vcd.m1v output_vcd.mpa
Die daraus resultierende MPEG-Datei,
,
kann beispielsweise mit MPlayer
abgespielt werden. Die Datei kann auch mit einem Programm
wie multimedia/vcdimager oder
sysutils/cdrdao als
Video-CD auf eine CD-R
gebrannt werden.output_vcd.mpg
Zusätzlich zu der Manualpage von
transcode
, sollten Sie auch die
Informationen und Beispiele im
transcoding.org/cgi-bin/transcode lesen.
Mit TV-Karten können Sie mit dem Rechner über Kabel oder Antenne fernsehen. Die meisten Karten besitzen einen RCA- oder S-Video-Eingang. Einige Karten haben auch einen FM-Radio-Empfänger.
Der bktr(4)-Treiber von FreeBSD unterstützt PCI-TV-Karten mit einem Brooktree Bt848/849/878/879 Chip. Dieser Teiber unterstützt die meisten Pinnacle PCTV Karten. Die Karte sollte einen der unterstützten Empfänger besitzen, die in bktr(4) aufgeführt sind.
Um die Karte benutzen zu können, muss der
bktr(4)-Treiber geladen werden. Damit dies beim
Systemstart automatisch erfolgt, muss die folgende Zeile
in /boot/loader.conf
hinzugefügt
werden:
bktr_load="YES"
Alternativ kann der Treiber für die TV-Karte auch fest in den Kernel kompiliert werden. In diesem Fall müssen folgende Zeilen in die Kernelkonfigurationsdatei aufgenommen werden:
device bktr device iicbus device iicbb device smbus
Die zusätzlichen Treiber werden benötigt, da die Komponenten der Karte über einen I2C-Bus verbunden sind. Bauen und installieren Sie dann den neuen Kernel.
Um den Treiber zu testen, muss das System neu gestartet werden. Während des Neustarts sollte die TV-Karte erkannt werden:
bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0 iicbb0: <I2C bit-banging driver> on bti2c0 iicbus0: <Philips I2C bus> on iicbb0 master-only iicbus1: <Philips I2C bus> on iicbb0 master-only smbus0: <System Management Bus> on bti2c0 bktr0: Pinnacle/Miro TV, Philips SECAM tuner.
Abhängig von der verwendeten Hardware können die Meldungen natürlich anders aussehen. Die entdeckten Geräte lassen sich mit sysctl(8) oder in der Kernelkonfigurationsdatei überschreiben. Wenn Sie beispielsweise einen Philips-SECAM-Empfänger erzwingen wollen, fügen Sie die folgende Zeile zur Kernelkonfigurationsdatei hinzu:
options OVERRIDE_TUNER=6
Alternativ können Sie sysctl(8) benutzen:
#
sysctl hw.bt848.tuner=6
Weitere Informationen zu den verschiedenen Kerneloptionen und sysctl(8)-Parametern finden Sie in bktr(4).
Um die TV-Karte zu benutzen, installieren Sie eine der nachstehenden Anwendungen:
multimedia/fxtv lässt das Fernsehprogramm in einem Fenster laufen und kann Bilder, Audio und Video aufzeichnen.
multimedia/xawtv eine weitere TV-Anwendung mit vergleichbaren Funktionen.
Mit audio/xmradio lässt sich der FM-Radio-Empfänger, der sich auf TV-Karten befindet, benutzen.
Weitere Anwendungen finden Sie in der FreeBSD Ports-Sammlung.
Wenn Sie Probleme mit der TV-Karte haben, prüfen Sie zuerst, ob der Video-Capture-Chip und der Empfänger vom bktr(4)-Treiber unterstützt werden und ob Sie die richtigen Optionen verwenden. Weitere Hilfe zu unterstützten TV-Karten finden Sie auf der Mailingliste freebsd-multimedia.
MythTV ist eine beliebte Open Source PVR-Anwendung. Dieser Abschnitt beschreibt die Installation und Konfiguration von MythTV unter FreeBSD. Weitere Informationen zur Benutzung von MythTV finden Sie unter mythtv.org/wiki.
MythTV benötigt ein Frontend und ein Backend. Diese Komponenten können entweder auf dem gleichen System, oder auf unterschiedlichen Maschinen installiert werden.
Das Frontend kann unter FreeBSD über den Port oder das Paket multimedia/mythtv-frontend installiert werden. Zudem muss Xorg, wie in Kapitel 5, Das X-Window-System beschrieben, installiert und konfiguriert sein. Idealerweise besitzt das System auch eine Videokarte, die X-Video Motion Compensation (XvMC) unterstützt, sowie optional eine LIRC-kompatible Fernbedienung.
Benutzen Sie multimedia/mythtv, um sowohl das Frontend als auch das Backend zu installieren. Ein MySQL™ Datenbank-Server ist ebenfalls erforderlich und sollte automatisch als Abhängigkeit installiert werden. Optional sollte das System einen Empfänger und ausreichend Speicherplatz haben, um die aufgezeichneten Daten speichern zu können.
MythTV verwendet V4L um auf Videoeingabegeräte, wie Kodierer und Empfänger zuzugreifen. Unter FreeBSD funktioniert MythTV am besten mit USB DVB-S/C/T Karten, die von multimedia/webcamd unterstützt werden, da dies eine V4L-Anwendung zur Verfügung stellt, die als Benutzerprogramm läuft. Jede DVB-Karte, die von webcamd unterstützt wird, sollte mit MythTV funktionieren, jedoch gibt es eine Liste von Karten, die unter wiki.freebsd.org/WebcamCompat abgerufen werden kann. Es existieren auch Treiber für Hauppauge-Karten in den folgenden Paketen: multimedia/pvr250 und multimedia/pvrxxx, allerdings liefern diese nur eine Treiberschnittstelle, die nicht dem Standard entspricht und die nicht mit MythTV-Versionen grösser als 0.23 funktionieren. Aus lizenzrechtlichen Gründen ist ein Paket nicht verfügbar, sodass die beiden Ports übersetzt werden müssen.
Die wiki.freebsd.org/HTPC enthält eine Liste von allen verfügbaren DVB-Treibern.
Geben Sie folgendes ein, um MythTV als Binärpaket zu installieren:
#
pkg install mythtv
Alternativ können Sie den Port installieren:
#
cd /usr/ports/multimedia/mythtv
#
make install
Richten Sie anschließend die MythTV-Datenbank ein:
#
mysql -uroot -p < /usr/local/share/mythtv/database/mc.sql
Konfigurieren Sie dann das Backend:
#
mythtv-setup
Zum Schluss starten Sie das Backend:
#
sysrc mythbackend_enable=yes
#
service mythbackend start
Unter FreeBSD stellt SANE (Scanner Access Now Easy) aus der Ports-Sammlung eine einheitliche Schnittstelle (API) für den Zugriff auf Scanner bereit. SANE wiederum greift auf Scanner mithilfe einiger FreeBSD-Treiber zu.
FreeBSD unterstützt sowohl SCSI- als auch USB-Scanner. Abhängig von der Schnittstelle des Scanners, werden unterschiedliche Treiber benötigt. Prüfen Sie vor der Konfiguration mithilfe der Liste der unterstützten Geräte ob der Scanner von SANE unterstützt wird.
Dieses Kapitel beschreibt, wie Sie feststellen können, ob der Scanner von FreeBSD erkannt wurde. Zudem enthält es einen Überblick über die Konfiguration und Verwendung von SANE unter FreeBSD.
Im GENERIC
-Kernel sind schon alle,
für einen USB-Scanner notwendigen Treiber
enthalten. Benutzer mit einem angepassten Kernel sollten
sicherstellen, dass die Kernelkonfiguration die nachstehenden
Zeilen enthält:
device usb device uhci device ohci device ehci device xhci
Um zu überprüfen ob der Scanner erkannt wird, schließen Sie den USB-Scanner an. Prüfen Sie dann mit dmesg(8), ob der Scanner in den Systemmeldungen erscheint:
ugen0.2: <EPSON> at usbus0
In diesem Beispiel wurde ein
EPSON
Perfection® 1650 USB-Scanner an
/dev/ugen0.2
erkannt.
Wenn der Scanner eine
SCSI-Schnittstelle besitzt, ist die
Kernelkonfiguration abhängig vom verwendeten
SCSI-Controller. Der
GENERIC
-Kernel unterstützt die
gebräuchlichen SCSI-Controller. Den
richtigen Treiber finden Sie in
/usr/src/sys/conf/NOTES
. Neben dem
SCSI-Treiber muss die Kernelkonfiguration
noch die nachstehenden Zeilen enthalten:
device scbus device pass
Nachdem Sie einen Kernel gebaut und installiert haben, sollte der Scanner beim Neustart in den Systemmeldungen erscheinen:
pass2 at aic0 bus 0 target 2 lun 0 pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device pass2: 3.300MB/s transfers
Wenn der Scanner während des Systemstarts
ausgeschaltet war, können Sie die Geräteerkennung
erzwingen, indem Sie den SCSI-Bus erneut
absuchen. Verwenden Sie dazu
camcontrol
:
#
camcontrol rescan all
Re-scan of bus 0 was successful Re-scan of bus 1 was successful Re-scan of bus 2 was successful Re-scan of bus 3 was successful
Der Scanner sollte jetzt in der SCSI-Geräteliste erscheinen:
#
camcontrol devlist
<IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0) <IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1) <AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3) <PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0)
Weitere Informationen über SCSI-Geräte unter FreeBSD finden Sie in scsi(4) und camcontrol(8).
Das SANE-System ermöglicht den Zugriff auf den Scanner über Backends (graphics/sane-backends). Lesen Sie http://www.sane-project.org/sane-supported-devices.html um herauszufinden, welches Backend welchen Scanner unterstützt. Eine graphische Oberfläche wird über Anwendungen von Drittanbietern wie Kooka (graphics/kooka) oder XSane (graphics/xsane) bereitgestellt. Die Backends von SANE reichen aus, um den Scanner zu testen.
Installieren Sie die Backends als Paket:
#
pkg install sane-backends
Alternativ können Sie die Backends aus der Ports-Sammlung installieren:
#
cd /usr/ports/graphics/sane-backends
#
make install clean
Nachdem Sie den Port oder das Paket
graphics/sane-backends installiert haben,
können Sie mit dem Befehl sane-find-scanner
prüfen, ob SANE den Scanner
erkennt:
#
sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3
Die Ausgabe zeigt die Schnittstelle und die verwendete Gerätedatei des Scanners. Der Hersteller und das Modell können in der Ausgabe fehlen.
Bei einigen USB-Scannern muss die Firmware geladen werden. Lesen Sie sane-find-scanner(1) und sane(7) für weitere Details.
Als nächstes müssen Sie prüfen, ob
der Scanner vom Frontend erkannt wird. Die
SANE-Backends werden
mit dem Kommandozeilenwerkzeug scanimage
geliefert. Mit diesem Werkzeug können Sie
sich Scanner anzeigen lassen und den Scan-Prozess
von der Kommandozeile starten. Die Option
-L
zeigt die Scanner an. Das erste Beispiel
ist für einen SCSI-Scanner, das zweite ist
für einen USB-Scanner:
#
scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner#
scanimage -L
device 'epson2:libusb:000:002' is a Epson GT-8200 flatbed scanner
Im zweiten Beispiel ist epson2
der
Backend-Name. libusb:000:002
bedeutet,
dass /dev/ugen0.2
die vom Scanner
verwendete Gerätedatei ist.
Wenn scanimage
den Scanner nicht
erkennen kann, erscheint folgende Meldung:
#
scanimage -L
No scanners were identified. If you were expecting something different, check that the scanner is plugged in, turned on and detected by the sane-find-scanner tool (if appropriate). Please read the documentation which came with this software (README, FAQ, manpages).
Wenn das passiert, müssen Sie in der Konfigurationsdatei
des Backends unterhalb von
/usr/local/etc/sane.d/
den verwendeten
Scanner eintragen. Wenn der Scanner
EPSON
Perfection® 1650, der das Backend
epson2
benutzt, nicht erkannt wurde, muss
/usr/local/etc/sane.d/epson2.conf
angepasst werden. Fügen Sie eine Zeile mit der Schnittstelle
und dem Gerätenamen in die Datei ein. In diesem Beispiel
wurde die nachstehende Zeile eingefügt:
usb /dev/ugen0.2
Speichern Sie die Änderungen und prüfen Sie, ob der Scanner mit dem richtigen Backend und Gerätenamen erkannt wird:
#
scanimage -L
device 'epson2:libusb:000:002' is a Epson GT-8200 flatbed scanner
Wenn scanimage -L
den Scanner erkannt
hat, ist der Scanner eingerichtet und bereit, zu
scannen.
Obwohl scanimage
von der Kommandozeile
scannen kann, ist eine graphische Anwendung
zum Scannen besser geeignet. Bekannte Programme sind
Koka oder
XSane. Diese Frontends besitzten
erweiterte Funktionen wie den Scan-Modus, Farbkorrektur und
Batch-Scans. XSane lässt sich auch
als GIMP-Plugin verwenden.
Wenn andere Benutzer den Scanner benutzen sollen,
müssen sie Lese- und Schreibrechte auf die
Gerätedatei des Scanners besitzen. Im vorherigen Beispiel
wird die Datei /dev/ugen0.2
verwendet,
die faktisch nur ein Symlink auf die echte Gerätedatei,
/dev/usb/0.2.0
genannt, darstellt.
Sowohl der Symlink als auch die Gerätedatei sind jeweils im
Besitz der Gruppen wheel
und operator
. Damit ein Benutzer
den Scanner benutzen kann, muss er Mitglied in einer der
beiden Gruppen sein. Allerdings sollte aus Sicherheitsgründen
genau überlegt werden, welche Benutzer zu welcher Gruppe
hinzugefügt werden, besonders bei der Gruppe wheel
. Eine bessere
Lösung ist es, eine spezielle Gruppe für den Zugriff
anzulegen und den Scanner für Mitglieder dieser
Gruppe zugänglich zu machen.
Dieses Beispiel erstellt eine Gruppe namens
:usb
#
pw groupadd usb
Anschließend muss der
/dev/ugen0.2
-Symlink und der Gerätename
/dev/usb/0.2.0
für die Gruppe usb
mit den Schreibrechten
0660
oder 0664
ausgestattet werden. All dies kann durch das Hinzufügen der
folgenden Zeilen in /etc/devfs.rules
erreicht werden:
[system=5] add path ugen0.2 mode 0660 group usb add path usb/0.2.0 mode 0666 group usb
Es kommt vor, dass sich der Gerätename mit dem Hinzufügen oder Entfernen von Geräten ändert, so dass man stattdessen vielleicht allen USB-Geräten mit diesem Regelsatz Zugriff gewähren möchte:
[system=5] add path 'ugen*' mode 0660 group usb add path 'usb/*' mode 0666 group usb
Weitere Informationen zu dieser Datei finden Sie in devfs.rules(5).
Als nächstes aktivieren Sie den Regelsatz in
/etc/rc.conf
:
devfs_system_ruleset="system"
Starten Sie anschließend das devfs(8)-System neu:
#
service devfs restart
Jetzt müssen nur noch Benutzer zur Gruppe
hinzugefügt werden, um ihnen den Zugriff auf den Scanner zu
erlauben:usb
#
pw groupmod usb -m
joe
Weitere Details finden Sie in pw(8).
Der Kernel ist das Herz des FreeBSD-Betriebssystems. Er ist verantwortlich für die Speicherverwaltung, das Durchsetzen von Sicherheitsdirektiven, Netzwerkfähigkeit, Festplattenzugriffen und vieles mehr. Obwohl FreeBSD es ermöglicht, dynamisch konfiguriert zu werden, ist es ab und an notwendig, einen angepassten Kernel zu konfigurieren und zu kompilieren.
Nachdem Sie dieses Kapitel gelesen haben, werden Sie Folgendes wissen:
Wann Sie einen angepassten Kernel kompilieren sollten.
Wie Sie eine Hardware-Inventur durchführen.
Wie Sie eine Kernelkonfigurationsdatei verändern.
Wie Sie mit der Konfigurationsdatei einen neuen Kernel kompilieren.
Wie Sie den neuen Kernel installieren.
Was zu tun ist, falls etwas schiefgeht.
Alle Kommandos, aus den Beispielen dieses Kapitels, müssen
mit root
-Rechten
ausgeführt werden.
Traditionell besaß FreeBSD einen monolithischen Kernel. Der Kernel war ein einziges großes Programm, das eine bestimmte Auswahl an Hardware unterstützte. Um das Kernelverhalten zu ändern, musste man einen neuen Kernel kompilieren und dann den neuen Kernel booten.
Heutzutage befinden sich die meisten Funktionen des FreeBSD-Kernels in Modulen, die je nach Bedarf dynamisch geladen und entladen werden können. Dies erlaubt es, einen laufenden Kernel anzupassen, um sofort neue Hardware und neue Funktionen zu unterstützen. Dies ist als modularer Kernel bekannt.
Gelegentlich ist es noch notwendig, eine statische Kernelkonfigurationen durchzuführen. In einigen Fällen ist die Funktion zu systemnah, um durch ein Modul realisiert zu werden. Andere Umgebungen verhindern vielleicht das Laden und Entladen von Kernelmodulen und erfordern, dass nur die benötigte Funktionalität statisch in den Kernel kompiliert wird.
Das Erstellen eines angepassten Kernels ist eines der
Rituale für erfahrene BSD-Benutzer. Obwohl dieser
Prozess recht viel Zeit in Anspruch nimmt, kann
er doch viele Vorteile für das FreeBSD-System bringen. Im
Gegensatz zum GENERIC
-Kernel, der eine
Vielzahl von Hardware unterstützen muss, kann ein angepasster
Kernel so eingeschränkt werden, dass er nur noch die Hardware
des Rechners unterstützt. Dies hat einige Vorteile:
Schnellerer Bootvorgang. Da der Kernel nur nach der Hardware des Systems sucht, kann sich die Zeit für einen Systemstart verkürzen.
Geringerer Speicherbedarf. Ein eigener Kernel
benötigt in der Regel weniger Speicher als ein
GENERIC
-Kernel durch das Entfernen von
Funktionen und Gerätetreibern. Das ist vorteilhaft, denn
der Kernel verweilt immer im RAM und verhindert dadurch,
dass dieser Speicher von Anwendungen genutzt wird. Deshalb
ist ein angepasster Kernel auf einem System mit wenig RAM
sinnvoll.
Zusätzliche Hardwareunterstützung. Ein
angepasster Kernel kann Unterstützung für
Geräte bieten, die im
GENERIC
-Kernel nicht enthalten
sind.
Bevor Sie einen angepassten Kernel erstellen, überlegen Sie sich bitte, warum Sie dies tun wollen. Wenn Sie lediglich eine bestimmte Hardwareunterstützung benötigen, existiert diese vielleicht schon als Kernelmodul.
Kernelmodule existieren in /boot/kernel
und können mit kldload(8) dynamisch in den laufenden Kernel
geladen werden. Die meisten Kerneltreiber verfügen über ein
ladbares Modul und eine Manualpage. Der drahtlose
Ethernet-Treiber ath(4) hat die folgenden Informationen in
seiner Manualpage:
Alternatively, to load the driver as a module at boot time, place the following line in loader.conf(5): if_ath_load="YES"
Durch das Hinzufügen von
if_ath_load="YES"
in
/boot/loader.conf
wird das Modul dynamisch
beim Systemstart geladen.
In manchen Fällen gibt es kein entsprechendes Modul in
/boot/kernel
. Dies gilt insbesondere für
bestimmte Subsysteme.
Bevor die Kernelkonfigurationsdatei bearbeitet wird, ist es empfehlenswert eine Bestandsaufnahme der Hardware des Systems durchzuführen. Auf einem Dual-Boot-System können diese Informationen aus dem anderen Betriebssystem ermittelt werden. Microsoft®s Gerätemanager enthält beispielsweise Informationen über die installierte Hardware.
Einige Versionen von Microsoft® Windows® verfügen über ein System-Icon auf dem Desktop, über das Sie den Gerätemanager direkt aufrufen können.
Wenn FreeBSD das einzige installierte Betriebssystem ist, dann listet dmesg(8) die Hardware auf, die während des Systemstarts gefunden wurde. Die meisten FreeBSD-Gerätetreiber haben eine eigene Manualpage, die Informationen über die unterstützte Hardware enthält. Die folgenden Zeilen zeigen beispielsweise an, dass der psm(4)-Treiber eine angeschlossene Maus gefunden hat:
psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: [GIANT-LOCKED] psm0: [ITHREAD] psm0: model Generic PS/2 mouse, device ID 0
Da diese Hardware vorhanden ist, sollte dieser Treiber nicht aus einer angepassten Kernelkonfigurationsdatei entfernt werden.
Wenn dmesg
keine Informationen zur
gefundenen Hardware anzeigt, können diese Informationen auch
aus /var/run/dmesg.boot
entnommen
werden.
Ein weiteres Werkzeug für die Suche nach Hardware ist pciconf(8), das ausführliche Informationen bereitstellt. Ein Beispiel:
%
pciconf -lv
ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00 vendor = 'Atheros Communications Inc.' device = 'AR5212 Atheros AR5212 802.11abg wireless' class = network subclass = ethernet
Die Ausgabe zeigt, dass der Treiber ath
eine drahtlose Ethernetkarte gefunden hat.
Die Option -k
von man(1) kann
verwendet werden, um nützliche Informationen zu erhalten. Um
beispielsweise eine Liste von Manualpages zu erhalten, welche
ein spezifisches Wort enthalten:
#
man -k
ath(4) - Atheros IEEE 802.11 wireless network driver ath_hal(4) - Atheros Hardware Access Layer (HAL)Atheros
Mit einer Inventarliste der Hardware können Sie dann sicherstellen, dass Sie die Treiber der installierten Hardware nicht versehentlich entfernen, wenn Sie die Kernelkonfigurationsdatei bearbeiten.
Bevor eine angepasste Kernelkonfigurationsdatei erstellt werden kann, muss zuerst der vollständige FreeBSD Quellcodebaum installiert werden.
Falls /usr/src/
nicht existiert oder
leer ist, sind die Kernelquellen nicht installiert. Die Quellen
können mit Subversion und der
Anleitung im Abschnitt A.3, „Benutzen von Subversion“ installiert werden.
Sobald die Quellen installiert sind, können Sie sich einen
Überblick über /usr/src/sys
verschaffen.
Dieses Verzeichnis enthält eine Reihe von Unterverzeichnissen,
einschließlich Verzeichnisse für die unterstützten Architekturen
amd64
, i386
,
powerpc
und sparc64
.
Alles in diesen Verzeichnissen ist nur für die jeweilige
Architektur relevant. Der Rest des Codes ist maschinenunabhängig
und für alle Architekturen gleich. Jede unterstützte
Architektur hat ein Unterverzeichnis conf
,
das die GENERIC
Kernelkonfigurationsdatei
für diese Architektur enthält.
Bearbeiten Sie GENERIC
nicht direkt.
Kopieren Sie stattdessen die Datei unter einem anderen Namen und
machen dann die Änderungen an dieser Kopie. Traditionell
besteht der Name des Kernels immer aus Großbuchstaben. Wenn Sie
mehrere FreeBSD-Maschinen mit unterschiedlicher Hardware betreuen,
ist es eine gute Idee, die Konfigurationsdatei nach den
Hostnamen der Maschinen zu benennen. In diesem Beispiel wird
eine Kopie der
GENERIC
Kernelkonfigurationsdatei, namens
MYKERNEL
, für die
amd64
-Architektur erstellt:
#
cd /usr/src/sys/
amd64
/conf#
cp GENERIC
MYKERNEL
kann jetzt mit einem Texteditor bearbeitet werden. Der
Standard-Editor ist vi, jedoch steht
mit ee ein weiterer, einfach zu
bedienender Editor bereit.MYKERNEL
Das Format der Konfigurationsdatei ist einfach. Jede Zeile
enthält ein Schlüsselwort, das ein Gerät oder ein Subsystem
repräsentiert, ein Argument und eine kurze Beschreibung.
Jeder Text, der hinter einem #
steht, gilt
als Kommentar und wird ignoriert. Um die Kernel-Unterstützung
für ein Gerät oder Subsystem zu entfernen, muss ein
#
an den Anfang der Zeile, die dieses Gerät
oder Subsystem repräsentiert, gesetzt werden. Verändern Sie
keine Zeilen, die Sie nicht genau verstehen.
Neben den Kurzbeschreibungen in dieser Datei, finden Sie
zusätzliche Erklärungen in NOTES
,
die sich in demselben Verzeichnis wie
GENERIC
für die jeweilige Architektur
befindet. Von der Architektur unabhängige Optionen sind in
/usr/src/sys/conf/NOTES
aufgeführt.
Wenn Sie die Kernelkonfigurationsdatei fertig bearbeitet
haben, sollten Sie eine Sicherungskopie außerhalb von
/usr/src
speichern
Alternativ kann die Kernelkonfigurationsdatei an anderer Stelle gespeichert, und ein symbolischer Link auf die Datei erstellt werden:
#
cd /usr/src/sys/amd64/conf
#
mkdir /root/kernels
#
cp GENERIC /root/kernels/MYKERNEL
#
ln -s /root/kernels/MYKERNEL
Es ist möglich, eine include
-Anweisung
in die Kernelkonfigurationsdatei aufzunehmen.
Diese erlaubt das lokale Einfügen von anderen Konfigurationsdateien
in die aktuelle, was es einfacher macht, kleinere Änderungen an
einer existierenden Datei zu vollziehen. Wenn Sie einen
GENERIC
-Kernel mit nur einer kleinen Anzahl von
zusätzlichen Optionen und Treibern benötigen, brauchen Sie
mit den folgenden Zeilen nur ein kleines Delta im Vergleich zu GENERIC
anpassen, wie in diesem Beispiel zu sehen:
include GENERIC ident MYKERNEL options IPFIREWALL options DUMMYNET options IPFIREWALL_DEFAULT_TO_ACCEPT options IPDIVERT
Diese Methode zeigt die Unterschiede der lokalen
Konfigurationsdatei zu einem GENERIC
-Kernel
an. Sobald Aktualisierungen durchgeführt werden, können neue
Eigenschaften, die zu GENERIC
hinzugefügt
werden, auch dem lokalen Kernel angehängt werden, es sei denn,
es wird durch nooptions
oder
nodevice
unterbunden. Eine umfassende Liste
von Konfigurationseinstellungen und deren Beschreibungen finden
Sie in config(5).
Um einen Kernel mit allen möglichen Optionen zu bauen,
führen Sie als root
die folgenden Befehle aus:
#
cd /usr/src/sys/
arch
/conf && make LINT
Nachdem die Änderungen an der angepassten Kernelkonfigurationsdatei gespeichert sind, kann der Quellcode für den Kernel mit den folgenden Schritten übersetzt werden:
Wechseln Sie das Verzeichnis:
#
cd /usr/src
Bauen Sie den Kernel, indem Sie den Namen der Kernelkonfigurationsdatei angeben:
#
make buildkernel KERNCONF=
MYKERNEL
Installieren Sie den neuen Kernel. Dieser Befehl wird
den neuen Kernel nach
/boot/kernel/kernel
kopieren, und den
alten Kernel nach
/boot/kernel.old/kernel
speichern:
#
make installkernel KERNCONF=
MYKERNEL
Fahren Sie das System herunter und starten Sie den neuen Kernel. Wenn etwas nicht funktioniert, lesen Sie Der Kernel bootet nicht:.
In der Voreinstellung werden beim Bau eines angepassten
Kernels stets alle Kernelmodule neu gebaut. Um einen Kernel
schneller zu bauen, oder um nur bestimmte Module zu bauen,
bearbeiten Sie /etc/make.conf
, bevor Sie
den Kernel neu bauen.
In diesem Beispiel werden über eine Variable nur die Kernelmodule definiert, die auch tatsächlich gebaut werden sollen. In der Voreinstellung werden alle Module gebaut:
MODULES_OVERRIDE = linux acpi
Alternativ kann auch eine Variable verwendet werden, die bestimmte Kernelmodule vom Bauprozess ausschließt:
WITHOUT_MODULES = linux acpi sound
Weitere Variablen und deren Beschreibung finden Sie in make.conf(5).
Es gibt vier Hauptfehlerquellen beim Erstellen eines angepassten Kernels:
config
verursacht Fehler:Wenn config
fehlschlägt, zeigt es
die Nummer der Zeile an, die das Problem verursacht.
Bei der folgenden Fehlermeldung sollten Sie die angegebene
Zeile mit GENERIC
oder
NOTES
vergleichen und sicherstellen,
dass das Schlüsselwort in Zeile 17 richtig geschrieben
ist:
config: line 17: syntax error
make
verursacht Fehler:Wenn make
fehlschlägt, liegen
meistens Fehler in der Konfigurationsdatei vor, die aber
nicht schwerwiegend genug für config
waren. Überprüfen Sie die Konfiguration und wenn Sie
keinen Fehler entdecken können, schicken Sie eine E-Mail
mit der Kernelkonfigurationsdatei an die Mailingliste
'Fragen und Antworten zu FreeBSD'
<de-bsd-questions@de.FreeBSD.org>
.
Wenn der neue Kernel nicht bootet oder die Geräte
nicht erkannt werden, ist das noch kein Grund zur Panik.
Glücklicherweise besitzt FreeBSD einen exzellenten
Mechanismus zur Wiederherstellung nach dem Einsatz
inkompatibler Kernel. Wählen Sie einfach den zu
bootenden Kernel im FreeBSD Bootloader aus. Dazu wählen Sie
im Bootmenü die Option
„Escape to a loader prompt“. Danach
geben Sie am Prompt
boot
oder den Namen eines anderen Kernels ein, der sauber
bootet.kernel.old
Nun kann die Konfiguration noch einmal überprüft und
der Kernel neu kompiliert werden. Dazu
ist /var/log/messages
sehr nützlich,
da hier sämtliche Kernelmeldungen von jedem erfolgreichen
Bootvorgang gespeichert werden. dmesg(8) gibt die
Kernelmeldungen vom letzten Bootvorgang aus.
Wenn Sie Probleme beim
Kernelbau bekommen, heben Sie sich immer eine Kopie von
GENERIC
oder einen anderen
Kernel, der garantiert bootet, auf. Dies ist sehr
wichtig, weil jedes Mal, wenn ein neuer Kernel
installiert wird, kernel.old
mit dem zuletzt installierten Kernel überschrieben
wird und dieser möglicherweise nicht bootfähig ist.
Verschieben Sie daher den funktionierenden Kernel so
schnell wie möglich, indem Sie das Verzeichnis mit dem
funktionierenden Kernel umbenennen:
#
mv /boot/kernel
/boot/kernel.bad
#
mv
/boot/kernel.good
/boot/kernel
ps
nichtWenn Sie eine andere Version des Kernels installiert haben als die, mit der Ihre Systemwerkzeuge gebaut wurden, beispielsweise einen Kernel aus den -CURRENT-Quellen auf einem -RELEASE-System, werden Programme wie ps(1) und vmstat(8) nicht mehr funktionieren. Um dies zu beheben, sollten Sie das komplette System neu bauen und installieren. Achten Sie darauf, dass die Quellen, aus denen das System gebaut wird, zum installierten Kernel passt. Man sollte niemals einen Kernel benutzen, der nicht zur Systemversion passt.
Trotz vieler Versuche es zu vermeiden, ist der Druck von Informationen auf Papier immer noch eine wichtige Funktion. Drucken hat zwei grundlegende Komponenten. Die Daten müssen an den Drucker gesendet werden, und zwar in einer Form, die der Drucker verstehen kann.
Die grundlegende Druckfunktion kann schnell eingerichtet werden. Der Drucker muss lediglich fähig sein, normalen ASCII-Text zu drucken. Informationen zum Druck von anderen Dateien finden Sie in Abschnitt 9.5.3, „Filter“.
Erstellen Sie ein Verzeichnis zur Speicherung der Druckaufträge:
#
mkdir -p /var/spool/lpd/lp
#
chown daemon:daemon /var/spool/lpd/lp
#
chmod 770 /var/spool/lpd/lp
Erstellen Sie als root
die Datei
/etc/printcap
mit folgendem
Inhalt:
lp:\:lp=/dev/unlpt0:\
:sh:\ :mx#0:\ :sd=/var/spool/lpd/lp:\ :lf=/var/log/lpd-errs:
Diese Zeile ist für einen Drucker, der an einem USB-Port angeschlossen ist. Für einen Drucker, der am parallelen oder „Drucker“-Port angeschlossen ist, verwenden Sie: :lp=/dev/lpt0:\ Für einen Netzwerkdrucker verwenden Sie: :lp=:rm= Ersetzen Sie
|
Aktivieren Sie lpd
beim Systemstart,
indem Sie folgende Zeile in
/etc/rc.conf
hinzufügen:
lpd_enable="YES"
Starten Sie den Dienst:
#
service lpd start
Starting lpd.
Drucken Sie eine Testseite:
#
printf "1. Der Drucker kann drucken.\n2. Dies ist die zweite Zeile.\n" | lpr
Wenn die beiden Zeilen nicht am linken Rand starten und Sie einen „Treppeneffekt“ beobachten, lesen Sie Abschnitt 9.5.3.1, „Den Treppeneffekt verhindern“.
Mit lpr
können nun Textdateien
gedruckt werden. Geben Sie den Dateinamen auf der
Kommandozeile an oder lassen Sie lpr
von einer Pipe lesen.
%
lpr textfile.txt
%
ls -lh | lpr
Es gibt eine Vielzahl von Möglichkeiten, einen Drucker mit einem Rechner zu verbinden. Kleine Desktop-Drucker werden in der Regel mit dem USB-Anschluss verbunden, ältere Modelle nutzen oft die parallele Schnittstelle. Einige Drucker sind direkt mit einem Netzwerk verbunden, damit sie leichter von mehreren Rechnern benutzt werden können. Nur noch wenige Drucker verwenden einen seriellen Anschluss.
FreeBSD unterstützt die folgenden Arten von Druckern:
USB-Drucker können mit einem freien USB-Anschluss des Rechners verbunden werden.
Wenn FreeBSD einen USB-Drucker
erkennt, werden zwei Gerätenamen erstellt:
/dev/ulpt0
und
/dev/unlpt0
. Beide Geräte leiten die
Daten an den Drucker weiter. Nach jedem Druckauftrag wird
der USB-Anschluss von
ultp0
zurückgesetzt. Das
Zurücksetzen kann bei einigen Druckern Probleme
verursachen, daher wird in der Regel stattdessen
unlpt0
verwendet, das den
Anschluss nicht zurücksetzt.
Die parallele Schnittstelle ist
/dev/lpt0
. Der Gerätename erscheint
unabhängig davon, ob ein Drucker angeschlossen ist oder
nicht. Eine automatische Erkennung findet nicht
statt.
Die Hersteller haben sich weitgehend von diesem älteren Anschluss verabschiedet und auch viele Rechner haben keine parallele Schnittstelle mehr. Es existieren jedoch Adapter, um einen parallelen Drucker an einem USB-Port anzuschließen. Der Drucker wird dann wie ein USB-Drucker behandelt. Es können auch Printserver verwendet werden, um parallele Drucker direkt mit einem Netzwerk zu verbinden.
Serielle Anschlüsse sind veraltet und werden außer in Nischenanwendungen nur noch selten verwendet. Die Kabel, Stecker und die erforderliche Verkabelung sind oft sehr unterschiedlich.
Der Gerätename für einen seriellen Anschlüsse ist
/dev/cuau0
oder
/dev/cuau1
. Es können auch
USB-Adapter verwendet werden. Diese
erscheinen als /dev/cuaU0
.
Damit mit dem Drucker kommuniziert werden kann, müssen einige Kommunikationsparameter bekannt sein. Zu den wichtigsten zählen die Baudrate (BPS - Bits pro Sekunde) und die Parität. Diese Werte variieren, aber typische serielle Drucker verwenden eine Baudrate von 9600 und keine Parität.
Netzwerkdrucker werden direkt mit dem lokalen Netzwerk verbunden.
Der DNS-Name des Druckers muss bekannt sein. Wenn dem Drucker eine dynamische Adresse per DHCP zugeteilt wird, sollte das DNS automatisch aktualisiert werden, so dass der Drucker immer die richtige IP-Adresse hat. Um dieses Problem zu vermeiden, werden Netzwerkdruckern häufig statische IP-Adressen zugeteilt.
Die meisten Netzwerkdrucker verstehen Druckaufträge,
die über das LPD-Protokoll empfangen
werden. Sie können auch den Namen der Druckwarteschlange
angeben. Einige Drucker verarbeiten die Daten
unterschiedlich, je nachdem welche Warteschlange verwendet
wird. Zum Beispiel druckt eine
Raw
-Warteschlange die Daten
unverändert, während eine
Text
-Warteschlange den Text um
Wagenrückläufe ergänzt.
Viele Netzwerkdrucker können auch Daten drucken, die direkt an Port 9100 gesendet werden.
Verkabelte Netzwerkdrucker drucken in der Regel am schnellsten und sind einfach einzurichten. Für den direkten Anschluss am Rechner wird USB wegen seiner Geschwindigkeit und Einfachheit bevorzugt. Parallele Verbindungen funktionieren, haben jedoch ihre Begrenzung in Bezug auf Kabellänge und Geschwindigkeit. Serielle Verbindungen sind schwieriger zu konfigurieren und die Verdrahtung unterscheidet sich zwischen den Modellen. Zudem müssen Baudrate und Parität bekannt sein. Glücklicherweise sind serielle Drucker selten geworden.
Daten, die an einen Drucker gesendet werden, müssen in einer Sprache verfasst sein, die der Drucker verstehen kann. Diese Sprachen werden Seitenbeschreibungssprachen oder Page Description Languages (PDL) genannt.
Schlichter ASCII-Text ist die
einfachste Möglichkeit, um Daten an einen Drucker zu
senden. Die Zeichen werden eins zu eins gedruckt: ein
A
in den Daten erscheint beim Druck als
A
auf dem Papier. Eine Formatierung
ist nur bedingt verfügbar und es gibt keine Möglichkeit,
eine Schriftart oder eine bestimmte Laufweite zu wählen.
Die Einfachheit von schlichtem
ASCII-Text bedeutet, dass Text ohne
bzw. wenig Codierung oder Übersetzung gedruckt werden
kann. Die gedruckte Ausgabe entspricht dem, was an den
Drucker gesendet wurde.
Einige kostengünstige Drucker können keinen einfachen ASCII-Text drucken. Das macht sie in der Regel schwieriger einzurichten.
PostScript® ist fast das Gegenteil von ASCII. Anstelle von einfachem Text, besteht ein PostScript®-Programm aus einer Reihe von Anweisungen, die das endgültige Dokument generieren. Es können auch verschiedene Schriften und Grafiken benutzt werden. Diese Fähigkeiten haben jedoch ihren Preis. Das Programm, das die Seite generiert, muss zunächst erzeugt werden. Normalerweise wird dieses Programm durch die Anwendung erzeugt, so dass der Prozess für den Benutzer transparent bleibt.
Kostengünstige Drucker sind manchmal nicht kompatibel mit PostScript®.
PCL ist eine Erweiterung von ASCII. Es enthält Escape-Sequenzen für die Formatierung, Schriftauswahl und das Drucken von Grafiken. Viele Drucker bieten Unterstützung für PCL5, einige unterstützen auch das neuere PCL6 oder PCLXL. Die neueren Versionen sind Kombinationen von PCL5 und bieten eine schnellere Druckgeschwindigkeit.
Hersteller können die Kosten eines Druckers reduzieren, indem sie einen einfachen Prozessor und etwas Speicher verbauen. Diese Drucker sind nicht in der Lage normalen Text zu drucken. Stattdessen werden die Texte und Grafiken von einem Treiber auf dem Host-Rechner generiert und dann an den Drucker gesendet. Diese Drucker werden Host-basierte Drucker genannt.
Die Kommunikation zwischen dem Treiber und dem Drucker wird oft durch proprietäre oder nicht dokumentierte Protokolle realisiert, weshalb sie nur mit den gängigsten Betriebssystemen funktionieren.
Viele Anwendungen aus der Ports-Sammlung und FreeBSD Werkzeuge können PostScript® erzeugen. Die folgende Tabelle listet die verfügbaren Programme, um PostScript® in andere PDLs zu konvertieren:
Ausgabe PDL | Generiert von | Hinweis |
---|---|---|
PCL oder PCL5 | print/ghostscript9-base | -sDEVICE=ljet4 für
Schwarzweiß, -sDEVICE=cljet5 für
Farbe |
PCLXL oder PCL6 | print/ghostscript9-base | -sDEVICE=pxlmono für
Schwarzweiß, -sDEVICE=pxlcolor für
Farbe |
ESC/P2 | print/ghostscript9-base | -sDEVICE=uniprint |
XQX | print/foo2zjs |
Um die Konfiguration einfach zu halten, wählen Sie einen Drucker, der PostScript® oder auch PCL unterstützt. Mit print/ghostscript9-base können diese Drucker PostScript® nativ verstehen. Wenn der Drucker PostScript® oder PCL direkt unterstützt, können Sie auch sofort einfache ASCII-Textdateien drucken.
Zeilenbasierte Drucker wie Tintenstrahldrucker unterstützen in der Regel kein PostScript® oder PCL. Dennoch können Sie ASCII-Textdateien drucken. print/ghostscript9-base unterstützt die Sprachen dieser Drucker. Jedoch ist der Druck von Grafiken auf diesen Druckern oft sehr langsam, da aufgrund der großen Menge an Daten übertragen und ausgedruckt werden müssen.
Host-basierte Drucker sind oft schwieriger einzurichten. Einige Drucker können überhaupt nicht benutzt werden, da sie proprieräte PDLs verwerden. Solche Drucker sollten Sie nach Möglichkeit vermeiden.
Die Beschreibungen vieler PDLs finden Sie auf http://www.undocprint.org/formats/page_description_languages. Spezielle PDLs, die von einigen Druckern verwendet werden finden Sie auf http://www.openprinting.org/printers.
Für den gelegentlichen Druck können die Dateien auch direkt,
ohne zusätzliche Einstellungen, an den Drucker gesendet werden.
Zum Beispiel kann die Datei sample.txt
direkt an einen USB-Drucker gesendet
werden:
#
cp sample.txt /dev/unlpt0
Ob Sie direkt auf einen Netzwerkdrucker drucken können,
hängt von den Fähigkeiten des Druckers ab. Die meisten
akzeptieren jedoch Druckaufträge auf Port 9100, die Sie mit
nc(1) an den Drucker senden können. So drucken Sie die
gleiche Datei auf einem Drucker mit dem
DNS-Namen
netlaser
:
#
nc
netlaser
9100 < sample.txt
Drucken im Hintergrund wird Spooling genannt. Ein Spooler (Warteschlange) ermöglicht es dem Benutzer die Programme auf dem Rechner fortzusetzen, ohne warten zu müssen bis der Druckauftrag abgeschlossen ist.
FreeBSD enthält den Spooler namens lpd(8). Druckaufträge werden mit lpr(1) übermittelt.
Erstellen Sie ein Verzeichnis zur Speicherung der Druckaufträge und setzen Sie die Berechtigungen auf diesem Verzeichnis, damit der Inhalt der Druckaufträge nicht von anderen Benutzern eingesehen werden kann:
#
mkdir -p /var/spool/lpd/lp
#
chown daemon:daemon /var/spool/lpd/lp
#
chmod 770 /var/spool/lpd/lp
Drucker werden in /etc/printcap
angelegt. Ein Eintrag für einen Drucker enthält dessen Name,
Anschluss sowie weitere Einstellungen. Erstellen Sie
/etc/printcap
mit folgendem
Inhalt:
lp:\:lp=/dev/unlpt0:\
:sh:\
:mx#0:\
:sd=/var/spool/lpd/lp:\
:lf=/var/log/lpd-errs:
Der Name des Druckers. lpr(1) sendet
Druckaufträge an den Drucker | |||||||||||
Der Anschluss, über den der Drucker verbunden ist. Ersetzen Sie diese Zeile mit dem entsprechenden, hier aufgeführten Verbindungstyp.
| |||||||||||
Unterdrückt das Drucken eines Deckblattes zu Beginn des Druckauftrags. | |||||||||||
Die maximale Größe des Druckauftrags wird nicht begrenzt. | |||||||||||
Das Verzeichnis zur Speicherung der Druckdaten. Jeder Drucker verwendet ein eigenes Verzeichnis. | |||||||||||
Die Logdatei, in welche die Fehler des Druckers geschrieben werden. |
Nachdem Sie /etc/printcap
erstellt
haben, verwenden Sie chkprintcap(8) um die Datei auf
Fehler zu testen:
#
chkprintcap
Beheben Sie alle gemeldeten Fehler, bevor Sie fortfahren.
Aktivieren Sie lpd(8) in
/etc/rc.conf
:
lpd_enable="YES"
Starten Sie den Dienst:
#
service lpd start
Mit lpr
werden Dokumente an den
Drucker geschickt. Die Datei können Sie auf der Kommandozeile
angeben, oder über eine Pipe an lpr
schicken. Die beiden folgenden Kommandos sind gleichwertig,
sie schicken den Inhalt von doc.txt
an
den Standarddrucker:
%
lpr doc.txt
%
cat doc.txt | lpr
Drucker können auch mit -P
ausgewählt
werden. Um auf einen Drucker namens
laser
zu drucken:
%
lpr -Plaser doc.txt
In den bisher gezeigten Beispielen wurde lediglich eine Textdatei an den Drucker gesendet. Solange der Drucker den Inhalt dieser Dateien versteht, wird die Ausgabe korrekt gedruckt werden.
Einige Drucker sind nicht in der Lage einfachen Text zu drucken. Es kann sogar sein, das die Eingabedatei gar keinen Text enthält.
Mit Hilfe von Filtern können Dateien übersetzt oder verarbeitet werden. Ein typischer Anwendungsfall ist die Umwandlung der Eingabedaten in ein Format, das der Drucker verstehen kann, wie bspw. PostScript® oder PCL. Filter können auch verwendet werden um zusätzliche Funktionen hinzuzufügen, wie bspw. Seitenzahlen oder das Hervorheben von Quellcode, um die Lesbarkeit zu verbessern.
Die hier beschriebenen Filter werden
Eingabefilter oder auch
Textfilter genannt. Diese Filter
übersetzen die eingehende Datei in verschiedene Formen.
Werden Sie mit su(1) zu root
, bevor Sie die
Dateien erstellen.
Filter werden in /etc/printcap
mit
der Kennung if=
festgelegt. Um
/usr/local/libexec/lf2crlf
als Filter
einzusetzen, bearbeiten Sie /etc/printcap
wie folgt:
lp:\ :lp=/dev/unlpt0:\ :sh:\ :mx#0:\ :sd=/var/spool/lpd/lp:\ :if=/usr/local/libexec/lf2crlf:\:lf=/var/log/lpd-errs:
Der Backslash am Ende der Zeilen zeigt an, das ein Eintrag für einen Drucker wirklich nur eine Zeile ist, in der die einzelnen Einträge durch einen Doppelpunkt getrennt sind. Das Beispiel hätte man auch wie folgt schreiben können:
lp:lp=/dev/unlpt0:sh:mx#0:sd=/var/spool/lpd/lp:if=/usr/local/libexec/lf2crlf:lf=/var/log/lpd-errs:
Typische Textdateien enthalten einen Zeilenvorschub am Ende jeder Zeile. Diese Zeilen erzeugen auf dem Drucker einen „Treppeneffekt“:
A printed file looks like the steps of a staircase scattered by the wind
Ein Filter kann Zeilenumbrüche in Wagenrückläufe und
Zeilenumbrüche konvertieren. Erstellen Sie
/usr/local/libexec/lf2crlf
mit
folgendem Inhalt:
#!/bin/sh CR=$'\r' /usr/bin/sed -e "s/$/${CR}/g"
Setzen Sie die Berechtigungen und machen Sie die Datei ausführbar:
#
chmod 555 /usr/local/libexec/lf2crlf
Passen Sie /etc/printcap
an, so
dass der neue Filter verwendet wird:
:if=/usr/local/libexec/lf2crlf:\
Drucken Sie nochmal die gleiche Datei, um den Filter zu testen.
GNU Enscript wandelt Textdateien in formatiertes PostScript® um, die dann auf PostScript®-Druckern gedruckt werden können. Das Programm fügt auch Seitenzahlen und Zeilenumbrüche hinzu und stellt andere Funktionen bereit, um gedruckte Textdateien besser lesbar zu machen. Abhängig vom Papierformat können Sie entweder print/enscript-letter oder print/enscript-a4 aus der Ports-Sammlung installieren.
Erstellen Sie
/usr/local/libexec/enscript
mit diesem
Inhalt:
#!/bin/sh /usr/local/bin/enscript -o -
Setzen Sie die Berechtigungen und machen Sie die Datei ausführbar:
#
chmod 555 /usr/local/libexec/enscript
Bearbeiten Sie /etc/printcap
um den
neuen Filter zu verwenden:
:if=/usr/local/libexec/enscript:\
Testen Sie den Filter, indem Sie eine einfache Textdatei drucken.
Viele Programme erzeugen PostScript®-Dokumente. Allerdings können kostengünstige Drucker oft nur Textdateien oder PCL verstehen. Dieser Filter wandelt PostScript®-Dateien in PCL um, bevor die Datei an den Drucker geschickt wird. Installieren Sie den Ghostscript PostScript® Interpreter print/ghostscript9-base aus der Ports-Sammlung.
Erstellen Sie
/usr/local/libexec/ps2pcl
mit diesem
Inhalt:
#!/bin/sh /usr/local/bin/gs -dSAFER -dNOPAUSE -dBATCH -q -sDEVICE=ljet4 -sOutputFile=- -
Setzen Sie die Berechtigungen und machen Sie die Datei ausführbar:
#
chmod 555 /usr/local/libexec/ps2pcl
Die PostScript®-Eingabe wird von dem Skript erst in PCL umgewandelt, bevor es an den Drucker geschickt wird.
Bearbeiten Sie /etc/printcap
um den
neuen Filter zu verwenden:
:if=/usr/local/libexec/ps2pcl:\
Testen Sie den Filter mit einem kleinen PostScript®-Programm.
%
printf "%%\!PS \n /Helvetica findfont 18 scalefont setfont \ 72 432 moveto (PostScript printing successful.) show showpage \004" | lpr
Ein Filter kann sehr nützlich sein, wenn er die
Eingabe erkennt und sie automatisch in ein für den Drucker
verständliches Format umwandelt. Die ersten beiden Zeichen
in einer PostScript®-Datei sind in der Regel
%!
. Ein Filter ist in der Lage diese
beiden Zeichen zu erkennen. PostScript®-Dateien können
unverändert an einen PostScript®-Drucker geschickt werden.
Textdateien können, wie eben gezeigt, mit
Enscript in PostScript®
umgewandelt werden. Erstellen Sie
/usr/local/libexec/psif
mit diesem
Inhalt:
#!/bin/sh # # psif - Print PostScript or plain text on a PostScript printer # IFS="" read -r first_line first_two_chars=`expr "$first_line" : '\(..\)'` case "$first_two_chars" in %!) # %! : PostScript job, print it. echo "$first_line" && cat && exit 0 exit 2 ;; *) # otherwise, format with enscript ( echo "$first_line"; cat ) | /usr/local/bin/enscript -o - && exit 0 exit 2 ;; esac
Setzen Sie die Berechtigungen und machen Sie die Datei ausführbar:
#
chmod 555 /usr/local/libexec/psif
Bearbeiten Sie /etc/printcap
um den
neuen Filter zu verwenden:
:if=/usr/local/libexec/psif:\
Um den Filter zu testen, drucken Sie PostScript®- und einfache Textdateien.
Einen Filter zu schreiben, der verschiedene Arten von Eingaben erkennen und formatieren kann, ist eine große Herausforderung. print/apsfilter aus der Ports-Sammlung ist auch ein intelligenter Filter, der Dutzende Dateitypen automatisch in eine für den Drucker verständliche PDL umwandeln kann. Weitere Details finden Sie auf http://www.apsfilter.org.
Die Einträge in /etc/printcap
sind
nichts anderes als Definitionen von Warteschlangen. Für jeden
Drucker können eine oder mehrere Warteschlangen definiert
werden. Kombiniert mit Filtern bieten mehrere Warteschlangen
eine bessere Kontrolle über die Druckaufträge.
Als Beispiel dient ein vernetzter
PostScript®-Laserdrucker in einem Büro. Die meisten Benutzer
möchten einfache Textdateien drucken, aber ein paar
fortgeschrittene Anwender sollen in der Lage sein,
PostScript®-Dateien direkt zu drucken. Hierfür werden zwei
Einträge für den Drucker in /etc/printcap
erstellt:
textprinter:\ :lp=9100@officelaser:\ :sh:\ :mx#0:\ :sd=/var/spool/lpd/textprinter:\ :if=/usr/local/libexec/enscript:\ :lf=/var/log/lpd-errs: psprinter:\ :lp=9100@officelaser:\ :sh:\ :mx#0:\ :sd=/var/spool/lpd/psprinter:\ :lf=/var/log/lpd-errs:
Dokumente, die zum textprinter
geschickt werden, werden wie im vorherigen Beispiel durch den
Filter /usr/local/libexec/enscript
formatiert. Fortgeschrittene Anwender können
PostScript®-Dateien direkt auf dem Drucker
psprinter
drucken, wo keine
Filterung stattfindet.
Mit mehreren Warteschlangen können Sie einen direkten Zugriff auf alle Arten von Druckerfunktionen zur Verfügung stellen. Ein Duplex-Drucker könnte zwei Warteschlangen verwenden, eine für den gewöhnlichen Druck und eine für den Duplexdruck.
Es stehen verschiedene Programme zur Verfügung um Druckaufträge zu überwachen und den Druckbetrieb zu steuern.
lpq(1) zeigt den Status der Druckaufträge des Benutzers an. Druckaufträge anderer Benutzer werden nicht angezeigt.
Dieser Befehl zeigt die anstehenden Druckaufträge eines Benutzers für einen Drucker an:
%
lpq -P
Rank Owner Job Files Total Size 1st jsmith 0 (standard input) 12792 byteslp
Der folgende Befehl zeigt die anstehenden Druckaufträge eines Benutzers für alle Drucker an:
%
lpq -a
lp: Rank Owner Job Files Total Size 1st jsmith 1 (standard input) 27320 bytes laser: Rank Owner Job Files Total Size 1st jsmith 287 (standard input) 22443 bytes
Mit lprm(1) können Druckaufträge gelöscht werden.
Normale Benutzer dürfen lediglich ihre eigenen Aufträge
löschen. root
kann hingegen jeden beliebigen Auftrag löschen.
Dieser Befehl löscht alle anstehenden Druckaufträge eines Druckers:
#
lprm -P
dfA002smithy dequeued cfA002smithy dequeued dfA003smithy dequeued cfA003smithy dequeued dfA004smithy dequeued cfA004smithy dequeuedlp
-
Mit dem folgenden Befehl löschen Sie einen bestimmten Druckauftrag. Benutzen Sie lpq(1), um die Nummer des Auftrags zu finden.
%
lpq
Rank Owner Job Files Total Size 1st jsmith 5 (standard input) 12188 bytes%
lprm -P
dfA005smithy dequeued cfA005smithy dequeuedlp
5
Mit lpc(8) kann der Druckerstatus überprüft und
verändert werden. lpc
wird zusammen mit
einem Kommando und optional mit einem Druckernamen
aufgerufen. Mit all
können alle Drucker
angesprochen werden, auf denen das Kommando ausgeführt
werden soll. Normale Benutzer können sich den Status mit
lpc(8) ansehen. Nur root
darf Kommandos
ausführen, die den Status des Druckers verändern.
Dieser Befehl zeigt den Status von allen Druckern an:
%
lpc status all
lp: queuing is enabled printing is enabled 1 entry in spool area printer idle laser: queuing is enabled printing is enabled 1 entry in spool area waiting for laser to come up
Der Drucker kann die Annahme neuer Druckaufträge verweigern. Anschließend sollen Aufträge wieder akzeptiert werden:
#
lpc stop
lp: printing disabledlp
#
lpc start
lp: printing enabled daemon startedlp
Starten Sie den Drucker nach einem Fehler neu:
#
lpc restart
lp: no daemon to abort printing enabled daemon restartedlp
Schalten Sie die Warteschlange aus und deaktivieren Sie den Druck. Sie können den Benutzern gleichzeitig eine Nachricht hinterlassen:
#
lpc down
lp: printer and queuing disabled status message is now: Ersatzteile werden am Montag ankommenlp
Ersatzteile werden am Montag ankommen
Reaktivieren Sie den Drucker:
#
lpc up
lp: printing enabled daemon startedlp
Weitere Kommandos und Optionen finden Sie in lpc(8).
In Unternehmen und Schulen werden Drucker häufig von mehreren Benutzern genutzt. Es werden zusätzliche Funktionen angeboten, um die gemeinsame Nutzung von Druckern zu erleichtern.
Der Druckername wird in der ersten Zeile von
/etc/printcap
festgelegt. Weitere
Namen oder Aliase können nach dem
Druckernamen hinzugefügt werden. Aliase werden vom Namen
durch das Pipe-Zeichen |
getrennt:
lp|repairsprinter
|salesprinter
:\
Anstelle des Druckernamens können Aliase verwendet werden. Zum Beispiel können Mitarbeiter der Verkaufsabteilung wie folgt auf ihren Drucker drucken:
%
lpr -P
salesprinter
sales-report.txt
Mitarbeiter der Reparaturabteilung drucken auf dem Drucker mit:
%
lpr -P
repairsprinter
repairs-report.txt
Alle Dokumente werden auf diesem einen Drucker gedruckt. Wenn die Verkaufsabteilung größer wird und die Abteilung einen eigenen Drucker benötigt, kann der Alias entfernt und für einen neuen Drucker verwendet werden. Die Mitarbeiter in beiden Abteilungen benutzen zum Drucken weiterhin die gleichen Befehle, nur dass die Aufträge der Verkaufsabteilung jetzt zum neuen Drucker gesendet werden.
Bei einem viel benutzten Drucker kann es für die Anwender schwierig sein, ihre Dokumente in einem großen Papierstapel wiederzufinden. Um dieses Problem zu lösen, können Deckblätter verwendet werden. Dabei wird vor jedem Druckauftrag ein Deckblatt mit dem Benutzernamen und dem Dokumentnamen gedruckt. Deckblätter werden manchmal auch als Banner oder Trennseite bezeichnet.
Das Aktivieren der Deckblätter hängt davon ab, ob der Drucker direkt über ein USB, paralleles oder serielles Kabel, oder über ein Netzwerk mit dem Rechner verbunden ist.
Wenn der Drucker direkt verbunden ist, aktivieren Sie
die Deckblätter durch Entfernen der Zeile
:sh:\
(Supress
Header) in
/etc/printcap
. Diese Deckblätter
verwenden lediglich einen Zeilenvorschub für neue Zeilen.
Einige Drucker benötigen den Filter
/usr/share/examples/printing/hpif
um
den Treppeneffekt zu vermeiden. Der Filter konfiguriert
PCL-Drucker so, dass sowohl
Zeilenumbrüche als auch Zeilenvorschübe verwendet werden,
wenn ein Zeilenvorschub empfangen wird.
Für Netzwerkdrucker müssen Deckblätter auf dem Drucker
selbst konfiguriert werden, da Einträge für Deckblätter in
/etc/printcap
ignoriert werden. Die
Einstellungen sind über einen Webbrowser zugänglich und
stehen in der Regel auf der Hauptseite der
Konfigurations-Webseite zur Verfügung.
Neben dem in FreeBSD enthaltenen lpd(8) existieren noch weitere Drucksysteme. Diese Systeme bieten zusätzliche Funktionen und Unterstützung für andere Protokolle.
CUPS ist ein beliebtes Drucksystem, das für viele Betriebssysteme erhältlich ist. CUPS unter FreeBSD wird in einem separaten Artikel beschrieben: CUPS on FreeBSD.
Hewlett Packard stellt ein Drucksystem zur Verfügung, das viele ihrer Drucker unterstützt. Der Port heißt print/hplip. Die Webseite befindet sich unter http://hplipopensource.com/hplip-web/index.html. Der FreeBSD-Port kümmert sich um alle Details während der Installation. Informationen zur Konfiguration finden Sie unter http://hplipopensource.com/hplip-web/install/manual/hp_setup.html.
LPRng wurde als eine verbesserte Alternative zu lpd(8) entwickelt. Der Port heißt sysutils/LPRng. Weitere Informationen und Dokumentation finden Sie unter http://www.lprng.com/.
FreeBSD bietet Binärkompatibilität zu Linux®, so dass Benutzer Linux® Anwendungen auf einem FreeBSD-System installieren und ausführen können, ohne die Binärdatei ändern zu müssen. Es wurde sogar berichtet, dass in einigen Situationen Linux® Anwendungen auf FreeBSD besser laufen als unter Linux®.
Allerdings werden einige Linux®-spezifischen Merkmale nicht von FreeBSD unterstützt. Linux®-Anwendungen, die i386™-spezifische Aufrufe, wie bspw. die Aktivierung des virtuellen 8086-Modus verwenden, werden derzeit nicht unterstützt.
Die Unterstützung für 64-Bit-Binärkompatibilität für Linux® wurde in FreeBSD 10.3 hinzugefügt.
Nach dem Lesen dieses Kapitels werden Sie wissen:
Wie Sie die Linux®-Binärkompatibilität aktivieren.
Wie zusätzliche Linux®-Systembibliotheken installiert werden.
Wie Sie Linux®-Anwendungen unter FreeBSD installieren.
Wie die Linux®-Binärkompatibilität unter FreeBSD implementiert ist.
Bevor Sie dieses Kapitel lesen, sollten Sie wissen:
Die Linux®-Binärkompatibilität ist per Voreinstellung nicht aktiviert und auch Linux®-Bibliotheken werden nicht installiert. Linux®-Bibliotheken können entweder manuell, oder aus der FreeBSD Ports-Sammlung installiert werden.
Bevor Sie versuchen den Port zu bauen, laden Sie das Linux®-Kernelmodul, da ansonsten der Bau fehlschlägt:
#
kldload linux
Für 64-Bit Kompatibilität:
#
kldload linux64
Prüfen Sie, ob das Modul geladen wurde:
%
kldstat
Id Refs Address Size Name 1 2 0xc0100000 16bdb8 kernel 7 1 0xc24db000 d000 linux.ko
Der einfachste Weg um einen Basissatz von Linux®-Bibliotheken und Binärdateien auf einem FreeBSD-System zu installieren, ist über den Port oder das Paket emulators/linux_base-c7. So installieren Sie das Paket:
#
pkg install emulators/linux_base-c7
Wollen Sie die Linux®-Binärkompatibilität beim Systemstart
aktivieren, fügen Sie folgende Zeile in
/etc/rc.conf
hinzu:
linux_enable="YES"
Auf 64-Bit Maschinen wird das Modul für die 64-Bit
Emulation automatisch von /etc/rc.d/abi
geladen.
Seitdem die Linux®-Binärkompatibilität Unterstützung für die Ausführung von 32- und 64-Bit-Linux®-Binärdateien erhalten hat, ist es nicht mehr möglich, die Emulationsfähigkeit in einen angepassten Kernel zu integrieren.
Wenn sich eine Linux®-Anwendung über fehlende Bibliotheken beschwert nachdem die Linux®-Binärkompatibilität installiert wurde, finden Sie heraus welche Bibliothken die Anwendung benötigt und installieren Sie diese manuell.
Mit ldd
können Sie unter Linux®
bestimmen, welche gemeinsam benutzten Bibliotheken eine
Anwendung benötigt. Wenn Sie herausfinden wollen, welche
Bibliotheken linuxdoom
benötigt, können Sie
folgenden Befehl auf einem Linux®-System ausführen, welches
Doom installiert hat:
%
ldd linuxdoom
libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0 libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0 libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29
Kopieren Sie alle Dateien aus der letzten Spalte der
Ausgabe von einem Linux®-System auf das FreeBSD-System in das
Verzeichnis /compat/linux
. Nach dem
Kopieren erstellen Sie symbolische Links auf die Namen in der
ersten Spalte. In diesem Beispiel werden folgende Dateien auf
dem FreeBSD-System installiert:
/compat/linux/usr/X11/lib/libXt.so.3.1.0 /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0 /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Wenn Sie bereits eine Linux®-Bibliothek einer zur ersten Spalte passenden Hauptversionsnummer besitzen, muss sie nicht mehr kopiert werden, da die bereits vorhandene Version funktionieren sollte. Hat die Bibliothek jedoch eine neuere Versionsnummer, sollten Sie sie dennoch kopieren. Sie können die alte Version löschen, solange Sie einen symbolischen Link auf die neue Version anlegen.
Folgende Bibliotheken existieren bereits auf dem FreeBSD-System:
/compat/linux/lib/libc.so.4.6.27$ /compat/linux/lib/libc.so.4 -> libc.so.4.6.27
ldd
zeigt an, dass eine Anwendung eine
neuere Version benötigt:
libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29
Wenn diese Bibliotheken sich nur um ein oder zwei Stellen
in der Unterversionsnummer unterscheiden, sollte das Programm
dennoch mit der älteren Version funktionieren. Wenn Sie
wollen, können Sie die bestehende libc.so
durch die neuere Version ersetzen:
/compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Der Mechanismus der symbolischen Links wird nur für Linux®-Binärdateien benötigt. Nach einer Weile wird es eine ausreichende Menge an Linux®-Bibliotheken auf dem System geben, sodass Sie neu installierte Linux®-Anwendungen ohne zusätzlichen Aufwand auf dem System laufen lassen können.
ELF-Binärdateien benötigen manchmal eine zusätzliche „Kennzeichnung“. Wenn Sie versuchen, eine nicht gekennzeichnete ELF-Binärdatei auszuführen, werden Sie eine Fehlermeldung ähnlich der folgenden erhalten:
%
./my-linux-elf-binary
ELF binary type not known Abort
Damit der FreeBSD-Kernel eine Linux®-ELF-Datei von einer FreeBSD-ELF-Datei unterscheiden kann, gibt es das Werkzeug brandelf(1).
%
brandelf -t Linux my-linux-elf-binary
Die GNU Werkzeuge schreiben nun automatisch die passende Kennzeichnungsinformation in die ELF-Binärdateien, so dass Sie diesen Schritt in Zukunft nur noch selten benötigen.
Wenn Sie eine Linux® RPM-basierte
Anwendung installieren möchten, installieren Sie zunächst den
Port oder das Paket archivers/rpm4.
Anschließend kann der Superuser das folgende Kommando
benutzen, um ein .rpm
zu
installieren:
#
cd /compat/linux
#
rpm2cpio < /pfad/zum/linux.archiv.rpm | cpio -id
Fall notwendig, benutzen Sie brandelf
auf den installierten ELF-Binärdateien. Beachten Sie, dass
dies eine saubere Deinstallation verhindert.
Wenn DNS nicht funktioniert, oder die folgende Fehlermeldung erscheint:
resolv+: "bind" is an invalid keyword resolv+: "hosts" is an invalid keyword
müssen Sie
/compat/linux/etc/host.conf
wie folgt
bearbeiten:
order hosts, bind multi on
Diese Reihenfolge legt fest, dass zuerst
/etc/hosts
und anschließend
DNS durchsucht werden. Wenn
/compat/linux/etc/host.conf
nicht
vorhanden ist, nutzen Linux®-Anwendungen
/etc/host.conf
und
beschweren sich über die inkompatible FreeBSD-Syntax. Wenn Sie
in /etc/resolv.conf
keinen Nameserver
konfiguriert haben, sollten Sie den Eintrag
bind
entfernen.
Dieser Abschnitt beschreibt wie die
Linux®-Binärkompatibilität funktioniert. Die folgenden
Informationen stammen aus einer E-Mail, die von Terry Lambert
(<tlambert@primenet.com>
) an FreeBSD chat geschrieben
wurde (Message ID:
<199906020108.SAA07001@usr09.primenet.com>
).
FreeBSD verfügt über eine „execution class loader“ genannte Abstraktion. Dabei handelt es sich um einen Eingriff in den execve(2) Systemaufruf.
Historisch gesehen untersuchte der einzige, auf UNIX®-Plattformen vorhandene Lader die „magische Zahl“ (in der Regel die ersten 4 oder 8 Bytes der Datei), um festzustellen, ob der Binärtyp dem System bekannt war. War dies der Fall, wurde der Binärlader aufgerufen.
Wenn es sich nicht um den zum System gehörigen Binärtyp handelte, gab execve(2) einen Fehler zurück, und die Shell versuchte stattdessen, die Datei als Shell-Befehl auszuführen. Dabei wurde als Standardeinstellung „was auch immer die aktuelle Shell ist“ festgelegt.
Später wurde ein Hack in sh(1) eingefügt,
der die zwei ersten Zeichen untersuchte. Wenn diese
:\n
entsprachen,
wurde stattdessen die csh(1)-Shell aufgerufen.
FreeBSD verfügt über eine Liste von Ladern, anstelle
eines einzigen, auf #!
zurückgreifenden
Laders, um Shell-Interpreter oder Shell-Skripte
auszuführen.
Für die Linux® ABI-Unterstützung erkennt FreeBSD die magische Zahl als ELF-Binärdatei. Der ELF-Lader sucht nach einer speziellen Kennzeichnung, die aus einem Kommentarabschnitt in der ELF-Datei besteht, und die in SVR4/Solaris™ ELF Binärdateien nicht vorhanden ist.
Damit Linux®-Binärdateien unter FreeBSD funktionieren,
müssen sie mit brandelf(1) als Linux
gekennzeichnet werden:
#
brandelf -t Linux file
Wenn der ELF-Lader die
Linux
-Kennzeichnung sieht, wird ein Zeiger
in der proc
-Struktur ersetzt. Alle
Systemaufrufe werden durch diesen Zeiger indiziert. Der
Prozess wird weiterhin speziell gekennzeichnet, so dass der
Trap-vector im Signal-trampoline-code eine spezielle
Behandlung erfährt und das Linux®-Kernelmodul verschiedene
kleinere Korrekturen vornehmen kann.
Der Linux®-Systemaufrufvektor enthält neben anderen
Dingen eine Liste der sysent[]
-Einträge,
deren Adressen sich im Kernelmodul befinden.
Wenn ein Linux®-Programm einen Systemaufruf ausführt,
dereferenziert die Trap-Behandlungsroutine den Zeiger für den
Systemaufruf aus der proc
-Struktur und
erhält damit die Linux®-Eintrittspunkte für den
Systemaufruf.
Zusätzlich verändert der
Linux®-Modus die Systempfade dynamisch; genauso, wie dies die
Option union
beim Einbinden von Dateisystemen
macht. Zuerst wird die Datei im Verzeichnis
/compat/linux/Originalpfad
gesucht, wenn
sie dort nicht gefunden wurde, wird sie im Verzeichnis
/Originalpfad
gesucht. Dadurch wird
sichergestellt, dass Binärdateien, die zur Ausführung andere
Binärdateien benötigen, ausgeführt werden können (so dass alle
Linux®-Werkzeuge unter der ABI laufen).
Dies bedeutet auch, dass Linux®-Binärdateien
FreeBSD-Binärdateien laden und ausführen können, wenn keine
passenden Linux®-Binärdateien vorhanden sind. Ein in
/compat/linux
plaziertes uname(1)
kann damit Linux®-Programmen vorgaukeln, dass sie auf einem
Linux®-System laufen.
Im Endeffekt gibt es einen Linux®-Kernel innerhalb des FreeBSD-Kernels. Die Sprungtabellen für Linux®- beziehungsweise FreeBSD-Systemaufrufe verweisen allerdings auf dieselben Funktionen, die Kerneldienste wie Dateisystemoperationen, Operationen für den virtuellen Speicher, Signalübermittlung und System V IPC bereitstellen. Der einzige Unterschied ist, dass Binärdateien unter FreeBSD FreeBSD-glue-Funktionen verwendet werden. Linux®-Binärdateien hingegen verwenden die Linux®-glue-Funktionen. FreeBSD-glue-Funktionen sind statisch in den Kernel gelinkt, Linux®-glue-Funktionen sind statisch gelinkt oder können über ein ladbares Kernelmodul eingebunden werden.
Technisch gesehen ist dies nicht wirklich eine Emulation, sondern eine ABI-Implementation. Es wird manchmal „Linux® Emulation“ genannt, da es zu einer Zeit implementiert wurde, in der es kein anderes Wort gab, das beschrieb, was vor sich ging. Es war falsch zu behaupten, FreeBSD würde Linux®-Binärprogramme ausführen, da der Code nicht unter FreeBSD übersetzt wurde.
Die restlichen Kapitel behandeln alle Aspekte der FreeBSD Systemadministration. Am Anfang jedes Kapitels finden Sie eine Zusammenfassung, die beschreibt, was Sie nach dem Durcharbeiten des Kapitels gelernt haben. Weiterhin werden die Voraussetzungen beschrieben, die für das Durcharbeiten des Kapitels erforderlich sind.
Diese Kapitel sollten Sie lesen, wenn Sie die Informationen darin benötigen. Sie brauchen Sie nicht in einer bestimmten Reihenfolge zu lesen, noch müssen Sie die Kapitel lesen, bevor Sie anfangen, FreeBSD zu benutzen.
Die richtige Systemkonfiguration ist einer der wichtigsten Aspekte unter FreeBSD. Dieses Kapitel beschreibt die Konfiguration von FreeBSD sowie Maßnahmen zur Leistungssteigerung von FreeBSD-Systemen.
Nachdem Sie dieses Kapitel durchgearbeitet haben, werden Sie Folgendes wissen:
Die Grundlagen der Konfiguration von
rc.conf
und die Skripte zum Starten
von Anwendungen in
/usr/local/etc/rc.d
.
Wie Sie Netzwerkkarten konfigurieren und testen.
Wie Sie virtuelle Hosts und Netzwerkgeräte konfigurieren.
Wie Sie die verschiedenen Konfigurationsdateien
in /etc
benutzen.
Wie Sie mit FreeBSD mit sysctl(8)-Variablen einstellen können.
Wie Sie die Platten-Performance einstellen und Kernel-Parameter modifizieren können.
Bevor Sie dieses Kapitel lesen, sollten Sie
die Grundlagen von UNIX® und FreeBSD (Kapitel 3, Grundlagen des FreeBSD Betriebssystems) verstehen.
Damit vertraut sein, wie Sie einen Kernel konfigurieren und kompilieren (Kapitel 8, Konfiguration des FreeBSD-Kernels).
Viele Benutzer installieren Software Dritter auf FreeBSD mithilfe der Ports-Sammlung. Häufig soll die Software bei einem Systemstart mitgestartet werden. Beispielsweise sollen die Dienste mail/postfix oder www/apache22 nach einem Systemstart laufen. Dieser Abschnitt stellt die Startprozeduren für Software Dritter vor.
Unter FreeBSD werden die meisten der im System enthaltenen Dienste wie cron(8) mithilfe von Systemskripten gestartet.
Mit rc.d
lässt sich der Start
von Anwendungen besser steuern und es sind mehr Funktionen
verfügbar. Mit den in Abschnitt 11.4, „Dienste unter FreeBSD verwalten“
besprochenen Schlüsselwörtern können
Anwendungen in einer bestimmten Reihenfolge gestartet werden
und Optionen können in rc.conf
statt fest
im Startskript der Anwendung festgelegt werden. Ein einfaches
Startskript sieht wie folgt aus:
#!/bin/sh # # PROVIDE: utility # REQUIRE: DAEMON # KEYWORD: shutdown . /etc/rc.subr name=utility rcvar=utility_enable command="/usr/local/sbin/utility" load_rc_config $name # # DO NOT CHANGE THESE DEFAULT VALUES HERE # SET THEM IN THE /etc/rc.conf FILE # utility_enable=${utility_enable-"NO"} pidfile=${utility_pidfile-"/var/run/utility.pid"} run_rc_command "$1"
Dieses Skript stellt sicher, dass
utility
nach den
DAEMON
-Pseudodiensten gestartet wird.
Es stellt auch eine Methode bereit, die
Prozess-ID (PID)
der Anwendung in einer Datei zu speichern.
In /etc/rc.conf
könnte für diese
Anwendung die folgende Zeile stehen:
utility_enable="YES"
Die Methode erleichtert den Umgang mit
Kommandozeilenargumenten, bindet Funktionen aus
/etc/rc.subr
ein, ist kompatibel
zu rcorder(8) und lässt sich über
rc.conf
leichter konfigurieren.
Andere Dienste können über inetd(8) gestartet werden. Die Konfiguration von inetd(8) wird in Abschnitt 29.2, „Der inetd „Super-Server““ ausführlich beschrieben.
Systemdienste können auch mit cron(8) gestartet
werden. Dieser Ansatz hat einige Vorteile; nicht zuletzt,
weil cron(8) die Prozesse unter dem Eigentümer der
crontab
startet, ist es möglich, dass
Dienste von normalen Benutzern gestartet und gepflegt werden
können.
Für die Zeitangabe in cron(8) kann
@reboot
eingesetzt werden. Damit wird das
Kommando gestartet, wenn cron(8) kurz nach dem Systemboot
gestartet wird.
Ein sehr nützliches Werkzeug von FreeBSD ist
cron. Dieses Programm läuft im
Hintergrund und überprüft fortlaufend
/etc/crontab
und
/var/cron/tabs
. In diesen Dateien wird
festgelegt, welche Programme zu welchem Zeitpunkt von
cron ausgeführt werden sollen.
Jede Zeile in diesen Dateien definiert eine auszuführende
Aufgabe, die auch als Cronjob bezeichnet
wird.
Das Werkzeug verwendet zwei verschiedene
Konfigurationsdateien: die System-crontab, welche nicht
verändert werden sollte und die Benutzer-crontabs, die nach
Bedarf erstellt und geändert werden können. Das Format, dass
von diesen beiden Dateien verwendet wird, ist in crontab(5)
dokumentiert. Das Format der System-crontab in
/etc/crontab
enthält das Feld
who
, das in der Benutzer-crontab nicht
existiert. Dieses Feld gibt den Benutzer an, mit dem die
Aufgabe ausgeführt wird. Die Aufgaben in den Benutzer-crontabs
laufen unter dem Benutzer, der die crontab erstellt hat.
Benutzer-crontabs erlauben es den Benutzern, ihre eigenen
Aufgaben zu planen. Der Benutzer root
kann auch seine eigene
Benutzer-crontab haben, um Aufgaben zu planen, die nicht in der
System-crontab existieren.
Hier ist ein Beispieleintrag aus der
System-crontab, /etc/crontab
:
# /etc/crontab - root's crontab for FreeBSD # # $FreeBSD$ #SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
# # #minute hour mday month wday who command
# */5 * * * * root /usr/libexec/atrun
Das Zeichen | |
Umgebungsvariablen werden mit dem Gleichheits-Zeichen
( | |
In dieser Zeile werden sieben Felder der System-crontab
beschrieben: | |
Diese Zeile definiert die Werte für den Cronjob. Die
Zeichenfolge Bei den Kommandos können beliebig viele Optionen
angegeben werden. Wenn das Kommando zu lang ist und
auf der nächsten Zeile fortgesetzt werden soll,
muss am Ende der Zeile das Fortsetzungszeichen
( |
Rufen Sie crontab
im Editor-Modus auf,
um eine Benutzer-crontab zu erstellen:
%
crontab -e
Dies wird die crontab des Benutzers mit dem voreingestellten Editor öffnen. Wenn der Benutzer diesen Befehl zum ersten Mal ausführt, wird eine leere Datei geöffnet. Nachdem der Benutzer eine crontab erstellt hat, wird die Datei mit diesem Kommando zur Bearbeitung geöffnet.
Es empfiehlt sich, die folgenden Zeilen an den Anfang der crontab-Datei hinzuzufügen, um die Umgebungsvariablen zu setzen und die einzelnen Felder zu beschreiben:
SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin # Order of crontab fields # minute hour mday month wday command
Fügen Sie dann für jedes Kommando oder Skript eine Zeile
hinzu, mit der Angabe wann das Kommando ausgeführt werden
soll. In diesem Beispiel wird ein Bourne Shell Skript täglich
um 14:00 Uhr ausgeführt. Da der Pfad zum Skript nicht in
PATH
enthalten ist, wird der vollständige
Pfad zum Skript angegeben:
0 14 * * * /usr/home/dru/bin/mycustomscript.sh
Bevor Sie ein eigenes Skript verwenden, stellen Sie sicher, dass es ausführbar ist und dass es mit den wenigen Umgebungsvariablen von cron funktioniert. Um die Umgebung nachzubilden, die der obige cron-Eintrag bei der Ausführung verwenden würde, benutzen Sie dieses Kommando:
%
env -i SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin HOME=/home/
dru
LOGNAME=dru
/usr/home/dru/bin/mycustomscript.sh
Die Umgebung von cron wird in crontab(5) beschrieben. Es ist wichtig, dass sichergestellt wird, dass die Skripte in der Umgebung von cron korrekt arbeiten, besonders wenn Befehle enthalten sind, welche Dateien mit Wildcards löschen.
Wenn Sie mit der Bearbeitung der crontab fertig sind, speichern Sie die Datei. Sie wird automatisch installiert und cron wird die darin enthalten Cronjobs zu den angegebenen Zeiten ausführen. Um die Cronjobs in einer crontab aufzulisten, verwenden Sie diesen Befehl:
%
crontab -l
0 14 * * * /usr/home/dru/bin/mycustomscript.sh
Um alle Cronjobs einer Benutzer-crontab zu löschen, verwenden Sie diesen Befehl:
%
crontab -r
remove crontab for dru?y
FreeBSD verwendet die vom rc(8)-System bereit gestellten
Startskripten beim Systemstart und für die Verwaltung von
Diensten. Die Skripte sind in /etc/rc.d
abgelegt und bieten grundlegende Dienste an, die über die
Optionen start
, stop
und
restart
des service(8) Kommandos
kontrolliert werden können. Beispielsweise kann sshd(8)
mit dem nachstehenden Kommando neu gestartet werden:
#
service sshd restart
Analog können Sie andere Dienste starten und stoppen.
Normalerweise werden die Dienste beim Systemstart über
Einträge in der Datei rc.conf(5) automatisch gestartet.
natd(8) wird zum Beispiel mit dem folgenden
Eintrag in /etc/rc.conf
aktiviert:
natd_enable="YES"
Wenn dort bereits die Zeile
natd_enable="NO"
existiert, ändern Sie
NO
in YES
. Die
rc(8)-Skripten starten, wie unten beschrieben, auch
abhängige Dienste.
Da das rc(8)-System primär
zum automatischen Starten und Stoppen von Systemdiensten
dient, funktionieren die Optionen start
,
stop
und restart
nur,
wenn die entsprechenden Variablen in
/etc/rc.conf
gesetzt sind. Beispielsweise
funktioniert sshd restart
nur dann, wenn in
/etc/rc.conf
die Variable
sshd_enable
auf YES
gesetzt
wurde. Wenn Sie die Optionen start
,
stop
oder restart
unabhängig von den Einstellungen in
/etc/rc.conf
benutzen wollen,
müssen Sie den Optionen mit dem Präfix
„one“ verwenden. Um beispielsweise
sshd
unabhängig von den
Einstellungen in /etc/rc.conf
neu
zu starten, benutzen Sie das nachstehende Kommando:
#
service sshd onerestart
Ob ein Dienst in /etc/rc.conf
aktiviert ist, können Sie herausfinden, indem
Sie das entsprechende rc(8)-Skript
mit der Option rcvar
aufrufen. Dieses Beispiel
prüft, ob der sshd
-Dienst in
/etc/rc.conf
aktiviert ist:
#
service sshd rcvar
# sshd # sshd_enable="YES" # (default: "")
Die Zeile # sshd
wird von dem Kommando
ausgegeben; sie kennzeichnet nicht die Eingabeaufforderung von
root
.
Ob ein Dienst läuft, kann mit status
abgefragt werden. Das folgende
Kommando überprüft, ob sshd
auch wirklich gestartet wurde:
#
service sshd status
sshd is running as pid 433.
Einige Dienste können über die Option
reload
neu initialisiert werden. Dazu wird
dem Dienst über ein Signal mitgeteilt,
dass er seine Konfigurationsdateien neu einlesen soll.
Oft wird dazu das Signal SIGHUP
verwendet. Beachten Sie aber, dass nicht alle Dienste diese
Option unterstützen.
Die meisten Systemdienste werden beim Systemstart vom
rc(8)-System gestartet. Zum Beispiel aktiviert das Skript
/etc/rc.d/bgfsck
die Prüfung von
Dateisystemen im Hintergrund. Das Skript gibt die folgende
Meldung aus, wenn es gestartet wird:
Starting background file system checks in 60 seconds.
Dieses Skript wird während des Systemstarts ausgeführt und führt eine Überprüfung der Dateisysteme im Hintergrund durch.
Viele Systemdienste hängen von anderen Diensten
ab. yp(8) und andere RPC-basierende Systeme hängen
beispielsweise von dem rpcbind
-Dienst
ab. Im Kopf der Startskripten befinden sich
die Informationen über Abhängigkeiten von anderen
Diensten und weitere Metadaten. Mithilfe dieser Daten
bestimmt das Programm rcorder(8) beim Systemstart die
Startreihenfolge der Dienste.
Folgende Schlüsselwörter müssen im Kopf aller Startskripten verwendet werden, da sie von rc.subr(8) zum „Aktivieren“ des Startskripts benötigt werden:
PROVIDE
: Gibt die Namen der Dienste
an, die mit dieser Datei zur Verfügung gestellt
werden.
Die folgenden Schlüsselwörter können im Kopf des Startskripts angegeben werden. Sie sind zwar nicht unbedingt notwendig, sind aber hilfreich beim Umgang mit rcorder(8):
REQUIRE
: Gibt die Namen der Dienste
an, von denen dieser Dienst abhängt. Ein Skript, das dieses
Schlüsselwort enthält wird nach den
angegebenen Diensten ausgeführt.
BEFORE
: Zählt Dienste auf,
die auf diesen Dienst angewiesen sind. Ein Skript, dass
dieses Schlüsselwort enthält wird vor
den angegebenen Diensten ausgeführt.
Durch das Verwenden dieser Schlüsselwörter kann ein Administrator die Startreihenfolge von Systemdiensten feingranuliert steuern, ohne mit den Schwierigkeiten des „runlevel“-Systems anderer UNIX® Systeme kämpfen zu müssen.
Weitere Informationen über das
rc(8)-System finden Sie in rc(8) und
rc.subr(8). Wenn Sie eigene
rc.d
-Skripte schreiben wollen, sollten Sie
diesen Artikel lesen.
Informationen zur Systemkonfiguration sind hauptsächlich
in /etc/rc.conf
, die meist beim Start
des Systems verwendet wird, abgelegt. Sie enthält die
Konfigurationen für die
rc*
Dateien.
In rc.conf
werden die Vorgabewerte
aus /etc/defaults/rc.conf
überschrieben.
Die Vorgabedatei sollte nicht editiert werden. Stattdessen
sollten alle systemspezifischen Änderungen in
rc.conf
vorgenommen werden.
Um den administrativen Aufwand gering zu halten,
existieren in geclusterten Anwendungen mehrere Strategien,
globale Konfigurationen von systemspezifischen Konfigurationen
zu trennen. Der empfohlene Weg hält die globale Konfiguration
in einer separaten Datei z.B.
/etc/rc.conf.local
. Zum Beispiel
so:
/etc/rc.conf
:
sshd_enable="YES" keyrate="fast" defaultrouter="10.1.1.254"
/etc/rc.conf.local
:
hostname="node1.example.org" ifconfig_fxp0="inet 10.1.1.1/8"
/etc/rc.conf
kann dann auf jedes
System mit rsync oder
puppet verteilt werden,
während /etc/rc.conf.local
dabei
systemspezifisch bleibt.
Bei einem Upgrade des Systems wird
/etc/rc.conf
nicht überschrieben, so dass
die Systemkonfiguration erhalten bleibt.
/etc/rc.conf
und
/etc/rc.conf.local
werden von
sh(1) gelesen. Dies erlaubt es dem
Systemadministrator, komplexe Konfigurationsszenarien zu
erstellen. Lesen Sie rc.conf(5), um weitere
Informationen zu diesem Thema zu erhalten.
Die Konfiguration einer Netzwerkkarte gehört zu den alltäglichen Aufgaben eines FreeBSD Administrators.
Ermitteln Sie zunächst das Modell der Netzwerkkarte und den darin verwendeten Chip. FreeBSD unterstützt eine Vielzahl von Netzwerkkarten. Prüfen Sie die Hardware-Kompatibilitätsliste für das FreeBSD Release, um zu sehen ob die Karte unterstützt wird.
Wenn die Karte unterstützt wird, müssen Sie den Treiber
für die Karte bestimmen.
/usr/src/sys/conf/NOTES
und
/usr/src/sys/
enthalten eine Liste der verfügbaren Treiber mit Informationen
zu den unterstützten Chipsätzen. Wenn Sie sich nicht
sicher sind, ob Sie den richtigen Treiber ausgewählt haben,
lesen Sie die Hilfeseite des Treibers. Sie enthält weitere
Informationen über die unterstützten Geräte und bekannte
Einschränkungen des Treibers.arch
/conf/NOTES
Die Treiber für gebräuchliche Netzwerkkarten sind schon im
GENERIC
-Kernel enthalten, so dass die
Karte während des Systemstarts erkannt werden sollte. Die
Systemmeldungen können Sie sich mit
more /var/run/dmesg.boot
ansehen. Mit der
Leertaste können Sie durch den Text blättern. In diesem
Beispiel findet das System zwei Karten, die den
dc(4)-Treiber benutzen:
dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38 000ff irq 15 at device 11.0 on pci0 miibus0: <MII bus> on dc0 bmtphy0: <BCM5201 10/100baseTX PHY> PHY 1 on miibus0 bmtphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto dc0: Ethernet address: 00:a0:cc:da:da:da dc0: [ITHREAD] dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30 000ff irq 11 at device 12.0 on pci0 miibus1: <MII bus> on dc1 bmtphy1: <BCM5201 10/100baseTX PHY> PHY 1 on miibus1 bmtphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto dc1: Ethernet address: 00:a0:cc:da:da:db dc1: [ITHREAD]
Ist der Treiber für die Netzwerkkarte nicht
in GENERIC
enthalten, muss zunächst
ein Treiber geladen werden, um die Karte konfigurieren und
benutzen zu können. Dafür gibt es zwei Methoden:
Am einfachsten ist es, das Kernelmodul für
die Karte mit kldload(8) zu laden. Um den Treiber
automatisch beim Systemstart zu laden, fügen Sie die
entsprechende Zeile in
/boot/loader.conf
ein. Es gibt nicht
für alle Karten Kernelmodule.
Alternativ kann der Treiber für die Karte fest in den
Kernel eingebunden werden. Lesen Sie dazu
/usr/src/sys/conf/NOTES
,
/usr/src/sys/
und die Hilfeseite des Treibers, den Sie in den Kernel
einbinden möchten, an. Die Übersetzung des Kernels
wird in Kapitel 8, Konfiguration des FreeBSD-Kernels beschrieben. Wenn
die Karte während des Systemstarts vom Kernel erkannt
wurde, muss der Kernel nicht neu übersetzt werden.arch
/conf/NOTES
Leider stellen nach wie vor viele Unternehmen die Spezifikationen ihrer Treiber der Open Source Gemeinde nicht zur Verfügung, weil sie diese Informationen als Geschäftsgeheimnisse betrachten. Daher haben die Entwickler von FreeBSD und anderen Betriebssystemen nur zwei Möglichkeiten. Entweder versuchen sie in einem aufwändigen Prozess den Treiber durch Reverse Engineering nachzubauen, oder sie versuchen, die vorhandenen Binärtreiber der Microsoft® Windows®-Plattform zu verwenden.
FreeBSD bietet „native“ Unterstützung für die Network Driver Interface Specification (NDIS). ndisgen(8) wird benutzt, um einen Windows® XP-Treiber in ein Format zu konvertieren, das von FreeBSD verwendet werden kann. Da der ndis(4)-Treiber einen Windows® XP-Binärtreiber nutzt, kann er nur auf i386™- und amd64-Systemen verwendet werden. Unterstützt werden PCI, CardBus, PCMCIA und USB-Geräte.
Um den NDISulator zu verwenden, benötigen Sie drei Dinge:
Die FreeBSD Kernelquellen
Den Windows® XP-Binärtreiber mit der Erweiterung
.SYS
Die Konfigurationsdatei des Windows® XP-Treibers
mit der Erweiterung .INF
Laden Sie die .SYS
- und
.INF
-Dateien für die Karte. Diese
befinden sich meistens auf einer beigelegten CD-ROM, oder
können von der Internetseite des Herstellers
heruntergeladen werden. In den folgenden Beispielen werden
die Dateien W32DRIVER.SYS
und
W32DRIVER.INF
verwendet.
Die Architektur des Treibers muss zur jeweiligen Version von FreeBSD passen. Benutzen Sie einen Windows® 32-bit Treiber für FreeBSD/i386. Für FreeBSD/amd64 wird ein Windows® 64-bit Treiber benötigt.
Als Nächstes kompilieren Sie den binären Treiber, um ein
Kernelmodul zu erzeugen. Dazu rufen Sie als
root
ndisgen(8) auf:
#
ndisgen
/path/to/W32DRIVER.INF
/path/to/W32DRIVER.SYS
Dieses Kommando arbeitet interaktiv, benötigt es weitere Informationen, so fragt es Sie danach. Das Ergebnis ist ein neu erzeugtes Kernelmodul im aktuellen Verzeichnis. Benutzen Sie kldload(8) um das neue Modul zu laden:
#
kldload
./W32DRIVER.ko
Neben dem erzeugten Kernelmodul müssen auch die
Kernelmodule ndis.ko
und
if_ndis.ko
geladen werden. Dies
passiert automatisch, wenn Sie ein von ndis(4)
abhängiges Modul laden. Andernfalls können die Module mit
den folgenden Kommandos manuell geladen werden:
#
kldload ndis
#
kldload if_ndis
Der erste Befehl lädt den ndis(4)-Miniport-Treiber, der zweite das tatsächliche Netzwerkgerät.
Überprüfen Sie die Ausgabe von dmesg(8) auf eventuelle Fehler während des Ladevorgangs. Gab es dabei keine Probleme, sollte die Ausgabe wie folgt aussehen:
ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1 ndis0: NDIS API version: 5.0 ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5 ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps
Ab jetzt kann das Gerät ndis0
wie
jede andere Netzwerkkarte konfiguriert werden.
Um die ndis(4)-Module automatisch beim Systemstart
zu laden, kopieren Sie das erzeugte Modul
W32DRIVER_SYS.ko
nach
/boot/modules
. Danach fügen Sie die
folgende Zeile in /boot/loader.conf
ein:
W32DRIVER_SYS_load="YES"
Nachdem der richtige Treiber für die Karte geladen ist, muss die Karte konfiguriert werden. Unter Umständen ist die Karte schon während der Installation mit bsdinstall(8) konfiguriert worden.
Das nachstehende Kommando zeigt die Konfiguration der Netzwerkkarten an:
%
ifconfig
dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=80008<VLAN_MTU,LINKSTATE> ether 00:a0:cc:da:da:da inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255 media: Ethernet autoselect (100baseTX <full-duplex>) status: active dc1: flags=8802<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=80008<VLAN_MTU,LINKSTATE> ether 00:a0:cc:da:da:db inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255 media: Ethernet 10baseT/UTP status: no carrier lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 options=3<RXCSUM,TXCSUM> inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
Im Beispiel werden Informationen zu den folgenden Geräten angezeigt:
dc0
: Der erste
Ethernet-Adapter.
dc1
: Der zweite
Ethernet-Adapter.
lo0
: Das Loopback-Gerät.
Der Name der Netzwerkkarte wird aus dem Namen des Treibers
und einer Zahl zusammengesetzt. Die Zahl gibt die Reihenfolge
an, in der die Geräte beim Systemstart erkannt wurden. Die
dritte Karte, die den sis(4) Treiber benutzt, würde
beispielsweise sis2
heißen.
Der Adapter dc0
aus dem Beispiel ist
aktiv. Sie erkennen das an den folgenden Hinweisen:
UP
bedeutet, dass die Karte
konfiguriert und aktiv ist.
Der Karte wurde die Internet-Adresse
(inet
)
192.168.1.3
zugewiesen.
Die Subnetzmaske ist richtig
(0xffffff00
entspricht 255.255.255.0
).
Die Broadcast-Adresse
192.168.1.255
ist richtig.
Die MAC-Adresse der Karte (ether
)
lautet
00:a0:cc:da:da:da
.
Die automatische Medienerkennung ist aktiviert
(media: Ethernet autoselect (100baseTX
<full-duplex>)
). Der Adapter
dc1
benutzt das Medium
10baseT/UTP
. Weitere Informationen
über die einstellbaren Medien entnehmen
Sie der Hilfeseite des Treibers.
Der Verbindungsstatus (status
) ist
active
, das heißt es wurde ein
Trägersignal entdeckt. Für dc1
wird
status: no carrier
angezeigt. Das ist
normal, wenn kein Kabel an der Karte angeschlossen
ist.
Wäre die Karte nicht konfiguriert, würde die Ausgabe von ifconfig(8) so aussehen:
dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=80008<VLAN_MTU,LINKSTATE> ether 00:a0:cc:da:da:da media: Ethernet autoselect (100baseTX <full-duplex>) status: active
Die Karte muss als Benutzer root
konfiguriert werden. Die
Konfiguration kann auf der Kommandozeile mit ifconfig(8)
erfolgen. Allerdings gehen diese Informationen bei einem
Neustart verloren. Tragen Sie stattdessen die Konfiguration
in /etc/rc.conf
ein. Wenn es im
LAN einen DHCP-Server
gibt, fügen Sie einfach folgende Zeile hinzu:
ifconfig_dc0="DHCP"
Ersetzen Sie >dc0
durch die
richtigen Werte für das System.
Nachdem Sie die Zeile hinzugefügt haben, folgen Sie den Anweisungen in Abschnitt 11.5.3, „Test und Fehlersuche“.
Wenn das Netzwerk während der Installation konfiguriert
wurde, existieren vielleicht schon Einträge für die
Netzwerkkarte(n). Überprüfen Sie
/etc/rc.conf
bevor Sie weitere Zeilen
hinzufügen.
Falls kein DHCP-Server zur Verfügung steht, müssen die Netzwerkkarten manuell konfiguriert werden. Fügen Sie für jede Karte im System eine Zeile hinzu, wie in diesem Beispiel zu sehen:
ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0" ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP"
Ersetzen Sie dc0
und
dc1
und die
IP-Adressen durch die richtigen Werte für
das System. Die Manualpages des Treibers, ifconfig(8)
und rc.conf(5) enthalten weitere Einzelheiten über
verfügbare Optionen und die Syntax von
/etc/rc.conf
.
Wenn das Netzwerk kein DNS benutzt,
können Sie in /etc/hosts
die Namen und
IP-Adressen der Rechner des
LANs eintragen. Weitere Informationen
entnehmen Sie hosts(5) und
/usr/share/examples/etc/hosts
.
Falls kein DHCP-Server zur Verfügung steht, Sie aber Zugang zum Internet benötigen, müssen Sie das Standard-Gateway und die Nameserver manuell konfigurieren:
#
echo 'defaultrouter="
Ihr_Default_Gateway
"' >> /etc/rc.conf#
echo 'nameserver
Ihr_DNS_Server
' >> /etc/resolv.conf
Nachdem die notwendigen Änderungen in
/etc/rc.conf
gespeichert wurden, kann das
System neu gestartet werden, um die Konfiguration zu testen
und zu überprüfen, ob das System ohne Fehler neu gestartet
wurde. Alternativ können Sie mit folgenden Befehl die
Netzwerkeinstellungen neu initialisieren:
#
service netif restart
Falls in /etc/rc.conf
ein
Default-Gateway definiert wurde, müssen Sie auch den
folgenden Befehl ausführen:
#
service routing restart
Wenn das System gestartet ist, sollten Sie die Netzwerkkarten testen.
Um zu prüfen, ob die Ethernet-Karte richtig konfiguriert ist, testen Sie zunächst mit ping(8) den Adapter selbst und sprechen Sie dann eine andere Maschine im LAN an.
Zuerst, der Test des Adapters:
%
ping -c5 192.168.1.3
PING 192.168.1.3 (192.168.1.3): 56 data bytes 64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms 64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms 64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms 64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms 64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms --- 192.168.1.3 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms
%
ping -c5 192.168.1.2
PING 192.168.1.2 (192.168.1.2): 56 data bytes 64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms 64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms 64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms 64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms 64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms --- 192.168.1.2 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms
Um die Namensauflösung zu testen, verwenden Sie den
Namen der Maschine anstelle der
IP-Adresse. Wenn kein
DNS-Server im Netzwerk vorhanden ist,
muss /etc/hosts
entsprechend
eingerichtet sein. Fügen Sie dazu die Namen und
IP-Adressen der Rechner im
LAN in /etc/hosts
hinzu, falls sie nicht bereits vorhanden sind. Weitere
Informationen finden Sie in hosts(5) und
/usr/share/examples/etc/hosts
.
Fehler zu beheben, ist immer sehr mühsam. Indem Sie die einfachen Sachen zuerst prüfen, erleichtern Sie sich die Aufgabe. Steckt das Netzwerkkabel? Sind die Netzwerkdienste richtig konfiguriert? Funktioniert die Firewall? Wird die Netzwerkkarte von FreeBSD unterstützt? Lesen Sie immer die Hardware-Informationen des Releases, bevor Sie einen Fehlerbericht einsenden. Aktualisieren Sie die FreeBSD-Version auf die neueste -STABLE Version. Suchen Sie in den Archiven der Mailinglisten und im Internet nach bekannten Lösungen.
Wenn die Karte funktioniert, die Verbindungen aber zu langsam sind, sollten Sie tuning(7) lesen. Prüfen Sie auch die Netzwerkkonfiguration, da falsche Einstellungen die Ursache für langsame Verbindungen sein können.
Wenn Sie viele device timeout Meldungen in den Systemprotokollen finden, prüfen Sie, dass es keinen Konflikt zwischen der Netzwerkkarte und anderen Geräten des Systems gibt. Überprüfen Sie nochmals die Verkabelung. Unter Umständen benötigen Sie eine andere Netzwerkkarte.
Bei watchdog timeout Fehlermeldungen, kontrollieren Sie zuerst die Verkabelung. Überprüfen Sie dann, ob der PCI-Steckplatz der Karte Bus Mastering unterstützt. Auf einigen älteren Motherboards ist das nur für einen Steckplatz (meistens Steckplatz 0) der Fall. Lesen Sie in der Dokumentation der Karte und des Motherboards nach, ob das vielleicht die Ursache des Problems sein könnte.
Die Meldung No route to host
erscheint, wenn das System ein Paket nicht zustellen
kann. Das kann vorkommen weil beispielsweise keine
Default-Route gesetzt wurde oder das Netzwerkkabel
nicht richtig steckt. Schauen Sie in der Ausgabe
von netstat -rn
nach, ob eine
gültige Route zu dem Zielsystem existiert. Wenn nicht,
lesen Sie Abschnitt 31.2, „Gateways und Routen“.
Die Meldung ping: sendto: Permission denied wird oft von einer falsch konfigurierten Firewall verursacht. Wenn keine Regeln definiert wurden, blockiert eine aktivierte Firewall alle Pakete, selbst einfache ping(8)-Pakete. Weitere Informationen erhalten Sie in Kapitel 30, Firewalls.
Falls die Leistung der Karte schlecht ist, setzen
Sie die Medienerkennung von autoselect
(automatisch) auf das richtige Medium. In vielen Fällen
löst diese Maßnahme Leistungsprobleme. Wenn
nicht, prüfen Sie nochmal die Netzwerkeinstellungen
und lesen Sie tuning(7).
Ein gebräuchlicher Zweck von FreeBSD ist das virtuelle Hosting, bei dem ein Server im Netzwerk wie mehrere Server aussieht. Dies wird dadurch erreicht, dass einem Netzwerkinterface mehrere Netzwerk-Adressen zugewiesen werden.
Ein Netzwerkinterface hat eine „echte“
Adresse und kann beliebig viele „alias“ Adressen
haben. Die Aliase werden durch entsprechende alias Einträge
in /etc/rc.conf
festgelegt, wie in diesem
Beispiel zu sehen ist:
ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"
Beachten Sie, dass die Alias-Einträge mit
alias
anfangen
müssen und weiter hochgezählt werden, das heißt
0
alias1
, alias2
, und so
weiter. Die Konfiguration der Aliase hört bei der ersten
fehlenden Zahl auf.
Die Berechnung der Alias-Netzwerkmasken ist wichtig. Für
jedes Interface muss es eine Adresse geben, die die
Netzwerkmaske des Netzwerkes richtig beschreibt. Alle anderen
Adressen in diesem Netzwerk haben dann eine Netzwerkmaske, die
mit 1
gefüllt ist, also 255.255.255.255
oder hexadezimal
0xffffffff
.
Als Beispiel betrachten wir den Fall, in dem
fxp0
mit zwei Netzwerken verbunden
ist: dem Netzwerk
10.1.1.0
mit der
Netzwerkmaske
255.255.255.0
und dem
Netzwerk 202.0.75.16
mit der Netzwerkmaske
255.255.255.240
. Das
System soll die Adressen
10.1.1.1
bis
10.1.1.5
und
202.0.75.17
bis
202.0.75.20
belegen.
Nur die erste Adresse in einem Netzwerk sollte die richtige
Netzwerkmaske haben. Alle anderen Adressen
(10.1.1.2
bis
10.1.1.5
und
202.0.75.18
bis
202.0.75.20
) müssen
die Maske
255.255.255.255
erhalten.
Die folgenden Einträge in
/etc/rc.conf
konfigurieren den Adapter
entsprechend dem Beispiel:
ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0" ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255" ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255" ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255" ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255" ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240" ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255" ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255" ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255"
Dies kann mit einer durch Leerzeichen getrennten Liste
von IP-Adressbereichen auch einfacher
ausgedrückt werden. Die erste Adresse hat wieder die angegebene
Netzwerkmaske und die zusätzlichen Adressen haben die
Netzwerkmaske 255.255.255.255
.
ifconfig_fxp0_aliases="inet 10.1.1.1-5/24 inet 202.0.75.17-20/28"
Die Aufzeichnung und Kontrolle von Log-Meldungen ist ein wichtiger Aspekt der Systemadministration. Die Informationen werden nicht nur verwendet um Hard- und Softwarefehler ausfindig zu machen, auch zur Überwachung der Sicherheit und der Reaktion bei einem Zwischenfall spielen diese Aufzeichnungen eine wichtige Rolle. Die meisten Systemdienste und Anwendungen erzeugen Log-Meldungen.
FreeBSD stellt mit syslogd ein
Werkzeug zur Verwaltung von Protokollen bereit. In der
Voreinstellung wird syslogd beim
Booten automatisch gestartet. Dieses Verhalten wird über die
Variable syslogd_enable
in
/etc/rc.conf
gesteuert. Dazu gibt es noch
zahlreiche Argumente, die in der Variable
syslogd_flags
in
/etc/rc.conf
gesetzt werden können. Lesen
Sie syslogd(8) für weitere Informationen über die
verfügbaren Argumente.
Dieser Abschnitt beschreibt die Konfiguration und Verwendung des FreeBSD Protokollservers, und diskutiert auch die Log-Rotation und das Management von Logdateien.
Die Konfigurationsdatei
/etc/syslog.conf
steuert, was
syslogd mit Log-Meldungen macht,
sobald sie empfangen werden. Es gibt verschiedene Parameter,
die das Verhalten bei eingehenden Ereignissen kontrollieren.
facility beschreibt das
Subsystem, welches das Ereignis generiert hat. Beispielsweise
der Kernel, oder ein Daemon.
level hingegen beschreibt den
Schweregrad des aufgetretenen Ereignisses. Dies macht es
möglich, Meldungen in verschiedenen Logdateien zu
protokollieren, oder Meldungen zu verwerfen, je nach
Konfiguration von facility und
level. Ebenfalls besteht die
Möglichkeit auf Meldungen zu reagieren, die von einer
bestimmten Anwendung stammen, oder von einem
spezifischen Host erzeugt wurden.
Die Konfigurationsdatei von syslogd(8) enthält für
jede Aktion eine Zeile. Die Syntax besteht aus einem
Auswahlfeld, gefolgt von einem Aktionsfeld. Die Syntax für
das Auswahlfeld ist facility.level
.
Dies entspricht Log-Meldungen von
facility
mit einem Level von
level
oder höher. Um noch präziser
festzulegen was protokolliert wird, kann dem Level optional
ein Vergleichsflag vorangestellt werden. Mehrere Auswahlen
können, durch Semikolon (;
) getrennt, für
die gleiche Aktion verwendet werden. *
wählt dabei alles aus. Das Aktionsfeld definiert, wohin die
Log-Meldungen gesendet werden, beispielsweise in eine Datei
oder zu einem entfernten Log-Server. Als Beispiel dient hier
/etc/syslog.conf
aus FreeBSD:
# $FreeBSD$
#
# Spaces ARE valid field separators in this file. However,
# other *nix-like systems still insist on using tabs as field
# separators. If you are sharing this file between systems, you$
# may want to use only tabs as field separators here.
# Consult the syslog.conf(5) manpage.
*.err;kern.warning;auth.notice;mail.crit /dev/console
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
security.* /var/log/security
auth.info;authpriv.info /var/log/auth.log
mail.info /var/log/maillog
lpr.info /var/log/lpd-errs
ftp.info /var/log/xferlog
cron.* /var/log/cron
!-devd
*.=debug /var/log/debug.log
*.emerg *
# uncomment this to log all writes to /dev/console to /var/log/console.log
#console.info /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log
# touch /var/log/all.log and chmod it to mode 600 before it will work
#*.* /var/log/all.log
# uncomment this to enable logging to a remote loghost named loghost
#*.* @loghost
# uncomment these if you're running inn
# news.crit /var/log/news/news.crit
# news.err /var/log/news/news.err
# news.notice /var/log/news/news.notice
# Uncomment this if you wish to see messages produced by devd
# !devd
# *.>=info
!ppp
*.* /var/log/ppp.log
!*
In diesem Beispiel:
Zeile 8 selektiert alle Meldungen vom Level
err
, sowie
kern.warning
,
auth.notice
und
mail.crit
und schickt diese zur Konsole
(/dev/console
).
Zeile 12 selektiert alle Meldungen von
mail
ab dem Level
info
oder höher und schreibt diese in
/var/log/maillog
.
Zeile 17 benutzt ein Vergleichsflag
(=
), um nur Meldungen vom Level
debug
zu selektieren und schreibt
diese in /var/log/debug.log
.
Zeile 33 zeigt ein Beispiel für die Nutzung einer
Programmspezifikation. Die
nachfolgenden Regeln sind dann nur für Programme gültig,
welche der Programmspezifikation stehen. In diesem Fall
werden alle Meldungen von ppp
(und keinem anderen Programm) in
/var/log/ppp.log
geschrieben.
Die verfügbaren level,
beginnend mit den höchst kritischen, hin zu den weniger
kritischen, sind:
emerg
, alert
,
crit
, err
,
warning
, notice
,
info
und
debug
.
Die facilities, in
beliebiger Reihenfolge, sind: auth
,
authpriv
, console
,
cron
, daemon
,
ftp
, kern
,
lpr
, mail
,
mark
, news
,
security
, syslog
,
user
, uucp
, sowie
local0
bis local7
.
Beachten Sie, dass andere Betriebssysteme hiervon abweichende
facilities haben
können.
Um alle Meldungen vom Level notice
und
höher in /var/log/daemon.log
zu
protokollieren, fügen Sie folgenden Eintrag hinzu:
daemon.notice /var/log/daemon.log
Für weitere Informationen zu verschiedenen Level und
faclilities, lesen Sie
syslog(3) und syslogd(8). Weitere Informationen
zu /etc/syslog.conf
, dessen Syntax und
erweiterten Anwendungsbeispielen, finden Sie in
syslog.conf(5).
Logdateien können schnell wachsen und viel Speicherplatz belegen, was es schwieriger macht, nützliche Informationen zu finden. Log-Management versucht, diesen Effekt zu mildern. FreeBSD verwendet newsyslog für die Verwaltung von Logdateien. Dieses in FreeBSD integrierte Programm rotiert und komprimiert in regelmäßigen Abständen Logdateien. Optional kann es auch fehlende Logdateien erstellen und Programme benachrichtigen, wenn Logdateien verschoben wurden. Die Logdateien können von syslogd oder einem anderen Programm generiert werden. Obwohl newsyslog normalerweise von cron(8) aufgerufen wird, ist es kein Systemdämon. In der Standardkonfiguration wird dieser Job jede Stunde ausgeführt.
Um zu wissen, welche Maßnahmen zu ergreifen sind, liest
newsyslog seine Konfigurationsdatei
/etc/newsyslog.conf
. Diese
Konfigurationsdatei enthält eine Zeile für jede Datei, die von
newsyslog verwaltet wird. Jede
Zeile enthält Informationen über den Besitzer der Datei, die
Dateiberechtigungen, wann die Datei rotiert wird, optionale
Flags, welche die Log-Rotation
beeinflussen (bspw. Komprimierung) und Programme, denen ein
Signal geschickt wird, wenn Logdateien rotiert werden. Hier
folgt die Standardkonfiguration in FreeBSD:
# configuration file for newsyslog
# $FreeBSD$
#
# Entries which do not specify the '/pid_file' field will cause the
# syslogd process to be signalled when that log file is rotated. This
# action is only appropriate for log files which are written to by the
# syslogd process (ie, files listed in /etc/syslog.conf). If there
# is no process which needs to be signalled when a given log file is
# rotated, then the entry for that file should include the 'N' flag.
#
# The 'flags' field is one or more of the letters: BCDGJNUXZ or a '-'.
#
# Note: some sites will want to select more restrictive protections than the
# defaults. In particular, it may be desirable to switch many of the 644
# entries to 640 or 600. For example, some sites will consider the
# contents of maillog, messages, and lpd-errs to be confidential. In the
# future, these defaults may change to more conservative ones.
#
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]
/var/log/all.log 600 7 * @T00 J
/var/log/amd.log 644 7 100 * J
/var/log/auth.log 600 7 100 @0101T JC
/var/log/console.log 600 5 100 * J
/var/log/cron 600 3 100 * JC
/var/log/daily.log 640 7 * @T00 JN
/var/log/debug.log 600 7 100 * JC
/var/log/kerberos.log 600 7 100 * J
/var/log/lpd-errs 644 7 100 * JC
/var/log/maillog 640 7 * @T00 JC
/var/log/messages 644 5 100 @0101T JC
/var/log/monthly.log 640 12 * $M1D0 JN
/var/log/pflog 600 3 100 * JB /var/run/pflogd.pid
/var/log/ppp.log root:network 640 3 100 * JC
/var/log/devd.log 644 3 100 * JC
/var/log/security 600 10 100 * JC
/var/log/sendmail.st 640 10 * 168 B
/var/log/utx.log 644 3 * @01T05 B
/var/log/weekly.log 640 5 1 $W6D0 JN
/var/log/xferlog 600 7 100 * JC
Jede Zeile beginnt mit dem Namen der Protokolldatei, die
rotiert werden soll, optional gefolgt von Besitzer und Gruppe
für rotierende, als auch für neu erstellte Dateien. Das Feld
mode
definiert die Zugriffsrechte der
Datei. count
gibt an, wie viele rotierte
Dateien aufbewahrt werden sollen. Anhand der
size
- und
when
-Flags
erkennt newsyslog, wann die Datei
rotiert werden muss. Eine Logdatei wird rotiert, wenn ihre
Größe den Wert von size
überschreitet, oder
wenn die Zeit im when
-Feld abgelaufen ist.
Ein *
bedeutet, dass dieses Feld ignoriert
wird. Das flags
-Feld gibt
newsyslog weitere Instruktionen,
zum Beispiel wie eine Datei zu rotieren ist, oder eine Datei
zu erstellen falls diese nicht existiert. Die letzten beiden
Felder sind optional und bestimmen die
PID-Datei und wann die Datei rotiert
wird.
Weitere Informationen zu allen Feldern, gültigen Flags und wie Sie die Rotationszeit angeben können, finden Sie in newsyslog.conf(5). Denken Sie daran, dass newsyslog von cron(8) aufgerufen wird und somit Dateien auch nur dann rotiert, wenn es von cron(8) aufgerufen wird, und nicht häufiger.
Die Überwachung der Protokolldateien kann bei steigender Anzahl von Rechnern sehr unhandlich werden. Eine zentrale Protokollierung kann manche administrativen Belastungen bei der Verwaltung von Protokolldateien reduzieren.
Die Aggregation, Zusammenführung und Rotation von
Protokolldateien kann in FreeBSD mit
syslogd und
newsyslog konfiguriert werden. In
der folgenden Beispielkonfiguration sammelt Host
A
, genannt logserv.example.com
,
Protokollinformationen für das lokale Netzwerk. Host
B
, genannt logclient.example.com
wird
seine Protokollinformationen an den Server
weiterleiten.
Ein Protokollserver ist ein System, welches Protokollinformationen von anderen Hosts akzeptiert. Bevor Sie diesen Server konfigurieren, prüfen Sie folgendes:
Falls eine Firewall zwischen dem Protokollserver und den -Clients steht, muss das Regelwerk der Firewall UDP auf Port 514 sowohl auf Client- als auch auf Serverseite freigegeben werden.
Der syslogd
-Server und alle
Clientrechner müssen gültige Einträge für sowohl
Vorwärts- als auch Umkehr-DNS
besitzen. Falls im Netzwerk kein
DNS-Server vorhanden ist, muss auf
jedem System die Datei /etc/hosts
mit den richtigen Einträgen gepflegt werden. Eine
funktionierende Namensauflösung ist zwingend
erforderlich, ansonsten würde der Server die
Protokollnachrichten ablehnen.
Bearbeiten Sie /etc/syslog.conf
auf
dem Server. Tragen Sie den Namen des Clients ein, den
Verbindungsweg und den Namen der Protokolldatei. Dieses
Beispiel verwendet den Rechnernamen
B
, alle Verbindungswege, und die
Protokolle werden in
/var/log/logclient.log
gespeichert.
Fügen Sie für jeden Client zwei Zeilen hinzu, falls Sie mehrere Clients in diese Datei aufnehmen. Weitere Informationen über die verfügbaren Verbindungswege finden Sie in syslog.conf(5).
Konfigurieren Sie als nächstes
/etc/rc.conf
:
syslogd_enable="YES" syslogd_flags="-a logclient.example.com -v -v"
Der erste Eintrag startet syslogd
während des Bootens. Der zweite Eintrag erlaubt es, Daten
von dem spezifizierten Client auf diesem Server zu
akzeptieren. Die Verwendung von -v -v
erhöht die Anzahl von Protokollnachrichten. Dies ist
hilfreich für die Feineinstellung der Verbindungswege, da
Administratoren auf diese Weise erkennen, welche Arten von
Nachrichten von welchen Verbindungswegen protokolliert
werden.
Mehrere -a
-Optionen können angegeben
werden, um die Protokollierung von mehreren Clients zu
erlauben. IP-Adressen und ganze
Netzblöcke können ebenfalls spezifiziert werden. Eine
vollständige Liste der Optionen finden Sie in
syslogd(8).
Zum Schluss muss die Protokolldatei erstellt werden:
#
touch
/var/log/logclient.log
Zu diesem Zeitpunkt sollte syslogd
neu gestartet und überprüft werden:
#
service
syslogd
restart#
pgrep
syslog
Wenn eine PID zurückgegeben wird,
wurde der Server erfolgreich neu gestartet und die
Clientkonfiguration kann beginnen. Wenn der Server nicht
neu gestartet wurde, suchen Sie in
/var/log/messages
nach dem
Fehler.
Ein Protokollclient sendet Protokollinformationen an einen Protokollserver. Zusätzlich behält er eine lokale Kopie seiner eigenen Protokolle.
Sobald der Server konfiguriert ist, bearbeiten Sie
/etc/rc.conf
auf dem Client:
syslogd_enable="YES" syslogd_flags="-s -v -v"
Der erste Eintrag aktiviert den
syslogd
-Dienst während des Systemstarts.
Der zweite Eintrag erhöht die Anzahl der
Protokollnachrichten. Die Option -s
verhindert, dass dieser Client Protokolle von anderen
Hosts akzeptiert.
Als nächstes muss der Protokollserver in der
/etc/syslog.conf
des Clients
eingetragen werden. In diesem Beispiel wird das
@
-Symbol benutzt, um sämtliche
Protokolldaten an einen bestimmten Server zu senden:
*.* @logserv.example.com
Nachdem die Änderungs gespeichert wurden, muss
syslogd
neu gestartet werden, damit die
Änderungen wirksam werden:
#
service syslogd restart
Um zu testen, ob Protokollnachrichten über das Netzwerk gesendet werden, kann logger(1) auf dem Client benutzt werden, um eine Nachricht an syslogd zu schicken:
#
logger
"Test message from logclient
"
Diese Nachricht sollte jetzt sowohl in
/var/log/messages
auf dem Client, als
auch in /var/log/logclient.log
auf dem
Server vorhanden sein.
Wenn der Server keine Nachrichten empfängt, ist die
Ursache wahrscheinlich ein Netzwerkproblem, ein Problem bei
der Namensauflösung oder ein Tippfehler in einer
Konfigurationsdatei. Um die Ursache zu isolieren, müssen
Sie sicherstellen, dass sich Server und Client über den in
/etc/rc.conf
konfigurierten Hostnamen
mit ping
erreichen lässt. Falls dies
nicht gelingt sollten Sie die Netzwerkverkabelung
überprüfen, außerdem Firewallregeln sowie die Einträge für
Hosts im DNS und
/etc/hosts
. Überprüfen Sie diese Dinge
auf dem Server und dem Client, bis der
ping
von beiden Hosts erfolgreich
ist.
Wenn sich die Hosts gegenseitig mit
ping
erreichen können, der Server aber
immer noch keine Nachrichten empfängt, können Sie
vorübergehend die Ausführlichkeit der Protokollierung
erhöhen, um die Ursache für das Problem weiter einzugrenzen.
In dem folgenden Beispiel ist auf dem Server die Datei
/var/log/logclient.log
leer und in der
Datei /var/log/messages
auf dem Client
ist keine Ursache für das Problem erkennbar. Um nun die
Ausführlichkeit der Protokollierung zu erhöhen, passen Sie
auf dem Server den Eintrag syslogd_flags
an. Anschließend starten Sie den Dienst neu:
syslogd_flags="-d -a logclient.example.com -v -v"
#
service syslogd restart
Informationen wie diese werden sofort nach dem Neustart auf der Konsole erscheinen:
logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart syslogd: restarted logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel Logging to FILE /var/log/messages syslogd: kernel boot file is /boot/kernel/kernel cvthname(192.168.1.10) validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com; rejected in rule 0 due to name mismatch.
In diesem Beispiel werden die Nachrichten aufgrund eines
fehlerhaften Namens abgewiesen. Der Hostname sollte
logclient
und nicht
logclien
sein. Beheben Sie den
Tippfehler, starten Sie den Dienst neu und überprüfen Sie
das Ergebnis:
#
service syslogd restart
logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart syslogd: restarted logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel syslogd: kernel boot file is /boot/kernel/kernel logmsg: pri 166, flags 17, from logserv.example.com, msg Dec 10 20:55:02 <syslog.err> logserv.example.com syslogd: exiting on signal 2 cvthname(192.168.1.10) validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com; accepted in rule 0. logmsg: pri 15, flags 0, from logclient.example.com, msg Dec 11 02:01:28 trhodes: Test message 2 Logging to FILE /var/log/logclient.log Logging to FILE /var/log/messages
Zu diesem Zeitpunkt werden die Nachrichten korrekt empfangen und in die richtige Datei geschrieben.
Wie mit jedem Netzwerkdienst, müssen Sicherheitsanforderungen in Betracht gezogen werden, bevor ein Protokollserver eingesetzt wird. Manchmal enthalten Protokolldateien sensitive Daten über aktivierte Dienste auf dem lokalen Rechner, Benutzerkonten und Konfigurationsdaten. Daten, die vom Client an den Server geschickt werden, sind weder verschlüsselt noch mit einem Passwort geschützt. Wenn ein Bedarf für Verschlüsselung besteht, ist es möglich security/stunnel zu verwenden, welches die Protokolldateien über einen verschlüsselten Tunnel versendet.
Lokale Sicherheit ist ebenfalls ein Thema.
Protokolldateien sind während der Verwendung oder nach ihrer
Rotation nicht verschlüsselt. Lokale Benutzer versuchen
vielleicht, auf diese Dateien zuzugreifen, um zusätzliche
Einsichten in die Systemkonfiguration zu erlangen. Es ist
absolut notwendig, die richtigen Berechtigungen auf diesen
Dateien zu setzen. Das Werkzeug
newsyslog unterstützt
das Setzen von Berechtigungen auf gerade erstellte oder
rotierte Protokolldateien. Protokolldateien mit
Zugriffsmodus 600
sollten verhindern,
dass lokale Benutzer darin herumschnüffeln. Zusätzliche
Informationen finden Sie in newsyslog.conf(5).
Konfigurationsdateien finden sich in einigen Verzeichnissen unter anderem in:
/etc | Enthält generelle systemspezifische Konfigurationsinformationen. |
/etc/defaults | Default Versionen der Konfigurationsdateien. |
/etc/mail | Enthält die sendmail(8) Konfiguration und weitere MTA Konfigurationsdateien. |
/etc/ppp | Hier findet sich die Konfiguration für die User- und Kernel-ppp Programme. |
/usr/local/etc | Installierte Anwendungen legen hier ihre Konfigurationsdateien ab. Dieses Verzeichnis kann Unterverzeichnisse für bestimmte Anwendungen enthalten. |
/usr/local/etc/rc.d | rc(8)-Skripten installierter Anwendungen. |
/var/db | Automatisch generierte systemspezifische Datenbanken, wie die Paket-Datenbank oder die locate(1)-Datenbank. |
Wie ein FreeBSD-System auf das
Internet Domain Name System
(DNS) zugreift, wird in
/etc/resolv.conf
festgelegt.
Die gebräuchlichsten Einträge in
/etc/resolv.conf
sind:
nameserver | Die IP-Adresse eines Nameservers, den der Resolver abfragen soll. Bis zu drei Server werden in der Reihenfolge, in der sie aufgezählt sind, abgefragt. |
search | Suchliste mit Domain-Namen zum Auflösen von Hostnamen. Die Liste wird normalerweise durch den Domain-Teil des lokalen Hostnamens festgelegt. |
domain | Der lokale Domain-Name. |
Beispiel für eine typische
/etc/resolv.conf
:
search example.com nameserver 147.11.1.11 nameserver 147.11.100.30
Nur eine der Anweisungen search
oder domain
sollte benutzt
werden.
Wenn Sie DHCP benutzen, überschreibt
dhclient(8) für gewöhnlich
/etc/resolv.conf
mit den Informationen
vom DHCP-Server.
/etc/hosts
ist eine einfache
textbasierte Datenbank. Zusammen mit DNS
und NIS stellt sie eine Abbildung
zwischen Namen und IP-Adressen zur
Verfügung. Anstatt named(8) zu konfigurieren, können
hier lokale Rechner, die über ein LAN
verbunden sind, eingetragen werden. Lokale Einträge für
gebräuchliche Internet-Adressen in
/etc/hosts
verhindern die Abfrage eines
externen Servers und beschleunigen die
Namensauflösung.
# $FreeBSD$
#
#
# Host Database
#
# This file should contain the addresses and aliases for local hosts that
# share this file. Replace 'my.domain' below with the domainname of your
# machine.
#
# In the presence of the domain name service or NIS, this file may
# not be consulted at all; see /etc/nsswitch.conf for the resolution order.
#
#
::1 localhost localhost.my.domain
127.0.0.1 localhost localhost.my.domain
#
# Imaginary network.
#10.0.0.2 myname.my.domain myname
#10.0.0.3 myfriend.my.domain myfriend
#
# According to RFC 1918, you can use the following IP networks for
# private nets which will never be connected to the Internet:
#
# 10.0.0.0 - 10.255.255.255
# 172.16.0.0 - 172.31.255.255
# 192.168.0.0 - 192.168.255.255
#
# In case you want to be able to connect to the Internet, you need
# real official assigned numbers. Do not try to invent your own network
# numbers but instead get one from your network provider (if any) or
# from your regional registry (ARIN, APNIC, LACNIC, RIPE NCC, or AfriNIC.)
#
/etc/hosts
hat das folgende
Format:
[Internet Adresse] [Offizieller Hostname] [Alias1] [Alias2] ...
Zum Beispiel:
10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2
Weitere Informationen entnehmen Sie bitte hosts(5).
Mit sysctl(8) können Sie Änderungen an einem laufenden FreeBSD-System vornehmen. Unter anderem können Optionen des TCP/IP-Stacks oder des virtuellen Speichermanagements verändert werden. Unter der Hand eines erfahrenen Systemadministrators kann dies die Systemperformance erheblich verbessern. Über 500 Variablen können mit sysctl(8) gelesen und gesetzt werden.
Der Hauptzweck von sysctl(8) besteht darin, Systemeinstellungen zu lesen und zu verändern.
Alle auslesbaren Variablen werden wie folgt angezeigt:
%
sysctl -a
Um eine spezielle Variable zu lesen, geben Sie den Namen an:
%
sysctl kern.maxproc
kern.maxproc: 1044
Um eine Variable zu setzen, benutzen Sie die Syntax
Variable
=
Wert
:
#
sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000
Mit sysctl können Strings, Zahlen oder Boolean-Werte gesetzt
werden. Bei Boolean-Werten steht 1
für wahr und 0
für falsch.
Um die Variablen automatisch während des Systemstarts zu
setzen, fügen Sie sie in /etc/sysctl.conf
ein. Weitere Informationen finden Sie in der Hilfeseite
sysctl.conf(5) und in Abschnitt 11.9.1, „sysctl.conf
“.
/etc/sysctl.conf
sieht ähnlich
wie /etc/rc.conf
aus. Werte werden
in der Form Variable=Wert
gesetzt.
Die angegebenen Werte werden gesetzt, nachdem sich das
System bereits im Mehrbenutzermodus befindet. Allerdings
lassen sich im Mehrbenutzermodus nicht alle Werte
setzen.
Um das Protokollieren von fatalen Signalen abzustellen
und Benutzer daran zu hindern, von anderen Benutzern
gestartete Prozesse zu sehen, können Sie in
/etc/sysctl.conf
die folgenden
Variablen setzen:
# Do not log fatal signal exits (e.g. sig 11) kern.logsigexit=0 # Prevent users from seeing information about processes that # are being run under another UID. security.bsd.see_other_uids=0
Wenn schreibgeschützte sysctl(8)-Variablen verändert werden, ist ein Neustart des Systems erforderlich.
Beispielsweise hat cardbus(4) auf einigen Laptops Schwierigkeiten, Speicherbereiche zu erkennen. Es treten dann Fehlermeldungen wie die folgende auf:
cbb0: Could not map register memory device_probe_and_attach: cbb0 attach returned 12
Um dieses Problem zu lösen, muss eine
schreibgeschützte sysctl(8)-Variable verändert werden.
Fügen Sie hw.pci.allow_unsupported_io_range=1
in /boot/loader.conf
hinzu und starten
Sie das System neu. Danach sollte cardbus(4) fehlerfrei
funktionieren.
Der folgende Abschnitt beschreibt die verschiedenen Methoden zur Feinabstimmung der Laufwerke. Oft sind mechanische Teile in Laufwerken, wie SCSI-Laufwerke, verbaut. Diese können einen Flaschenhals bei der Gesamtleistung des Systems darstellen. Sie können zwar auch ein Laufwerk ohne mechanische Teile einbauen, wie z.B. ein Solid-State-Drive, aber Laufwerke mit mechanischen Teilen werden auch in naher Zukunft nicht vom Markt verschwinden. Bei der Feinabstimmung ist es ratsam, die Funktionen von iostat(8) zu verwenden, um verschiedene Änderungen zu testen und um nützliche IO-Informationen des Systems zu erhalten.
Die sysctl(8)-Variable
vfs.vmiodirenable
besitzt in der
Voreinstellung den Wert 1
. Die Variable
kann auf den Wert 0
(deaktiviert) oder
1
(aktiviert) gesetzt werden. Sie
steuert, wie Verzeichnisse vom System zwischengespeichert
werden. Die meisten Verzeichnisse sind klein und benutzen
nur ein einzelnes Fragment, typischerweise 1 kB, im
Dateisystem und 512 Bytes im Buffer-Cache. Ist
die Variable deaktiviert, wird der Buffer-Cache nur
eine limitierte Anzahl Verzeichnisse zwischenspeichern, auch
wenn das System über sehr viel Speicher verfügt.
Ist die Variable aktiviert, kann der Buffer-Cache
den VM-Page-Cache benutzen, um
Verzeichnisse zwischenzuspeichern. Der ganze Speicher steht
damit zum Zwischenspeichern von Verzeichnissen zur
Verfügung. Der Nachteil bei dieser Vorgehensweise ist, dass
zum Zwischenspeichern eines Verzeichnisses mindestens eine
physikalische Seite im Speicher, die normalerweise 4 kB
groß ist, anstelle von 512 Bytes gebraucht wird. Es
wird empfohlen, diese Option aktiviert zu lassen, wenn Sie
Dienste zur Verfügung stellen, die viele Dateien
manipulieren. Beispiele für solche Dienste sind Web-Caches,
große Mail-Systeme oder Netnews. Die aktivierte
Variable vermindert, trotz des verschwendeten Speichers,
in aller Regel nicht die Leistung des Systems, obwohl Sie
das nachprüfen sollten.
In der Voreinstellung besitzt die
sysctl(8)-Variable vfs.write_behind
den Wert 1
(aktiviert). Mit dieser
Einstellung schreibt das Dateisystem anfallende vollständige
Cluster, die besonders beim sequentiellen Schreiben großer
Dateien auftreten, direkt auf das Medium aus. Dies
verhindert, dass sich im Buffer-Cache veränderte Puffer
(dirty buffers) ansammeln,
die die I/O-Verarbeitung nicht mehr beschleunigen würden.
Unter bestimmten Umständen blockiert diese Funktion
allerdings Prozesse. Setzen Sie in diesem Fall die Variable
vfs.write_behind
auf den Wert
0
.
Die sysctl(8)-Variable
vfs.hirunningspace
bestimmt systemweit
die Menge ausstehender Schreiboperationen, die dem
Platten-Controller zu jedem beliebigen Zeitpunkt übergeben
werden können. Normalerweise können Sie den Vorgabewert
verwenden. Auf Systemen mit vielen Platten kann der Wert
aber auf 4 bis 5 Megabyte erhöht
werden. Ein zu hoher Wert (größer als der
Schreib-Schwellwert des Buffer-Caches) kann zu
Leistungsverlusten führen. Setzen Sie den Wert daher nicht
zu hoch! Hohe Werte können auch Leseoperationen verzögern,
die gleichzeitig mit Schreiboperationen ausgeführt
werden.
Es gibt weitere sysctl(8)-Variablen, mit denen Sie den Buffer-Cache und den VM-Page-Cache beeinflussen können. Es wird nicht empfohlen, diese Variablen zu verändern, da das VM-System den virtuellen Speicher selbst sehr gut verwaltet.
Die sysctl(8)-Variable
vm.swap_idle_enabled
ist für große
Mehrbenutzer-Systeme gedacht, auf denen sich viele Benutzer
an- und abmelden und auf denen es viele Prozesse im Leerlauf
(idle) gibt. Solche Systeme
fragen kontinuierlich freien Speicher an. Wenn Sie die
Variable vm.swap_idle_enabled
aktivieren,
können Sie die Auslagerungs-Hysterese von Seiten mit
den Variablen vm.swap_idle_threshold1
und
vm.swap_idle_threshold2
einstellen. Die
Schwellwerte beider Variablen geben die Zeit in Sekunden an,
in denen sich ein Prozess im Leerlauf befinden muss. Wenn
die Werte so eingestellt sind, dass Seiten früher als nach
dem normalen Algorithmus ausgelagert werden, verschafft das
dem Auslagerungs-Prozess mehr Luft. Aktivieren Sie diese
Funktion nur, wenn Sie sie wirklich benötigen: Die
Speicherseiten werden eher früher als später ausgelagert.
Der Platz im Swap-Bereich wird dadurch schneller verbraucht
und die Plattenaktivitäten steigen an. Auf kleinen
Systemen hat diese Funktion spürbare Auswirkungen. Auf
großen Systemen, die sowieso schon Seiten auslagern müssen,
können ganze Prozesse leichter in den Speicher geladen oder
ausgelagert werden.
Obwohl das Abstellen des
IDE-Schreib-Zwischenspeichers die
Bandbreite zum Schreiben auf die
IDE-Festplatte verringert, kann es aus
Gründen der Datenkonsistenz als notwendig angesehen werden.
Das Problem ist, dass IDE-Platten keine
zuverlässige Aussage über das Ende eines Schreibvorgangs
treffen. Wenn der Schreib-Zwischenspeicher aktiviert ist,
werden die Daten nicht in der Reihenfolge ihres Eintreffens
geschrieben. Es kann sogar passieren, dass das Schreiben
mancher Blöcke im Fall von starker Plattenaktivität auf
unbefristete Zeit verzögert wird. Ein Absturz oder
Stromausfall zu dieser Zeit kann die Dateisysteme erheblich
beschädigen. Sie sollten den Wert der
sysctl(8)-Variable hw.ata.wc
auf dem
System überprüfen. Wenn der Schreib-Zwischenspeicher
abgestellt ist, können Sie ihn beim Systemstart aktivieren,
indem Sie die Variable in
/boot/loader.conf
auf den Wert
1
setzen.
Weitere Informationen finden Sie in ata(4).
Mit der Kerneloption SCSI_DELAY
kann
die Dauer des Systemstarts verringert werden. Der
Vorgabewert ist recht hoch und er verzögert den Systemstart
um 15
oder mehr Sekunden. Normalerweise
kann dieser Wert, insbesondere mit modernen Laufwerken, mit
der sysctl(8)-Variable
kern.cam.scsi_delay
auf
5
Sekunden heruntergesetzt werden. Die
Variable sowie die Kerneloption verwenden für die Zeitangabe
Millisekunden und nicht
Sekunden.
Mit tunefs(8) lassen sich Feineinstellungen an Dateisystemen vornehmen. Das Programm hat verschiedene Optionen. Soft Updates werden wie folgt ein- und ausgeschaltet:
#
tunefs -n enable /filesystem
#
tunefs -n disable /filesystem
Ein eingehängtes Dateisystem kann nicht mit tunefs(8) modifiziert werden. Soft Updates werden am besten im Single-User Modus aktiviert, bevor Partitionen eingehangen sind.
Durch Einsatz eines Zwischenspeichers wird die Performance
im Bereich der Metadaten, vorwiegend beim Anlegen und Löschen
von Dateien, gesteigert. Es wird empfohlen, Soft Updates auf
allen UFS-Dateisystemen zu aktivieren.
Allerdings sollten Sie sich über die zwei Nachteile von Soft
Updates bewusst sein: Erstens garantieren Soft Updates zwar
die Konsistenz der Daten im Fall eines Absturzes, aber es kann
passieren, dass das Dateisystem über mehrere Sekunden oder gar
eine Minute nicht synchronisiert wurde. Nicht geschriebene
Daten gehen dann vielleicht verloren. Zweitens verzögern Soft
Updates die Freigabe von Datenblöcken. Eine größere
Aktualisierung eines fast vollen Dateisystems, wie dem
Root-Dateisystem, z.B. während eines
make installworld
, kann das Dateisystem
vollaufen lassen. Dadurch würde die Aktualisierung
fehlschlagen.
Bei einem Metadaten-Update werden die Inodes und Verzeichniseinträge aktualisiert auf die Platte zurückgeschrieben. Es gibt zwei klassische Ansätze, um die Metadaten des Dateisystems auf die Platte zu schreiben.
Das historisch übliche Verfahren waren synchrone
Updates der Metadaten, d. h. wenn eine Änderung an
einem Verzeichnis nötig war, wurde anschließend
gewartet, bis diese Änderung tatsächlich auf die
Platte zurückgeschrieben worden war. Der
Inhalt der Dateien wurde im
„Buffer Cache“ zwischengespeichert und
später asynchron auf die Platte geschrieben.
Der Vorteil dieser Implementierung ist, dass sie
sicher funktioniert. Wenn während eines Updates ein
Ausfall erfolgt, haben die Metadaten immer einen
konsistenten Zustand. Eine Datei ist entweder komplett
angelegt oder gar nicht. Wenn die Datenblöcke einer
Datei im Fall eines Absturzes noch nicht den Weg aus dem
„Buffer Cache“ auf die Platte gefunden haben,
kann fsck(8) das Dateisystem reparieren, indem es die
Dateilänge einfach auf 0
setzt. Außerdem
ist die Implementierung einfach und überschaubar. Der
Nachteil ist, dass Änderungen der Metadaten sehr
langsam vor sich gehen. Ein rm -r
beispielsweise fasst alle Dateien eines Verzeichnisses
der Reihe nach an, aber jede dieser Änderungen am
Verzeichnis (Löschen einer Datei) wird einzeln synchron
auf die Platte geschrieben. Gleiches beim Auspacken
großer Hierarchien mit tar -x
.
Der zweite Ansatz sind asynchrone Metadaten-Updates.
Das ist der Standard, wenn
UFS-Dateisysteme mit
mount -o async
eingehängt werden. Man
schickt die Updates der Metadaten einfach auch noch
über den „Buffer Cache“, sie werden also
zwischen die Updates der normalen Daten eingeschoben.
Vorteil ist, dass man nun nicht mehr auf jeden Update
warten muss, Operationen, die zahlreiche Metadaten
ändern, werden also viel schneller. Auch
hier ist die Implementierung sehr einfach und wenig
anfällig für Fehler. Nachteil ist, dass
keinerlei Konsistenz des Dateisystems mehr gesichert ist.
Wenn mitten in einer Operation, die viele Metadaten
ändert, ein Ausfall erfolgt (Stromausfall, drücken
des Reset-Schalters), dann ist das Dateisystem
anschließend in einem unbestimmten Zustand. Niemand
kann genau sagen, was noch geschrieben worden ist und was
nicht mehr; die Datenblöcke einer Datei können
schon auf der Platte stehen, während die inode Tabelle
oder das zugehörige Verzeichnis nicht mehr aktualisiert
worden ist. Man kann praktisch kein fsck(8)
mehr implementieren, das diesen Zustand
wieder reparieren kann, da die dazu nötigen
Informationen einfach auf der Platte fehlen. Wenn ein
Dateisystem irreparabel beschädigt wurde, hat man nur noch
die Möglichkeit es neu zu erzeugen und die Daten vom Backup
zurückspielen.
Der Ausweg aus diesem Dilemma ist ein dirty region logging, was auch als Journalling bezeichnet wird. Man schreibt die Metadaten-Updates zwar synchron, aber nur in einen kleinen Plattenbereich, die logging area. Von da aus werden sie dann asynchron auf ihre eigentlichen Bereiche verteilt. Da die logging area ein kleines zusammenhängendes Stückchen ist, haben die Schreibköpfe der Platte bei massiven Operationen auf Metadaten keine allzu großen Wege zurückzulegen, so dass alles ein ganzes Stück schneller geht als bei klassischen synchronen Updates. Die Komplexität der Implementierung hält sich ebenfalls in Grenzen, somit auch die Anfälligkeit für Fehler. Als Nachteil ergibt sich, dass Metadaten zweimal auf die Platte geschrieben werden müssen (einmal in die logging area, einmal an die richtige Stelle), so dass das im Falle regulärer Arbeit (also keine gehäuften Metadatenoperationen) eine „Pessimisierung“ des Falls der synchronen Updates eintritt, es wird alles langsamer. Dafür hat man als Vorteil, dass im Falle eines Absturzes der konsistente Zustand dadurch erzielbar ist, dass die angefangenen Operationen aus dem dirty region log entweder zu Ende ausgeführt oder komplett verworfen werden, wodurch das Dateisystem schnell wieder zur Verfügung steht.
Die Lösung von Kirk McKusick, dem Schöpfer von
Berkeley FFS, waren
Soft Updates: die
notwendigen Updates der Metadaten werden im Speicher
gehalten und dann sortiert auf die Platte geschrieben
(„ordered metadata updates“). Dadurch hat man
den Effekt, dass im Falle massiver
Metadaten-Änderungen spätere Operationen die
vorhergehenden, noch nicht auf die Platte geschriebenen
Updates desselben Elements im Speicher
„einholen“. Alle Operationen, auf ein
Verzeichnis beispielsweise, werden also in der Regel noch im
Speicher abgewickelt, bevor der Update überhaupt auf
die Platte geschrieben wird (die dazugehörigen
Datenblöcke werden natürlich auch so sortiert,
dass sie nicht vor ihren Metadaten auf der Platte
sind). Im Fall eines Absturzes hat man ein implizites
„log rewind“: alle Operationen, die noch nicht
den Weg auf die Platte gefunden haben, sehen danach so aus,
als hätten sie nie stattgefunden. Man hat so also den
konsistenten Zustand von ca. 30 bis 60 Sekunden früher
sichergestellt. Der verwendete Algorithmus garantiert
dabei, dass alle tatsächlich benutzten Ressourcen
auch in den entsprechenden Bitmaps (Block- und inode
Tabellen) als belegt markiert sind. Der einzige Fehler, der
auftreten kann, ist, dass Ressourcen noch als
„belegt“ markiert sind, die tatsächlich
„frei“ sind. fsck(8) erkennt dies und
korrigiert diese nicht mehr belegten Ressourcen. Die
Notwendigkeit eines Dateisystem-Checks darf aus diesem
Grunde auch ignoriert und das Dateisystem mittels
mount -f
zwangsweise eingebunden werden.
Um noch allozierte Ressourcen freizugeben muss
später ein fsck(8) nachgeholt werden. Das ist
dann auch die Idee des background fsck:
beim Starten des Systems wird lediglich ein
Schnappschuss des Dateisystems
gemacht, mit dem fsck(8) dann später arbeiten
kann. Alle Dateisysteme dürfen „unsauber“
eingebunden werden und das System kann sofort in den
Multiuser-Modus gehen. Danach wird ein
Hintergrund-fsck(8) für die Dateisysteme gestartet, die
dies benötigen, um möglicherweise irrtümlich belegte
Ressourcen freizugeben. Dateisysteme ohne
Soft Updates benötigen natürlich immer
noch den üblichen Vordergrund-fsck(8), bevor sie
eingebunden werden können.
Der Vorteil ist, dass die Metadaten-Operationen beinahe so schnell ablaufen wie im asynchronen Fall, also auch schneller als beim logging, das die Metadaten immer zweimal schreiben muss. Als Nachteil stehen dem die Komplexität des Codes, ein erhöhter Speicherverbrauch und einige spezielle Eigenheiten entgegen. Nach einem Absturz ist ein etwas „älterer“ Stand auf der Platte – statt einer leeren, aber bereits angelegten Datei, wie nach einem herkömmlichen fsck(8) Lauf, ist auf einem Dateisystem mit Soft Updates keine Spur der entsprechenden Datei mehr zu sehen, da weder die Metadaten noch der Dateiinhalt je auf die Platte geschrieben wurden. Weiterhin kann der Platz nach einem rm(1) nicht sofort wieder als verfügbar markiert werden, sondern erst dann, wenn der Update auch auf die Platte vermittelt worden ist. Dies kann besonders dann Probleme bereiten, wenn große Datenmengen in einem Dateisystem installiert werden, das nicht genügend Platz hat, um alle Dateien zweimal unterzubringen.
Abhängig von den Anforderungen an das System kann die
sysctl(8)-Variable kern.maxfiles
erhöht oder gesenkt werden. Die Variable legt die maximale
Anzahl von Dateideskriptoren auf dem System fest. Wenn die
Dateideskriptoren aufgebraucht sind, werden Sie die Meldung
file: table is full wiederholt im
Puffer für Systemmeldungen sehen. Den Inhalt des Puffers
können Sie sich mit dmesg(8) anzeigen lassen.
Jede offene Datei, jedes Socket und jede FIFO verbraucht einen Dateideskriptor. Auf „dicken“ Produktionsservern können leicht Tausende Dateideskriptoren benötigt werden, abhängig von der Art und Anzahl der gleichzeitig laufenden Dienste.
In älteren FreeBSD-Versionen wurde die Voreinstellung
von kern.maxfile
aus der
Kernelkonfigurationsoption maxusers
bestimmt. kern.maxfiles
wächst
proportional mit dem Wert von maxusers
.
Wenn Sie einen angepassten Kernel kompilieren, empfiehlt es
sich diese Option entsprechend der maximalen Benutzerzahl
des Systems einzustellen. Obwohl auf einer
Produktionsmaschine vielleicht nicht 256 Benutzer
gleichzeitig angemeldet sind, können die benötigten
Ressourcen ähnlich hoch wie bei einem großen Webserver
sein.
Die nur lesbare sysctl(8)-Variable
kern.maxusers
wird beim Systemstart
automatisch aus dem zur Verfügung stehenden Hauptspeicher
bestimmt. Im laufenden Betrieb kann dieser Wert aus
kern.maxusers
ermittelt werden. Einige
Systeme benötigen für diese Variable einen anderen Wert,
wobei 64
, 128
und
256
gewöhnliche Werte darstellen.
Es wird nicht empfohlen, die Anzahl der Dateideskriptoren
auf einen Wert größer 256
zu setzen, es
sei denn, Sie benötigen wirklich eine riesige Anzahl von
ihnen. Viele der von kern.maxusers
auf
einen Standardwert gesetzten Parameter können beim
Systemstart oder im laufenden Betrieb in
/boot/loader.conf
angepasst werden.
In loader.conf(5) und
/boot/defaults/loader.conf
finden Sie
weitere Details und Hinweise.
Ältere FreeBSD-Versionen setzen diesen Wert selbst, wenn
Sie in der Konfigurationsdatei den Wert 0
[2]
angeben. Wenn Sie den Wert selbst bestimmen wollen,
sollten Sie maxusers
mindestens auf
4
setzen. Dies gilt insbesondere dann,
wenn Sie beabsichtigen, Xorg zu
benutzen oder Software zu kompilieren. Der wichtigste Wert,
der durch maxusers
bestimmt wird, die
maximale Anzahl an Prozessen ist, die auf
20 + 16 * maxusers
gesetzt wird. Wird
maxusers
auf 1
setzen,
können gleichzeitig nur 36
Prozesse
laufen, von denen ungefähr 18
schon beim
Booten des Systems gestartet werden. Dazu kommen nochmals
etwa 15
Prozesse beim Start von
Xorg. Selbst eine einfache
Aufgabe wie das Lesen einer Manualpage benötigt neun
Prozesse zum Filtern, Dekomprimieren und Betrachten der
Datei. Für die meisten Benutzer sollte es ausreichen,
maxusers
auf 64
zu
setzen, womit 1044
gleichzeitige Prozesse
zur Verfügung stehen. Wenn Sie allerdings den Fehler
proc table full beim Start eines
Programms oder auf einem Server mit einer großen
Benutzerzahl sehen, dann sollten Sie den Wert nochmals
erhöhen und den Kernel neu bauen.
Die Anzahl der Benutzer, die sich auf einem
Rechner anmelden kann, wird durch
maxusers
nicht
begrenzt. Der Wert dieser Variablen legt neben der
möglichen Anzahl der Prozesse eines Benutzers weitere
sinnvolle Größen für bestimmte Systemtabellen fest.
Die sysctl(8)-Variable
kern.ipc.soacceptqueue
beschränkt die
Größe der Warteschlange
(Listen-Queue) für neue
TCP-Verbindungen. Der Vorgabewert von
128
ist normalerweise zu klein, um neue
Verbindungen auf einem stark ausgelasteten Webserver
zuverlässig zu handhaben. Auf solchen Servern sollte
der Wert auf 1024
oder höher gesetzt
werden. Dienste wie sendmail(8) oder
Apache können die Größe
der Queue selbst einschränken. Oft gibt es die
Möglichkeit, die Größe der Listen-Queue in
einer Konfigurationsdatei einzustellen. Eine große
Listen-Queue übersteht vielleicht auch einen
Denial of Service Angriff (DoS).
Die Kerneloption NMBCLUSTERS
schreibt
die Anzahl der Netzwerkpuffer (Mbufs) fest, die das System
besitzt. Eine zu geringe Anzahl Mbufs auf einem Server mit
viel Netzwerkverkehr verringert die Leistung von FreeBSD. Jeder
Mbuf-Cluster nimmt ungefähr 2 kB Speicher in Anspruch, so
dass ein Wert von 1024
insgesamt
2 Megabyte Speicher für Netzwerkpuffer im System
reserviert. Wie viele Cluster benötigt werden, lässt sich
durch eine einfache Berechnung herausfinden. Ein Webserver,
der maximal 1000
gleichzeitige Verbindungen
servieren soll, wobei jede der Verbindungen einen 6 kB
großen Sendepuffer und einen 16 kB großen Empfangspuffer
benötigt, braucht ungefähr 32 MB Speicher für
Netzwerkpuffer. Als Daumenregel verdoppeln Sie diese Zahl, so
dass sich für NMBCLUSTERS
der Wert
2x32 MB / 2 kB=
64 MB / 2 kB=
32768
ergibt. Für Maschinen mit viel
Speicher werden Werte zwischen 4096
und
32768
empfohlen. Unter keinen Umständen
sollten Sie diesen Wert willkürlich erhöhen, da dies zu einem
Absturz beim Systemstart führen kann. Verwenden Sie
netstat(1) mit -m
um den Gebrauch der
Netzwerkpuffer zu kontrollieren.
Die Netzwerkpuffer können beim Systemstart mit der
Loader-Variablen kern.ipc.nmbclusters
eingestellt werden. Nur auf älteren FreeBSD-Systemen
müssen Sie die Kerneloption