Kapitel 10. Systemadministration

10.1. Wo befinden sich die Konfigurationsdateien für den Systemstart?
10.2. Wie kann ich am Einfachsten einen Benutzer hinzufügen?
10.3. Warum erhalte ich Meldungen wie “root: not found”, nachdem ich meine crontab geändert habe?
10.4. Wieso meldet mir su(1)you are not in the correct group to su root”, wenn ich mit su(1) root werden will?
10.5. Ich habe einen Fehler in der rc.conf oder einer der anderen Dateien für den Systemstart und jetzt kann ich sie nicht ändern, weil das Dateisystem “read-only” ist. Was kann ich tun?
10.6. Wieso habe ich habe Probleme, meinen Drucker einzurichten?
10.7. Wie kann ich die Tastaturbelegung meines Systems korrigieren?
10.8. Wieso erhalte ich beim Start des Systems Meldungen wie “unknown: <PNP0303> can't assign resources”?
10.9. Wieso funktionieren die Benutzer-Quotas nicht richtig?
10.10. Unterstützt FreeBSD IPC-Grundfunktionen von System V?
10.11. Welchen Mail-Server kann ich an Stelle von Sendmail benutzen?
10.12. Was kann ich machen, wenn ich das Rootpasswort vergessen habe?
10.13. Wie verhindere ich, dass das System mit Ctrl+Alt+Delete rebootet werden kann?
10.14. Wie kann ich Textdateien von DOS Systemen auf UNIX® Systemen verwenden?
10.15. Wie beende ich Prozesse namentlich?
10.16. Warum nervt su mich damit, dass ich nicht in der ACL von root bin?
10.17. Wie deinstalliere ich Kerberos?
10.18. Wo ist /dev/MAKEDEV hin?
10.19. Wie füge ich Pseudo-Terminals zum System hinzu?
10.20. Warum kann ich das Gerät snd0 nicht erstellen?
10.21. Wie lade ich /etc/rc.conf und starte /etc/rc neu, ohne zu rebooten?
10.22. Ich wollte auf das aktuelle -STABLE updaten, und plötzlich läuft hier ein -BETAx, -RC oder -PRERELEASE. Was ist passiert?
10.23. Als ich versucht habe, einen neuen Kernel zu installieren, ist das chflags fehlgeschlagen. Was mache ich jetzt?
10.24. Ich kann die Systemzeit nicht um mehr als eine Sekunde verstellen. Was mache ich jetzt?
10.25. Warum braucht rpc.statd(8) 256 MByte Speicher?
10.26. Warum kann ich das Dateiattribut schg nicht löschen?
10.27. Warum funktioniert die .shosts Authentifizierung von SSH in neueren Version von FreeBSD nicht mehr?
10.28. Was ist vnlru?
10.29. Was bedeuten die Zustände, die top für Speicherseiten ausgibt?
10.30. Wie viel freien Speicher hat mein System?
10.31. Ich kann /var/empty nicht löschen!

10.1. Wo befinden sich die Konfigurationsdateien für den Systemstart?

/etc/defaults/rc.conf (siehe rc.conf(5)) ist die primäre Konfigurationsdatei. Die Startskripten des Systems, wie /etc/rc und /etc/rc.d (siehe rc(8)) inkludieren diese Datei. Ändern Sie diese Datei nicht! Wenn Sie den Wert einer der in /etc/defaults/rc.conf gesetzten Variablen ändern wollen, fügen Sie die entsprechende Zeile in die Datei /etc/rc.conf ein und ändern die Zeile dort.

Wenn Sie zum Beispiel den mitgelieferten DNS-Server named aktivieren wollen, müssen Sie lediglich das folgende Kommando eingeben:

# echo named_enable="YES" >> /etc/rc.conf

Wenn Sie lokale Server starten wollen, müssen Sie passende Shellskripten im Verzeichnis /usr/local/etc/rc.d/ ablegen. Die Dateien müssen als ausführbar markiert sein und die Endung .sh haben.

10.2. Wie kann ich am Einfachsten einen Benutzer hinzufügen?

Benutzen Sie den Befehl adduser(8) und für kompliziertere Fälle den Befehl pw(8).

Benutzen Sie den Befehl rmuser(8), um einen Benutzer wieder zu löschen. Sie können, wenn nötig. auch pw(8) benutzen.

10.3. Warum erhalte ich Meldungen wie “root: not found”, nachdem ich meine crontab geändert habe?

Die übliche Ursache dieses Problems ist, dass Sie die crontab des Systems (/etc/crontab) geändert und dann mit crontab(1) installiert haben:

# crontab /etc/crontab

Diese Vorgehensweise ist falsch. Die crontab des Systems hat ein anderes Format als die crontabs für die einzelnen Benutzer, die mit crontab(1) aktualisiert werden (genauere Informationen über die Unterschiede erhalten Sie in crontab(5)).

Wenn Sie so vorgegangen sind, ist die zweite crontab einfach nur eine Kopie von /etc/crontab, allerdings im falschen Format. Löschen Sie sie mit dem folgenden Befehl:

# crontab -r

Wenn Sie /etc/crontab wieder ändern müssen, sollten Sie einfach gar nichts tun, um cron(8) über die Änderung zu informieren, er erkennt die Änderung automatisch.

Wenn Sie ein Kommando jeden Tag, jede Woche oder jeden Monat ausführen lassen wollen, ist es wahrscheinlich einfacher, wenn Sie entsprechende Shell-Scripte in /usr/local/etc/periodic ablegen. Diese werden dann von periodic(8) zusammen mit den anderen regelmäßigen Tätigkeiten ausgeführt.

Der eigentliche Grund für den Fehler ist die Tatsache, dass die crontab des Systems ein zusätzliches Feld enthält; dieses Feld gibt an, mit welcher Benutzerkennung der Befehl ausgeführt werden soll. In der mitgelieferten crontab ist das bei allen Einträgen die Benutzerkennung root. Wenn diese Datei als die crontab des Benutzers username (die nicht mit der crontab des Systems identisch ist) verwendet wird, hält cron(8) die Zeichenkette root für den Namen des zu startenden Programmes, aber dieses Programm gibt es nicht.

10.4. Wieso meldet mir su(1)you are not in the correct group to su root”, wenn ich mit su(1) root werden will?

Das ist ein Sicherheits-Feature. Wenn Sie mit su(1) zum Account root (oder jedem anderen Account mit Super-User-Privilegien) wechseln wollen, müssen Sie ein Mitglied der Gruppe wheel sein. Wenn es dieses Feature nicht gäbe, könnte jeder, der einen Account auf dem System hat und zufällig das Passwort für root erfährt, mit Super-User-Rechten auf das System zugreifen. Durch dieses Feature ist die Lage anders, wenn Sie nicht Mitglied von wheel sind, können Sie nicht einmal versuchen, dass Passwort einzugeben.

Um einem Benutzer zu erlauben, mit su(1) root zu werden, müssen Sie ihn nur in die Gruppe wheel eintragen.

10.5. Ich habe einen Fehler in der rc.conf oder einer der anderen Dateien für den Systemstart und jetzt kann ich sie nicht ändern, weil das Dateisystem “read-only” ist. Was kann ich tun?

Wenn Sie aufgefordert werden, den Pfadnamen der Shell einzugeben, drücken Sie einfach ENTER. Geben Sie danach mount / ein, um das Root-Dateisystem im Schreib/Lese-Modus zu mounten. Sie werden wahrscheinlich auch mount -a -t ufs ausführen müssen, um das Dateisystem mit Ihrem Lieblingseditor zu mounten. Wenn Ihr Lieblingseditor auf einem Netzwerklaufwerk liegt, müssen Sie entweder das Netzwerk von Hand konfigurieren oder einen Editor benutzen, der auf einem lokalen Laufwerk vorhanden ist, z.B. ed(1).

Wenn Sie einen bildschirmorientierten Editor wie zum Beispiel vi(1) oder emacs(1) benutzen wollen, werden Sie auch den Befehl export TERM=cons25 ausführen müssen, damit diese Editoren die richtigen Einstellungen aus der Datenbank termcap(5) übernehmen.

Sobald Sie diese Schritte ausgeführt, können Sie den Fehler in der /etc/rc.conf ganz normal beheben. Die Fehlermeldungen, die Ihnen unmittelbar nach den Startmeldungen des Kernels angezeigt wurden, sollten Ihnen die Nummer der Zeile mit dem Fehler melden.

10.6. Wieso habe ich habe Probleme, meinen Drucker einzurichten?

Bitte sehen Sie im Handbucheintrag über Drucker nach. Es sollte die meisten Ihrer Probleme behandeln. Lesen sie den Handbucheintrag über Drucker.

Einige Drucker benötigen einen auf dem Rechner laufenden Treiber, um drucken zu können. Diese so genannten “WinPrinter” oder “GDI-Drucker” werden von FreeBSD nicht unterstützt und an diesem Zustand wird sich wohl auch nichts ändern. Wenn Ihr Drucker nicht unter DOS oder Windows NT® 4.0 verwendet werden kann, handelt es sich um einen “WinPrinter” und wird in der Regel auch nicht unter FreeBSD funktionieren. Ihre einzige Chance, einen dieser Drucker benutzen können, ist der Port ports/print/pnm2ppa.

10.7. Wie kann ich die Tastaturbelegung meines Systems korrigieren?

Informationen dazu finden Sie im Kapitel länderspezifische Einstellungen des Handbuchs, insbesondere im Abschnitt Konfiguration der Konsole.

10.8. Wieso erhalte ich beim Start des Systems Meldungen wie “unknown: <PNP0303> can't assign resources”?

Die nachfolgende Erklärung stammt aus einer Mail auf der Mailingliste freebsd-current.

 

Die Geräte, für die “can't assign resources”-Meldungen ausgegeben werden, sind “Legacy ISA”Geräte, für die ein nicht PNP-fähiger Treiber in den Kernel eingebunden wurde. Dabei handelt es sich um Geräte wie den Tastaturkontroller, den programmierbaren Interrupt-Kontroller und diverse andere Standardkomponenten. Die Ressourcen können nicht zugewiesen werden, weil es schon einen Treiber gibt, der diese Ressourcen benutzt.

 
--Garrett Wollman , 24 April 2001  

10.9. Wieso funktionieren die Benutzer-Quotas nicht richtig?

  • Benutzen Sie keine Quotas für /.

  • Erstellen Sie die Quotas-Datei in dem Dateisystem, für das die Quotas gelten sollen, z.B.:

    Filesystem Quota file
    /usr /usr/admin/quotas
    /home /home/admin/quotas
    ... ...

10.10. Unterstützt FreeBSD IPC-Grundfunktionen von System V?

Ja, FreeBSD unterstützt IPC im Stil von System V einschließlich gemeinsamen Speicher, Nachrichten und Semaphoren. Ab FreeBSD 3.2 ist System V IPC im GENERIC-Kernel enthalten. Frühere FreeBSD-Versionen benötigen die folgenden Zeilen in der Kernelkonfigurationsdatei:

options    SYSVSHM
options    SYSVSHM          # enable shared memory
options    SYSVSEM          # enable for semaphores
options    SYSVMSG          # enable for messaging
         

Kompilieren und installieren Sie einen neuen Kernel.

10.11. Welchen Mail-Server kann ich an Stelle von Sendmail benutzen?

Sendmail ist zwar der Mail-Server, der bei FreeBSD standardmäßig installiert wird, aber Sie können Ihn problemlos durch einen anderen MTA (z.B. aus den Ports) ersetzen.

In der Port-Sammlung gibt es bereits viele verschiedene MTAs, mail/exim, mail/postfix, mail/qmail, sowie mail/zmailer sind einige der beliebteren Alternativen.

Konkurrenz belebt das Geschäft und die Tatsache, dass Sie die Qual der Wahl haben, ist ein Vorteil. Daher sollten Sie Fragen wie “Ist Sendmail besser als Qmail?” besser nicht auf den Mailinglisten stellen. Wenn Sie dieses Thema interessiert, sollten sie zunächst die Archive durchsehen. Die Vorteile und Nachteile jedes einzelnen der verfügbaren MTAs sind schon mehrere Male bis zur Erschöpfung diskutiert worden.

10.12. Was kann ich machen, wenn ich das Rootpasswort vergessen habe?

Keine Panik! Starten Sie Ihr System einfach neu und geben Sie boot -s an der Eingabeaufforderung Boot: ein (bei FreeBSD-Versionen vor 3.2 nur -s), um in den Einzelbenutzermodus zu gelangen. Bei der Frage danach, welche Shell benutzt werden soll, drücken Sie einfach ENTER. Nun erscheint die Eingabeaufforderung #. Geben Sie mount -u / ein, um Ihr Root-Dateisystem für Lese- und Schreibzugriffe zu remounten und dann mount -a, um alle Dateisysteme zu remounten. Mit passwd root können Sie das Rootpasswort ändern und mit exit(1) können Sie mit dem Booten fortfahren.

10.13. Wie verhindere ich, dass das System mit Ctrl+Alt+Delete rebootet werden kann?

Falls Sie syscons (den Standard-Treiber für die Konsole) benutzen, fügen Sie folgende Zeile in Ihre Kernelkonfigurationsdatei ein:

options SC_DISABLE_REBOOT

Falls Sie den Konsolen-Treiber PCVT verwenden, benutzen Sie stattdessen die folgende Zeile:

options PCVT_CTRL_ALT_DEL

10.14. Wie kann ich Textdateien von DOS Systemen auf UNIX® Systemen verwenden?

Benutzen Sie einfach diesen Perl-Befehl:

% perl -i.bak -npe 's/\r\n/\n/g' file ...

file ist/sind die zu verarbeitende(n) Datei(en). Die Änderungen erfolgen in der Originaldatei, die zuvor mit der Erweiterung .bak gesichert wird.

Alternativ können Sie den Befehl tr(1) benutzen:

% tr -d '\r' < dos-text-file > unix-file

dos-text-file ist die Datei, die den Text im DOS-Format enthält und unix-file wird die konvertierte Ausgabe enthalten. Diese Möglichkeit könnte etwas schneller sein, als die Benutzung von Perl.

10.15. Wie beende ich Prozesse namentlich?

Benutzen Sie killall(1).

10.16. Warum nervt su mich damit, dass ich nicht in der ACL von root bin?

Der Fehler stammt vom verteilten Authentifizierungssystem Kerberos. Das Problem ist nicht ernsthaft, aber störend. Sie können entweder su mit der Option -K benutzen, oder Kerberos deinstallieren, wie in der nächsten Frage beschrieben.

10.17. Wie deinstalliere ich Kerberos?

Um Kerberos aus dem System zu entfernen, müssen Sie die bin-Distribution der von Ihnen benutzen RELEASE neu installieren. Wenn Sie die CDROM besitzen, können Sie sie mounten (wir nehmen an, unter /cdrom) und folgende Schritte ausführen:

# cd /cdrom/bin
# ./install.sh

Alternativ können Sie alle Zeilen mit MAKE_KERBEROS aus der /etc/make.conf entfernen und dann ein make world durchführen.

10.18. Wo ist /dev/MAKEDEV hin?

Ab FreeBSD 5.X werden Geräte automatisch von devfs(8) zur Verfügung gestellt. Die Gerätetreiber erstellen die Gerätedateien, wenn diese benötigt werden. Das Skript /dev/MAKEDEV wird nicht mehr gebraucht.

Wenn Sie FreeBSD 4.X oder eine frühere Version benutzen und /dev/MAKEDEV fehlt, dann haben Sie ein Problem. Kopieren Sie das Skript aus den Systemquellen. Es liegt wahrscheinlich unter /usr/src/etc/MAKEDEV.

10.19. Wie füge ich Pseudo-Terminals zum System hinzu?

Wenn Sie viele Benutzer von telnet, ssh, X oder screens haben, könnte es sein, dass Ihnen die Pseudo-Terminals ausgehen. So fügen Sie weitere hinzu:

  1. Erstellen und installieren Sie einen neuen Kernel mit der Zeile

    pseudo-device pty 256
    

    in der Konfigurationsdatei.

  2. Führen Sie die Befehle

    # cd /dev
    # ./MAKEDEV pty{1,2,3,4,5,6,7}
    

    aus, um 256 Geräteeinträge für die neuen Terminals zu erstellen.

  3. Editieren Sie die Datei /etc/ttys und fügen Sie Zeilen für jeden der 256 Terminals ein. Sie sollten so aussehen, wie die existierenden Einträge, also etwa so:

    ttyqc none network
    

    Die Reihenfolge der Buchstabenzuordnung lautet mit einem regulären Ausdruck tty[pqrsPQRS][0-9a-v].

  4. Starten Sie das System mit dem neuen Kernel erneut, wenn Sie bereit sind.

10.20. Warum kann ich das Gerät snd0 nicht erstellen?

Es gibt kein Gerät snd. Diese Bezeichnung ist nur ein Sammelbegriff für die diversen Geräte, die zusammen das Soundsystem von FreeBSD bilden, wie zum Beispiel mixer, sequencer, und dsp.

So erzeugen Sie diese Geräte:

# cd /dev
# sh MAKEDEV snd0

Anmerkung: Lassen Sie diesen Schritt aus, wenn Sie FreeBSD 5.0-RELEASE oder eine neuere Version mit devfs(5) verwenden. Die Gerätedateien werden in diesem Fall automatisch in /dev erstellt.

10.21. Wie lade ich /etc/rc.conf und starte /etc/rc neu, ohne zu rebooten?

Gehen Sie in den Einzelbenutzermodus und dann zurück in den Mehrbenutzermodus.

Geben Sie auf der Konsole folgendes ein:

# shutdown now
(Hinweis: ohne -r oder -h)
# return
# exit

10.22. Ich wollte auf das aktuelle -STABLE updaten, und plötzlich läuft hier ein -BETAx, -RC oder -PRERELEASE. Was ist passiert?

Kurze Antwort: Das ist nur ein anderer Name. RC ist die Abkürzung für “Release Candidate”. Es bedeutet, dass eine neue Release bevorsteht. Und -PRERELEASE bedeutet bei FreeBSD normalerweise, dass die Sourcen zur Vorbereitung auf eine Release “eingefroren” wurden (in einigen Releases wurde -BETA anstelle von -PRERELEASE verwendet).

Ausführliche Antwort: Bei FreeBSD gibt es zwei Quellen für Releases. Die Major Releases wie 3.0-RELEASE und 4.0-RELEASE werden aus dem aktuellen Stand des Hauptzweiges der Entwicklung (besser und kürzer als -CURRENT bekannt) erzeugt. Minor Releases wie 3.1-RELEASE or 4.2-RELEASE stammen aus dem aktiven -STABLE Zweig. Seit 4.3-RELEASE gibt es es nun auch einen eigenen Zweig für jede Release, der für die Leute gedacht ist, die ein sehr konservativ weiterentwickeltes System benötigen (im Normalfall also nur Updates aus dem Bereich Sicherheit).

Bevor in einem Zweig eine Release erfolgt, muss in diesem Zweig ein bestimmter Prozess ablaufen. Ein Teil dieses Prozesses ist der “code freeze”, der Stop der Weiterentwicklung. Sobald dieser Schritt erfolgt ist, wird der Name des Zweiges geändert, um anzuzeigen, dass demnächst eine Release erfolgen wird. Wenn der Zweig zum Beispiel 4.5-STABLE genannt wurde, wird der Name in 4.6-PRERELEASE geändert, um dies zu verdeutlichen. Weiterhin ist das ein Zeichen, dass jetzt besonders intensiv getestet werden sollte. In dieser Phase können Fehler im Sourcecode noch korrigiert werden. Wenn der Sourcecode so weit “gereift” ist, dass eine Release erstellt werden kann, wird der Name in 4.6-RC geändert, um genau dies anzuzeigen. In dieser Phase können nur noch extrem wichtige Korrekturen aufgenommen werden. Sobald die Release (in diesem Beispiel 4.6-RELEASE) erfolgt ist, wird der Zweig in 4.6-STABLE umbenannt.

Weitere Informationen über Versionsnummern und die verschiedenen Entwicklungszweige enthält der Artikel Release Engineering.

10.23. Als ich versucht habe, einen neuen Kernel zu installieren, ist das chflags fehlgeschlagen. Was mache ich jetzt?

Kurze Antwort: Ihre Sicherheitseinstellung (der securelevel) ist wahrscheinlich größer als 0. Sie müssen das System neu starten und den Kernel im Single-User Modus installierten.

Ausführliche Antwort: Wenn die Sicherheitseinstellung größer als 0 ist, erlaubt Ihnen FreeBSD nicht, die Systemflags zu ändern. Um den aktuellen Securelevel zu ermitteln, können Sie das folgende Kommando benutzen:

# sysctl kern.securelevel

Sie können die Sicherheitseinstellung nicht verringern, Sie müssen das System neu starten und den Kernel im Single-User Mode installieren oder die Sicherheitseinstellung in /etc/rc.conf ändern und dann das System neu starten. Weitere Detail zur Sicherheitseinstellung erhalten Sie in init(8), weitere Informationen zur rc.conf erhalten Sie in /etc/defaults/rc.conf und rc.conf(5).

10.24. Ich kann die Systemzeit nicht um mehr als eine Sekunde verstellen. Was mache ich jetzt?

Kurze Antwort: Ihre Sicherheitseinstellung (der securelevel) ist wahrscheinlich größer als 1. Sie müssen das System neu starten und die Systemzeit im Single-User Modus verstellen.

Ausführliche Antwort: Wenn die Sicherheitseinstellung größer als 1 ist, erlaubt Ihnen FreeBSD nicht, die Systemzeit zu ändern. Um den aktuellen Securelevel zu ermitteln, können Sie das folgende Kommando benutzen:

# sysctl kern.securelevel

Sie können die Sicherheitseinstellung nicht verringern, Sie müssen das System neu starten und die Systemzeit im Single-User Mode ändern oder die Sicherheitseinstellung in /etc/rc.conf ändern und dann das System neu starten. Weitere Detail zur Sicherheitseinstellung erhalten Sie in init(8), weitere Informationen zur rc.conf erhalten Sie in /etc/defaults/rc.conf und rc.conf(5).

10.25. Warum braucht rpc.statd(8) 256 MByte Speicher?

Nein, das Programm hat keinen Fehler und es verbraucht auch nicht 256 MByte Speicher. Das Programm hat nur eine Vorliebe dafür, einen übertrieben großen Speicherbereich in seinen eigenen Adressraum zu projizieren. Von einem rein technischen Standpunkt aus ist das nichts verwerfliches, allerdings verwirrt es Programme wie top(1) und ps(1).

rpc.statd(8) projiziert seine Statusdatei (die in /var liegt) in seinen Adressraum. Um die Probleme zu vermeiden, die bei einer Vergrößerung dieser Projektion entstehen könnte, wird gleich ein möglichst großer Speicherbereich benutzt. Dies kann man sehr schön im Sourcecode sehen: Die Längenangabe beim Aufruf von mmap(2) ist 0x10000000, ein sechzehntel des Adressraums bei IA32, oder genau 256 MByte.

10.26. Warum kann ich das Dateiattribut schg nicht löschen?

Sie betreiben Ihr System mit einer erhöhten Sicherheitsstufe. Senken Sie die Sicherheitsstufe und versuchen Sie es dann noch einmal. Weitere Informationen erhalten Sie im FAQ Eintrag über Sicherheitsstufen und in der Online-Hilfe init(8).

10.27. Warum funktioniert die .shosts Authentifizierung von SSH in neueren Version von FreeBSD nicht mehr?

Die .shosts Authentifizierung funktioniert nicht mehr, weil ssh(1) in neueren Versionen von FreeBSD nicht mehr SUID-root installiert wird. Um dieses Problem zu “lösen”, gibt es die folgenden Möglichkeiten:

  • Um das Problem für immer zu lösen, müssen Sie in /etc/make.conf die Variable ENABLE_SUID_SSH auf true setzen und ssh neu übersetzen (oder make world ausführen.

  • Übergangsweise können Sie auch die Dateirechte von /usr/bin/ssh auf 4555 setzen, indem Sie den Befehl chmod 4555 /usr/bin/ssh als root ausführen. Fügen Sie anschließend ENABLE_SUID_SSH= true in die Datei /etc/make.conf ein, damit diese Änderung erhalten bleibt, wenn Sie das nächste Mal make world ausführen.

10.28. Was ist vnlru?

vnlru schreibt vnodes auf Platte und gibt sie wieder frei, falls das System die Grenzwert kern.maxvnodes erreicht. Dieser Thread des Kernel tut meistens gar nichts und wird nur aktiv, wenn Sie extrem viel RAM haben und gleichzeitig auf viele zehntausende kleine Dateien zugreifen.

10.29. Was bedeuten die Zustände, die top für Speicherseiten ausgibt?

Speicherseiten werden vom Kernel in verschiedenen Listen verwaltet:

  • Active: Seiten, die vor Kurzem benutzt wurden.

  • Inactive: Seiten, die länger nicht benutzt wurden.

  • Cache: Meistens Seiten, die vorher im Zustand Inactive waren und noch gültige Daten enthalten. Diese Seiten können sofort in ihrem alten Kontext oder in einem neuen Kontext verwendet werden. Wenn eine Seite unverändert (clean) ist, kann ein Zustandswechsel direkt von Active nach Cache erfolgen. Ob dieser Zustandswechsel möglich ist, wird durch die Seitenersetzungsstrategie bestimmt, die der Entwickler des VM-Systems festgelegt hat.

  • Free: Seiten, die keine Daten enthalten. Diese Seiten können sofort benutzt werden, wenn Seiten im Zustand Cache nicht benutzt werden können. Seiten im Zustand Free können auch während eines Interrupts angefordert werden.

  • Wired: Seiten, die fest im Speicher liegen und nicht ausgelagert werden können. Normalerweise werden solche Seiten vom Kernel benutzt, manchmal werden Sie aber auch für spezielle Zwecke von Prozessen verwendet.

Seiten im Zustand Inactive werden oft auf Plattenspeicher geschrieben (sozusagen ein sync des VM-Systems). Wenn die CPU erkennen kann, das eine Seite unmodifiziert (clean) ist, kann auch eine Active-Seite auf den Plattenspeicher ausgeschrieben werden. In bestimmten Situationen ist es von Vorteil, wenn ein Block von VM-Seiten, unabhängig von seinem Zustand, ausgeschrieben werden kann. Die Inactive-Liste enthält wenig benutzte Seiten, die ausgeschrieben werden könnten. Seiten im Zustand Cached sind schon ausgeschrieben und stehen Prozessen für die Verwendung im alten oder in einem neuen Kontext zur Verfügung. Seiten im Zustand Cache sind nicht ausreichend geschützt und können während Unterbrechungen nicht benutzt werden.

Die eben beschriebene Behandlung von Speicherseiten kann durch weitere Zustände (wie das das Busy-Flag) verändert werden.

10.30. Wie viel freien Speicher hat mein System?

Es gibt verschiedene Arten von “freiem Speicher”. Eine Art ist die Speichermenge, die sofort, ohne etwas auszulagern, zur Verfügung steht. Der gesamte VM-Bereich ist eine weitere Art des “freien Speichers”. Die Betrachtung ist komplex, hängt aber von der Größe des Swap-Bereichs und der Größe des Arbeitsspeichers ab. Es gibt weitere Definitionen für “freien Speicher”, die aber alle relativ nutzlos sind. Wichtig ist hingegen, dass wenig Seiten ausgelagert werden (paging) und der Swap-Bereich ausreichend groß ist.

10.31. Ich kann /var/empty nicht löschen!

Das Verzeichnis /var/empty wird von sshd(8) benötigt, wenn es mit “Privilege Separation” läuft. Das Verzeichnis /var/empty ist leer, gehört root und ist durch das Dateiattribut schg geschützt.

Wir empfehlen Ihnen, das Verzeichnis zu belassen. Sollten Sie es aber trotzdem löschen wollen, müssen Sie zuerst das schg-Attribut entfernen. Schauen Sie sich dazu die Hilfeseite chflags(1) an und beachten Sie die Antwort auf die Frage wie das schg-Attribut entfernt wird.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.