Kapitel 17 Das SuSE Linux-Bootkonzept Das Booten und die Initialisierung eines UNIX-Systems bereiten selbst ei- nem erfahrenen System-Administrator ein leichtes Kribbeln. Dieses Kapitel gibt eine kurze Einführung in das Bootkonzept von SuSE Linux. Dieses Kon- zept ist komplexer, aber auch wesentlich flexibler als das der meisten an- deren Linux-Systeme. Es ist auf dem Bootkonzept einer modernen System V-Workstation begründet, wie es zum Beispiel in [Fri93] beschrieben ist. Mit den lapidaren Worten "Uncompressing Linux..." übernimmt der so genannte Kernel das Regiment über die gesamte Hardware des Sys- tems. Er prüft und setzt die Konsole1, um danach die Einstellungen im BIOS zu lesen und die elementaren Schnittstellen des Mainboards zu initia- lisieren. In den nächsten Schritten proben" die einzelnen Treiber ­ die ja Bestandteil des Kernels sind ­ die vorhandene Hardware, um sie gegebe- nenfalls zu initialisieren. Nach dem Partitionscheck" und dem Mounten des Root-Dateisystems2 startet der Kernel das Programm /sbin/init, welches das eigentliche System mit seinen vielen Dienstprogrammen und deren Konfigu- ration hochfährt3. Der Kernel verwaltet weiterhin das gesamte System, also Rechenzeit der einzelnen Programme und deren Hardware-Zugriffe. 17.1 Das init-Programm Das Programm /sbin/init ist der für die korrekte Initialisierung des Systems zuständige Prozess; es ist sozusagen der Vater aller Prozesse" im System. Unter allen Programmen nimmt init eine Sonderrolle ein: init wird direkt vom Kernel gestartet und ist immun gegen das Signal 9, mit dem normalerweise jeder Prozess gekillt" werden kann. Alle weiteren Prozesse werden entweder von init selbst oder von einem seiner Kindprozesse" gestartet. Konfiguriert wird init zentral über die Datei /etc/inittab; hier werden die so genannten Runlevel" definiert (mehr dazu im nächsten Abschnitt) und es wird festgelegt, was in den einzelnen Levels geschehen soll. Ab- hängig von den Einträgen in /etc/inittab werden von init verschiede- ne Skripten gestartet, die aus Gründen der Übersichtlichkeit im Verzeichnis /sbin/init.d zusammengefasst sind. 1 Genauer die BIOS-Register der Graphikkarte und das Ausgabeformat auf den Bildschirm. 2 Anbinden der Root-Partition an das Verzeichnis /. 3 UNIX-Jargon :-) 439 17. Das SuSE Linux-Bootkonzept Der gesamte Hochlauf des Systems ­ und natürlich auch das Herunterfahren ­ wird somit einzig und allein vom init-Prozess gesteuert; in diesem Sinne lässt sich der Kernel quasi als Hintergrundprozess" betrachten, dessen Auf- gabe darin besteht, die gestarteten Prozesse zu verwalten, ihnen Rechenzeit zuzuteilen und den Zugriff auf die Hardware zu ermöglichen und zu kontrol- lieren. 17.2 Die Runlevel Unter Linux existieren verschiedene so genannte Runlevel, die definieren, welchen Zustand das System haben soll. Der Standard-Runlevel, in dem das System beim Booten hochfährt, ist in der Datei /etc/inittab durch den Eintrag initdefault festgelegt. Für gewöhnlich ist dies 2 oder 3 (siehe Tabelle 17.1). Alternativ kann der gewünschte Runlevel beim Booten (z. B. am Boot-Prompt) angegeben werden; der Kernel gibt Parameter, die er nicht selbst auswertet, unverändert an den init-Prozess weiter. Um zu einem späteren Zeitpunkt in einen anderen Runlevel zu wechseln, kann einfach init mit der Nummer des zugehörigen Runlevels aufgerufen werden; natürlich kann das Wechseln des Runlevels nur vom Systemad- ministrator veranlasst werden. Beispielsweise gelangt man durch das Kommando root@erde:/ > init S in den so genannten single user mode, der der Pflege und Administration des Systems dient. Nachdem der Systemadministrator seine Arbeit beendet hat, kann er durch root@erde:/ > init 2 das System wieder in den normalen Runlevel hochfahren lassen, in dem alle für den Betrieb erforderlichen Programme laufen und sich die einzelnen User beim System anmelden können. Die Tabelle 17.1 gibt einen Überblick über die zur Verfügung stehenden Run- level. Runlevel 1 sollte auf einem System, dessen /usr-Partition via NFS gemountet ist, nicht verwendet werden! Runlevel Bedeutung 0 Halt S Single User Mode 1 Multi User ohne Netzwerk 2 Multi User mit Netzwerk (Standard) 3 Multi User mit Netzwerk und Xdm 4 Frei 5 Frei 6 Reboot Tabelle 17.1: Liste der gültigen Runlevel unter Linux Daraus folgt insbesondere, dass Sie das System auch durch 440 17.3. Wechsel des Runlevels root@erde:/ > init 0 anhalten, bzw. durch root@erde:/ > init 6 neu starten können. Wenn Sie auf Ihrem Rechner das X Window System bereits korrekt konfigu- riert haben (Abschnitt 8.1 auf Seite 236) und möchten, dass sich die Benutzer direkt an der grafischen Oberfläche beim System anmelden, so können Sie den Standard-Runlevel in /etc/inittab einfach auf 3 ändern. Bevor Sie dies tun, sollten Sie erst einmal durch Eingabe von root@erde:/ > init 3 testen, ob das System so wie von Ihnen gewünscht funktioniert. Eine zerstörte /etc/inittab kann dazu führen, dass das System nicht mehr korrekt hochgefahren wird. Gehen Sie bei Veränderungen dieser Datei deshalb mit ganz besonderer Sorgfalt vor. ­ Als Notnagel können Sie in einem solchen Fall versuchen, am LILO-Prompt den Parameter init=/bin/sh zu übergeben, um direkt in eine Shell zu booten (vgl. auf Seite 118); also in dieser Art: boot: linux init=/bin/sh 17.3 Wechsel des Runlevels Generell passieren bei einem Wechsel des Runlevels folgende Dinge: Die so genannten Stopp-Skripten des gegenwärtigen Runlevels werden ausgeführt ­ dabei werden typischerweise verschiedene, in diesem Level laufende Pro- gramme beendet ­ und die Start-Skripte des neuen Runlevels werden ausge- führt. Während eines solchen Vorgangs werden in den meisten Fällen einige Programme gestartet. Um dies zu verdeutlichen, betrachten wir an einem Beispiel, den Wechsel von Runlevel 2 nach Runlevel 3: * Der Administrator (`root') teilt dem init-Prozess mit, dass der Runle- vel gewechselt werden soll: root@erde:/ > init 3 * init konsultiert die Konfigurationsdatei /etc/inittab und stellt fest, dass das Skript /sbin/init.d/rc mit dem neuen Runlevel als Para- meter aufgerufen werden muss. * Nun ruft rc alle Stopp-Skripten des gegenwärtigen Runlevels auf, für die im neuen Runlevel kein Start-Skript existiert; in unserem Beispiel sind dies alle Skripte, die sich im Verzeichnis /sbin/init.d/rc2.d befinden (der alte Runlevel war 2) und mit einem `K'4 beginnen. Die nach dem `K' folgende Zahl gewährleistet, dass hierbei eine bestimmte Reihenfolge eingehalten wird, da unter Umständen manche Programme von anderen abhängig sind. 4 Die Namen der Stopp-Skripten beginnen immer mit `K' (engl. kill), die der Start-Skripten mit `S' (engl. start). 441 17. Das SuSE Linux-Bootkonzept * Als letztes werden die Start-Skripten des neuen Runlevels aufgerufen; diese liegen in unserem Beispiel unter /sbin/init.d/rc3.d und beginnen mit einem `S'. Auch hierbei wird eine bestimmte Reihenfolge eingehalten, die durch die dem `S' folgende Zahl festgelegt ist. Wenn Sie in denselben Runlevel wechseln, in dem Sie sich bereits befinden, liest init nur seine /etc/inittab ein, prüft sie auf Veränderungen und nimmt bei Bedarf die entsprechenden Maßnahmen vor; beispielsweise das Starten eines getty auf einer weiteren Schnittstelle. 17.4 Die Init-Skripten Konzept Die Skripten unter /sbin/init.d unterteilen sich in zwei Kategorien: * Skripte, die direkt von init aufgerufen werden: Dies ist nur beim Boo- ten der Fall sowie bei einem sofortigen Herunterfahren des Systems (bei Stromausfall oder durch Drücken der Tastenkombination Strg + Alt + Entf durch den Anwender). * Skripte, die indirekt von init aufgerufen werden: Das geschieht bei ei- nem Wechsel des Runlevels; hier wird generell das übergeordnete Skript /sbin/init.d/rc ausgeführt, das dafür sorgt, dass die relevanten Skripten in der korrekten Reihenfolge aufgerufen werden. Alle Skripten befinden sich unter /sbin/init.d. Die Skripten für das Wechseln des Runlevels befinden sich ebenfalls in diesem Verzeichnis, wer- den jedoch grundsätzlich als symbolischer Link aus einem der Unterverzeich- nisse /sbin/init.d/rc0.d bis /sbin/init.d/rc6.d aufgerufen. Dies dient der Übersichtlichkeit und vermeidet, dass Skripten mehrfach vor- handen sein müssen, etwa weil sie in verschiedenen Runlevels verwendet werden sollen. Da jedes dieser Skripten sowohl als Start- wie auch als Stopp- Skript aufgerufen werden kann, müssen sie alle die beiden möglichen Para- meter start und stop verstehen. Beispiel Beim Verlassen des Runlevels 2 wird /sbin/init.d/rc2.d/K40network aufgerufen; /sbin/init.d/rc ruft das Skript /sbin/init.d/ network mit dem Parameter stop auf. Beim Eintritt in Runlevel 3 wird letztlich das gleiche Skript gestartet, diesmal jedoch mit dem Parameter start. Die Links in den einzelnen Runlevel-spezifischen Unterverzeichnissen dienen somit also nur dazu, eine Zuordnung der einzelnen Skripten zu bestimmten Runlevels zu ermöglichen. Boot und Im folgenden finden Sie eine kurze Beschreibung der ersten Boot- und der Shutdown letzten Shutdown-Skripten sowie des Steuerskripts: * boot Wird beim Start des Systems ausgeführt und direkt von init gestartet. Es ist unabhängig vom gewünschten Default-Runlevel und wird nur genau ein einziges Mal ausgeführt. Hier wird der Kernel-Daemon gestartet, der das automatische Laden von Kernel-Modulen übernimmt. Es werden die Dateisysteme geprüft, etwaige überflüssige Dateien unter /var/lock gelöscht und das Netzwerk für das Loopback-Device konfiguriert, sofern 442 17.4. Die Init-Skripten dies in /etc/rc.config eingetragen ist. Weiterhin wird die System- zeit gesetzt und Plug-and-Play-Hardware wird mit den isapnp-Tools konfiguriert (vgl. Abschnitt 10.2.1 auf Seite 290). Tritt beim Prüfen und automatischen Reparieren der Dateisysteme ein schwerer Fehler auf, hat der Systemadministrator nach Eingabe des Root- Passwortes die Möglichkeit, manuell eine Lösung des Problems herbei- zuführen. Diesem Skript ist des Weiteren das Verzeichnis /sbin/init.d/ boot.d zugeordnet; alle in diesem Verzeichnis gefundenen Skripte, die mit `S' beginnen, werden automatisch beim Hochlauf des Systems ausgeführt. Dies ist die richtige Stelle für eigene Erweiterungen, die nur einmal beim Start aktiviert werden sollen. Schließlich wird als letztes das Skript boot.local ausgeführt. * boot.local Hier können weitere Dinge eingetragen werden, die beim Start gesche- hen sollen, bevor das System in einen der Runlevels eintritt; es kann von der Funktion her quasi mit der vielleicht von DOS her gewohnten AUTOEXEC.BAT verglichen werden. * boot.setup Grundlegende Einstellungen, die beim Übergang vom single user mode in irgendeinen Runlevel vorgenommen werden müssen. Hier werden die Tastaturbelegung und die Konsolenkonfiguration gela- den. * halt Dieses Skript wird nur beim Eintritt in den Runlevel 0 oder 6 ausgeführt. Dabei wird es entweder unter dem Namen halt oder dem Namen reboot aufgerufen. Abhängig davon, wie halt aufgerufen wurde, wird das System neu gestartet oder ganz heruntergefahren. * rc Das übergeordnete Skript, das bei jedem Wechsel des Runlevels aufge- rufen wird. Es führt die Stopp-Skripten des gegenwärtigen Runlevels aus und danach die Start-Skripten des neuen. Eigene Skripten lassen sich anhand dieses Konzepts hinzufügen; ein Ge- Eigene Skripte rüst ist in /sbin/init.d/skeleton vorbereitet. Um die Ausführung eines eigenen Skripts über die /etc/rc.config zu steuern, sollte ei- ne -Variable dort hinterlegt und dann im eigenen Skript ab- gefragt werden; zusätzliche Parameter sollten nur im begründeten Einzel- fall in der /etc/rc.config eingetragen werden (vgl. z. B. das Skript /sbin/init.d/gpm). Nun sind Links von dem jeweiligen rc-Verzeichnis auf das neue Skript an- zulegen, damit das Skript ­ wie oben beschrieben (Abschnitt 17.3 auf Sei- te 441) ­ beim Wechsel des Runlevels ausgeführt wird; die Namengebung für die Links wird ebendort beleuchtet. Die technischen Details werden in der Manual-Page von init.d (man 7 init.d) dargestellt. 443 17. Das SuSE Linux-Bootkonzept Beim Erstellen eigener Skripten ist Vorsicht geboten ­ ein fehlerhaf- tes Skript ist in der Lage, den Rechner aufzuhängen"; vgl. oben Ab- schnitt 17.2 auf Seite 440, falls einmal nichts mehr gehen sollte ... 17.5 /etc/rc.config und SuSEconfig Praktisch die gesamte Konfiguration von SuSE Linux kann über die zentra- le Konfigurationsdatei /etc/rc.config vorgenommen werden. In die- ser Datei werden eine Reihe von Umgebungsvariablen gesetzt, die unter an- derem von den Init-Skripten ausgewertet werden; jedes der Skripten unter /sbin/init.d lädt ( sourcet") als erstes die Datei /etc/rc.config, um die aktuell gültigen Werte der einzelnen Variablen zu übernehmen. Seit SuSE Linux 6.0 lagern Pakete mit umfangreichen Einstellungsmög- lichkeiten ihre Variablen in einzelne Dateien in das Verzeichnis /etc/ rc.config.d aus; dies ist z. B. bei Paket sendmail oder Paket i4l (ISDN) der Fall. Im Folgenden wird jedoch vereinfachend zumeist nur von /etc/rc. config gesprochen, auch wenn mitunter eine ausgelagerte Datei vorhan- den ist! Darüber hinaus können viele weitere Konfigurationsdateien des Systems in Abhängigkeit von /etc/rc.config generiert werden; diese Aufga- be wird von /sbin/SuSEconfig erledigt. So wird beispielsweise nach einer Änderung der Netzwerkkonfiguration die Datei /etc/resolv.conf neu erzeugt, da sie abhängig von der Art der Konfiguration ist. Wenn Sie Änderungen an /etc/rc.config vornehmen, müssen Sie nach- folgend immer SuSEconfig aufrufen, um sicherzustellen, dass Ihre Einstel- lungen auch an allen relevanten Stellen wirksam werden. Verändern Sie die Konfiguration mit YaST, brauchen Sie sich darum nicht explizit zu kümmern; YaST startet automatisch SuSEconfig, wodurch die betroffenen Dateien auf den aktuellen Stand gebracht werden. Dieses Konzept ermöglicht es, grundlegende Änderungen an der Konfigura- tion des Rechners vornehmen zu können, ohne die Maschine neu booten zu müssen. Da manche Einstellungen sehr tiefgreifend sind, müssen jedoch un- ter Umständen einige Programme neu gestartet werden, um die Änderungen wirksam werden zu lassen. Diese Vorgehensweise wurde zum Beispiel bei der Konfiguration des Netzwerks beschrieben (siehe Abschnitt 5.2 auf Seite 154), wo durch Verwendung der Kommandos erde: # /sbin/init.d/network stop erde: # /sbin/init.d/network start erreicht wurde, dass die von der Änderung betroffenen Programme neu ge- startet wurden. Wie Sie sehen, können die Init-Skripten auch von Hand auf- gerufen werden. Generell ist für das Konfigurieren des Systems folgender Weg zu empfehlen: * Bringen Sie das System in den single user mode": erde: # init S 444 17.6. Die /etc/rc.config-Variablen ­ Konfiguration des Systems Alternativ können Sie auch den Runlevel 1 verwenden, bei dem Sie zu- sätzlich die Möglichkeit haben, sich auf mehreren Konsolen einzuloggen: erde: # init 1 * Nehmen Sie die gewünschten Änderungen an der Konfigurationsdatei /etc/rc.config vor. Dies kann mit einem beliebigen Editor ge- schehen oder mit YaST unter dem Punkt `Konfigurationsdatei verändern' (siehe Abschnitt 17.6). * Führen Sie SuSEconfig aus, um die Änderungen in die verschiedenen weiteren Konfigurationsdateien eintragen zu lassen. Dies geschieht au- tomatisch, wenn Sie die Datei /etc/rc.config mit YaST geändert haben. * Bringen Sie das System in den vorherigen Runlevel zurück: erde: # init 2 Diese Vorgehensweise ist natürlich nur bei sehr weitreichenden Änderungen an den Einstellungen des Systems erforderlich (z. B. Netzwerkkonfiguration); bei einfachen Aufgaben ist es nicht erforderlich, für die Administration in den single user mode" zu wechseln; jedoch stellen Sie damit sicher, dass auch wirklich alle von der Änderung betroffenen Programme neu gestartet werden. Um die automatische Konfiguration via SuSEconfig grundsätzlich abzu- schalten, kann die Variable in der /etc/ rc.config gesetzt werden (vgl. aber die Warnung auf dieser Seite); es ist auch möglich, mittels geeigneter rc.config-Variablen die Auto- Konfiguration nur gezielt zu disablen". 17.6 Die /etc/rc.config-Variablen Im Folgenden werden die einzelnen Parameter des Systems und ihre Ein- stellungen kurz beschrieben. Wenn Sie /etc/rc.config, die Konfigura- tionsdatei, nicht mit YaST bearbeiten, achten Sie darauf, dass Sie einen leeren Parameter als zwei aufeinanderfolgende Anführungszeichen schreiben (z. B. KEYTABLE="") und Parameter, die Leerzeichen enthalten, in Anführungs- striche einschließen. Bei Variablen, die nur aus einem Wort bestehen, sind die Anführungszeichen nicht nötig. In der folgenden Beschreibung hat jeder Parameter einen Wert, um anhand eines Beispiels die möglichen Einstellungen zu verdeutlichen: Grundeinstellungen * ENABLE_SUSECONFIG=yes Legt fest, ob SuSEconfig der Konfiguration vornehmen soll. Bitte auf kei- nen Fall ausschalten, falls Sie Installationssupport in Anspruch nehmen wollen ;-) * MAIL_REPORTS_TO=tux Festlegen, an wen SuSEconfig Reporte zur System-Administration per E-Mail schicken soll. 445 17. Das SuSE Linux-Bootkonzept * GMT=-u Wenn Ihre Hardware-Uhr auf GMT (Greenwich Mean Time) eingestellt ist, setzen Sie diese Variable auf -u5, anderenfalls lassen Sie die Variable leer. Diese Einstellung ist relevant für das automatische Umstellen von Sommer- auf Winterzeit und umgekehrt. * TIMEZONE=CET Die Zeitzone, in der Sie wohnen bzw. den Rechner betreiben. Diese Ein- stellung ist auch wichtig für die automatische Umstellung von Sommer- auf Winterzeit und umgekehrt. * LANGUAGE="german" Wird von YaST gesetzt, wenn mit `Sprache festlegen' eine Än- derung vorgenommen wird (vgl. Abschnitt 3.3.1 auf Seite 82). Dieser Wert gilt auch als Fallback, wenn LANG bzw. die LC_*-Variablen nicht gesetzt sind (s. u.); in einem solchen Fall wird der hier eingetragene Wert über die Datei /usr/share/locale/locale.alias aufgelöst. * RC_LANG="de_DE" Setzt LANG für locale; hiermit kann für die lokalen Benutzer eine Vorga- be eingestellt wird. Dieser Wert kommt solange zum Tragen, wie keine speziellen RC_LC_*-Variablen benutzt werden. Die einschlägigen rc.config-Variablen lauten: RC_LC_ALL (hiermit kann man die LC_* wie auch LANG überschreiben!), RC_LC_MESSAGES, RC_LC_CTYPE, RC_LC_MONETARY, RC_LC_NUMERIC, RC_LC_TIME und RC_LC_COLLATE. Vgl. Manual-Page von locale (man 5 locale). * ROOT_USES_LANG="no" Sollen auch für `root' die locale-Einstellungen verwendet werden? * INIT_SCRIPT_USE_LANG="no" locale in init-Skripten verwenden? Besser nicht ;-) * ENABLE_SYSRQ="no" Interna des Kernels betrachten. Vor Anwendungen bitte unbedingt /usr/ src/linux/Documentation/sysrq.txt lesen! Lokale Hardware initialisieren (Tastatur, Modem, Maus, PCMCIA etc.) * KEYTABLE=de-latin1-nodeadkeys Definiert die Tastaturbelegung. * KBD_NUMLOCK=no NumLock beim Booten nicht einschalten. * KBD_CAPSLOCK=no CapsLock beim Booten nicht einschalten. * KBD_TTY="tty1 tty2 tty3 tty4 tty5 tty6" NumLock und CapsLock kann auf bestimmte TTYs beschränkt werden; gequoted steht für alle TTYs. * KBD_RATE=30 Bestimmt die Geschwindigkeit der automatischen Tastaturwiederholung. Mögliche Eingaben sind von zweimal bis zu 30 mal pro Sekunde. Damit 5 Das -u ist ein Kürzel für universal time. 446 17.6. Die /etc/rc.config-Variablen ­ Konfiguration des Systems diese Einstellung wirkt, muss gleichfalls die Dauer der Verzögerung (vgl. KBD_DELAY) festgelegt werden! * KBD_DELAY=250 Hier können Sie die Verzögerung einstellen, nach der die automatische Wiederholfunktion einsetzt. Der Wert ist in Millisekunden, das Raster ist jedoch nicht sehr genau. Sie müssen auch KBD_RATE einstellen! * CONSOLE_FONT=mr.fnt Der Font, der für die Konsole geladen wird. Nicht alle Fonts un- terstützen die deutschen Umlaute! Mit YaST können Sie bequem die Fonts durchprobieren und denjenigen einstellen, der Ihnen am besten gefällt. Zusatzeinstellungen sind: CONSOLE_SCREENMAP, CONSOLE_UNICODEMAP und CONSOLE_MAGIC. * MODEM=/dev/ttyS1 Die Schnittstelle, an der das Modem angeschlossen ist. Von YaST bzw. SuSEconfig wird ein Link von /dev/modem auf das angegebene Device angelegt. * MOUSE=/dev/ttyS2 Die Schnittstelle, an der die Maus angeschlossen ist. Von YaST bzw. SuSEconfig wird ein Link von /dev/mouse auf das angegebene Device angelegt. * START_GPM=yes Steuert, ob der Maus-Support für die Konsole gestartet wird; damit kann zwischen verschiedenen virtuellen Konsolen mit der Maus Text ausge- tauscht werden. Gpm ist problematisch im Zusammenhang mit manchen Busmäusen; haben Sie bei der Verwendung von X Probleme mit der Maus, sollten Sie das Starten des gpm unterbinden. Oder verwenden Sie gleich den xdm; denn in Runlevel 3 wird gpm grundsätzlich nicht gestar- tet. * GPM_PARAM=" -t logi -m /dev/mouse" Die Startparameter für den gpm; normalerweise von YaST versorgt. * PCMCIA=i82365 Dient der Festlegung des Chipsets; gültige Werte sind i82365 oder tcic. Wenn die Variable auf "" gesetzt wird, wird das PCMCIA- Subsystem nicht gestartet. Feineinstellungen sind über die Variablen PCMCIA_PCIC_OPTS und PCMCIA_CORE_OPTS möglich. * START_ISAPNP=yes ISA PnP beim Booten initialisieren. * INITRD_MODULES="aic7xxx" Die Namen der Module, die während des Bootens des Kernels geladen werden müssen, um beispielsweise auf die Festplatte zugreifen zu kön- nen. Sinnvolle und notwendige Einträge werden während der Installation bzw. des Updates vorgenommen; Vgl. Abschnitt 16.2 auf Seite 417. * START_KERNELD=yes Diese Variable steuert, ob beim Booten des Kernels 2.0.xx automatisch der Kernel-Daemon gestartet wird. Dieser Daemon sorgt dafür, dass bei Bedarf automatisch benötigte Kernel-Module geladen werden. Beim jet- zigen Standardkernel 2.2.xx wird kerneld nicht mehr benötigt! ­ Eine 447 17. Das SuSE Linux-Bootkonzept kurze Einführung in das Modulkonzept finden Sie in Abschnitt 13.2 auf Seite 355. Netz- und lokale Dienste starten und konfigurieren * START_LOOPBACK=yes Legt fest, ob quasi ein Mini-Netzwerk eingerichtet werden soll, indem das so genannte Loopback-Device konfiguriert wird. Da viele Programme diese Funktionalität benötigen, sollte es unbedingt aktiviert werden.6 * CHECK_ETC_HOSTS=yes Legt fest, ob SuSEconfig die /etc/hosts überprüfen und ggf. ändern soll. * BEAUTIFY_ETC_HOSTS=no Falls /etc/hosts sortiert werden soll. * SETUPDUMMYDEV=no Legt fest, ob das Dummy-Device eingerichtet werden soll; nützlich bei non-permanenten Netzwerk-Verbindungen (z. B. SLIP oder PPP). Wenn Sie eine Ethernet-Karte haben, ist es bisweilen störend. * CREATE_HOSTCONF=yes Legt fest, ob SuSEconfig die /etc/host.conf überprüfen und ggf. ändern soll. * CREATE_RESOLVCONF=yes Legt fest, ob SuSEconfig die /etc/resolv.conf überprüfen und ggf. ändern soll. Wenn auf yes gesetzt und eine der Variablen SEARCHLIST oder NAMESERVER leer ist, dann wird angenommen, dass kein DNS ge- wollt ist und /etc/resolv.conf gelöscht werden kann. Wenn auf no gesetzt, wird /etc/resolv.conf unverändert gelassen. * NETCONFIG=_0 Gibt an, wie viele Netzwerkkarten (oder sonstige Netz-Devices) der Rechner besitzt. Dies ist das Beispiel für eine Netzwerkkarte (sie werden mit 0 beginnend nummeriert); bei einer Maschine mit zwei Karten müss- te der Eintrag NETCONFIG="_0 _1" lauten. Bei einem Rechner ohne Netzwerkkarte bleibt der Eintrag leer. * IPADDR_0=193.141.17.202 Die IP-Adresse für die erste Netzwerkkarte. * NETDEV_0=eth0 Der Name des ersten Netzwerk-Devices (üblicherweise eine Ethernet- Netzwerkkarte, daher der Eintrag eth0. Weitere mögliche Einträge sind str1 oder plip1. Verfügt der Rechner über mehr als eine Netzwerk- karte, werden analog die Variablen NETDEV_1 bis NETDEV_3 versorgt. * IFCONFIG_0="193.141.17.205 broadcast 193.141.17.255 netmask 255.255.255.192" Das Konfigurationskommando für das erste Netzwerk-Gerät. Die nötigen Einstellungen lassen sich komfortabel mit YaST vornehmen. Besitzen Sie mehr als eine Netzwerkkarte, tragen Sie hier entsprechend in die weiteren Variablen die Befehlszeilen ein. 6 Natürlich muss auch der Kernel Netzwerkunterstützung bieten! 448 17.6. Die /etc/rc.config-Variablen ­ Konfiguration des Systems * CLOSE_CONNECTIONS=false Falls auf true gesetzt ist und der Runlevel" 0 oder 6 ist (halt oder reboot), sendet /sbin/init.d/route allen Prozessen, die eine remote tcp"- oder udp"-Verbindung offen haben, ein SIGTERM. * IP_DYNIP=no Den dynamic IP patch" beim Booten aktivieren; bei yes gibt das Skript /sbin/init.d/boot diesen Patch durch einen Eintrag in das /proc-Dateisystem frei. * IP_TCP_SYNCOOKIES=yes Schutz vor Syn Flooding" (engl. syn flood protection) aktivieren. * IP_FORWARD=no Wenn der Rechner über zwei Netzwerk-Interfaces weiterleiten soll, ist IP_FORWARD auf yes zu setzen; dies ist bei einen Router" oder bei Masquerading" in der Regel erwünscht bzw. notwendig. Das Skript /sbin/init.d/boot schaltet IP-Forwarding" durch einen Eintrag in das /proc-Dateisystem frei. * FQHOSTNAME=erde.kosmos.all Der voll qualifizierte Name des Rechners; voll qualifiziert" bedeutet hierbei vollständig", d. h. der komplette Name, zusammengesetzt aus Rechner- und Domainname. * SEARCHLIST=kosmos.all Dieser Eintrag wird verwendet, um einen nicht voll qualifizierten Hostna- men zu vervollständigen. Wird beispielsweise der Rechnername venus verwendet, wird geprüft, ob venus.kosmos.all ein gültiger Rechner- name ist. Diese Variable muss versorgt werden, wenn Sie DNS verwenden möchten! Geben Sie hier zumindest Ihren Domain-Namen an. Sie können bis zu drei Einträge in der searchlist" vornehmen, die durch Leerzeichen voneinander getrennt sind. * NAMESERVER=192.168.0.1 Die Adresse des Name-Servers, der befragt werden soll, wenn ein Rech- nername in eine IP-Adresse umgewandelt werden muss. Sie können bis zu drei Nameserver angeben, deren Adressen durch Leerzeichen vonein- ander getrennt sind. Wenn Sie einen Nameserver verwenden möchten, müssen Sie auch die Variable SEARCHLIST versorgen! * ORGANIZATION="Duesentrieb, Entenhausen" Der hier eingetragene Text erscheint in jedem News-Posting, das von dem betreffenden Rechner abgeschickt wird. * NNTPSERVER=sonne.kosmos.all Die Adresse des News-Servers; beziehen Sie Ihre News per UUCP und werden sie lokal gespeichert, sollten Sie hier localhost eintragen. * IRCSERVER=sonne.kosmos.all Hier können Sie mehrere IRC-Server (Internet Relay Chat) angeben. Die Namen der einzelnen Server werden durch Leerzeichen voneinander ge- trennt. * START_INETD=yes Aktiviert den inetd-Superdaemon. Dieser Daemon reagiert auf Verbin- dungswünsche anderer Rechner und startet abhängig vom gewählten Port 449 17. Das SuSE Linux-Bootkonzept den zugehörigen Dienst. Sie benötigen dies, wenn Sie sich per telnet oder rlogin auf den Rechner einloggen möchten. ­ Setzen Sie START_INETD jedoch auf no, wenn der xinetd zum Einsatz kommen soll (vgl. auf dieser Seite). * START_XINETD=no Aktiviert den xinetd-Superdaemon, den erweiterten inetd (vgl. auf der vorherigen Seite). Wenn dieser extended Internet services daemon" be- nutzt werden soll, muss START_INETD auf no gesetzt werden. * SENDMAIL_xxxx= Die sendmail-Variablen sind in Abschnitt 6.8 auf Seite 200 dokumentiert. * START_POSTFIX=no Aktiviert den Mail-Server postfix. Zugehörig sind die Variablen POSTFIX_CREATECF, POSTFIX_RELAYHOST, POSTFIX_MASQUERADE_DOMAIN und POSTFIX_LOCALDOMAINS. * SMTP=no Legt fest, ob ein Sendmail-Daemon laufen soll. Wenn Sie Ihre E-Mail ausschließlich via UUCP empfangen, brauchen Sie dies nicht, vorausge- setzt, Sie rufen nach jedem Pollen sendmail -q auf (das von UUCP aufgerufene rmail stellt die Mail nur in die Empfangswarteschlange, stellt sie jedoch nicht zu). In einem Netz, in dem die Mail-Spool-Ver- zeichnisse via NFS gemountet sind und der einzelne Rechner somit nur abgehende Mail hat, kann diese Variable ebenfalls auf no stehen; das glei- che gilt bei Verwendung eines Relay Hosts". * START_PORTMAP=no Legt fest, ob der Portmapper gestartet werden soll. Sie benötigen den Portmapper, wenn der Rechner als NFS-Server dienen soll (siehe Ab- schnitt 5.5 auf Seite 163); ohne den Portmapper können die Daemonen rpc.mountd und rpc.nfsd nicht laufen; deshalb wird der Portmapper auch dann gestartet, wenn diese Variable auf no steht, aber NFS_SERVER ein- geschaltet ist! Auch für die Verwendung von NIS (siehe Abschnitt 5.4 auf Seite 162) ist der Portmapper erforderlich! * NFS_SERVER=no Wenn der Rechner als NFS-Server dienen soll, ist diese Variable auf yes zu setzen. Dadurch wird bewirkt, dass die Daemonen rpc.nfsd und rpc.mountd gestartet werden. Für eine weitergehende Beschreibung ei- nes NFS-Servers (zum Beispiel die Festlegung der zu exportierenden Ver- zeichnisse) lesen Sie bitte Abschnitt 5.5 auf Seite 163. * REEXPORT_NFS=no Setzen Sie die Variable auf yes, um gemountete NFS-Verzeichnisse oder NetWare-Volumes zu re-exportieren. * NFS_SERVER_UGID=yes Wenn der Daemon (rcp.ugidd) für die Umsetzung von User- und Group- ID gestartet werden soll; dieser Dienst muss auf dem jeweiligen NFS- Client gestartet werden. * USE_KERNEL_NFSD="no" Wenn das Paket knfsd installiert ist, kann der kernel-basierte NFS- Daemon benutzt werden. Mit diesem NFS-Daemon ist Locking möglich. Vgl. die dazugehörige Variable USE_KERNEL_NFSD_NUMBER. 450 17.6. Die /etc/rc.config-Variablen ­ Konfiguration des Systems * START_AMD=no Automounter starten; wenn keine zwingenden Gründe vorliegen, sollte man jetzt das autofs-Kernelmodul bevorzugen (vgl. unten auf dieser Sei- te). * START_AUTOFS=no Mit diesem Daemon ist es möglich, sowohl über NFS erreichbare Ver- zeichnisse als auch lokale Verzeichnisse (CD-ROM-Laufwerke, Disketten etc.) automatisch zu mounten. Das Paket autofs, Serie n muss instal- liert und konfiguriert sein. * START_RWHOD=no Legt fest, ob der rwhod gestartet werden soll. Achtung, der rwhod sendet regelmäßig Broadcasts"; das kann dazu führen, dass bei On-Demand- Verbindungen (ISDN und/oder diald) diese aufgebaut werden ­ und Kos- ten verursachen können! * START_ROUTED=no Der Route-Daemon ist nur notwendig für dynamisches Routen (vgl. Manual-Page von routed (man routed)). Achtung, dieser Dienst verursacht alle 30 Sekunden Netzverkehr; wenn der Rechner mit dem Internet über Dialup verbunden ist (z. B. ISDN), dann macht es keinen Sinn, diese Variable auf yes zu setzen. * START_NSCD=yes NSCD (engl. Name Service Caching Daemon) beim Booten initialisieren. * START_NAMED=no Legt fest, ob der Name-Daemon gestartet werden soll. * CREATE_YP_CONF=yes Legt fest, ob SuSEconfig abhängig von den beiden folgenden Einträgen automatisch die nötigen Dateien für die Verwendung von YP (siehe Ab- schnitt 5.4 auf Seite 162) erzeugen soll. Weiterhin werden die Dateien /etc/passwd und /etc/group angepasst, soweit noch erforderlich. * YP_DOMAINNAME=kosmos.all Der YP-Domainname des Rechners. Für detailliertere Informationen le- sen Sie bitte Abschnitt 5.4 auf Seite 162. * YP_SERVER=sonne.kosmos.all Der Name des NIS-Servers. * USE_NIS_FOR_RESOLVING=no NIS für die Auflösung der Rechnernamen verwenden. * START_CIPED=no CIPE-Daemon für einen IPIP-Tunnel starten. * START_DHCPD=no Server für DHCP (engl. Dynamic Host Configuration Protocol) starten. Dazu gehören die Variablen DHCPD_INTERFACE, START_DHCRELAY und DHCRELAY_SERVERS. * START_LDAP=no LDAP-Server starten. * START_RADIUSD=yes Radius-Accounting und Authentication Service starten. Dieser Service 451 17. Das SuSE Linux-Bootkonzept wird z. B. von bestimmten Dialin-Servern benutzt, um die Benutzer- Authentifizierung durchzuführen; vgl. die Dokumentation unter /usr/ doc/packages/radiusd. * START_LPD=yes lpd (engl. Line Printer Daemon) starten; für das Drucken in der Regel notwendig. * START_NNTPD=yes nntpd starten; notwendig, wenn Zugriff über NNTP auf die lokalen News gewährleistet werden soll. * START_INN=no Newsserver INN starten. * START_ATD=yes Legt fest, ob der AT-Daemon gestartet werden soll. Dieser Daemon ge- stattet es, bestimmte Jobs zu einem vorgegebenen Zeitpunkt ausführen zu lassen. Im Gegensatz zum Cron-Daemon geht es um das einmalige Aus- führen einer bestimmten Aktion. * START_HTTPD=yes Gibt an, ob der Apache http-Daemon gestartet werden soll. * START_HTTPSD=yes Gibt an, ob der Apache httpsd ( sicherer" Webserver) mit SSL und PHP3 gestartet werden soll. * START_SQUID=no Gibt an, ob Squid gestartet werden soll. * DOC_HOST="" Wenn ein zentraler Dokumentations-Server benutzt werden soll, der das SuSE-Hilfesystem vorhält, dann sollte hier der Name des Servers einge- tragen werden; z. B. "sonne.kosmos.all ". * DOC_SERVER=no Auf dem Dokumentations-Server soll diese Variable auf yes gesetzt wer- den. Dann wird zum einen nach den Angaben in DOC_ALLOW (s. u.) der Zugriff auf http-rman freigegeben und zum anderen werden die Index- Dateien für den HTTP-Server entsprechend umgesetzt; sie zeigen dann statt auf http://localhost auf http://`hostname-f`. * DOC_ALLOW="LOCAL" Liste der Rechner/Domains als Pattern für /etc/hosts.allow, denen der Zugriff auf den Dokumentations-Server erlaubt wird. Diese Variable wird nur ausgewertet, wenn DOC_SERVER auf yes gesetzt ist. Hier kann auch eine Subdomain (z. B. mit ".kosmos.all ") eingetragen wer- den. * HTTP_PROXY="" Einige Programme (z. B. lynx, arena oder wget) können Proxy-Server benutzen, wenn diese Umgebungsvariable entsprechend gesetzt ist; SuSEconfig kann diese in /etc/SuSEconfig/* setzen (vgl. in der SDB http://sdb.suse.de/sdb/de/html/lynx_proxy. html). Beispiel: "http://proxy.provider.de:3128/". * FTP_PROXY="" Proxy für FTP. Beispiel: "http://proxy.provider.de:3128/". 452 17.6. Die /etc/rc.config-Variablen ­ Konfiguration des Systems * GOPHER_PROXY="" Proxy für Gopher. Beispiel: "http://proxy.provider.de:3128/". * NO_PROXY="" Mittels dieser Variable lassen sich (Sub-)Domains vom Proxy ausschlie- ßen. Beispiel: "www.me.de, do.main, localhost". * START_HYLAFAX=no Startet Hylafax. Bevor diese Variable auf yes gesetzt wird, muss faxsetup ausgeführt werden. * START_SMB=no Samba-Server starten; Windows Datei- und Druckerserver. * START_MARSNWE=no Gibt an, ob die Novell-Server-Emulation gestartet werden soll. * START_SSHD=yes Den Secure Shell Daemon" starten; stellen Sie vor dem Starten sicher, dass ein host key" existiert ­ vgl. dazu die Dokumentation unter /usr/ doc/packages/ssh sowie die Manpages. * START_XNTPD=yes Startet den Network Time Protocol (NTP) Daemon" aus dem Paket xntp; die Konfiguration selbst geschieht über die Datei /etc/ntp. conf. Funkuhren haben Adressen in der Form 127.127.T.U; dabei steht T für den Typ der Uhr und U ist die unit number" im Bereich von 0 bis 3. ­ Die meisten dieser Uhren benötigen eine serielle Schnittstelle oder einen speziellen Bus. Die dafür vorgesehene Gerätedatei ( Device) wird nor- malerweise durch einen symbolischen Link /dev/device-U auf die tatsächliche Hardware angegeben; dabei hat U mit der zuvor erwähnten unit number" übereinzustimmen. Vgl. auch /usr/doc/packages/ xntp/html/refclock.htm. Beispiel: Wer eine Funkuhr hat, die an eine serielle Schnittstelle ange- schlossen ist, der benötigt auch einen entsprechenden Symlink. Wie der zu heißen hat, erfährt man über refclock.htm. ­ Für die üblichen DCF77-Empfänger, ist der PARSE"-Treiber zuständig: ## Type 8 Generic Reference Driver (PARSE) ## Address: 127.127.8.u ## Serial Port: /dev/refclock-u Wer also über einen ntp.conf-Eintrag den server 127.127.8.0 wählt, der braucht auch einen Symlink von /dev/refclock-0 auf ttySx ­ dabei steht x für die Schnittstelle, an die die Funkuhr ange- schlossen ist. * XNTPD_INITIAL_NTPDATE="" Liste der NTP-Server, von denen die Zeit geholt werden kann, bevor der lokale Server gestartet wird; z. B. "sonne.kosmos.all ". Falls mehre- re Server eingetragen werden, sind diese durch ein Leerzeichen vonein- ander zu trennen. * DISPLAYMANAGER="" Beschreibt, wie das Login erfolgen soll, ob in der Textkonsole oder gra- 453 17. Das SuSE Linux-Bootkonzept fisch unter dem X Window System. Mögliche Werte sind xdm (Standard- Displaymanager des X Window System), kdm (Displaymanager von KDE) oder ""; im letzten Fall wird angenommen, dass kein grafisches Login gewünscht ist und der Rechner wird im Runlevel 2 (Textkonsole) gestartet. Dies ist die Voreinstellung. * KDM_SHUTDOWN=root Gibt an, welche Benutzer den Rechner über kdm herunterfahren dürfen (Reboot oder Shutdown). Mögliche Werte sind root (`root' muss sich mit Passwort identifizieren), all (alle Benutzer), none (niemand darf den Rechner über kdm herunterfahren) und local (der Rechner darf nur heruntergefahren werden, wenn der Benutzer sich lokal und nicht über das Netz einloggt). Wenn die Variable auf "" steht, wird der Wert root als Voreinstellung genommen. * CONSOLE_SHUTDOWN=reboot Gibt an, wie der init-Prozess auf das Drücken der Tastenkombination Strg + Alt + Entf reagiert. Mögliche Werte sind reboot (der Rech- ner fährt herunter und bootet erneut), halt (der Rechner fährt herunter und bleibt dann stehen) und ignore (das Drücken der Tastenkombinati- on hat keinen Effekt). Voreinstellung ist reboot. * START_AXNET=no Server für Applixware. * START_MYSQL=no Server für MySQL. * START_ADABAS=no Server für Adabas. Die folgenden Variablen gehören zu Adabas: DBROOT, DBNAME, DBUSER und DBCONTROL ­ vgl. die entsprechenden Kommentare in der rc.config. * START_DB2=no Server für DB2. * START_ARKEIA=no Arkeia-Backupserver starten. * START_ARGUS=no Server für Argus (Netzwerkmonitor). * ARGUS_INTERFACE=eth0 Das von Argus zu überwachende Interface. * ARGUS_LOGFILE="/var/log/argus.log" Die Argus-Logdatei. Diese Datei kann sehr groß werden! * CRON=yes Steuert den Start und das Beenden des Cron-Daemons. Dieser Daemon startet zu vorgegebenen Zeiten automatisch gewisse Programme. Der Cron wird nur in den Runlevels 2 und 3 gestartet! Seine Aktivierung ist auf Rechnern, die rund um die Uhr laufen, dringend zu empfehlen. Eine Alternative bzw. Ergänzung ist der AT-Daemon; vgl. auf Seite 452). Es gibt eine Reihe von Optionen, die es erfordern, dass regelmäßig be- stimmte Programme gestartet werden. Daher sollte auf jedem System der Cron-Daemon aktiviert werden. 454 17.6. Die /etc/rc.config-Variablen ­ Konfiguration des Systems Sicherheit und lokale Wartungsdienste * RUN_UPDATEDB=yes Legt fest, ob einmal pro Nacht die Datenbank für locate (locate) aktualisiert werden soll; locate dient dem schnellen Auffinden von Da- teien im System. Ein Fein-Tuning des updatedb kann über die Variablen RUN_UPDATEDB_AS, UPDATEDB_NETPATHS, UPDATEDB_NETUSER und UPDATEDB_PRUNEPATHS erreicht werden (vgl. die Kommentare in der rc.config). ­ Diese Aktualisierung wird möglicherweise kurz nach dem Booten durchgeführt, wenn Sie den Rechner nicht ununterbro- chen laufen haben; vgl. Abschnitt 16.6.1 auf Seite 435. * REINIT_MANDB=yes Wenn die Manpage-Datenbank von cron.daily täglich erneuert werden soll. * CREATE_INFO_DIR=yes Legt fest, ob automatisch die Datei /usr/info/dir erstellt werden soll, die gleichsam einen Index für alle vorhandenen Info-Seiten bildet. Dies ist etwa nach der Installation eines Paketes sinnvoll, das eine Info- Seite enthält. Beachten Sie, dass für die Verwendung dieses Features perl installiert sein muss! * CHECK_PERMISSIONS=set Legt fest, ob die Datei-Rechte anhand der Datei /etc/permissions überprüft werden sollen. Mit set werden falsche Einstellungen berich- tigt, mit warn werden nur Warnungen" hergestellt, no wird dieses Fea- ture abgestellt. * PERMISSION_SECURITY="easy local" In /etc/permissions.paranoid, /etc/permissions.secure und /etc/permissions.easy sind drei Sicherheitsstufen vorberei- tet. Tragen Sie hier easy, secure oder /etc/permissions.paranoid; eigene Einstellungen können Sie z. B. in /etc/permissions. local vornehmen und dann die Erweiterung local als Wert hinzu- fügen. * RPMDB_BACKUP_DIR=/var/adm/backup/rpmdb Legt fest, wohin cron.daily Backups der RPM-Datenbank schreiben soll; wenn keine Backups gewünscht werden, diese Variable auf "" setzen. * MAX_RPMDB_BACKUPS=5 Legt die Anzahl der Backups der RPM-Datenbank fest. * DELETE_OLD_CORE=yes Corefiles sind Abbilder der Speicherbelegung von Programmen, die we- gen einer Speicherschutzverletzung abgebrochen wurden; diese Abbilder dienen der Fehlersuche. Hier können Sie einstellen, dass regelmäßig nach etwaigen alten Corefiles gesucht wird und diese automatisch gelöscht werden. * MAX_DAYS_FOR_CORE=7 Legt fest, wie alt Corefiles maximal werden dürfen (in Tagen), bevor sie automatisch gelöscht werden. * MAX_DAYS_FOR_LOG_FILES=365 Wenn eine Log-Datei (vornehmlich unter /var/log) eine bestimmte 455 17. Das SuSE Linux-Bootkonzept Größe erreicht hat, wird sie automatisch komprimiert und archiviert und eine entsprechende Mail unterrichtet root davon. Mit diesem Parame- ter können Sie festlegen, wie lange derartige Sicherungsdateien behal- ten werden, bevor sie automatisch gelöscht werden. Setzen Sie den Wert auf 0, findet keinerlei Komprimierung und Archivierung statt; die Datei- en werden dann unbegrenzt fortgeschrieben und können eine beachtliche Größe erreichen! Die komprimierten Sicherungsdateien können Sie sich jederzeit mit less ansehen. * MAX_DAYS_IN_TMP=30 Es wird täglich geprüft, ob es in den tmp-Verzeichnissen Dateien gibt, auf die länger als angegeben nicht zugegriffen wurde (in Tagen). Wurde auf eine Datei in einem dieser Verzeichnisse länger nicht mehr zugegriffen, wird sie automatisch gelöscht. * TMP_DIRS_TO_CLEAR="/tmp /var/tmp" Angabe derjenigen Verzeichnisse, die täglich automatisch nach alten Da- teien durchsucht werden sollen. * OWNER_TO_KEEP_IN_TMP="root bs" Die Dateien der hier angegebenen Systembenutzer sollen auch dann nicht aus den tmp-Verzeichnissen gelöscht werden, wenn auf sie länger als angegeben nicht mehr zugegriffen wurde. * CWD_IN_ROOT_PATH=no Aktuelles Verzeichnis (engl. current working directory) im Pfad von `root'. * ROOT_LOGIN_REMOTE=no Wenn das Login für `root' per telnet oder rlogin erlaubt werden soll, ist diese Variable auf yes zu setzen. Zu Sicherheitsaspekten dieser Varia- blen vgl. auf Seite 469. * SUSEWM_UPDATE=yes Legt fest, ob SuSEconfig die systemweiten Konfigurationsdateien für die Windowmanager in Abhängigkeit von den installierten Software-Paketen anpassen soll. Feintuning ist möglich über die Variablen SUSEWM_WM, SUSEWM_MWM, SUSEWM_XPM, SUSEWM_ADD und SUSEWM_COMPAT. 456