Linux - Handbuch und Projektdokumentation -

Größe: px
Ab Seite anzeigen:

Download "Linux - Handbuch und Projektdokumentation -"

Transkript

1 Linux - Handbuch und Projektdokumentation - Tobias Mucke Michael Petter Ausgabe 0.5 vom 2. März 2003 Projekthosting durch Sourceforge

2 Die Informationen in diesem Buch werden ohne Rücksicht auf einen eventuellen Patentschutz veröffentlicht. Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt. Fast alle Hardware- und Softwarebezeichnungen, die in diesem Buch erwähnt werden, sind gleichzeitig eingetragene Warenzeichen oder sollten als solche betrachtet werden. Bei der Zusammenstellung der Texte und Abbildungen wurde mit größter Sorgfalt vorgegangen. Trotzdem können Fehler nicht vollständig ausgeschlossen werden. Verlag, Herausgeber und Autoren können für fehlerhafte Angaben und deren Folgen weder juristische Verantwortung noch irgendeine Haftung übernehmen. Für Verbesserungsvorschläge und Hinweise auf Fehler sind Ihnen der Verlag, der Herausgeber und die Autoren sehr dankbar. Autoren: Mucke, Tobias Petter, Michael Schneider, Andreas adresse Korrekturleser: Fehse, Mandy Dieses Buch unterliegt den Grundgedanken der GPL und wird ausschließlich mit Hilfe des Satzsystems Latex unter Linux geschrieben. Die Veröffentlichung erfolgt als plattformunabhängiges PDF.

3 Dieses Buch ist allen gewidmet, die Linux unterstützen, einsetzen und weiter entwickeln.

4

5 Inhaltsverzeichnis 1. Einleitung Anmerkungen der Autoren Überblick Lizenzmodell Kontakt Arbeitsgliederung I. Linux für Anwender - Einsatz auf dem Desktop Grundwissen Personal Computer Schichtenmodell eines Computersystems Betriebssysteme Betriebssysteme im Überblick Betriebssystem - Geschichte Aufgaben des Betriebssystems Einsatzgebiete und Zukunft von Linux Linux - Merkmale OpenSource Dokumentation Sicherheit Plattformvielfalt Entwicklungsumgebung Installation Systemanforderungen Boot- und Installationsmedien Vorbereitungen Installationsschritte und Einstellmöglichkeiten Systemboot Kernel und Module YaST Installationsvorgang Erste Schritte Linux starten und beenden Login

6 Inhaltsverzeichnis Shutdown Tastatur und Maus X Window System Konsole Systemeinstellungen Dokumentation Manual-Pages Info-Pages FAQs - Frequently Asked Questions HOWTOs LDP - Linux Documentation Project Kernel KDE-Hilfe Quellen im Internet Software-Pakete X-Window-System Grundlagen X-Server X-Client X-Architektur Start Grafischer Login - Anmeldung Xdm Kdm Gdm Windowmanager KDE Gnome Enlightenment X im Netzwerk X-Forwarding VNC Wichtige Tools Truetype Schriftarten Truetype und X Antialiasing überprüfen Open Office und Truetype Truetypeschriften in Mozilla Kommandozeile Editoren vi emacs Dateimanager - Midnight Commander Bedienung Konfiguration

7 Inhaltsverzeichnis Ausführung typischer Arbeiten Bash - Bourne Again Shell Shell - Benutzerschnittstelle Umgebungsvariablen Basiskonfiguration - Tastenbelegung und Prompt Kommandoeingabe Wichtige Tasten und Tastenkombinationen Alias-Abkürzungen Ein- und Ausgabeumleitung Kommandoausführung Substitutionsmechanismen Reguläre Ausdrücke Syntax von Regulären Ausdrücken grep Limits Standards LSB - Linux Standard Base TDS - TEX Directory Structure FHS - Filesystem Hierarchy Standard Dateisystem Grundlagen der Dateiverwaltung Dateitypen Pfadangaben Dateien und Verzeichnisse Gerätedateien Jokerzeichen und Platzhalter Versteckte Dateien Verzeichnisse Sicherheit Besitzverhältnisse und Zugriffsrechte Zugriffsrechte setzen Zuweisung eines Besitzers oder einer Gruppe Verwaltung von Gruppen und Benutzern Feste und symbolische Links Links auf Programme Partitionen und Dateisysteme Zugriff auf mehrere Festplatten und Partitionen Zugriff auf CD-ROM Laufwerke Zugriff auf Diskettenlaufwerke Dateisystemtypen Ein- und Aushängen von Dateisystemen Datei /etc/fstab Datei /etc/mtab Interna des Dateisystems ext Aufbau des ext2-dateisystems Dateien und Verzeichnisse

8 Inhaltsverzeichnis I-Nodes (Informationsknoten) Interna anderer Dateisysteme Softwareinstallation RPMs TAR.GZs Kompilierte Pakete Quellcode Pakete II. Linux für Administratoren - Einsatz auf dem Server Bootkonzept und -manager Bootvorgang BIOS CMOS MBR LILO Grub Kernel Init Systemstart-V-Init-Prozess Programm init Runlevel init-skripten Bootkonzepte LILO - Linux-Bootloader Andere Betriebssysteme LILO deinstallieren Grafischer Boot RPM - RedHat Paket Manager Grundlagen Namenskonvention Installation Abfragen der Paketdatenbank Abhängigkeiten Erstellung eigener Pakete Kernel und Kernelmodule Grundlagen Aufgabenteilung Gerätedateien Konzeption Versionsnummern Kompilierung und Installation Motivation

9 Inhaltsverzeichnis Installation der Kernel-Quellen Konfiguration Kompilierung Installation des Kernels Initial Ramdisk Systemtest Verwaltung der Kernelmodule Motivation Modulklassen Automatismen Selbstverwaltung Konfiguration Kernelmodule von Drittanbietern Hardware Arbeitsspeicher Festplatten Hotplug Kernel Shellskripte Konfiguration Logdateien USB PCI und PCMCIA Netzwerk Firewire PCMCIA Hardware Dokumentation Kommandos Software Konfiguration Hardware Erkennung hwinfo lspci Profile SCPM Schemen PCMCIA Überblick Kernel PCMCIA External PCMCIA Kartenkontrolle Beispieleinrichtung: PCMCIA-Netzwerkkarten Compact Flash Adapter APM - Advanced Power Management Suspend Mode Standby Mode

10 Inhaltsverzeichnis Batterie-Füllstand IDE- und ATAPI Geräte Informationen bezüglich IDE Geräte Geschwindigkeitstests PIO-Mode und (U)DMA-Mode Netzwerkkarten manuelle Einrichtung von Netzwerkkarten Einrichtung der Netzwerkkarte über die Konfigurationsdateien WLAN Karten ALSA - Advanced Linux Sound Architecture Grafikkarten LVM - Logical Volume Manager Grundlagen Funktion und Begriffe Einsatzgebiete Verwaltung und Beschränkungen Abgrenzung von RAID Systemen Konfiguration Vorgehensweise Physical Volumes Volume Group Logical Volume Dateisysteme Administration Administration Systemverwalter Login- und Systemsicherheit Name Service Cache Daemon Wichtige Systemdateien Konfigurationstools YaST2 Kontrollzentrum Sax KDE Kontrollzentrum Webmin Benutzerverwaltung Befehle zur Benutzerverwaltung Gruppenverwaltung Befehle zur Gruppenverwaltung Passwortverwaltung und -alterung Drucker - Installation und Verwaltung Installation Warteschlangen Überwachung Ausgabesteuerung Umgang mit Dateisystemen Partitionierung einer Festplatte mit fdisk

11 Inhaltsverzeichnis Überprüfen des Dateisystems mit fsck Wechsel von ext2 von ext Syslog-Daemon Cron Logdateien Prozesskonzept Grundlagen Definition des Begriffs Prozess Prozesszustände Prozesskontrollblock Entstehung einer Prozesshierarchie Prozessoperationen Prozesse unter Linux Prozesshierarchie Prozesskenndaten Prozesskommunikation Kommandos zur Prozessverwaltung Befehle zur Prozessansicht Prozessterminierung Vorder- und Hintergrundprozesse Zeitgesteuerte Prozessausführung atd batch Netzwerk Grundbegriffe Grundkonfiguration YaST Konfigurationsdateien Startup - Skripten Häufige Netzwerkbefehle und Fehlersuche route nslookup ping traceroute rusers rup rlogin rlogin/rsh rcp slogin/ssh/scp TCP / IP Protokolle und darauf aufsetzende Dienste Dienst telnet Dienst ftp Ausführen von X-Anwendungen Shellprogrammierung

12 Inhaltsverzeichnis Motivation Shell - Allgemeinwissen Shellskripte - Grundlagen Skriptsprache - Bestandteile Festlegung des Shell-Interpreters Kommentare einfache Kommandos Übergabeparameter Variablen Arrays Zeichenkettenzerlegung Parser Funktionen VFS - Virtual File System und andere Dateisysteme Procfs Prozessinformationen Oberpunkt Unterpunkt Unterpunkt Oberpunkt Kerneldaten IDE Subsystem SCSI Subsystem Netzwerk Parallelport Serielle Schnittstelle Devfs Grundlagen Reiserfs Codafs Eigenschaften Einbindung in den Kernel Cluster Motivation Grundbegriffe Cluster Weitere Grundbegriffe Hochverfügbarkeit Verfügbarkeit und Ausfallszenarien Kosten Single Point of Failure Fehlertolerante Systeme Aufwandsabschätzung Datenbestände und Filesysteme Failover Strategien Hardware Fehler

13 Inhaltsverzeichnis Heartbeat Konzept Installation Konfiguration Failover-Szenarien Monitoring Warnungen Dokumentation III. Linux für Netzwerker - Einsatz in heterogenen Netzwerken Netzwerk - Grundlagen SNMP - Simple Network Management Protocol NTP - Network Time Protocol Allgemeines Öffentliche Zeitserver Client Server Konfiguration Zeitanpassung DNS - Domain Name System DHCP - Dynamic Host Configuration Protocol Funktionsweise DHCP-Client Konfiguration DHCP-Server Installation Dokumentation Konfiguration Protokolldatei Integration System V NFS - Network File System Motivation Installation der Software Konfiguration Starten der Dämonen und Statusabfrage Konfiguration der Datei /etc/exports Client Kommandos Stolpersteine Fehlerbehebung

14 Inhaltsverzeichnis 28. NIS - Network Information Services Motivation Konzept Funktion der Einzelkomponenten Master-Server Slave-Server Client Installation Konfiguration Master-Server Makefile Erstellen der Datenbanken Slave-Server Client SMB - Samba File Server und Primary Domain Controller Grundlagen Installation Konfiguration Samba Web Administration Tool (SWAT) Globale Einstellungen Verzeichnis-Freigaben Drucker-Freigaben Aufsetzen eines Primary Domain Controllers Benutzerverwaltung Passwort-Problematik Samba-Client Dokumentation und Quellcode CVS - Concurrent Version System Installation der Softwarepakete Vorbereitung Gruppenverwaltung Einrichtung des Repositories Passwortverwaltung Portkonfiguration Konfiguration des Inetd Funktionstest VNC - Virtual Network Computing Motivation Softwareinstallation Funktionsweise VNC-Server VNC-Client Viewer Browser Beispielanwendungen

15 Inhaltsverzeichnis Überbleibsel aus der alten Version VNC - Virtual Network Computing VNC-Server VNC Client LDAP - Lightweight Directory Access Protocol Apache Softwareinstallation Beispielumgebung FTP - File Transfer Protocol Softwareinstallation Beispielumgebung Printserver Internetdienste 267 IV. Linux für Sicherheitsfanatiker - Einsatz in unsicherer Umgebung V. Linux für Entwickler - Einsatz als Entwicklungsumgebung Programmierung CVS - Concurrent Versions System Motivation Installation CVS über das Netzwerk Verwendung Makefiles Erste Schritte Aufbau des Makefiles Kommentare Variablen Zielbereich Direktiven Ausblick Shellskripts Java Installation Verwendung Entwicklungsumgebungen Entwicklungsumgebungen Emacs

16 Inhaltsverzeichnis Java Netbeans Sprache C Grundelemente Datentypen, Operatoren und Ausdrücke Kontrollstrukuren Sprache Smalltalk Skriptsprache PHP Entwicklungsumgebungen Maguma Enterprise Environment und Maguma Studio Desktop Datenübergabe in Formularen LaTeX Kommentare Gliederung Formatierung Spezielle Abschnitte Stichpunktlisten Quellcode Pakete Hyperref Querverweise Stichwortverzeichnis VI. Anhang 299 A. Glossar 301 B. Kommandoreferenz 305 B.1. Kommandos zur Dateiverwaltung B.1.1. Befehle zur Dateisuche B.2. Bearbeitung von Texten B.3. Komprimierung und Archivierung von Dateien B.4. Prozessverwaltung B.5. Verwaltung von Benutzern und Gruppen B.6. Administration des Dateisystems B.7. Bildschirm und Terminal B.8. Online-Hilfe B.9. Sonstiges B.9.1. pwd C. Netzwerkplan 315 C.1. Namenskonvention D. Serverhardware 317 D.1. Vorüberlegungen

17 Inhaltsverzeichnis D.2. Bauteilgruppen und Komponenten D.2.1. Gehäuse und Netzteil D.2.2. Mainboard Prozessor Kühlung D.2.3. Arbeitsspeicher D.2.4. Weitere Komponenten D.2.5. Plattenbus Controller Laufwerke D.2.6. Peripherie D.2.7. USV E. Template für L A T E XDateien 319 E.1. Dateikopf E.2. Kapitelüberschrift E.3. Einleitung E.4. Lernziele E.5. Gliederungspunkte E.6. Stichworteinträge E.7. Tabellen E.8. Abbildungen E.9. Referenzen und Textmarken E.10. Verlinkungen ins Internet E.11. Aufzählungen E.12. Beschreibungen E.13. Textformatierungen E Consolfont E Kursivschrift E Gliederungsformate E.14. Fussnoten E.15. Übungen E.16. Zusammenfassung F. Sourceforge 329 F.1. Umgebungsvariablen F.2. Checkout F.3. Übernahme von Änderungen auf dem CVS-Server F.4. Änderungen einstellen F.5. Hinzufügen von weiteren Dateien F.6. Upload einer neuer Version G. Literaturverzeichnis

18 Inhaltsverzeichnis 18

19 1. Einleitung Bevor Sie sich in die zahlreichen Themen dieses Buches einlesen, möchten wir, die Autoren, Ihnen noch ein paar Worte mit auf den Weg geben, die Sie in Ihrem Vorhaben, Linux kennen- und verstehen zu lernen, ermutigen sollen. Lesen Sie dazu die Anmerkungen der Autoren gleich zu Beginn dieser kurzen Einleitung. Außerdem erscheint es aufgrund des Umfangs des Werkes, das in mehrere Bücher unterteilt ist, sinnvoll, Ihnen einen kurzen Überblick über die Inhalte und deren thematische Aufteilung zu geben. Dazu gehört auch eine Aufstellung der verwendeten Textformatierungen in diesem Buch. Letztendlich bleibt noch anzumerken, dass zwar bereits viele Themenbereiche abgehandelt, einige aber nur stiefmütterlich bearbeitet und wieder andere noch gar nicht aufgenommen wurden. Vor uns Autoren liegt also bis zur konsequenten Umsetzung der Arbeitsgliederung noch ein harter, steiniger Weg. Genug der Vorrede, viel Spaß mit Linux und beim Lesen dieses Handbuchs oder wie Linus Torvalds sagen würde Have a lot of fun Anmerkungen der Autoren Tobias Mucke Als ich begann, den vorliegenden Text zu schreiben, stand ich noch mitten in der Ausbildung zum Fachinformatiker in der Fachrichtung Systemintegration und beschäftigte mich nur am Rande mit Linux. Damals sollte es mir dieses Dokument ermöglichen, schnell auf Grundlagenwissen zurückzugreifen, ohne ständig ein dickes Buch mitnehmen zu müssen. Später, als ich täglich im Umfeld von Linux arbeitete, kamen zusätzlich verschiedene Projektdokumentationen und Erfahrungsberichte dazu. Dabei arbeitete ich nicht ständig an der Unterlage, sondern ergänzte und überarbeitete gelegentlich einzelne Kapitel. Schließlich wurde diese so umfangreich, dass man sie als umfassende Einführung in das Betriebssystem Linux betrachten konnte. Ganz nebenbei wird auch tiefes Grundlagenwissen vermittelt. In diesem Sinne kann sie sowohl als Schulungsunterlage, Gute Nacht Lektüre oder zum Nachschlagen verwendet werden. Sicherlich sind einige Passagen noch verbesserungswürdig oder müssen an neue Entwicklungen angepasst werden. Dies lässt sich bei der rasanten Entwicklung von Linux nicht vermeiden. Aus diesem Grund begrüße ich kritische Anmerkungen und konstruktive Verbesserungsvorschläge und bemühe mich, diese in eine neue Auflage dieses Dokumentes einfließen zu lassen. Heute freue ich mich Ihnen ein völlig überarbeitetes Handbuch mit vielen neuen Themen präsentieren zu dürfen. Auch wenn Sie lange darauf gewartet haben, so glaube ich doch, dass sich Ihre Geduld ausgezahlt hat. Zwar sind noch immer nicht alle Punkte unserer Arbeitsgliederung abgehandelt, dennoch rechtfertigen die massiven Aktualisierungen und Überarbeitungen einzelner Themen und nicht zuletzt die Neugliederung des Werkes den Sprung auf die Version 0.5. Michael Petter Nachdem die meisten Themen, die die Schulungsunterlagen betrafen, fertiggestellt waren, bat mich Tobias, das Buch vom Word-Format nach LATEXzu portieren, um die Abstürze, die bei diesem großen Dokument auftraten, zu beseitigen. Nachdem die Portierung abgeschlossen war, habe auch ich mich nicht mehr 19

20 1. Einleitung zurückhalten können und nach bestem Wissen und Gewissen Anmerkungen, Ergänzungen und neue Kapitel hinzugefügt. Mittlerweile entwickelt sich die Schulungsunterlage zu einem ziemlich umfassenden Nachschlagewerk für den alltäglichen Umgang mit Linux, sowohl auf Servern als auch auf Desktop Systemen. Inzwischen hat die Besucheranzahl der Sourceforge-Seite dieses Projekts nach einem zähen Start die magische Marke von 1000 Zugriffen pro Monat überschritten und wir können langsam stolz auf unsere Fortschritte sein. Es hat sich herauskristallisiert, dass Tobias und ich doch sehr unterschiedliche Facetten an Linux beschreiben Tobias geht die professionellen Themen an, meistens Serverdienste oder ähnliches, während der wesentliche Teil meiner Beiträge eher dem Anwender zugute kommt. Beides ergänzt sich ganz gut, so dass wir zusammen doch einen großen Bereich der Linuxwelt abdecken können. Andreas Schneider Noch befasst sich Andy mit der praktischen Entwicklung von Lösungen im Linuxumfeld und ist bisher noch nicht dazu gekommen seine Arbeit in eigenen Kapiteln zu dokumentieren Überblick Der Begriff Linux bezeichnet zwar im wesentlichen den Betriebssystemkern, wird aber auch als gleichbedeutend mit einer vollständigen Distribution verstanden. Man kann folglich nicht von dem Linux sprechen. Zwar sind im folgenden Text grundlegende Ausführungen distributionsunabhängig, andererseits beruhen einzelne Kapitel, insbesondere die Beschreibung der Konfigurationstools, ausschließlich auf der SuSE Distribution Version 7.3 und 8.1. Andere Distributionen werden derzeit noch nicht in diesem Maße berücksichtigt. Nachdem der Umfang des Werkes beständig wächst und eine breite Zielgruppe mit diesem Handbuch angesprochen werden soll, erschien eine Neugliederung sinnvoll. Dabei haben wir uns für eine Einteilung in fünf einzelne Bücher entschieden, die die Lesergruppen unseres Werkes widerspiegeln. Auch wenn eine Umschreibung des Inhaltsverzeichnisses wenig sinnvoll erscheint, soll mit der folgenden kurzen Zusammenfassung die Intention der einzelnen Bücher deutlich werden. Das erste Buch ist vor allem für Anwender gedacht, die bisher keinen oder nur wenig Kontakt mit Linux hatten. In erster Linie soll Ihnen bei der Überwindung der anfänglich auftretenden Schwierigkeiten geholfen und Ihnen die Augen für andere umfangreiche Dokumentationsquellen geöffnet werden. Auf dieser Grundlage werden im weiteren Verlauf des zweiten Buches anfänglich erworbene Kenntnisse durch tiefergehendes Wissen erweitert. Ziel der Abhandlungen ist es dabei auch immer Grundlagenwissen zu vermitteln, bevor auf linuxspezifische Eigenheiten des Kernels, der Prozessverwaltung, des Bootvorgangs, der Netzwerkkonfiguration uvm. eingegangen wird. Im dritten Buch werden einige Server, wie NIS, NFS, SMB, VNC usw. aufgesetzt und konfiguriert. Thematisiert wird dabei nicht nur eine beispielhafte Konfiguration, sondern auch das zu Grunde liegende Konzept dieser Dienste. Das vierte Buch richtet sich an sicherheitsbewusste Benutzer und Administratoren. Die Themen reichen von grundsätzlichen Überlegungen zur Systemsicherheit bis hin zur Härtung der Installation. Das fünfte und vorerst letzte Buch richtet sich an Entwickler. Zum einen geht es um Entwicklungsumgebungen und deren Installation, zum anderen sollen auch zunehmend kurze Einführungen in die eine oder andere Sprache dazu kommen. Zu guter Letzt möchten wir Sie noch um die Beachtung des Anhangs bitten. Während Sie eine Auflistung besonders zu empfehlender Bücher über Linux und andere verwandte Themen im Literaturverzeichnis am Ende der Unterlage finden werden, geben andere Abschnitte weiterführende Informationen zu den verschiedensten abgehandelten Themen. So beispielsweise Überlegungen zur Serverhardware. Zudem gibt es 20

21 1.3. Lizenzmodell verschiedene Hilfestellungen für Autoren zu LATEX und Sourceforge Lizenzmodell Sollten Sie Interesse an dieser Dokumentation haben, sei es, dass Sie sie als Schulungsunterlage verwenden oder als neuer Autor mitarbeiten wollen, beachten Sie gegen Ende dieser Einleitung das Lizenzmodell und nehmen Sie Kontakt mit uns auf. Dieses Dokument darf ganz im Sinne der Autoren frei vervielfältigt und an eigene Bedürfnisse angepasst werden. Allerdings müssen dabei immer die tatsächlichen Autoren und der Verweis auf den Ursprung des Dokuments erkennbar bleiben. Für den Urheber ist darüber hinaus die Verbreitung und die Verwendung des Textes von Interesse. Nehmen Sie demnach bitte insbesondere bei nicht privater Nutzung Kontakt mit uns auf. Es sei nochmals betont, dass Ihnen dadurch keine Nachteile entstehen Kontakt Sie werden sich vielleicht fragen, warum Sie mit den Autoren dieses Werkes in Kontakt treten sollten. Nun die Gründe liegen auf der Hand. Sie haben einzelne Tippfehler, missverständliche Passagen oder Fehler entdeckt. Sie möchten eigene Verbesserungsvorschläge einbringen. Sie haben zu einem der behandelten Themenbereiche noch weitere Fragen. Sie wollen als Autor an diesem Werk mitarbeiten.... Sämtliche Fragen, die Linux im weitesten Sinne zum Thema von uns nicht nur gerne beantwortet werden, sondern uns auch dabei helfen dieses Werk immer besser zu machen. Somit profitieren nicht nur einzelne, sondern alle Leser dieser Bücher. Darüberhinaus bleibt anzumerken, dass die Entwicklung des Betriebssystems Linux und fast aller Teilkomponenten zu schnell verläuft und in der Tiefe zu komplex ist, als das wenige Autoren ein Werk dieses Umfangs ständig auf dem aktuellen Stand halten könnten. Deshalb möchten wir noch einmal alle Leser ausdrücklich dazu ermuntern an einem der Bücher als Autor mitzuwirken. Wir werden Sie dabei so gut als irgend möglich unterstützen. Die Homepage des Projekts finden Sie im Internet unter linuxhandbuch.sourceforge.net. Sollten Sie eine ältere Version des Textes vorliegen haben, finden Sie dort die aktuellste Ausgabe dieses Dokumentes Arbeitsgliederung Wie bereits erwähnt, kann dieses Dokument noch lange keinen Anspruch auf Vollständigkeit erheben und wird es vielleicht auch nie können. Dennoch bleiben einige interessante Themen hartnäckig auf unserer Arbeitsgliederung. Administration Noch immer fehlt die Beschreibung weiterer administrativer Tools auch anderer Distributionen. Außerdem sind bisher das Standard-Home-Verzeichnis /etc/skel und dessen Möglichkeiten unerwähnt geblieben. 21

22 1. Einleitung Bootkonzept Hier muss eine korrekte Partitionstabelle eingetragen werden. Dateisysteme Dieses Kapitel soll komplett überarbeitet und dabei völlig aufgearbeitet werden. Teile sollen in das Kapitel VFS - Virtual File System übergehen, während die Grundlagen im ersten Buch für Linux-Einsteiger verbleiben. Reguläre Ausdrücke sollen in das neue Kapitel über Shell-Programmierung aufgenommen werden. Grundlagen muss jedoch auch der normale Anwender beherrschen. Deshalb verbleiben diese im Kapitel Kommandozeile. Kommandoreferenz Es stimmt zwar, dass viele Kommandos bereits über das gesamte Buch verstreut angewendet werden und mit einem ordentlichen Stichwortverzeichnis auch gefunden werden können, dennoch möchte ich nicht von dem Gedanken einer ordentlichen Kommandoreferenz abrücken, da dieses immer wieder von Kursteilnehmern nachgefragt wird. Grundlagen Betriebssysteme Dieses Kapitel gibt es zwar schon, könnte jedoch ausgebaut werden. Kernel Bisher gefällt mir die Beschreibung, was ein Kernel wirklich zu leisten hat, noch nicht. Wenn man schon nahe am System ist, dann sollte der Einblick in die wahren Vorgänge mindestens genauso tiefgehend sein. X - Das Fenstersystem Hier fehlen Einblicke in die wichtigsten Fenstermanager, wie KDE 3 und Gnome 1.4. X-Forwarding. Wichtige X-Tools wären auch wünschenswert. Kdm und Konsorten müssen auch beschrieben werden. Die XF86Config muss noch beschrieben werden. Emacs Der mächtige Editor Emacs ist bisher noch gar nicht beschrieben, obwohl er beispielsweise aufgrund seiner Fähigkeiten von Entwicklern äußerst gerne verwendet wird. Netzwerk Das Kapitel Netzwerk ist überarbeitungsbedürftig, da allgemeine Erläuterungen beispielsweise zum ISO / OSI Schichtenmodell, der Adressierung (IP, MAC) und diversen Protokollen fehlen. Zudem sollen die folgenden stichpunktartig zusammengefassten Gedankengänge aufgenommen werden (Sniffer). Das meiste davon dürfte in das dritte Buch Einzug finden. Hier bleibt noch viel zu tun. Prozesse Hier fehlen noch einige Begriffe, die eingehender erläutert werden sollten. Dazu gehören die streams. 22

23 1.5. Arbeitsgliederung Programmierung Auf die Programmierung geht diese Unterlage noch sehr wenig ein. Es geht hier ja auch um das Betriebssystem Linux, dennoch sollten die Besonderheiten von Linux in diesem Bereich aufgezeigt werden. Sprachen wie C, C++, Perl und PHP sollten nicht unerwähnt bleiben. Internetdienste Auch dieser Themakomplex ist noch überhaupt nicht ausgeprägt. Zumindest sollte man jedoch einmal die folgenden Begriffe gehört haben und wissen, worum es sich dabei handelt. Damit sind im Besonderen der Apache Web Server und die dazugehörigen Module (wie php jsp) gemeint. Darüber hinaus sind Dienste wie ftp, dns und dhcp erklärungsbedürftig. Hardware Was offensichtlich immer noch fehlt sind Compact Flash Karten, PCMCIA Modems, RAID, UDMA und SCSI. Autoyast Die automatische Installation mit Hilfe von AutoYaST ist ein sehr interessantes Thema und sollte in diesem Buch auch dokumentiert werden. Rettungssysteme Im schlimmsten Scenario eines Systemausfalls braucht man Rettungssysteme auf Diskette oder CD. Die hier vorgestellten Tools müssen so robust und zuverlässig sein, wie man es von einem Rettungssystem erwartet. Partitionierung Nochimmer fehlen Grundlagen der Partitionierung. Das Tool fdisk kann in diesem Zusammenhang gleich mitbeschrieben werden. Anwender Letztendlich sollte aber auch der Anwender des Linux-Systems nicht vergessen werden. Hier steht ein Ausflug zu Themen, wie CDs brennen (mkisofs, cdrecord, scsi-emu) und DVDs ansehen, an. LAT E X Im Inhaltsverzeichnis sind einige Unterpunkte mit breiter Nummerierung zu nah an der Kapitelüberschrift. Außerdem werden von einigen Acrobatreader Versionen Seitenobjektfehler angemerkt. Die Ursache hierfür ist noch ungeklärt. LVM Dieses Kapitel muss nochmals, insbesondere um Abbildungen, erweitert werden. Die Kommandos werden in die Befehlsreferenz aufgenommen. 23

24 1. Einleitung Shellprogrammierung Weiter ausbauen und mit Übungen und guten Beispielen garnieren. Cluster In das Kapitel über Hochverfügbarkeitscluster muss die Arbeit aus der Doku noch eingepflegt werden. NFS - Network File System Das Kapitel über NFS muss überarbeitet werden. VNC und Exceed VNC ist zwar schon beschrieben, muss aber noch ausführlicher dokumentiert werden. Insbesondere die Möglichkeit VNC in den inetd einzubinden, erscheint interessant. Exceed ist ein zweites Thema in diesem Zusammenhang. Die Architektur, Funktion und Konfiguration soll kurz erläutert werden. CVS CVS wird sowohl im Buch über Netzwerke als auch für Entwickler thematisiert. Hier muss genauer thematisch getrennt werden. 24

25 Teil I. Linux für Anwender - Einsatz auf dem Desktop - 25

26

27 2. Grundwissen Jeder Anwender nutzt während seiner Arbeit wie selbstverständlich das eine oder andere Betriebssystem. Dennoch können nur wenige darüber Auskunft geben, was eine Betriebssystem eigentlich ausmacht und welche Aufgaben von ihm wahrgenommen werden. Lernziele In diesem Kapitel lernen Sie, die Aufgaben des Betriebssystems kennen, die Eigenschaften von Linux einzuschätzen, wichtige Grundbegriffe im Open Source Umfeld zu verstehen Personal Computer Schichtenmodell eines Computersystems Anwenderprogramme Diese oberste Schicht stellt den Benutzern des Systems Anwendungssoftware zur Verfügung. Als Beispiel könnte man Web-Browser, Datenbank- oder Officeanwendungen nennen. Systemprogramme Hierbei handelt es sich um Programme, die weder zum Betriebssystem noch zu den gerade beschriebenen Anwenderprogrammen gehören. Vom erstgenannten unterscheiden sie sich durch ihre Austauschbarkeit, vom zuletzt genannten durch ihre Systemnähe. Betriebssystem Die Aufgaben eines Betriebssystems, wie Implementierung von Schnittstellen und die Verwaltung der Ressourcen, werden im Abschnitt auf Seite 29 beschrieben. Maschinensprache Die Maschinensprache besteht aus zahlreichen elementaren Maschinenbefehlen (z.b. zur Berechnung von arithmetischen Ausdrücken, zur Ausführung von Vergleichsoperationen), die vom Assembler in entsprechende Anweisungen im Mikrocode umgesetzt werden. Mikrocode Aufgabe des Mikrocodes ist die direkte Steuerung der physikalischen Geräte. In Mikrocode entworfene Programme werden von einem Interpreter in entsprechende Steueranweisungen übersetzt und an die Geräte weitergeleitet. Physikalische Geräte Komponenten dieser Ebene sind beispielsweise der Prozessor, die Speicherchips, Bussysteme usw Betriebssysteme Zunächst soll geklärt werden, was unter einem Betriebssystem zu verstehen ist und welche Aufgaben es zu erfüllen hat. 27

28 2. Grundwissen Betriebssysteme im Überblick Unix DOS und Windows Windows NT / 2000 / XP OS / 2 Apple Macintosh Commodore Amiga Atari ST Betriebssystem - Geschichte Die Entwicklung von Linux ist nicht einfach nur eine spannende Geschichte. Um Linux zu verstehen, muss man die Philosophie verstehen, die hinter der Bewegung steckt. Unix - Geschichte Unix wurde Ende der 60er Jahre von Ken Thompson und Dennis Ritchie bei den Bell Laboratories entwickelt. In erster Linie zeichnete es sich durch etliche Neuerungen aus, die bahnbrechend und damit grundlegend für die spätere Entwicklung von Linux waren. Es wurde in der Hochsprache C geschrieben und enthielt somit nur noch sehr wenig Assemblercode. Dies ermöglichte es das Betriebssystem ohne große Schwierigkeiten auf andere Plattformen zu portieren. Außerdem war es von Anfang an sehr umfassend ausgelegt, so dass es auch später hinzukommenden Ansprüchen genügte. Zudem stellte es ein klassisches Multiuser Betriebssystem dar, dem ein strenges Rechtekonzept zugrunde lag. Schon damals war es ein 32 Bit Betriebssystem. Es verwendete eine hierarchische Verzeichnisstruktur und war eines der ersten Betriebssysteme mit virtueller Speicherverwaltung. Ergänzend kam hinzu, dass das Protokoll TCP / IP, das heute die Grundlage des Internet bildet, auf dem System entwickelt wurde. Damit gingen die ersten Client - Server basierenden Anwendungen einher. Mitte der achtziger Jahre wurde dann das X Window System entwickelt. Unix wurde aufgrund seiner günstigen Lizenzierung für Universitäten verstärkt an diesen verwendet und weiterentwickelt. Obwohl es bei den Studenten sehr beliebt war, verhinderten die verhältnismäßig hohen Hardwareanforderungen eine weite Verbreitung im privaten Bereich. Dazu kommt, dass zu diesem Zeitpunkt, wie auch heute noch, viele Unix-Versionen am Markt erhältlich sind, der Erwerb jedoch mit hohen Lizenzkosten verbunden ist. Linux - Geschichte Die erste Version des Linux-Kernels mit der Versionsnummer 0.01, entwickelt auf einem Prozessor, wurde im September 1991 von Linus Torvalds, einem finnischen Informatikstudenten, der heute noch immer die Entwicklung des Kernels leitet, im Internet zur Diskussion und Weiterentwicklung bereitgestellt. Das Internet wurde zu diesem Zeitpunkt noch von Mail- und Newsgroups dominiert, Hypertext als Grundstock für World Wide Web war gerade erst entwickelt worden. Dabei war es zunächst nicht Linus erklärtes Ziel ein eigenes Betriebssystem zu schreiben, vielmehr ging es ihm darum die Fähigkeiten seines 386er PCs auszuloten. Erst später kristallisierte sich heraus in welche Richtung es gehen würde. Das Besondere an diesem Schritt war, dass neben den ablauffähigen Programmen in Maschinensprache auch der zugehörige Sourcecode veröffentlicht wurde. Ein unglaublicher Schritt, der eine riesige Lawine losgetreten hat. Seitdem wurde Linux von unzähligen Programmierern weltweit rasant weiterentwickelt, deren Interesse kein kommerzielles war, sondern vor allem in der Lösung von Problemen, im Hinzufügen von neuen Funktionen und in der Perfektionierung des Betriebssystems lag. Bedingung für die Arbeit am Quellcode war einzig die Auflage den angepassten Code wieder der programmierenden Allgemeinheit zur Verfügung zu stellen. 28

29 2.3. Linux - Merkmale Zunächst setzte sich Linux vor allem als Server-Plattform durch. In neuerer Zeit ist Linux, aufgrund der immer einfacheren Installation und der zunehmend komfortablen Bedienung, auch für Privatanwender interessant geworden Aufgaben des Betriebssystems Schnittstelle Das Betriebssystem stellt die Schnittstelle zwischen Benutzer und Hardware dar. Dadurch wird die Komplexität der darunterliegenden Systemarchitektur verborgen und dem Anwender eine verständliche und handhabbare Oberfläche angeboten. So braucht sich beispielsweise ein Anwendungsentwickler nicht um die Steueranweisungen diverser Hardwarekomponenten zu kümmern, sondern kann sich auf die Implementierung seines Programms konzentrieren. Verwaltung von Ressourcen Das Betriebssystem verwaltet alle physikalischen Geräte, wie Prozessoren, Speicher, Platten, Terminals usw. Damit ist insbesondere eine sinnvolle Zuteilung der Ressourcen an die darum konkurrierenden Programme gemeint. Ohne eine solche Steuerung durch das Betriebssystem wäre eine vernünftige Benutzung heutiger Computer nicht möglich Einsatzgebiete und Zukunft von Linux Einarbeitung des c t Artikels 2.3. Linux - Merkmale Linux ist ein Unix-ähnliches Betriebssystem. Der gravierende Unterschied gegenüber herkömmlichen Unix- Systemen besteht im vollständig verfügbaren Quellcode. Zudem ist Linux in vielen Bereichen vollständiger als manch teures Unix-System, da es eine größere Hardwareauswahl unterstützt und in großen Bereichen auf effizienterem Code basiert. Wie bereits weiter oben dargestellt, ist ein Betriebssystem die Schnittstelle zwischen Anwender und Computer. Dazu gehört vor allem die Verwaltung der Ressourcen (Rechenkapazität, Speicher) und der Ein- (Tastatur; Maus) bzw. Ausgabegeräte (Monitor, Drucker). Darüber hinaus ist das Betriebssystem nötig, damit Programme gestartet und Daten verarbeitet werden können. Linux bietet: Multitasking (gleichzeitige Abarbeitung mehrerer Prozesse) Multiuser (gleichzeitige Nutzung durch mehrere Anwender) Paging (Auslagerung von Arbeitsspeicherinhalten auf die Swappartition) Shared Libraries (Bibliotheken mit Systemfunktionen werden bei Verwendung durch mehrere Prozesse nur einmal geladen) Interprocess Communication (IPC) Symmetric Multi Processing (SMP, Nutzung mehrerer Prozessoren) Linux unterstützt: gängige Hardware (IA32 kompatible Plattform, nahezu alle Bussysteme (ISA, VLB, EISA, PCI), die meisten Controller (IDE, EIDE, SCSI), sämtliche Laufwerke (CDROM, HDD, Streamer), die meisten Netzwerkkarten usw. (vgl. Hardware HOWTO) 29

30 2. Grundwissen besondere Hardware (DEC Alpha Prozessoren, Sun Sparc, Mips, Motorola und mittlerweile auch Großrechnerarchitektur) nahezu alle Dateisysteme (Ext2, Ext3, Reiserfs, XFS, JFS, DOS, Windows, NTFS, OS/2, Minix, NFS usw.) viele gängige Netzwerkprotokolle (TCP/IP, PPP, SLIP usw.) Linux bringt: ein eigenes Dateisystem ext2 bzw. reiserfs (ausgereifte Sicherheitsmerkmale, lange Dateinamen, Dateisysteme bis 4TByte, Dateien bis 2GByte, Dateinamen mit bis zu 255 Zeichen, Journaling) Linux benötigt: je nach Verwendung reicht ein 486 Rechner mit 16MByte oder es braucht einen aktuellen Prozessor mit mehr als 128MByte und ausreichend Speicherkapazität (zu den Hardwareanforderungen vgl. Abschnitt?? auf Seite??) OpenSource Das Herausragende an Linux ist, dass es weder einer Organisation noch einer Firma gehört. Alle Entwickler, die an diesem Projekt mitwirken, arbeiten unentgeldlich aus freien Stücken. Ihr Antrieb möge der persönliche Ehrgeiz, das System weiter zu verbessern, als auch das Ausprobieren neuer Programmiertechniken sein. Auch die meisten Anwendungen unterliegen diesem Prinzip. Diese Methode ist außerordentlich erfolgreich, wenn man die rasante Entwicklung von Linux in den letzten Jahren rückblickend betrachtet. Das Schlagwort freie Software wurde vor allem im Umfeld von Linux geprägt. Frei bezieht sich hierbei nicht nur auf die kostenlose Verfügbarkeit des Produktes, sondern in erster Linie auf die Zugänglichkeit des Quellcodes. Linux kann aus dem Internet heruntergeladen werden, was aber aufgrund der ständig wachsenden Archive zunehmend unpraktikabel wird. An dieser Stelle setzen die sogenannten Distributoren ein. Zusätzliche Informationen hierzu finden Sie in diesem Kapitel im Abschnitt?? auf Seite??. Wie bereits mehrmals angesprochen, entwickelt sich Linux besonders in speziellen Teilbereichen rasant. Aufgrund dessen sind Updates und Fehlerbehebungen schnell verfügbar. Dies betrifft sowohl den Kernel des Betriebssystems, als auch die darauf laufenden Anwendungen. Sollte das System zufriedenstellend laufen, so ist es nicht notwendig, eventuell verfügbare Updates einzuspielen. Man ist also nicht gezwungen, jede Aktualisierung des Systems mitzumachen. Linux ist keine Blackbox, sondern das am umfangreichsten dokumentierte Betriebssystem, dass bis ins kleinste Detail konfiguriert werden kann und somit einen Blick hinter die Kulissen zulässt. Ein weiterer Aspekt ist, dass Linux durch die Gestaltung der Schnittstellen und die Unterstützung standardisierter Protokolle eine problemlose Integration in ein bestehendes Netz gewährleistet. Beispielsweise kann ein Linux-System in eine Windows-Netzwerkumgebung eingebunden werden, ohne dass für den Anwender eine Veränderung sichtbar wird Dokumentation Auch wenn aufgrund des kostenfreien Vertriebsweges eine gedruckte Dokumentation oftmals fehlt, ist Linux die am besten und umfangreichsten dokumentierte Plattform überhaupt. Welche unermesslichen Quellen sich hier auftun, wird im Kapitel 5 auf Seite 45 besprochen. (vgl. Kapitel Dokumenation) 30

31 2.3. Linux - Merkmale Sicherheit Bisher sind kaum Viren für Linux bekannt. Aber nicht nur deshalb ist die Virengefahr eher gering einzuschätzen. Ein weiterer Grund ist das Rechtekonzept unter Linux. Solange ein von einem Virus befallenes Programm nicht mit root Rechten gestartet wird, ist der Schaden am System stark begrenzt und weitet sich, wenn überhaupt, nur schleppend aus Plattformvielfalt Vielen Anwendungen, die auf einem Linux System laufen, liegt eine Client-Server Struktur zugrunde. Die zusätzliche Konzeption als Multiuser-Betriebssystem prädestiniert Linux für die Netzwerkumgebung. Andersherum gesagt, macht es wenig Sinn, eine Linuxmaschine als Standalone Rechner aufzustellen. Multiuser heißt in diesem Zusammenhang, dass mehrere Benutzer zugleich ein Programm auf einem Rechner starten können, wobei jede einzelne Instanz unter den Rechten des jeweiligen Benutzers ausgeführt wird. In Kombination mit einem leistungsfähigen Netzwerk stellt Linux ein äußerst mächtiges Betriebssystem dar, das beispielsweise die Fernwartung anderer Rechner ermöglicht. Eine andere denkbare Anwendung ist die zeitaufwändige Ausführung eines Programms, während ein anderer Benutzer das System nahezu wie gewohnt verwenden kann. Die Grenzen werden in diesem Bereich nicht von Linux gezogen, sondern sind allein hardwarebedingt. Ein weiterer Vorteil, der Linux von der Windows Welt abhebt, ist die Möglichkeit, auch ohne grafische Benutzeroberfläche zu starten. Sämtliche Funktionen des Betriebssystems sind dann immer noch verfügbar. Auf diese Weise werden die Anforderungen an die Hardware stark reduziert bzw. die Leistungsfähigkeit des Linux Servers beträchtlich gesteigert. Die bereits angesprochene Client - Server Struktur, die auch vor dem X-Window-System nicht halt macht, ermöglicht es, grafische Anwendungen auf einem entfernten Host zu starten, die Ausgaben auf dem lokalen Rechner anzuzeigen und die Bedienung von hier aus vorzunehmen. Zudem hat ein Anwender im X-Window-System mehrere Arbeitsflächen gleichzeitig zur Verfügung, die auf einen oder mehrere Monitore verteilt werden können. Ein weiterer Vorteil, der vor allem bei Servern ein schlagendes Argument darstellt, ist die Eigenschaft von Linux, dass der Rechner so gut wie nie heruntergefahren werden muss. Einfache Kommandos reichen aus, um den jeweiligen Prozess durchzustarten bzw. die Konfiguration neu einzulesen. Linux spielt vor allem in folgenden Bereichen seine Stärken aus: Stabilität, Datensicherheit und Server für nahezu jeden denkbaren Einsatzbereich, da eine Vernetzung aufgrund der zahlreichen Schnittstellen mit fast allen bekannten Netzwerken möglich ist Entwicklungsumgebung Linux bietet dem Anwender die Möglichkeit, Erfahrungen mit den verschiedensten Programmiersprachen zu sammeln. Verfügbar sind beispielsweise Compiler bzw. Entwicklungsumgebungen für Java, C++, Pascal, Fortran, C und Tcl / Tk. Übungen

32 2. Grundwissen Zusammenfassung Zusammengefasste Inhalte des vorangegangenen Kapitels. 32

33 3. Installation Wer glaubt, dass eine Linux Installation auf dem heimischen Rechner ein schwieriges Unterfangen darstellt, wird überrascht sein. Gerade die letzten Versionssprünge haben nicht nur bei SuSE einer zunehmenden Vereinfachung den Weg bereitet, die soweit geht, dass selbst unbedarfte Anwender in wenigen Schritten ans Ziel gelangen. Lernziele In diesem Kapitel lernen Sie, welche Anforderungen Linux an die Hardware stellt, welche Vorbereitungen vor der Installation getroffen werden sollten, in welchen Teilschritten die Installation von Linux abläuft, wie eine beispielhafte Partitionierung aussehen könnte Systemanforderungen Eine allgemeine Aussage zu der von Linux benötigten Hardware fällt in Anbetracht der genügsamen Anforderungen einerseits und dem breiten Einsatzspektrum andererseits schwer. Zur groben Orientierung werden im folgenden einige Installationsbeispiele und die benötigte Hardware genannt. Nicht bedacht sind an dieser Stelle Überlegungen, die die Ausfallsicherheit betreffen. Gerade bei kritischen Servern oder Steuereinheiten muss oft ein vielfach höherer Aufwand, z.b. aufgrund redundanter Hardwarekomponenten, betrieben werden. Außerdem außen vor sind Installationen auf Embedded Systems, die zu stark hardware- und funktionsspezifisch sind. Diskless Client Dieses System verfügt über keine oder nur über eine sehr kleine Festplatte für den Auslagerungsspeicher. Sämtliche Software wird entweder über das Netzwerk lokal oder auf einem Server remote gestartet. Dementsprechend sollte die Anbindung des Client PCs an die Netzwerkinfrastruktur ausfallen. Andere Komponenten des Systems müssen nicht sonderlich leistungsfähig sein, sondern lediglich den Anforderungen der zu startenden Anwendungen genügen. Workstation Auch hier gilt, dass die Ausstattung im Wesentlichen von den Anforderungen der installierten Anwendungen abhängig ist. In der Regel reicht jedoch ein aktueller Personal Computer mit genügend Arbeitsspeicher, um ein sinnvolles Arbeiten zu ermöglichen. Router Als Router kann unter Linux jeder alte PC dienen, der Platz für mindestens zwei Netzwerkkarten bietet. 33

34 3. Installation Mailserver Auch als Mailserver sind ältere Systeme denkbar. Hier kommt es jedoch stark auf die Anzahl der zu versorgenden Anwender an. Wenn die Mails zentral gelagert werden sollen, ist vor allem Plattenkapazität und -performance wichtig. Außerdem werden Mailsysteme mittlerweile als geschäftskritisch eingestuft. Ein Ausfall kann demnach teuer zu stehen kommen. Fileserver Als reiner Fileserver kommt es ebenfalls auf die Kapazität der Plattensubsysteme und deren Performance an. Dabei spielt nicht nur die Mechanik und das Bussystem der Festplatten eine Rolle, sondern auch der Datendurchsatz im restlichen System. Denken Sie darüber hinaus aber auch an die Datensicherheit, die mit Hilfe von RAID Systemen und regelmäßigen Backups erreicht werden muss. Webserver Um auf viele Anfragen mit geringen Antwortzeiten reagieren zu können, braucht ein solches System eine ordentliche Gesamtperformance, die von der Prozessorleistung dominiert und von der Größe des Arbeitsspeichers bzw. dessen Datendurchsatz ergänzt wird. Natürlich kommt es im Wesentlichen wieder auf die Anzahl der gleichzeitigen Benutzer, aber auch auf die gefahrenen Anwendungen an. In Verbindung mit Datenbanken und aufwendigen, dynamischen Seiten wächst die Belastung des Systems überproportional. Application- / Datenbankserver Viel Arbeitsspeicher und hohe Rechenkapazität zeichnen diese Kategorie Server aus. Dazu kommt, dass solche Systeme hochverfügbar sein sollen und aus diesem Grund ein hoher personeller und vor allem kostspieliger Aufwand betrieben werden muss Boot- und Installationsmedien Sowohl zum Booten als auch für die Installation kommen mehrere Medien in Betracht. Für ersteres bieten sich die erste CD / DVD oder notfalls auch gesondert erstellte Bootdisketten an. Die zum Erstellen benötigten Images mitsamt einer ausführlichen Anleitung finden Sie auf der ersten CD im Verzeichnis disks. Während bis SuSE 7.3 noch zwei Disketten für zusätzliche Treiber ausreichten, sind inzwischen drei Moduldisketten nötig, um auch moderne Hardware wie USB, PCMCIA and FireWire (IEEE1394) abzudecken. Erstellung der Bootdisketten Sollte der zu installierende Rechner nicht über ein bootfähiges CDROM Laufwerk verfügen, müssen Sie die Bootdisketten selbst erstellen. Dafür benötigen Sie ein laufendes Linuxsystem oder einen DOS- bzw. Windows-Rechner. Nachdem Sie die benötigten Images ausgewählt haben, gehen Sie entsprechend der nachfolgenden Anleitung vor. DOS / Windows 1. Legen Sie sich eine formatierte Diskette bereit. 2. Öffnen Sie die MS-DOS-Eingabeaufforderung. 3. Wechseln Sie hier auf Ihr CDROM Laufwerk und dann in das Verzeichnis dosutils\rawrite. 4. Starten Sie das Programm rawrite. 5. Geben Sie bei source file name (Name der Quelldatei) X:\disks\bootdisk an. X steht für den Buchstaben Ihres CD / DVD Laufwerkes. 6. Auf die Frage nach dem destination drive (Ziellaufwerk) antworten Sie mit a:\. 34

35 3.3. Vorbereitungen 7. Legen Sie dann die formatierte Diskette ins Laufwerk und bestätigen Sie mit Enter. Rawrite überträgt jetzt das Image auf die Diskette, was durchaus eine Weile dauern kann. Wenn Sie die Disketten mit den Modulen benötigen, gehen Sie genauso vor wie eben beschrieben, geben aber beim Namen der Quelldatei X:\disks\modules, X:\disks\modules2 bzw. X:\disks\modules3 an. Linux 1. Hängen Sie zunächst mit dem Kommando mount /media/cdrom die CD in Ihr Dateisystem ein. 2. Formatieren Sie die Diskette mit dem Befehl fdformat /dev/fd0. 3. Anschließend übertragen Sie mit dd if=/media/cdrom/disks/bootdisk of=/dev/fd0 das Image auf die Diskette. Diskdump kopiert das Image von der CD auf die Diskette. Hierbei steht if für inputfile und of für outputfile. Für die Moduldisketten gehen Sie wieder ähnlich vor. Zwei Stolpersteine sind noch zu beachten. Die Diskette sollte nicht gemountet sein und das Kommando dd muss als root ausgeführt werden, weil Sie als normaler Benutzer keine direkte Schreibberechtigung auf das Gerät /dev/fd0 haben. Eine ähnlich zahlreiche Auswahl wie bei den Bootmedien gibt es auch bei den verwendbaren Installationsmedien. So kann mittlerweile nicht bloß von CD bzw. DVD, sondern darüberhinaus über das Netzwerk per NFS oder SMB installiert werden. Allerdings müssen Sie für sämtliche netzwerkgestützten Installationsroutinen zunächst Manuel Installation auswählen, was auch bedeutet, dass Sie z.b. Treiber für verschiedenste Hardwarekomponenten, insbesondere für die Netzwerkkarte, selber einbinden müssen. Nach dem Einhängen der Verzeichnisfreigaben stoßen Sie dann wieder auf den regulären Installationsvorgang Vorbereitungen Bevor Sie sich in die Installation stürzen, sollten Sie noch eine paar Überlegungen anstellen und einige Vorbereitungen treffen. Bootlaufwerk Ihr Rechner sollte über ein bootfähiges Laufwerk verfügen und auch von diesem Booten (vgl. Einstellung der Bootsequenz im BIOS). Idealerweise handelt es sich hierbei um ein CD / DVD Laufwerk. Wenn die Installation über das Netzwerk erfolgen soll, reicht auch ein Diskettenlaufwerk aus. Festplattenkapazität und -zustand Im Wesentlichen muss genügend freier Festplattenplatz vorhanden sein. Ob dieser Platz bereits als Partition organisiert ist oder es sich um freien Speicherbereich am Ende des Datenträgers handelt, ist unerheblich. Wie viel Kapazität tatsächlich benötigt wird, hängt stark von der vorgesehenen Verwendung des Systems, also dem Installationsumfang, ab. Andere Hardwarekomponenten Die Unterstützung von unterschiedlichster Hardware hat sich gerade in den letzten Versionen sehr stark verbessert. Dennoch ist es nicht auszuschließen, dass einige Hardwarekomponenten im Zusammenspiel mit Linux nicht funktionieren bzw. nicht ihre volle Leistung entfalten. Dies trifft im Besonderen auf sehr neue Komponenten zu. Achten Sie also bereits bei der Anschaffung darauf, ob die jeweilige Komponente unterstützt wird. Netzwerkkonfiguration Sollten Sie eine Installation über das Netzwerk durchführen, besorgen Sie sich im Vorfeld sämtliche notwendigen Angaben, wie eigene IP-Adresse, Subnetmask, Gateway, Nameserver, IP-Adresse des Fileservers und den Namen der Freigabe. Dann sollte das Mounten der Dateisysteme des unter Unix, Linux oder Windows laufenden Servers problemlos funktionieren. 35

36 3. Installation Dokumentation Egal ob Sie einen Server oder eine Workstation aufsetzen. In jedem Fall sollten Sie die ausgeführten Schritte genauestens dokumentieren. So können Sie später beispielsweise die Partitionierung des Plattensubsystems und die Konfiguration der einzelnen Hardwarekomponenten ohne weiteres nachvollziehen Installationsschritte und Einstellmöglichkeiten Bevor Sie sich jetzt endlich an die Betriebssysteminstallation heranwagen, noch zwei letzte Hinweise: Nachfolgend beschriebene Vorgänge können seit SuSE 8.0 nicht mehr mit YaST1 durchgeführt werden. Die Installation und auch später anfallende administrative Aufgaben werden jetzt nur noch mit Hilfe von YaST2 vollzogen. Allerdings steht neben der grafischen Benutzeroberfläche weiterhin eine textbasierte Version zur Verfügung. Während Sie die Einstellungen im Vorfeld der Installation tätigen, werden keine dieser Änderungen ins bisherige System übertragen. Erst wenn Sie nach Abschluss aller Konfigurationsdialoge den Start der Installation ausdrücklich bejahen, wird die neue Partitionstabelle geschrieben, Dateisysteme angelegt, Pakete kopiert usw Systemboot Der Boot vom jeweiligen Medium kann nur dann erfolgreich verlaufen, wenn die Bootreihenfolge im BIOS auch entsprechend eingestellt ist. Dann aber erscheint ein Bootmenü, in dem der erste Eintrag vorbelegt ist. Sollten Sie ein älteres System haben, kann es sinnvoll sein andere Einträge auszuwählen. Beachten Sie hierzu die Kernelparameter, die in der darunterliegenden Zeile aufgeführt werden. Sollte die Installation über das Netzwerk gestartet werden, ist hier Manual Installation die richtige Auswahl. Außerdem können Sie mit den Funktionstasten F1 bis F5 die Auflösung am Terminal bestimmen. Mit Enter wird der Systemboot dann fortgesetzt Kernel und Module Nach dem Anlegen einer Ramdisk im Arbeitsspeicher wird der Kernel geladen und es erscheinen etliche Meldungen, die insbesondere Informationen zu Ihrer Hardware enthalten. Sollten hier Fehler auftreten, ermöglicht diese Ausgabe eine Diagnose der Konflikte. In einem weiteren Schritt werden dann weitere Hardwarekomponenten erkannt und durch Module eingebunden. Allerdings kommen Sie nur bei der manuellen Installation in die alte textbasierte Anwendung, in der Sie in Eigenregie Treiber laden können. Danach startet in jedem Fall YaST2 und Sie können endlich mit der eigentlichen Installation beginnen YaST2 Wie bereits erwähnt, wurde YaST1 durch YaST2 abgelöst. Letzteres werden Sie also sowohl während der Installation, als auch bei späteren administrativen Aufgaben einsetzen. Auch wenn der Installationsvorgang nochmals stark vereinfacht wurde, stehen weiterhin ausführliche Hilfetexte bereit. Sprachauswahl Die erste Frage, die Sie sich von YaST2 gefallen lassen müssen, ist die Frage nach Ihrer Muttersprache. Diese wird dann zugleich die Standardsprache des Betriebssystems. Darauf aufsetzende Anwendungen können, müssen sich aber nicht daran orientieren. Die Anzahl der möglichen Sprachen erstaunt. Von Deutsch über Griechisch bis hinzu Japanisch ist viel möglich. Die geänderte Auswahl wird sofort übernommen. 36

37 3.4. Installationsschritte und Einstellmöglichkeiten Systemanalyse Danach erfolgt nochmals eine Systemanalyse, deren Ergebnisse ansprechend präsentiert werden. Prüfen Sie diese genau! Sollten Sie damit zufrieden sein, sind Sie ggf. nur noch zwei Klicks vom fertigen Linux entfernt. Tastatur und Maus Trotz sehr guter Hardwareerkennung kann es passieren, dass Maus und Tastatur anders konfiguriert werden müssen. Das ist aber keine große Hürde. Innerhalb von YaST2 können Sie bequem mit Tabulator und Enter navigieren. Partitionierung Auch wenn YaST2 eine halbwegs sinnvolle Standardpartitionierung vorschlägt, so dürften in vielen Fällen andere Partitionierungen zum Einsatz kommen. Dann kann man auch gleich den Vorschlag verwerfen und, unter Berücksichtigung bereits bestehender Partitionen, von vorne anfangen. Es wurde bereits angesprochen, dass zunächst noch keine Einstellungen in das System zurückgeschrieben werden. Das gilt auch für die vorgenommene Partitionierung, die vorerst nur protokolliert und erst später geschrieben wird. Trotzdem ist dies natürlich ein kritischer Vorgang, insbesondere wenn sensible Daten auf Teilen des Plattensubsystems liegen. Das Einrichten der Partitionen und Dateisysteme gestaltet sich dann überraschend einfach, wenn man ein paar Grundbegriffe kennt. Auch für Profis ist mit LVM (Logical Volume Manager) und Software-RAID (redundant Array of inexpensive / independent Disks) etwas dabei. Erstellung einer Partitionierung Partitionieren bedeutet in diesem Kontext, den freien Platz des Plattensubsystems (IDE, SCSI, RAID) bzw. bereits bestehende Partitionen in einzelne Linux-Partitionen aufzuteilen oder umzuwandeln. Dabei ist Umsicht geboten! Bei einem versehentlichen Löschen oder Überschreiben der Partitionstabelle können Daten anderer Partitionen verloren gehen oder gar ganze Partitionen unbrauchbar werden. Partitionsnamen Die von Windows bekannten Laufwerksbuchstaben gibt es unter Linux nicht. Sämtliche Hardwarekomponenten sind als sogenannte Gerätedateien ansprechbar, deren Benennung vom Hardwarepfad abhängt. Dieser gibt im Beispiel Partition an, über welches Bussystem / welchen Controller und welche Platte die einzelne Partition erreichbar ist. Konkret heißt das, dass die Namen der IDE-Geräte mit hd die der SCSI-Geräte mit sd beginnen. Danach folgt ein Buchstabe, der laufend vergeben wird und in IDE-Systemen über Primary / Secondary Controller und Master / Slave Auskunft gibt. Für Partitionen werden laufende Nummern (primäre Partitionen 1 bis 4, erweitere Partition: 5, logische Laufwerke: ab 6) vergeben. So kann aus der Bezeichnung /dev/hdb3 gefolgert werden, dass es sich hier um die dritte primäre Partition auf der als Slave gejumperten Festplatte am primären IDE Controller handelt. Aber auch Gerätenamen wie /dev/rd/c0d1p2 sind denkbar. Der Hardwarepfad hilft uns weiter: Es handelt sich um eine Partition in einem RAID-Verbund, der am ersten Controller als zweites RAID- System angebunden wurde. Mountpoints Wie Sie später noch sehen werden, gibt es unter Linux ein virtuelles Dateisystem, in das alle anderen Dateisysteme, die auf lokalen Plattensubsystemen oder im Netzwerk verfügbar sind, eingehängt werden können. Das dazugehörige Verzeichnis wird auch Mountpoint genannt. Sollte Ihnen dieser Begriff an dieser Stelle noch nicht verständlich sein, ist das nicht weiter schlimm. Sicherlich wird er später noch klarer werden. 37

38 3. Installation Dateisystemtypen Die verwendbaren Dateisysteme sind inzwischen auch zahlreicher geworden. Derzeit bietet YaST2 neben den Standarddateisystemen ext2, reiserfs und swap, auch neuentwickelte wie ext3 oder Filesysteme aus dem professionellen Unix-Umfeld wie jfs und xfs an. Für welches Dateisystem Sie sich entscheiden, hängt stark von Verwendungszweck des Rechners ab. Weitere Informationen hierzu finden Sie in einem weiter fortgeschrittenen Kapitel, in dem auf die Besonderheiten der jeweiligen Filesysteme eingegangen wird. Partitionierungsempfehlung Auch wenn Sie jetzt vielleicht enttäuscht sind, kann an dieser Stelle keine detaillierte Empfehlung für diese oder jene Partitionierung gegeben werden, da diese zu stark vom späteren Einsatz des Rechners abhängt. Allerdings steht außer Frage, dass Sie eine eigene Boot- und Swappartition einrichten sollten. Bei Neuinstallationen hat sich bisher auch immer eine eigene Partition für die Home-Verzeichnisse der Benutzer gerechnet, da man diese dann vor einer Formatierung bewahren kann. Software Auch der Installationsumfang kann bis hinzu einzelnen Paketen an die persönlichen Bedürfnisse angepasst werden. Allerdings verliert man schnell die Lust sich durch abertausende einzelner Softwarestückchen zu graben. Deshalb bietet SuSE bereits vorkonfigurierte Gruppen von Standard über Multimedia bis zu Netzwerk / Server an. Außerdem können auch sämtliche Quelltexte mitinstalliert werden. Bedenken Sie bitte: Weniger ist hier oft mehr! Fehlende Pakete lassen sich später ohne weiteres nachinstallieren. Bevor Sie zum nächsten Schritt gehen können, prüft YaST2 eventuell auftretende Paketabhängigkeiten und den zur Verfügung stehenden Speicherplatz in den Dateisystemen. Konfiguration des Systemstarts Hier kann der Bootloader LILO (Linux Loader) eingerichtet werden. YaST2 erkennt andere parallel installierte Betriebssysteme und richtet hierfür auch Einträge im Bootmenü ein. Auch wenn dies in den meisten Fällen klappt, sollten Sie zunächst LILO nicht in den MBR (Master Boot Record) sondern auf Diskette schreiben. Das entspricht auch der Standardeinstellung von YaST2. Später wenn Sie sicher sein können, dass alle Betriebssysteme von LILO gestartet werden können, steht dem Schreiben von LILO in den MBR nichts mehr entgegen. Zeitzone Sollte die automatische Erkennung fehlgeschlagen sein, wählen Sie einfach eine andere Zeitzone aus. Damit die Systemzeit richtig berechnet werden kann, muss Linux allerdings wissen, ob Ihre BIOS-Uhr der GMT oder lokalen Zeit folgt. Eine falsche Auswahl ist keine Beinbruch und kann später leicht korrigiert werden. Nach diesen zahlreichen Schritten kann nun der Installationsvorgang angestoßen werden Installationsvorgang Nachdem alle Einstellungen Ihren Vorstellungen entsprechen, klicken Sie einfach weiter. Bevor Sie jedoch die nächste Abfrage mit Ja beantworten, sollten Sie in jedem Fall nochmals die Partitionierung kontrollieren. Die grüne Warnung ist der letztmögliche Zeitpunkt, die Installation ohne Veränderungen am System vorzeitig zu verlassen. Erst wenn Sie sie übergehen, beginnt schließlich die Installation. Sie können sich jetzt eine Weile zurücklehnen und dem Treiben am Bildschirm zusehen. Zunächst wird die Partitionierung vorgenommen, dann erfolgt die Formatierung und das Anlegen der Dateisysteme. Anschließend werden die ausgewählten Softwarepakete installiert, was am meisten Zeit in Anspruch nimmt. 38

39 3.4. Installationsschritte und Einstellmöglichkeiten Mittendrin verlangt YaST2 ggf. nach der Bootdiskette für LILO und kurz darauf werden zahllose Konfigurationsdateien geschrieben. Anschließend wird der Rechner durchgestartet und YaST2 erneut aufgerufen, um Benutzer und deren Passwörter anzulegen und weitere Hardwarekomponenten zu konfigurieren. Benutzer und Passwörter Zunächst soll ein Passwort für den Benutzer root vergeben werden. Dies ist der Adminstrator des Betriebssystems und verfügt damit über alle Rechte. Wählen Sie deshalb ein sicheres Passwort, das neben Buchstaben auch Ziffern und Sonderzeichen enthält und das so einprägsam ist, dass Sie es nicht vergessen! In einem zweiten Schritt sollte mindestens ein weiterer Benutzer angelegt werden. Unterlassen Sie es unter allen Umständen ständig als root zu arbeiten! Verwenden Sie stattdessen diesen zuletzt angelegten Benutzer, mit dessen eingeschränkten Rechten zwar keine administrativen Aufgaben wahrgenommen, aber eben auch das System nicht zerstört werden kann. weitere Hardwarekomponenten Zum Abschluss der Installation können noch etliche Hardwarekomponenten (derzeit Grafikkarte, Monitor, Netzwerkkarten, Drucker, Modem / ISDN, Soundkarte und TV-Karte) konfiguriert werden. Hier ist es sicher von Vorteil die verbaute Hardware zu kennen um die richtigen Treiber auswählen zu können. Alle Geräte können nachträglich noch mit YaST2 eingerichtet werden, so dass Sie diesen Schritt auch auf später verschieben können. Zwei Stolpersteine sind noch zu beachten: Schalten Sie zum einen die zu erkennenden Geräte ein und zerstören Sie zum anderen mit einer zu hohen Auflösung / Bildwiederholfrequenz nicht Ihren Monitor. Übungen Zusammenfassung Und fertig ist das SuSE Linux. Sollten dennoch Fragen offen geblieben sein oder verwenden Sie eine andere Linux-Distribution so ziehen Sie die vom jeweiligen Distributor mitgelieferte Dokumentation heran. 39

40 3. Installation 40

41 4. Erste Schritte Ist die Installation bereits erfolgreich verlaufen, können Sie die ersten Schritte in Ihrer Linux Umgebung wagen, auch dann wenn Sie zunächst eher stolpern als gehen. Lernziele In diesem Kapitel lernen Sie, die ersten Schritte in der neuen Umgebung zu gehen, die verschiedenen Login-Möglichkeiten zu verwenden, einige praktische Tastenkombinationen kennen, die Uhrzeit zu stellen Linux starten und beenden Je nach Installation erfolgt der Start von der Festplatte oder von Diskette. Seit SuSE 8.1 wird der Bootloader Grub verwendet. Gegebenenfalls trifft man aber auch noch auf den LiLo 1. In der Bedienung sind sich beide jedoch so ähnlich, dass man als Anwender keinen Unterschied bemerken wird. Beide warten nämlich mit einem grafischen Menü auf, in dem mit den Pfeiltasten der gewünschte Eintrag ausgewählt und mit der Eingabetaste bestätigt werden kann. Wird keine Auswahl getroffen, wird das Betriebssystem hinter dem Standardeintrag nach einer bestimmten Zeitspanne hochgefahren. Darüber hinaus können im unteren Bereich am Bootprompt noch weitere Kernelanweisungen mitgegeben werden. Um genaueres hierüber zu erfahren, lesen Sie bitte das Kernel HowTo und das Kapitel 11 auf Seite Login Der Einloggvorgang ist Ihnen im wesentlichen bereits aus der Windowsumgebung bekannt. Sie müssen sich gegenüber dem System mit einem Benutzernamen und dem dazugehörigen Passwort ausweisen. Der Hintergrund hierfür ist die Konzeption von Linux als Multiuser System und die damit verbundene Verwaltung der Zugriffsrechte. Zu beachten ist, dass Sie sich als Systemverwalter root nur anmelden sollten, wenn dies notwendig ist, beispielsweise also bei der Systemadministration oder bei der Veränderung von Konfigurationsdateien, auf die Sie sonst keine Schreibberechtigung hätten. Solange Sie als root angemeldet sind, dürfen Sie faktisch alles im System. Gerade wenn man noch wenig Erfahrung im Umgang mit Linux hat, kann man auf diese Art und Weise viel kaputtmachen. 1 Abk. für LinuxLoader 41

42 4. Erste Schritte Wie der Loginvorgang aussieht, hängt von der Konfiguration des Systems ab. Er kann grafisch, aber auch textbasiert erfolgen. Letztendlich geschieht bei beiden jedoch dasselbe. Mussten Sie sich textbasiert einloggen, so können Sie das X Window System nachträglich noch mit dem Aufruf startx aufrufen, insofern der X Server bereits korrekt konfiguriert wurde Shutdown Auch das Herunterfahren kann grafisch oder textbasiert erfolgen. Niemals sollten Sie den Rechner einfach so abschalten oder gar den Netzstecker ziehen. Im günstigsten Fall wird beim nächsten Start die Festplatte auf Dateninkonsistenz geprüft, schlimmstenfalls können dabei aber auch Dateisysteme und damit sämtliche Daten zerstört werden. Wenn Sie unter X arbeiten, wählen Sie im Startmenü Abmelden aus. Anschließend können Sie zwischen Als anderer Benutzer anmelden, Rechner ausschalten und Rechner neustarten auswählen. Sollten Sie an der Konsole arbeiten, so stehen verschiedene Befehle zur Auswahl. Für einen umfassenden Überblick sehen Sie sich bitte die Kommandoreferenz im Kapitel B ab Seite 305 an. Normalerweise kann nämlich nur der Systemadministrator mittels den Befehlen shutdown now bzw. halt das System herunterfahren. In der Standardkonfiguration ist es jedoch jedem Anwender gestattet, mit Hilfe der Tastenkombination Strg + Alt + Entf den Rechner durchzustarten. Warten Sie immer bis die Meldung System halted oder Runlevel 0 has been reached erscheint, bevor Sie den Computer ausschalten. Neue Computersysteme werden nach der ATX Spezifikation ohnehin automatisch ausgeschaltet, ältere Rechner über den Powerschalter an der Gehäusefront. Sollte der Rechner durchstarten, können Sie auch während die BIOS Meldungen zu sehen sind, den Rechner einfach ausschalten Tastatur und Maus Unter Linux gibt es spezielle Tastenkombinationen und Mausaktionen, die Ihnen das Leben sehr vereinfachen oder gar unerlässlich für die Bedienung des Betriebssystems sind. Tastenkombinationen Einige besondere Tastenkombinationen entnehmen Sie der Tabelle 4.1 auf Seite 42. Tastenkombination Strg + Alt + Entf Strg + Alt + Backspace Strg + Alt + F1 bis F6 Strg + Alt + F7 Shift + Bild auf / Bild ab Tab einfach / doppelt Pos1, Ende, Entf, Backspace Funktion Linux beenden / X abmelden X Server beenden Zwischen den Textkonsolen wechseln Zu X wechseln Vorwärts / rückwärts blättern Datei- und Kommandonamen vervollständigen Normalerweise den Windowstasten entsprechend Tabelle 4.1.: Tastenkombinationen 42

43 4.3. X Window System Mausfunktionen Um Texte wie unter Windows über die Zwischenablage zu kopieren, gehen Sie unter Linux wie folgt vor. Markieren Sie zunächst mit gedrückter linker Maustaste, den gewünschten Text. Der so ausgewählte Text kann jetzt mit der mittleren Maustaste in einen anderen Text oder in ein anderes Programm eingefügt werden. Das Kopieren und Einfügen erfolgt also allein mit der Maus X Window System Auch wenn KDE 2 nur einer von vielen Windowmanagern ist, so wird er doch von vielen Distributionen als Standardsystem eingerichtet und ist deswegen entsprechend weit verbreitet. Die Umsetzung der Benutzerführung orientiert sich zwar grundsätzlich stark an der Windowsoberfläche, im Detail gibt es jedoch viele Unterschiede, die die Bedienung weniger intuitiv erscheinen lassen. Kontrollleiste Am unteren Bildschirmrand finden Sie die sogenannte Kontrollleiste. Von hier aus starten Sie Programme, haben Zugriff auf verschiedene Konfigurationswerkzeuge und nehmen die KDE Hilfe in Anspruch. Sie können per Klick auch die Arbeitsfläche oder das im Vordergrund befindliche Programm wechseln. Ähnlich wie unter Windows gibt es eine Art Systemtray mit im Hintergrund laufenden Programmen und der aktuellen Uhrzeit. Programmleiste Diese findet sich normalerweise am oberen Bildschirmrand und zeigt für jede laufende Anwendung eine Schaltfläche. Unter KDE2 ist sie in die Kontrollleiste integriert worden. Virtuelle Desktops Die zur Verfügung stehende Arbeitsfläche wird durch virtuelle Desktops stark erweitert. Programme können auf anderen Arbeitsflächen gestartet oder im nachhinein dorthin verschoben werden. Sie können mit der Tastenkombination Strg + F1 bis F4 zwischen diesen bequem wechseln. Verknüpfungen Linux ist in dieser Hinsicht Windows sehr ähnlich. Verknüpfungen auf dem Desktop oder in der Menüstruktur verweisen auf Objekte wie Dateien, Laufwerke usw. Mausaktionen Generell benötigen Sie im X Window System nie einen Doppelklick. Ein einfacher Klick reicht aus, Programme zu starten oder Dateien und Verzeichnisse zu öffnen. Gegebenenfalls wird am Mauszeiger und in der Kontrollleiste signalisiert, dass gerade ein Programm gestartet wird. Mit der mittleren Maustaste erscheint beim Klicken auf den Desktop eine Liste mit allen derzeit laufenden Anwendungen sortiert nach Arbeitsfläche. Auf diese Weise können Sie schnell das Programm und den virtuellen Desktop wechseln. Die rechte Maustaste öffnet in der Regel ein Kontextmenü, wie Sie es von Windows gewohnt sind. Es ist kontextspezifisch und bietet verschiedene Befehle an, die zum jeweiligen Objekt passen. Sie haben auf diese Weise beispielsweise Zugriff auf die Eigenschaften einer Datei oder eines Verzeichnisses. Ein besonderes Kontextmenü haben die Titelleiste der Fenster anzubieten. Hiermit können Sie das Fenster selbst anpassen, dieses aber auch auf eine andere Arbeitsfläche verschieben. Der Desktop weist ein eigenes Menü auf, mit dem einige elementare KDE Kommandos, wie Neu erstellen, Fenster anordnen oder Bildschirm sperren, durchgeführt werden können. Konqueror Eines der wichtigsten Programme ist der Konqueror. Er ist nicht nur ein einfacher Dateimanager, sondern hat sich mittlerweile auch zu einem Browser gemausert. Zudem kann er Dateien unterschiedlichster Formate anzeigen. Die Bedienung ist recht intuitiv, da viele Aktionen einfach per Drag and Drop ausgeführt werden können. 2 Abk. für K Desktop Environment 43

44 4. Erste Schritte Programme starten Wie bereits angesprochen, können Sie Programme aus dem K Menü in der Kontrollleiste starten. Es gibt jedoch noch eine zweite Möglichkeit, die weitaus schneller sein kann. Mit Alt + F2 öffnet sich ein Fenster, in dem der Name eines Programms eingegeben werden kann. Das Feld merkt sich sämtliche Befehle und bietet diese später wieder an, so dass die Ausführung noch weiter beschleunigt wird Konsole Konsolen haben trotz grafischer Benutzeroberflächen immer noch ihre Berechtigung. Sechs davon stehen sofort nach dem Hochfahren zur Verfügung, wobei Sie mit Strg + Alt + F1 bis F6 zwischen diesen wechseln können. Nach der obligatorischen Anmeldung steht Ihnen die mächtige Shell bei Ihrer Arbeit zur Seite. Sind Sie mit der Arbeit fertig oder möchten Sie den Benutzer wechseln, können Sie sich mit Strg + D ausloggen. Sollen neben der normalen Tätigkeit auch zugleich administrative Aufgaben erledigt werden, bietet es sich an, sich auf verschiedenen Konsolen unter verschiedenen Benutzernamen anzumelden. Natürlich können Sie mit der Shell auch unter X arbeiten. Oft findet sich ein entsprechendes Symbol auf der Startleiste des jeweiligen Windowmanagers. Alternativ kann man auch Anwendungen wie konsole und xterm starten Systemeinstellungen Uhrzeit Die Uhrzeit kann sehr komfortabel mit dem Eintrag Datum und Uhrzeit einstellen im Kontextmenü der Systemuhr unter X gestellt werden. Allerdings muss man dazu das Administratorkennwort kennen. Mittlerweile findet hier auch ein Abgleich mit der Hardwareuhr statt, so dass die Änderungen auch nach einem Reboot erhalten bleiben. An der Konsole wird die Systemzeit mit dem Kommando date gesetzt und mit hwclock auf die Hardwareuhr geschrieben. Genauere Informationen zur Verwendung der beiden Kommandos in der Kommandoreferenz ab Seite 305. Übungen 1. Starten Sie zweimal die Anwendung Kwrite und kopieren Sie Text mit Hilfe der Maus von der einen in die andere. 2. Stellen Sie die Systemuhr richtig ein und kontrollieren Sie mit einem Reboot, ob diese auch anschließend richtig geht. 3. Führen Sie einen Reboot aus der grafischen und der textbasierten Oberfläche aus. Zusammenfassung Sie sind im vorangegangenen Kapitel die ersten Schritte in der für Sie vielleicht noch ungewohnten Linux Umgebung gegangen. Aufbauend auf diesen ersten Erfahrungen, können Sie sich in die nachfolgenden Themen stürzen. 44

45 5. Dokumentation Von Linux wird behauptet, es sei das am besten dokumentierte Betriebssystem überhaupt. Aber nur wenn man weiß, wo man suchen muss, hat man auch gute Chancen das Gesuchte zu finden. Lernziele In diesem Kapitel lernen Sie, welche verschiedenen Dokumentationsformen angeboten werden, wo diese zu finden sind, und bei welchen Fragestellungen diese weiterhelfen Manual-Pages Manual-Pages gibt es zu den folgenden Themen. Dokumentation für Kommandos Systemaufrufe Funktionen der Programmiersprache C Dateiformate Device-Dateien Konfigurationsdateien Spiele Kommandos zur Systemadministration Kernel-Funktionen Verschiedenes Diese sind sowohl mit dem Kommando man an der Konsole als auch unter X mit xman verfügbar. Während Sie unter X mit der Maus durch die Manual-Pages navigieren, können Sie an der Konsole ausschließlich mit der Tastatur arbeiten. Übrigens sind sämtliche Pfade zu den Manual-Pages in der Datei /etc/manpath.config eingetragen. In folgenden Beispiel wird die Manual-Page des Kommandos cp aufgerufen. 45

46 5. Dokumentation Tastenkürzel Cursortasten Pos1, Ende Bild auf, Bild ab /muster?muster n Shift + n q h Funktion Text nach oben, unten, links oder rechts verschieben Sprung an den Anfang oder an das Ende des Textes Seitenweises Blättern Vorwärtssuche Rückwärtssuche Suche rückwärts wiederholen Suche rückwärts wiederholen Beenden Anzeige eines ausführlichen Hilfetextes Tabelle 5.1.: Manual Pages - Bedienung mit der Tastatur > man cp Formatiere boot(7) neu, bitte warten... Die gebräuchlichsten Befehle sind in der Tabelle 5.1 auf Seite 46 angegeben. Allerdings bringen die Manual-Pages auch einige Nachteile mit sich. Zum einen fehlt eine konsequente einheitliche Strukturierung und eine Verlinkung untereinander. Zum anderen wird auch demnächst die Pflege dieser Dokumentation eingestellt. An ihre Stelle treten die nachfolgend erläuterten Info-Pages Info-Pages Wie bereits erwähnt wurde, sollen zukünftig die Info-Pages die bisher verwendeten Manual-Pages ablösen. Diese Dokumentation öffnet man mit dem Kommando info. Die Bedienung mit der Tastatur wird in der Tabelle auf Seite aufgezeigt. Tastenkürzel Funktion Cursortasten Text nach oben, unten, links oder rechts verschieben Pos1, Ende Sprung an den Anfang oder an das Ende des Textes Leertaste Sämtliche Info-Pages seitenweise vorwärts durchsehen Backspace Sämtliche Info-Pages seitenweise rückwärts durchsehen Tab Cursor zum nächsten Link bewegen Enter Aufruf eines Links eines Link l Zurück zum zuletzt angezeigten Text h,? Ausführliche Bedienungsanleitung, Kommandoübersicht q Beenden des Info-Systems Tabelle 5.2.: Info Pages - Bedienung mit der Tastatur 5.3. FAQs - Frequently Asked Questions FAQs begleiten die Dokumentation vieler umfangreicher Softwarepakete. Außerdem sind diese im Internet zu den verschiedensten Linux-Themen zu finden. 46

47 5.4. HOWTOs 5.4. HOWTOs Im Vergleich zu FAQs sind HOWTOs systematischer aufgebaut und vermitteln distributionsunabhängiges Grundlagenwissen. Der entscheidende Vorteil dieser Dokumentationsform ist zugleich ihrer größter Nachteil. Der Umfang der als HOWTOs vorliegenden Doku ist so immens, dass man im ersten Moment erschlagen wird. Aufgrund der sprechenden Benennung der Dokumente und der konsequenten Verwendung von HTML stößt man aber dennoch recht schnell auf die gesuchte Information. Dafür eignen sich HOWTOs auch für erfahrene Benutzer, die sich in ein bestimmtes Thema einlesen wollen. SuSE kopiert im Verlauf einer Standardinstallation eine Vielzahl an HOWTOs in deutscher und englischer Sprache gleich mit auf die Festplatte. Diese finden Sie im Verzeichnis /usr/share/doc/howto. Angefangen bei Beiträgen zur Shell und zum X-Window-System, über verschiedene Hardwarekomponenten bis hin zu den unterschiedlichsten Netzwerkdiensten ist diese Quelle mehr als umfangreich LDP - Linux Documentation Project Im Rahmen des Linux Documentation Projects sind ganze Bücher zum Thema Linux entstanden. Ursprünglich waren auch diese Texte nur digital verfügbar, mittlerweile sind jedoch auch einige insbesondere vom Verlag O Reilly aufgelegt worden. Der überwiegende Teil der Bücher ist in englischer Sprache geschrieben, einige wenige sind aber auch auf deutsch erhältlich. Advanced Bash-Scripting Guide Linux From Scratch Linux Kernel 2.4 Internals Securing & Optimizing Linux: The Ultimate Solution The Linux Cookbook: Tips and Techniques for Everyday Use The Linux System Administrators Guide The Linux Network Administrator s Guide, Second Edition Das Projekt ist im Internet unter zu finden. Neben den angesprochenen Büchern, sind hier auch die aktuellen HOWTOs, FAQs und Manual-Pages abrufbar. Dazu kommen die beiden Online- Zeitungen Linux Gazette und Linux Focus Kernel Wenn Sie die Kernelquellen installiert haben, wird eine sehr umfangreiche Dokumentation im Verzeichnis /usr/src/linux angeboten. Allerdings setzt diese zum Teil fundierte Kenntnisse im Bereich der Hardware und Kernelprogrammierung voraus. Als Lohn für die Mühen bekommen Sie jedoch einen sehr tiefen Einblick in die Funktionsweise des Betriebssystems. Wie die Hilfetexte zur Kernelkonfiguration gelesen werden können, erfahren Sie im Kapitel 13 ab Seite

48 5. Dokumentation 5.7. KDE-Hilfe Ausführliche Hilfe zu KDE-Programmen erhalten Sie durch Drücken Taste F1 im jeweiligen Programm. Zudem bietet KDE eine allgemeine Online-Hilfe auf der Startleiste an. Sämtliche Hilfen basieren auf HTML und bieten die Annehmlichkeiten von Hypertexten 5.8. Quellen im Internet Grundsätzlich sind die Weiten des Internet bestens geeignet, um Dokumentation zu den unterschiedlichsten Themen, den ausgefallensten Problemen und der unmöglichsten Hardware aufzuspüren. Hier zeigt sich eine der wahren Stärken der OpenSource Community, die zudem durch die Bemühungen vieler Firmen professionellen Support zu leisten, ergänzt werden. Suchmaschinen Die Seite sticht unter den Suchmaschinen heraus, da Sie die Suche nach linuxspezifischem Wissen erleichtert und meist mit guten Ergebnissen überzeugen kann. Insbesondere wird man so bei speziellen Fehlermeldungen auf einen etwaigen Lösungsansatz aufmerksam. Knowledge Portal Auf dem unter erreichbaren Knowledge Portal sind leicht verständliche nach Rubriken sortierte Beiträge zu finden. Distributionen Ein guter Anlaufpunkt sind auch die Homepages des jeweiligen Distributors. Eine Liste mit URLs findet sich im Anhang A auf Seite 301ff. Insbesondere SuSE bietet mit der Hardware- und Supportdatenbank einen guten Service, sowohl für den Anwender als auch für den Administrator. So kann man bereits vor dem Kauf neuer Komponenten prüfen, in welchem Umfang diese unterstützt werden. Im Falle eines Fehlers findet sich hier oft bereits eine genaue Problemanalyse samt Anleitung zu deren Behebung. Wikis Ein Wiki ist ein völlig offenes System zur Verwaltung von Wissen. Im Linux-Umfeld sticht vor allem aus der Masse hervor Software-Pakete In der Regel wird zu jedem Paket eine ordentliche Dokumentation mitgeliefert, die nach der Installation mit YaST2 meist unter /usr/share/doc/packages zu finden ist. Wollen Sie die Software selber kompilieren und installieren, so lesen Sie unbedingt die oft beigepackten Dateien README und INSTALL. Übungen Zusammenfassung Zusammengefasste Inhalte des vorangegangenen Kapitels. 48

49 6. X-Window-System Das X-Window-System ist für den Linux-Anwender die Schnittstelle zum Betriebssystem schlechthin. Aber es steckt mehr dahinter als nur bunte Fenster und Effekthascherei. Lernziele In diesem Kapitel lernen Sie, den Aufbau des X-Window-Systems kennen, verschiedene Windowmanager zu verwenden, die eine oder andere Umgebungsvariable zu setzen bzw. Konfigurationsdatei anzupassen Grundlagen Die grafische Oberfläche von Linux, XFree86, weist eine längere Entwicklungsgeschichte auf. Um Sie nicht zu ermüden, möchte ich Ihnen die Details ersparen. Interessant ist jedoch die Tatsache, dass der Dienst eine Client-Server Architektur einsetzt X-Server Der im Hintergrund laufende X-Server kümmert sich in erster Linie um die Bereitstellung einer einheitlichen hardwareunabhängigen Schnittstelle für verschiedenste Anwendungen. Zu seinen Aufgaben gehört die Ansteuerung der Grafikkarte, die Herstellung einer bestimmten Auflösung und Farbtiefe und die Verwaltung von Eingabegeräten, wie Maus und Tastatur X-Client Der Benutzer arbeitet im X-Window-System mit sogenannten X-Clients, die aus den Anforderungen der verschiedensten Programme abstrakte Aufrufe generieren, die an den X-Server weitergegeben werden. Beispielsweise sind alle grafischen Elemente, die Sie auf dem Bildschirm sehen, von Ihrem X-Client erstellt. Grundsätzlich kann man zwei große Gruppen von X-Clients unterscheiden. Zum einen die sogenannten Windowmanager, zum anderen alle sonstigen X-Anwendungen. Windowmanager Windowmanager sind spezielle X-Client-Programme, die speziell dafür ausgelegt sind, Ihnen eine komfortable Arbeitsumgebung bereitzustellen. X-Anwendungen Mit diesen grafischen Programmen, arbeiten Sie produktiv. Oftmals verzichten X-Anwendungen auf die besondere Darstellung von Rahmen und Titelzeile, damit die Windowmanager Gelegenheit haben, das Desktopdesign einheitlich zu gestalten. 49

50 6. X-Window-System X-Architektur Bevor Sie weiterlesen, sollte die X-Architektur auf jeden Fall deutlich geworden sein. Dabei kann ein kleiner Versuch helfen, der es ermöglicht sämtliche Schichten des X-Window-Systems zu sehen. 1. Damit man einen eigenen X-Server starten kann, müssen zunächst die bereits laufenden beendet werden. Melden Sie sich dazu als root an und wechseln Sie in den Runlevel 3. linux login: root Password: linux: # init 3 Jetzt gibt es nur noch die Möglichkeit des textbasierten Logins. 2. An einer der übrigen Konsolen meldet man sich jetzt als unpriviligierter User an und startet den nackten X Server, den man jetzt auf der Konsole F7 zu sehen bekommt. Wie Sie sicher feststellen werden, ist hier nur eine grau gemusterte Oberfläche und ein Mauszeiger zu sehen. linux login: muctob Password: > X & Durch das angehängte & wird der Prozess im Hintergrund gestartet. Sobald man sich am grau in grau gehaltenen X-Server satt gesehen hat, wechselt man wieder zur ursprünglichen Konsole zurück. Hier erscheint nach der Betätigung von Enter wieder der Prompt. 3. Grundsätzlich kann man jetzt bereits X-Anwendungen starten, die allerdings noch nicht wissen können, wo sie ihre Ausgabe hinschreiben sollen und deshalb mit einer Fehlermeldung abstürzen. Deshalb setzt man die DISPLAY Variable wie folgt. > export DISPLAY=localhost:0 4. Im Anschluss daran können jetzt X-Anwendungen gestartet werden. Rufen Sie diese einfach wie gewohnt von der Konsole aus auf. > xterm & > xclock & Das & dient auch hier wieder zum Starten im Hintergrund, so dass die Shell die Eingabe weiterer Befehle zulässt. Ein Blick auf den X-Server zeigt, dass die Anwendungen zwar gestartet sind, aber ohne Titelleiste, Fensterrahmen usw. 5. Es fehlt noch immer der Windowmanager. Diesen kann man wie eine X-Anwendung einfach auf der Konsole nachstarten. > kde & Jetzt ist die X-Window-Umgebung brauchbar und sieht in der Regel genauso aus wie nach einem grafischen Login. Mit dem Unterschied, dass Sie jetzt in bisschen mehr über die Architektur des X- Window-Systems wissen. 50

51 6.2. Grafischer Login - Anmeldung Start Nach der Installation fährt das System normalerweise bis zu einem grafischen Login hoch. Ist das nicht der Fall kann nach geeigneter Konfiguration des X-Servers auch von der Konsole aus gestartet werden. Konsole Das Starten des X-Window-System kann mit startx bewerkstelligt werden. /.xinitrc Das Skript /.xinitrc legt fest, welcher Windowmanager verwendet wird und welche X-Anwendungen mitgestartet werden. Sämtliche Einträge sind mit einem & zu versehen, damit diese Programme im Hintergrund ausgeführt werden und nicht den Ablauf des Skripts behindern. Im nachfolgenden Beispiel wird der Konqueror und eine Konsole mitgestartet. Als Windowmanager wird Enlightenment verwendet. # # Add your own lines here... # konqueror & konsole & # # finally start the window manager # export WINDOWMANAGER=enlightenment exec $WINDOWMANAGER Grafischer Login In der Regel erfolgt die Anmeldung nach der Installation grafisch durch einen der folgenden Login-Manager Grafischer Login - Anmeldung Standardmässig ist Ihr System von SuSE so konfiguriert, dass Sie keine Anmeldung im Textmodus vorfinden, sondern sich grafisch auf Ihrem Rechner einloggen können. Dafür dient bei Ihnen einer der folgenden Manager: Xdm Viele Einstellungen des xdm sind global auch für die anderen Loginmanager gültig. Daher machen Tuningmaßnahmen an xdm ofmals Sinn. SuSE stattet die grafische Anmeldung mit einem zusätzlichen Fenster, eine xconsole aus, vielfach stört dieses Fenster jedoch die Benutzer. Sie beseitigen dieses, indem Sie die entsprechenden Zeilen aus der Datei /usr/lib/x11/xdm/xsetup entfernen. Die vorletzten drei Zeilen dürften diejenigen sein, die Sie suchen. Ein eigenes Hintergrundbild können Sie auch in dieser Datei einstellen. Suchen Sie einfach nach der Zeile, die mit background= beginnt, und setzen Sie hier ihr Lieblingsbild ein. Dabei sollten Sie dieses zuvor ins Format.xpm umwandeln, und mit gzip packen. 51

52 6. X-Window-System Kdm Gdm Der GDM kann bequem über eine grafische Oberfläche eingestellt werden. Dazu wählen Sie beim Login- Fenster aus dem Menü den Punkt aus. Nach der Eingabe des Root-Passworts finden Sie sich im Konfigurationsfenster wieder, mit dem Sie nach Lust und Laune einen eigenen Login-Bildschirm einstellen können. /.xsession Die oben angesprochene Datei /.xinitrc wird eigentlich nur beim manuellen Start der X- Window-Umgebung benutzt. Erfolgt der Einstieg über einen der Login-Manager heißt das entsprechende Skript /.xsession. Syntaktisch gilt für dieses dasselbe wie für /.xinitrc (vgl. hierzu Abschnitt auf Seite 51) Windowmanager Die Funktion des Windowmanagers ist vielleicht schon beim Versuch zur X-Architektur im Abschnitt auf Seite 50 deutlich geworden. Zum einen legt dieser das Look and Feel unter X fest, zum anderen gibt es auch grundsätzliche Unterschiede in der Bedienung. Deshalb sollen die wichtigsten und am weitesten verbreiteten Windowmanager im Folgenden vorgestellt werden. Hinweis Auch wenn viele Anwendungen für die Verwendung unter einem bestimmten Windowmanager vorgesehen sind, erkennbar am führenden k bzw. g im Programmnamen, lassen sich diese auch in anderen Umgebungen problemlos ausführen KDE KDE, mittlerweile in der Version 3.x verfügbar, ist der Standarddestop unter SuSE und wird zusammen mit vielen nützlichen und intuitiv bedienbaren KDE-Anwendungen installiert Gnome Auch Gnome kann sich als Desktop sehen lassen. So verwendet beispielsweise RedHat diesen Windowmanager schon seit langem als Standardumgebung für X Enlightenment Enlightenment, zu Deutsch Erleuchtung ist ein stark grafisch orientierter Fenstermanager. Er lebt vorallem von seiner Unterstützung für umfassend anpassen kann. Die Bedienung von Enlightenment erfolgt mit Tastatur und Maus. Dabei fungiert der Desktop im Gegensatz zu echten Arbeitsumgebungen wie KDE oder Gnome nur als reiner Hintergrund. Das soll sich erst ab der nächsten Version 0.17 ändern. Zum Starten von Programmen verwenden Sie einfache Menüs, die nach Klick mit der linken Maustaste auf den Desktop erscheinen. Die zahlreichen virtuellen Desktops, können bequem mit [SHIFT]-[ALT]- [Pfeiltaste] aufgerufen werden. Mit Hilfe eines Rechtsklicks auf den Desktop können Sie genauere Einstellungen vornehmen. Vor allem im Zusammenspiel mit Gkrellm und Eterm (wenn dieses installiert ist, können Sie es über [STRG]-[ALT]-[EINFG] starten) kann Enlightenment überzeugen. 52

53 6.4. X im Netzwerk Eigene Menüs richten Sie ein, indem Sie die.menu Dateien im Verzeichnis /.enlightenment anpassen und erweitern. Zum Verlassen von Enlightenment geht man über die besagten Menüs oder benutzt [STRG]-[ALT]- [ENTF] X im Netzwerk Durch die, auf den ersten Blick umständliche, X-Architektur, die das X-Window-System in Client und Server teilt, eignen sich X-Anwendungen von Haus aus für die Verwendung im Netzwerk X-Forwarding Verbindet man sich mit SSH auf einen anderen Rechner, so kann das X-Forwarding mit der Option -X eingeschaltet werden. > ssh -X laptop Nach dem Verbindungsaufbau ist die DISPLAY Variable auf dem entfernten System so gesetzt, dass dort gestartete grafische Anwendungen ihre Ausgaben an den lokalen X-Server übermitteln VNC Finden Sie im Kapitel über Netzwerke beschrieben Wichtige Tools xkill Wenn ein X-Programm abgestürtzt ist, kann man umständlicherweise auf eine freie Kommandozeile wechseln, um die PID des abgestürzten Programmes herauszufinden und es daraufhin durch kill zu beenden. Das ganze geht auch komfortabler, durch das Programm xkill. Wenn Sie diesses aufrufen, verwandelt sich Ihr Mauszeiger in einen Totenkopf, und das nächste Programmfenster was sie damit anklicken wird augenblicklich gekillt Truetype Schriftarten Bei der Arbeit mit X kann es vorkommen, dass Sie einige Schriften, die Sie von Windowssystemen gewöhnt sind, schmerzhaft vermissen. Linux schafft dem Problem Abhilfe, indem Sie Gelegenheit bekommen, Ihre Schriften in das X - System über den Truetype Manager xftt einzubinden Truetype und X Truetypeschriften automatisch installieren Besonders einfach können Sie Truetypeschriften unter Linux installieren, wenn Sie KDE 2/3 mit dem kfontinst Werkzeug installiert haben und ein MS Betriebssystem auf einer anderen Partition Ihres Rechners betreiben. Dann können Sie zuerst die entsprechende Windows-Partition in Ihren Verzeichnisbaum mounten: Für Ihre erste Partition zum Beispiel mit: 53

54 6. X-Window-System mount /windows/c auch die entsprechenden grafischen Methoden aus KDE2/3 führen Sie zum gewünschten Ergebnis. Im nächsten Schritt müssen die Schriften aus dem Windowssystem nach Linux überführt werden. Das können Sie entweder manuell wie unter beschrieben erreichen, oder Sie verwenden das KDE Werkzeug kfontinst. Sie können die Truetypefonts entweder als User oder als Administrator einrichten, am geschicktesten wäre in diesem Fall aber die Lösung als Administrator, damit alle User von diesen Einstellungen profitieren können. Sie Tippen dazu in einem X Terminal ein: für KDE2: kcmshell System/kfontinst für KDE3: kcmshell kcmfontinst Im folgenden Wizard werden Sie Schritt für Schritt durch die Einstellungen geführt, bis Sie den Hauptbildschirm erreicht haben. Hier können Sie nun den Ordner mit den hinzuzufügenden Truetype Schriften auswählen, indem Sie auf Change Folder drücken. Danach sehen Sie eine Auflistung aller gefundenen Truetypeschriften, von denen Sie die markieren, die Sie übernehmen wollen, und dann Install drücken.nun erledigt das Werkzeug die restlichen Schritte für Sie. Truetypeschriften halbautomatisch installieren SuSE darf aus lizenzrechtlichen Gründen die gängigen Truetype Schriften wie Arial, Times new Roman oder Verdana nicht mit ausliefern. Jedoch ist es gestattet, als gewöhnlicher Benutzer diese Schriften vom Microsoft Server im Internet herunterzuladen und herzunehmen. Führen Sie dazu als root folgenden Befehl aus, während Sie eine Internetverbindung aktiv haben: fetchmsttfonts Im Laufe dieses Skripts werden Sie gebeten, die Microsoft End User Licence zu bestätigen, was Sie wohl nicht umgehen werden können! Nach diesem Schritt stehen die Truetypefonts auch unter X zur Verfügung. Truetypeschriften manuell installieren Kopieren Sie die gewünschten Schriften ins Verzeichnis /usr/x11r6/lib/x11/fonts/truetype/ und führen Sie die folgenden Befehle als root aus: cd /usr/x11r6/lib/x11/fonts/truetype/ /usr/x11r6/bin/ttmkfdir sed s/ˆ[0-9]*// > fonts.scale.neu Nun müssen Sie noch SuSEconfig ausführen und X neu starten! Antialiasing überprüfen Der Befehl xmag vergrößert beliebige Stellen Ihres Desktops. Rufen Sie aus einer Konsole heraus xmag auf und klicken die kleine Ecke über einen beliebigen Text, z.b. ein KDE2 Menü. Wenn Sie nun in dem xmag Fenster Zwischen den Pixeln der normalen Schrift noch Pixel in verschiedenen Graustufen bzw. Farbabstufungen der entsprechenden Schriftfarbe sehen, ist Font Anti Aliasing aktiviert. 54

55 6.6. Truetype Schriftarten Open Office und Truetype Die Truetype Schriften können Sie unter Open (bzw. Star) Office erfordern gesonderte Behandlung. Wenn Sie Ihre Schriften mit kfontinst wie unter eingerichtet haben, dann haben Sie vermutlich auch die Einrichtung von Open/Star Office angewählt. In diesem Fall sind Sie fertig mit der Arbeit. Wenn Sie allerdings die Schriften manuell wie unter oder beschrieben installiert haben, so müssen Sie noch einen Extrainstallationsschritt machen. Das mit Open/Star Office mitgelieferte Werkzeug spadmin erfüllt diesen Zweck. Sie können als Administrator mit dem Aufruf spadmin im Open Office Verzeichnis die Installation starten. Mit einem Klick auf Fonts und dann Add... werden Sie in einer Dialogbox nach dem Quellverzeichnis der Truetypefonts gefragt, für das Sie für gewöhnlich /usr/x11r6/lib/x11/fonts/truetype wählen. Mit einem Klick auf Select All und OK sind sie fertig! Truetypeschriften in Mozilla Ab Mozilla-Version funktionieren die Truetypeschriftarten auch... wie s geht können Sie hier lesen: Wechseln Sie ins Verzeichnis [pfad, wo Mozilla sich befindet]/defaults/pref Editieren Sie die Datei unix.js Setzen Sie die Option font.freetype2.enable auf true Editieren Sie die Liste der Verzeichnisse von TrueType-Schriftarten nach Ihrem Geschmack. Sie müssen dazu die Variablen font.directory.truetype.? auf die entsprechenden Verzeichnisse setzen. Übungen Zusammenfassung Zusammengefasste Inhalte des vorangegangenen Kapitels. 55

56 6. X-Window-System 56

57 7. Kommandozeile Auch wenn die grafische Oberfläche bereits den meisten Anforderungen des Anwenders gewachsen ist, der wissbegierige Tüftler kommt um die Kommandozeile nicht drumherum. Lernziele In diesem Kapitel lernen Sie, die Editoren vi und emacs kennen, grundlegende Dateisystemoperationen mit dem mc auszuführen, die Funktion und Umgebung der Shell zu verwenden und an Ihre Bedürfnisse anzupassen Editoren Unter Linux steht eine Unzahl an Editoren zur Verfügung. An dieser Stelle sollen zwei der wichtigsten, da am weitesten verbreiteten, vorgestellt werden. Dabei wird auf die textbasierte Bedienung eingegangen, da erstens die grafische ohnehin intuitiv bedient werden kann und zweitens auf vielen Systemen im operativen Betrieb kein X installiert sein wird. Zunächst einige Befehle in Tabelle 7.1 auf Seite 57, mit denen man sich Dateien anzeigen lassen kann. Befehl cat datei more datei less datei Funktion Gibt die Datei ohne Unterbrechung am Bildschirm aus. Gibt die Datei zeilenweise aus. Zeigt die Datei an, wobei vorwärts und rückwärts gescrollt werden kann. Tabelle 7.1.: Verschiedene Dateibetrachter Manchmal kommt es nach der Anzeige einer binären Datei zur Fehlinterpretation des Zeichensatzes. Es werden dann nur noch seltsame Zeichen am Bildschirm angezeigt. Führen Sie in einem solchen Fall den Befehl reset aus. Achtung Außerdem sollte darauf geachtet werden, dass nach der letzten Zeile einer Konfigurationsdatei nochmals umgebrochen wird. Andernfalls kann es sein, dass die gesamte Datei falsch interpretiert wird. 57

58 7. Kommandozeile vi Auch wenn man diesen Editor mit dem Befehl vi startet, muss sich nicht zwangsläufig der vi dahinter verbergen. Tatsächlich ist dieser nämlich urheberrechtlich geschützt und wird mit Linux nicht mitgeliefert. Deshalb wird ein Editor namens vim gestartet, der jedoch in der Bedienung dem vi bis aufs Haar gleicht. Auch wenn eingefleischte vi Benutzer es niemals zugeben würden, so ist dennoch festzustellen, dass dessen Bedienung sehr gewöhnungsbedürftig ist. An dieser Stelle wird aus zwei Gründen genauer auf den vi eingegangen. Zum einen ist dieser Editor sehr kompakt und steht deshalb bei Wartungsarbeiten oder beim Booten von einer Notfalldiskette zur Verfügung. Zum anderen ist der vi auf vielen Unix-Systemen der Standardeditor, der aufgrund der Konfiguration ungefragt aufgerufen wird. Demnach sollte man zumindest wissen, wie man diesen wieder verlässt. Der vi unterscheidet zwischen zwei Modi: den insert-modus und den complexcommand-modus. Wie aus den Bezeichnungen unschwer zu erkennen ist, wird beim erstgenannten der Text editiert und bei letzterem werden bestimmte Befehle an den Editor übertragen. Dabei gelten die Tastaturbelegungen aus Tabelle 7.2 auf Seite 58. Tastenkürzel Funktion I Wechselt in den Insert-Modus Esc Beendet den Insert-Modus H / L Cursor Bewegung nach links / rechts J / K Cursor Bewegung ab / auf X Löscht ein Zeichen D D Löscht die aktuelle Zeile P Gelöschte Zeile an der Cursor-Position einfügen. U Generelles Undo : Wechselt in den Complex-Command-Modus :w name Speichert den Text unter einem neuen Namen :wq Speichert und beendet den vi :q! Beendet den vi :help Startet die Hilfe Tabelle 7.2.: vi - Bedienung mit der Tastatur emacs Der emacs ist der Editor unter Linux schlechthin. Er ist aufgrund der beliebigen Erweiter- und Programmierbarkeit sehr mächtig. Im Rahmen dieses Kurses kann von daher nur auf die grundlegende Bedienung eingegangen werden, wobei anzumerken ist, dass vor allem, wenn große Textmengen oder Programmcode bearbeitet werden müssen, sich der emacs geradezu anbietet. Auch der emacs ist unter sämtlichen Unix-Versionen, zusätzlich aber auch unter Windows verfügbar. Grundsätzlich macht dieser jedoch Probleme bei der Interpretation von Tasten wie Pos1, Entf usw. Dies liegt an der Defaultkonfiguration, die es Emacs aufgrund eines eingeschränkten Tastatur- und Zeichensatzes ermöglicht, plattformunabhängig lauffähig zu sein. Allerdings treten diese Probleme bei den Distributionen für PCs eher selten auf, da hier bereits die richtige Konfiguration bereitgestellt wird. Auch hier sieht die Bedienung zunächst eher abschreckend aus. Es wimmelt nur so von Strg- und Alt-Tastenkombinationen, mit denen die unzähligen Kommandos aufgerufen werden. Wenn mehrere Tastenkombinationen angegeben 58

59 7.1. Editoren sind, werden diese nacheinander ausgeführt. Tabelle 7.3 auf Seite 59 wird versucht, einen kleinen Überblick zu vermitteln. Tastenkürzel Strg + X, Strg + F Strg + X, Strg + S Strg + X, Strg + S,! Strg + X, Strg + W Strg + G Strg + X, I Strg + D Alt + D Strg + K Alt + M Strg + X, U Strg + Y Strg + Leertaste Strg + X, Strg + X Strg + W Strg + Z Strg + X, Strg + C Funktion Lädt eine neue Datei. Speichert die aktuelle Datei. Speichert alle offenen Dateien Speichert die Datei unter einem neuen Namen. Bricht die Eingabe eines Kommandos ab. Fügt die Datei in den vorhanden Text ein Löscht das Zeichen an der aktuellen Cursorposition Löscht das nächste Wort Löscht eine Zeile Löscht den nächsten Absatz Macht das Löschen rückgängig Fügt den zuletzt gelöschten Text an der aktuellen Cursorposition wieder ein. Setzt einen unsichtbaren Markierungspunkt. Vertauscht Cursorposition und Markierungspunkt. Löscht den Text zwischen Markierung und aktueller Cursorposition Verlässt den emacs kurzzeitig Beendet den emacs Tabelle 7.3.: Emacs - gebräuchliche Tastaturkommandos Während der Bearbeitung einer Datei legt Emacs in regelmäßigen Abständen eine Kopie mit dem aktuellen Zustand der Datei in einer Datei namens #dateiname# an. Beim Speichern wird ebenfalls eine Kopie des ursprünglichen Zustandes der Datei unter dateinameãbgelegt. Diese Dateien können bei einem unvorhergesehenen Systemausfall beim erneuten Start von emacs wiederhergestellt werden. Innerhalb einer Datei kann man sich, wenn die Tastatur korrekt konfiguriert ist, mit den Cursortasten bewegen und mit Del bzw. Entf Zeichen löschen. Sollte dies nicht möglich sein, so funktionieren die Tastenkombinationen aus Tabelle 7.4 auf Seite 59 auf jeden Fall. Der emacs unterstützt verschiedene Be- Tastenkürzel Strg + F Strg + B Strg + P Strg + N Strg + V Alt + V Funktion Cursor ein Zeichen nach rechts Cursor ein Zeichen nach links Cursor eine Zeile nach oben Cursor eine Zeile nach unten Text eine Seite nach unten Text eine Seite nach oben Tabelle 7.4.: Emacs - Ersatz für die Pfeiltasten arbeitungsmodi (z.b. für LATEX -Dateien, c-dateien, Fließtexte usw.), in denen zusätzliche Kommandos zur 59

60 7. Kommandozeile Bearbeitung spezieller Dateien zur Verfügung stehen. Weiterhin kann man die Kommandos auf zweierlei Arten eingeben. Einerseits über die bereits betrachteten Tastenkombinationen, andererseits durch die komplette Angabe des Kommandonamens. Eine solche Eingabe wird durch Alt + X eingeleitet, dann folgt das Kommando, das sogar durch Tab automatisch ergänzt wird. Insgesamt ist die Funktionalität des emacs sehr umfangreich. Es gibt beispielsweise noch die Möglichkeit, Texte in Registern zwischenzuspeichern, die Groß- und Kleinschreibung zu verändern, Zeichenketten zu vertauschen, Tabulatoren zu setzen, Texte ein- bzw. auszurücken, Zeichenketten zu suchen und zu ersetzen und nicht zuletzt Syntaxhervorhebung zu aktivieren. In der Dokumentation trifft man häufig auf Tastenkombinationen, die mit C bzw. M beginnen. C steht hier für Control also Strg und M für Meta folglich Alt. Zu guter Letzt bringt der emacs noch eine umfangreiche Hilfe mit, die man mit der Tastenkombination F1 + Taste aufruft, wie in Tabelle 7.5 auf Seite 60 angedeutet. Tastenkürzel Funktion F1, F1 Übersicht über vorhandene Hilfekommandos F1, A text Enter Übersicht über alle Kommandos, die text enthalten. F1, B Übersicht über alle Tastenkürzel F1, C tastenkürzel Kurzbeschreibung des zugeordneten Kommandos F1, F kommando Enter Kurzbeschreibung des Kommandos F1, Shift + F Emacs FAQ F1, I Zeigt das info-system für die Hilfetexte F1, T Einführung in die Bedienung des Emacs F1, Strg + P Informationen über die Idee freier Software Tabelle 7.5.: Hilfe unter Emacs 7.2. Dateimanager - Midnight Commander Oft ist es eher umständlich mit Hilfe eines Kommandos Dateien zu kopieren bzw. zu verschieben, Verzeichnisse anzulegen oder Dateien zu editieren. Außerdem lässt sich nur schwer allein mit textbasierten Kommandos ein Überblick über das Dateisystem gewinnen. Der textbasiert Midnight Commander (Kommando zum Aufruf: mc) bringt Abhilfe. Übrigens lässt sich der Midnight Commander auch als Editor verwenden, indem man in mit dem Parameter -e aufruft: mc -e [Dateiname] Bedienung Die Oberfläche des Midnight Commanders gliedert sich in vier Bereiche. Menuzeile (zu erreichen mit F9) Hier finden sich teils ausgedehnte Menüs, die weitere Befehle anbieten. Verzeichnis- / Dateifenster (Tabulator zum wechseln) Hier sehen Sie die nicht nur die Verzeichnisstruktur des Dateisystems und die zahlreichen Dateien, sondern können auch anhand verschiedener Symbole 60

61 7.2. Dateimanager - Midnight Commander zwischen symbolischen Links, normalen und ausführbaren Dateien unterscheiden. Während Sie mit Enter in ein Unterverzeichnis wechseln, gelangen Sie mit dem Eintrag.. und Enter wieder in das übergeordnete Verzeichnis. Mit der Taste Einfg können mehrere Dateien / Verzeichnisse auf einmal ausgewählt werden. Mehrere Dateien können auch mit der Taste + ausgewählt bzw. mit der Taste - abgewählt werden. Die Taste * verkehrt Ihre Auswahl in das Gegenteil. Kommandozeile Hier können Sie wie gewohnt einzelne Befehle absetzen, deren Ausgabe jedoch von den darüberliegenden Fenstern verdeckt wird. Die Tastenkombination Strg + O bewirkt ein Aus- bzw. Einblenden selbiger. Funktionszeile Die gängigsten Kommandos werden am unteren Rand des Bildschirms angezeigt. Mit der entsprechenden F-Taste können diese aufgerufen werden Konfiguration Der Midnight Commander kann sehr flexibel an die Bedürfnisse des Benutzers angepasst werden. Aktivieren Sie mit der Taste F9 das Menü und wählen Sie den Punkt Optionen. Im Menü Konfiguration bieten sich Ihnen eine ganze Reihe von Optionen, die teils selbst erklärend sind, teils hier vorgestellt werden. Fensteroptionen (panel options) Wie in Tabelle 7.6 auf Seite 61 erläutert. Option verborgene Dateien anzeigen (show hidden files) alle Dateien gemischt (mix all files) Wirkung Normalerweise werden Dateien, die mit einem Punkt beginnen, nicht angezeigt, da dies unter Linux eine versteckte Datei markiert. Ist diese Option aktiv, wird bei der Anzeige kein Unterschied zwischen Dateien und Verzeichnisse gemacht. Ist sie nicht aktiv, werden Verzeichnisse (und Verknüpfungen zu Verzeichnissen) immer zuerst angezeigt. Tabelle 7.6.: mc - Fensteroptionen Andere Optionen (other options) Wie in Tabelle 7.7 auf Seite 62 angegeben. Darstellungsoptionen (Layout) Diese erklären sich eigentlich von selbst. Hervorheben will ich nur die Optionen zur Fensteraufteilung. Unter Linux können die Namen von Dateien und Verzeichnissen sehr lang werden. Bei vertikaler Teilung der Anzeigefenster werden u.u. die Namen abgekürzt. Teilen Sie hingegen die Fenster horizontal, bieten Ihnen die dann übereinander liegenden Fenster weitaus mehr Platz zur Anzeige. Der Umgang mit diesen horizontalen Fenstern mag etwas ungewohnt sein, aber die meist vollständige Anzeige der Namen macht dies mehr als wett. Darstellungsbits (Display bits) Hier legen Sie fest, ob nationale Sonderzeichen angezeigt bzw. deren Eingabe zugelassen wird. Wählen Sie sinnvollerweise ISO und die Option Komplette 8-Bit Eingabe. 61

62 7. Kommandozeile Option berechne Gesamtsummen (compute totals) internen Editor benutzen (use internal edit) internen Betrachter benutzen (use internal view) rotierender Strich (rotating dash) sicheres Löschen Wirkung Vor allen Datei-Operationen werden zunächst die Gesamtgröße und die Anzahl aller betroffenen Dateien berechnet. Damit erhalten Sie eine präzisere Fortschrittsanzeige, allerdings auf Kosten der Geschwindigkeit. Legt fest, ob Sie für das Bearbeiten von Dateien den eingebauten oder einen externen Editor verwenden wollen. Wird diese Option deaktiviert, so wird der in der Umgebungsvariable EDITOR angegebene gestartet. Wenn Sie zum Ansehen von Dateien nicht den eingebauten Betrachter verwenden wollen, deaktivieren Sie diese Option. Es wird dann der in der Umgebungsvariablen PAGER angegebenen Betrachter benutzt. In der rechten oberen Ecke wird, wenn ein Vorgang länger dauert, ein rotierender Strich angezeigt. Die Vorgabe im Bestätigungsdialog wechselt von der Ja zur Nein Schaltfläche. Beim Löschen von Verzeichnissen müssen Sie das Wort ja eingeben. Tabelle 7.7.: mc - Andere Optionen 62

63 7.3. Bash - Bourne Again Shell Ausführung typischer Arbeiten Kopieren / Verschieben von Dateien / Verzeichnissen Es empfiehlt sich, bevor Dateien bzw. Verzeichnisse kopiert werden, in einem der beiden Fenster das Ziel bereits auszuwählen, da dieses dann in den Dialog übernommen wird und man sich unter Umständen enorme Tipparbeit erspart. Anschließend markieren Sie die Dateien mit Einfg, +, - bzw. * und Kopieren (F5) / Verschieben (F6) die Dateien. Schnelles Mounten von Datenträgern Wechseln Sie mit dem Cursor zum Mountpoint und drücken Sie dann F2. Im erscheinenden Fenster wählen Sie und geben im darauffolgenden Dialog mount bzw. umount ein. Navigieren in gepackten Dateien (.tar,.rpm,.zip) Daten in gepackten Dateien können problemlos angezeigt werden. Auch wenn das Öffnen einen Moment dauert, danach können Sie sich wie in einer normalen Verzeichnisstruktur bewegen. Das war jetzt nur ein kurzer Einblick in die interssantesten Möglichkeiten des Midnight Commanders. Es gibt noch eine ganze Reihe weiterer Möglichkeiten, die diesen textbasierten Dateimanager für mich zu einem unverzichtbaren Werkzeug werden ließen, das ich bei der täglichen Arbeit nicht missen möchte Bash - Bourne Again Shell Die bourne again shell ist der Standardkommandointerpreter unter Linux. Sie ermöglicht Ihnen die Eingabe und Ausführung von Kommandos. Zudem stellt Sie eine eigene Programmiersprache zur Verfügung, die zur Erstellung von Shell-Scripts verwendet werden kann. Im folgenden Abschnitt wird zunächst auf die Verwendung der bash eingegangen. Themen sind hier beispielsweise die Ein- und Ausgabeumleitung, die Kommunikation zwischen mehreren Prozessen und die Verwaltung von Shell-Variablen Shell - Benutzerschnittstelle Die Shell ist die Schnittstelle zwischen dem Anwender und dem Betriebssystem Linux. Mit ihrer Hilfe werden Kommandos ausgeführt und Programme gestartet. Der Begriff Kommandointerpreter rührt daher, dass die Shell zunächst die Eingaben des Benutzers deutet und dann an die jeweilige Anwendung weitergibt. Wie bereits angesprochen stellt sie außerdem eine leistungsfähige Programmiersprache zur Verfügung, mit der Arbeitsabläufe automatisiert werden können. Dabei ermöglichen es einige besondere Shell-Kommandos innerhalb dieser Programme Variablen zu verwenden, Abfragen und Schleifen zu bilden usw. Letztendlich handelt es sich hierbei um einfache Textdateien, die aufgrund Ihrer besonderen Verwendung als Shell- Skripte bezeichnet werden. Für jeden Anwender, der im System einen Benutzeraccount hat, ist eine default shell vorgesehen. Diese wird bei der Einrichtung des Benutzers in der Datei /etc/passwd hinterlegt. Mit dem Befehl chsh kann der Anwender diese Einstellung nachträglich anpassen. Eine Liste der verwendbaren Shells findet sich in /etc/shells. Abfrage der installierten bash-version: echo $BASH_VERSION Abfrage der gerade aktiven Shell: echo $ Umgebungsvariablen Die Bash verwendet verschiedene Dateien zur Initialisierung der Umgebung. Wenn sie als Loginshell aufgerufen wird, werden diese Dateien in der folgenden Reihenfolge ausgewertet. 1. /etc/profile 63

64 7. Kommandozeile 2. /.profile 3. /etc/bash.bashrc 4. /.bashrc Änderungen an der Umgebung können die Benutzer in /.profile bzw. /.bashrc vornehmen Basiskonfiguration - Tastenbelegung und Prompt Die Konfiguration der Tastatur kann global in der Datei /etc/inputrc oder benutzerspezifisch in /.inputrc eingestellt werden. Dies ist unter Umständen notwendig, da deutsche Sonderzeichen und die Funktionstasten Pos1, Ende und Entf nicht immer wie gewohnt sind arbeiten. Die erwähnten Dateien steuern die Funktion readline, die bash-intern zur Verarbeitung von Tastatureingaben verwendet wird. In einem Konsolenfenster müssen deshalb aber noch lange nicht alle Funktionstasten richtig interpretiert werden. Der Prompt zeigt üblicherweise den angemeldeten Benutzer, den Computernamen, das aktuelle Verzeichnis und mit welchen Rechten der eingeloggte Anwender ausgestattet ist. Weitere Einstellmöglichkeiten bieten sich durch die Umgebungsvariable PS Kommandoeingabe Die bash unterstützt Sie bei der Kommandoeingabe mit vielen praktischen Tastenkürzeln und Sondertasten. Insbesondere können Sie mit den Pfeiltasten die zuletzt eingegebenen Kommandos aufrufen, ausführen oder nachträglich bearbeiten. Diese Kommandos werden beim Ausloggen in einer Datei gespeichert und stehen somit nach dem nächsten Einloggen wieder zur Verfügung. Außerdem können Sie, sollten die Ausgaben eines Befehls aufgrund ihres Umfangs nicht mehr vollständig sichtbar sein, mit shift + Bild auf bzw. shift + Bild ab die vorangegangenen Seiten betrachten. Dies ist solange möglich, bis Sie die Konsole wechseln. Auf diese Art und Weise können Sie beispielsweise nachvollziehen, was beim Systemstart abgelaufen ist. Eine weitere nützliche Funktion ist die automatische Expansion von Kommando- und Dateinamen. Haben Sie die ersten Buchstaben beispielsweise eines Befehls eingegeben, wird Ihnen nach Betätigung von Tab der Befehlsname ergänzt, wenn dieser bereits eindeutig ist, andernfalls wird nach einem kurzen Signalton und einem nochmaligen Bestätigen mit Tab eine Liste mit allen zur Verfügung stehen Kommandos oder Dateien angezeigt. Diese Funktion verschleiert jedoch, wo sich ein Programm eigentlich befindet. Abfrage des Verzeichnisses für ein gesuchtes Kommando: whereis <kommandoname> which <kommandoname> Ähnliche Expansionsmechanismen treffen Sie auch bei Verzeichnis- und Pfadnamen an Wichtige Tasten und Tastenkombinationen... entnehmen Sie der Tabelle 7.8 auf Seite Alias-Abkürzungen Mit dem Kommando alias werden Abkürzungen für Kommandos festgelegt. Bei der Verarbeitung der Kommandozeile wird zunächst geprüft, ob das erste Wort ein Alias ist und dann gegebenenfalls durch den vollständigen Text ersetzt. Die bash durchsucht darüber hinaus bei Pipes, Kommandosubstitutionen oder bei der sequentiellen Ausführung von Kommandos alle vorkommenden Kommandonamen auf Abkürzungen. 64

65 7.3. Bash - Bourne Again Shell Bash-Tastenkombination Pfeiltasten nach oben bzw. unten Pfeiltasten nach rechts bzw. links Pos1, Ende Strg + A, Strg + E Alt + B, Alt + F Backspace, Entf Alt + D Strg + K Alt + T Tab Strg + L Strg + R Funktion Scrollt durch die zuletzt eingegebenen Kommandos Bewegt den Cursor vor bzw. zurück Bewegt den Cursor an den Beginn, an das Ende der Zeile Wie Pos1 und Ende Bewegt den Cursor wortweise rückwärts, vorwärts Zeichen rückwärts, vorwärts löschen Wort rechts vom Cursor löschen Bis zum Ende der Zeile löschen Die beiden vorangegangenen Wörter tauschen Expansion des Kommando- oder Dateinamens Löscht den Bildschirm Sucht nach früher eingegebenen Kommandos, erneutes Betätigen geht zum nächsten Suchergebnis Tabelle 7.8.: Bash Tastaturfunktionen Festlegung eines Aliases: alias more=less Die Alias Abkürzungen werden vorrangig gegenüber gleichnamigen Kommandos behandelt. Das kann dazu genutzt werden, um den unerwünschten Aufruf eines Kommandos zu vermeiden. Einmal festgelegte Abkürzungen sind bis zum Verlassen der shell gültig, können jedoch mit dem Befehl unalias wieder gelöscht werden. Alias Anweisungen, die in die Dateien.profile oder.bashrc aufgenommen sind, werden beim Einloggen geladen Ein- und Ausgabeumleitung Bei der Ausführung von Kommandos in der bash stehen drei Dateideskriptoren zur Verfügung, die auf Betriebssystemebene wie Dateien behandelt werden. Standardeingabe: Gerade ausgeführte Programme lesen aus dieser die Eingaben des Anwenders. Normalerweise ist dies die Tastatur. Standardausgabe: An diese werden alle Ausgaben des Programmes geschickt. Im Regelfall ist dies der Bildschirm bzw. das Terminal. Standardfehler: Fehlermeldungen werden üblicherweise ebenfalls im aktuellen Terminal ausgegeben. Diese drei Dateideskriptoren können jedoch angepasst werden. So ist es beispielsweise möglich, die Standardausgabe des einen Kommandos zur Standardeingabe eines anderen Kommandos zu machen. Zudem kann man Ausgaben eines Programmes in eine Datei umleiten. Beispiele sind in Tabelle 7.9 auf Seite 66 angegeben. Pipes: Die Bildung einer Pipe erfolgt durch das Zeichen, das zwischen zwei aufeinanderfolgende Befehle eingefügt wird. Dadurch wird die Standardausgabe des einen zur Standardeingabe des anderen Kommandos. Beispiel: 65

66 7. Kommandozeile Syntax Funktion ls *.tex inhalt Gibt das Ergebnis von ls in der Datei inhalt aus ls *.gz inhalt Hängt die Ausgabe von ls an die Datei inhalt an 2 datei Leitet alle Fehlermeldungen in die angegebene Datei & datei Leitet sowohl die Ausgabe als auch die Fehler in die datei um datei Leitet die Eingaben an das Kommando weiter Tabelle 7.9.: Ausgabeumleitung mit der Bash ls -al less ps -ax grep mucke FIFOs: Die Idee, die hinter firs in first out steckt, ist im Grunde dieselbe einer Pipe. Sie wird verwendet, damit zwei voneinander unabhängige Programme miteinander kommunizieren können. Beispiel: mkfifo fifo ls -l > fifo & less < fifo Ausgabevervielfältigung: Das Kommando tee bewirkt, dass zwei Kopien der Programmausgabe erzeugt werden. Auf diese Weise kann eine Kopie am Bildschirm angezeigt werden, während die zweite Kopie in eine Datei geschrieben wird. Beispiele: ls tee inhalt ls tee inhalt1 inhalt2 ls -l tee inhalt1 sort +4 > inhalt Kommandoausführung Bevor ein Kommando von der bash ausgeführt wird, interpretiert diese zunächst eventuell eingegebene Steuerzeichen. Auf diese Weise ist es möglich, Programme im Hintergrund zu starten, Jokerzeichen zu verwenden und Ergebnisse eines Kommandos in die Parameterliste eines anderen Kommandos zu übernehmen. Hintergrundprozesse Kommandos können im Hintergrund ausgeführt werden, wenn beim Aufruf ein & angehängt wird. Das unter Umständen zeitaufwendige Kommando wird dann von der bash verarbeitet, während im Vordergrund bereits die Eingabeaufforderung zur Verfügung steht. Beispiel: find / -name *sh > ergebnis & 66

67 7.3. Bash - Bourne Again Shell Hinweis Mit Strg + Z kann ein Programm zunächst unterbrochen und dann in den Hintergrund versetzt werden. Mit Strg + C wird die Ausführung gänzlich abgebrochen. Ausführung mehrerer Kommandos... wie in Tabelle 7.10 auf Seite 67 angegeben. Kommando Kommando1; kommando2 Kommando1 && Kommando2 Kommando1 kommando2 Kommando1 & kommando2 (kommando1; kommando2) Funktion Führt die Kommandos nacheinander aus Führt kommando2 aus wenn kommando1 erfolgreich war Führt kommando2 aus wenn kommand1 einen Fehler liefert Startet kommando1 im Hintergrund, Kommando2 im Vordergrund Führt beide Kommandos in der gleichen shell aus Tabelle 7.10.: Mehrere Kommandos gleichzeitig Substitutionsmechanismen Der Begriff Substitutionsmechanismus klingt zunächst sehr abstrakt. Gemeint ist, dass vor der Ausführung eines Kommandos die durch Sonderzeichen gebildeteten Ausdrücke von der bash ausgewertet werden. Dies geschieht bei der Verwendung von Jokerzeichen zur Bildung von Dateinamen, bei der Zusammensetzung von Zeichenketten, bei der Berechnung arithmetischer Klammern, bei der Verwendung von umgekehrten Apostrophen zur Kommandosubstitution usw. Dateinamenbildung mit Jokerzeichen Wie bereits mehrfach angesprochen, ist nicht das jeweilige Kommando für die Auswertung der Jokerzeichen wie in Tabelle 7.11 auf Seite 68 erläutert, zuständig, sondern die bash selbst. Diese übergibt nach der Expansion des Ausdrucks eine Liste mit den Dateien bzw. Verzeichnissen an das Kommando. Da oft das Ergebnis eines mit Jokerzeichen versehenen Ausdrucks nicht den Erwartungen entspricht, sollte man zunächst einmal die Expansion genauer betrachten. Außerdem ist zu beachten, was das Kommando dann mit der übergebenen Liste an Datei- und Verzeichnisnamen anstellt. Beispiel: echo /* ls /* Zeichenkettenbildung mit geschweiften Klammern Die Klammererweiterung (brace expansion) der bash setzt aus in geschweiften Klammern angegebenen Zeichenketten alle Zeichenkettenkombinationen zusammen. Beispiel: 67

68 7. Kommandozeile Jokerzeichen Bedeutung? Genau ein beliebiges Zeichen * Beliebig viele Zeichen [abc Genau eines der angegebenen Zeichen [a-f] Ein Zeichen aus dem angegebenen Bereich [!abc] Keines der angegebenen Zeichen [âbc] Keines der angegebenen Zeichen Abkürzung für das Heimatverzeichnis. Abkürzung für das aktuelle Verzeichnis.. Abkürzung für das übergeordnete Verzeichnis Tabelle 7.11.: Jokerzeichen echo {a,b}{1,2,3} echo u{01,02,03}tm Berechnung arithmetischer Ausdrücke Die bash ist in der Lage, bei der Eingabe eines korrekten Ausdrucks diesen zu berechnen. Hierbei sind die meisten aus der Programmiersprache C bekannten Operatoren erlaubt. Die vier Grundrechenarten (+,-, *, /), die Modulofunktion %, für Vergleich (==,!=,, =,, =), für Bitverschiebungen (, ) und schließlich die logischen Operatoren Nicht (!), Und (& &) und Oder ( ). Hierbei gültig sind auch die üblichen Rechenregeln (z.b. Punkt vor Strich). Beispiel: echo [2+3] 7.4. Reguläre Ausdrücke Reguläre Ausdrücke (engl.: regular expressions)sind ein Begriff aus der Theoretischen Informatik - Reguläre Ausdrücke beschreiben Mengen aus Zeichenketten. Wichtig werden Sie daher immer dann, wenn Sie wie oben beschrieben Dateien an der Kommandozeile spezifizieren wollen. Doch auch bei der Suche von Mustern in Textdateien sind Reguläre Ausdrücke nützlich Syntax von Regulären Ausdrücken Reguläre Ausdrücke setzt man aus einzelnen Zeichen zusammen. Die Bedeutung dieser entnehme man Tabelle 7.12 auf Seite 69 oder der man-page von grep. Diese Bausteine können Sie beliebig zusammensetzen, um Reguläre Ausdrücke zu bilden. Hilfreich dabei ist, dass jeder dieser Bausteine mit einer der Angaben aus Tabelle 7.13 auf Seite 69 ausgestattet werden kann. Weitere Besonderheiten von Regulären Ausdrücken entnehmen Sie bitte der man-page von grep grep grep wird gebraucht, um Dateien, oder die Ausgabe von Programmen, zu durchsuchen, und nach Stichworten und Mustern zu filtern. Als Parameter dienen dabei ein Regulärer Ausdruck wie oben beschrieben und 68

69 7.4. Reguläre Ausdrücke. Beliebiges Zeichen \w Beliebiges alphanumerisches Zeichen \W Beliebiges nicht alphanumerisches Zeichen [xyz] Eines der Zeichen x, y oder z [x-z] Ein Zeichen aus x - z [ˆq-v] Alle Zeichen außerhalb des Bereichs q-v Tabelle 7.12.: Bausteine von Regulären Ausdrücken? Muster kommt einmal oder gar nicht vor * Muster kommt nicht oder beliebig oft vor + Muster kommt mindestens einmal vor {n} Muster kommt exakt n mal vor {n,} Muster kommt mindestens n mal vor {n,m} Muster kommt zwischen n und m mal vor Tabelle 7.13.: Multiplikatorbausteine eine Datei. Alternativ kann grep auch über sogenannte Pipes an normale Programme und Anweisungen angehängt werden. Dann wird die Ausgabe dieser Programme nach dem angegebenen Muster gefiltert. Beispiele Durchsuche die Liste der aktuellen Prozesse nach denen des Users michael ps -eadf grep michael Durchsuche die /etc/fstab nach Master-Festplatten am Primary-Port: grep "\/dev\/hda*" /etc/fstab Limits Mit dem Befehl ulimits ist es möglich, Limits für die Nutzung von Systemressourcen zu setzen bzw. sich diese anzeigen zu lassen. Allerdings wirken sich die Beschränkungen nur auf Prozesse aus, die durch die Shell gestartet werden. Die zahlreichen Optionen und die Bedeutung von Hard- und Softlimit können in der manpage zur Bash nachgeschlagen werden. Die gesetzten Limits werden übrigens durch ulimit -a sichtbar. Systemweite Einstellungen sollten in /etc/profile gesetzt werden. Die Angaben erfolgen in kb. Übungen

70 7. Kommandozeile Zusammenfassung Zusammengefasste Inhalte des vorangegangenen Kapitels. 70

71 8. Standards Um ein Auseinanderfallen der verschiedensten Distributionen zu verhindern, gibt es einige Standardisierungsbemühungen. Lernziele In diesem Kapitel lernen Sie, die Linux Standard Base, die TEX Directory Structure und die Vorgaben des Filesystem Hierarchy Standard kennen LSB - Linux Standard Base Die Linux Standard Base liegt inzwischen in der Version 1.2 vor. Die SuSE Distribution bewegt sich in weiten Teilen sehr nahe an dieser Spezifikation. Aktuelle Informationen hierzu finden sich im Internet unter TDS - T E X Directory Structure TEX ist ein Satzsystem, das auf zahlreichen Plattformen läuft und über zahlreiche Makropakete erweiterbar ist. Die TEX Directory Structure beschreibt wie die zahlreichen Dateien von TEX im Verzeichnisbaum anzuordnen sind. SuSE bringt tetex, eine Zusammenstellung aktueller TEX Pakete, in einer Konfiguration in ihre Distribution ein, die sowohl den Vorgaben von TDS als auch des FHS entspricht FHS - Filesystem Hierarchy Standard Dieser Standard, der mittlerweile Bestandteil des LSB ist, beschreibt die Dateisystemstruktur. SuSE strebt eine weitgehende Konformität zum FHS an. Aktuelle Informationen finden sich im Internet unter Der in der Überschrift genannte Standard wie aus Tabelle 8.1 auf Seite 72 ersichtlich, beschreibt, welche Dateien wo in der Verzeichnisstruktur abgelegt werden. Diese Ausdrucksweise ist zwar nicht völlig richtig, aber fürs erste ausreichend. Wie die Daten genau organisiert sind, wird später noch genauer erläutert. Auch wenn die eben beschriebene Hierarchie gar nicht so undurchsichtig erscheint, ist die wirkliche Struktur der Verzeichnisse und der dahinterstehenden Daten alles andere als eindeutig. Um dies nachzuvollziehen, betrachten Sie doch einfach mal den Inhalt des Verzeichnisses /usr und dessen weitreichende Unterverzeichnisse (/usr/bin/x11 ist dasselbe Verzeichnis wie /usr/x11r6/bin). 71

72 8. Standards Verzeichnis Inhalt des Verzeichnisses / enthält, ausgehend vom Wurzelverzeichnis alle in das Dateisystem eingebundenen Verzeichnisse. /bin enthält elementare Kommandos zur Systemverwaltung, die von allen Benutzern ausgeführt werden können (binaries). /boot enthält Dateien, die zum Booten des Systems verwendet werden (LILO Bootmanager) und zudem Kernel-Komponenten bzw. den Kernel selbst. /dev enthält block- und zeichenorientierte Gerätedateien für nahezu alle Hardware-Komponenten. /etc enthält nahezu alle Administrations- und Konfigurationsdateien, gegebenenfalls in weiteren bezeichnenden Unterverzeichnissen. /home enthält die Heimatverzeichnisse aller Anwender, abgesehen von root. Im eigenen Verzeichnis hat der Benutzer alle Rechte, darf folglich Dateien löschen, Verzeichnisse anlegen usw. /lib enthält einige gemeinsame Bibliotheken für dynamisch gelinkte Programme oder symbolische Links darauf (/lib/modules beinhaltet Kernel- Module, die im laufenden Betrieb eingebunden werden). /lost+found hier werden Daten von fsck (file system check) abgelegt, die bei der Wiederherstellung eines defekten Dateisystem nicht mehr zugeordnet werden konnten. /mnt enthält Unterverzeichnisse wie cdrom oder floppy, die als Mountpoint dienen und an deren Stelle andere Dateisysteme eingebunden werden können. /opt enthält Zusatzpakete und kommerzielle Programme, die nachträglich installiert wurden. /proc enthält Unterverzeichnisse für alle laufenden Prozesse, wobei die ProzessID dem Verzeichnisnamen entspricht, und spiegelt so die interne Prozessverwaltung wieder. Dieses Verzeichnis belegt keinen Speicher auf der Festplatte, da es sich nur um ein Abbild des Speicherinhaltes handelt. /sbin enthält Kommandos zur Systemverwaltung, auf die vor allem während der Initialisierung des Systems zugegriffen wird und die nur von root ausgeführt werden dürfen. /tmp dient als Arbeitsverzeichnis für das Anlegen von temporären Dateien und Verzeichnissen durch den Benutzer oder das System, wobei die Daten beim nächsten Bootvorgang gelöscht werden. /usr stellt das für den typischen Anwender wichtigste Verzeichnis dar, enthält idealerweise nur statische Daten, wie Anwendungsprogramme, das X System, verschiedene Compiler, Dokumentation und letztendlich auch die Quellcodes. /var enthält sämtliche veränderliche Daten wie beispielsweise Konfigurationsdateien, Druckaufträge für den Spooler, Systemanmeldungen, Protokolldateien, Lockfiles, Account-Dateien und zwischengespeicherte Daten. Tabelle 8.1.: Standardverzeichnisse 72

73 8.3. FHS - Filesystem Hierarchy Standard Übungen Zusammenfassung Die einzelnen Abschnitte zu den angesprochenen Standards sollten bei Bedarf weiter ausgebaut werden. Allerdings kommt es hier auch zu Zielkonflikten mit anderen Kapiteln, insbesondere beim FHS. 73

74 8. Standards 74

75 9. Dateisystem Auch wenn der Anwender sich kaum außerhalb seines Home-Verzeichnisses bewegt, so ist das Dateisystem als Ganzes unter Linux doch der Dreh- und Angelpunkt jeglicher Abläufe. Deshalb wird man sich ohne grundlegende Kenntnisse desselben wohl kaum auf Dauer zurechtfinden. Lernziele In diesem Kapitel lernen Sie, sich einen Überblick über das Dateisystem zu verschaffen, verschiedene Dateitypen zu unterscheiden und Dateien und Verzeichnisse anzusprechen, Zugriffsrechte zu setzen und zu ändern. Dateisysteme zu erzeugen, zu überprüfen, ein- und auszugehänggen, grundlegendes über Partitionen, die Interna des Dateisystems ext2 kennen Grundlagen der Dateiverwaltung Dateitypen... entnehmen Sie der Tabelle 9.1 auf Seite Pfadangaben Der Pfadname gibt eindeutig an, wo sich welche Dateien im System befinden. Auf diese Weise findet der Anwender die abgelegten Daten auch noch nach längerer Zeit wieder. Der Pfadname selbst setzt sich aus den einzelnen Verzeichnisnamen zusammen, die durch Schrägstriche / voneinander getrennt sind. Man unterscheidet grundsätzlich zwei Pfadangaben, wie in Tabelle 9.2 auf Seite 76 angegeben. Angenommen das aktuelle Verzeichnis wäre /share. Es soll nur in das Unterverzeichnis /home/mucke gewechselt werden. Mit der absoluten Pfadangabe würde das Kommando cd /home/mucke lauten, bei Verwendung eines relativen Pfades hingegen cd../home/mucke. Die wichtigsten Themen dieses Abschnittes sind die Dateien und Verzeichnisse (Dateinamen, Jokerzeichen, Verzeichnisverwaltung), die Verzeichnisstruktur, Besitzverhältnisse und Zugriffsrechte, feste und symbolische Links, Zugriff auf Datenträger, verschiedene Dateisysteme und letztendlich die schon angesprochenen Interna. 75

76 9. Dateisystem Dateitypen Datei (file) Symbol: - Verzeichnis (directory) Symbol: d Gerätedatei (device file) Symbol: c oder b Charakterisierung Ketten von Zeichen, denen ein Name zugeordnet wurde, unter dem der Anwender seine Daten wiederfindet. Dateien können unterschiedliche Daten enthalten (ASCII Text oder binären Code). Die Dateigröße wird vom Dateisystem auf eine bestimmte Größe beschränkt. Da das System mehrere tausend Dateien enthalten kann, werden diese Dateien geordnet und in sogenannten Verzeichnissen gespeichert. Ein Verzeichnis kann zudem weitere Unterverzeichnisse enthalten und nahezu beliebig tief geschachtelt werden, wenn man davon absieht, dass ein Pfadname höchstens 256 Zeichen lang sein darf. Außerdem enthält ein Verzeichnis mindestens zwei Einträge. Den Verweis.. auf das übergeordnete Verzeichnis und. für das aktuelle Verzeichnis. Alle Geräte des Systems können über spezielle Dateien, die sogenannten Gerätedateien angesprochen werden. Sie bilden die Schnittstelle zu den im Kernel geladenen Gerätetreibern, wobei jedes Gerät einen Eintrag im Verzeichnis /dev hat. Tabelle 9.1.: Dateitypen wie in ls -l Pfadangabe absoluter Pfad relativer Pfad Beschreibung beschreibt den Weg zu einer Datei oder einem Verzeichnis immer ausgehend vom Wurzelverzeichnis. Die Pfadangabe beginnt immer mit einem Schrägstrich /. Hierbei spielt der eigene Standort keine Rolle. beschreibt den Weg zu einer Datei oder einem Verzeichnis ausgehend vom aktuellen Standort des Benutzers im Dateisystem. Wird das übergeordnete Verzeichnis angesprochen, geschieht dies mit.., das aktuelle Verzeichnis kann mit. angesprochen werden. Tabelle 9.2.: Pfadangaben 76

77 9.1. Grundlagen der Dateiverwaltung Dateien und Verzeichnisse Unter dem Linux-Dateisystem ext2 sind Dateinamen bis zu 255 Zeichen zulässig. Dabei wird zwischen Groß- und Kleinschreibung unterschieden. Auch Sonderzeichen sind erlaubt, sollten jedoch aus verschiedenen Gründen (gelegentliche Schwierigkeiten mit diversen Programmen) vermieden werden. Dateien, deren Namen mit einem Punkt beginnen, gelten als versteckt. Der Punkt im Dateinamen selbst wird häufig als Trennzeichen verwendet. Dateinamenserweiterungen kennt Linux jedoch nicht. Dateinamen, die Leerzeichen enthalten, müssen beim Ansprechen in Hochkommata gestellt werden, um eine Verwechselung mit Parametern bzw. Optionen auszuschließen Gerätedateien Alle Geräte werden im Linux-System über sogenannte Gerätedateien angesprochen. Sie bilden die Schnittstelle zu den im Kernel geladenen Gerätetreibern. Jede Hardwarekomponente weist einen Eintrag in Form eines Gerätenamens im Verzeichnis /dev auf. Diese Dateien haben keine Datenblöcke, denn die Daten, die in eine solche Datei geschrieben werden, werden sofort an das entsprechende Gerät weitergeleitet. Es gibt zwei Arten von Gerätedateien: blockorientierte Geräte (block devices), die als kleinste Einheit einen Datenblock übergeben zeichenorientierte Geräte (character oder raw Devices), die byteweise arbeiten Manche Geräte, beispielsweise Festplatten, können sowohl eine block- als auch eine zeichenorientierte Gerätedatei im Verzeichnis /dev besitzen. Bei der Installation werden die Gerätedateien automatisch angelegt. Da alle eventuell vorkommenden Geräte abgedeckt werden sollen, ist es normal, dass auf Ihrem System weit mehr Gerätedateien abgelegt sind, als benötigt werden. Die wichtigsten Gerätedateien sind in Tabelle 9.3 auf Seite 77 angedeutet. Gerätedatei /dev/fd* /dev/hd* /dev/sd* /dev/ttys* /dev/cua* /dev/lp* /dev/st* /dev/rmt* /dev/sr* /dev/scd* /dev/null und und und Beschreibung steht für Diskettenlaufwerke steht für (E)IDE Festplatten bezeichnet SCSI Festplatten stehen für serielle Schnittstellen, wie z.b. Bildschirm und Modems steht für parallele Schnittstellen bezeichnet Bandlaufwerke steht für SCSI CD-ROM Laufwerke bezeichnet ein Gerät, das einem Fass ohne Boden gleicht, alle an dieses Gerät gesandten Daten verschwinden im Nirvana Tabelle 9.3.: Arten von Gerätedateien Auch Gerätedateien können mit dem bereits bekannten Befehl ls -l gelistet werden. Der Buchstabe zu Beginn jeder Zeile bezeichnet die Art des Gerätes. Eine Besonderheit unter Linux sind noch die sogenannte Major und Minor Device Number. Die Major Device Number verweist auf einen entsprechenden Treiber im System-Kernel. Sie wird anstelle der Adressen auf Datenblöcke im Inode der Gerätedatei gespeichert. 77

78 9. Dateisystem Mehrere gleichartige Geräte werden über denselben Gerätetreiber angesprochen und haben daher dieselbe Major Device Number. Die genauere Unterscheidung liefert die Minor Device Number, die den Gerätetreiber genauer beschreibt und somit zusätzliche Informationen über die Hardware liefert Jokerzeichen und Platzhalter Die sogenannten Jokerzeichen werden Sie im täglichen Umgang mit Dateien zumindest an der Konsole immer wieder benötigen. Während das? für ein beliebiges Zeichen steht, ersetzt der * gleich eine ganze, beliebige Zeichenkette. Grob betrachtet, entspricht dies den Wildcards unter Windows. Weitere Einschränkungen ermöglichen Ihnen die eckigen Klammern. Der Ausdruck [abcd]* steht somit für Dateien, die mit a, b, c oder d beginnen. Den gleichen Effekt erzielen Sie durch [a-d]*. Durch ein vorangestelltes! oder ˆkann der Ausdruck negiert werden. Somit umfasst [!abc]* alle Dateien, deren Name nicht mit a, b oder c anfangen. Die Jokerzeichen können auch für Verzeichnisse verwendet werden. So meint der Ausdruck */*.tex alle Dateien im Unterverzeichnis erster Ordnung des aktuellen Verzeichnisses, deren Name mit.tex endet. Weitere Platzhalter sind der., der für das aktuelle Verzeichnis, der.., der für das übergeordnete Verzeichnis und die, die für das Heimatverzeichnis steht. So werden durch das Kommando cp projekt/*.c alle *.c Dateien aus dem Verzeichnis projekt in das aktuelle Verzeichnis kopiert. Zunächst mag die Verwendung der Jokerzeichen recht einfach erscheinen. Durch eine Eigenart von Linux gestaltet sich dies jedoch unter Umständen sehr schwierig. Für die Interpretation der Wildcards ist die Shell zuständig. Diese übergibt die Liste der passenden Datei- und Verzeichnisnamen dem vorangestellten Befehl. Diese Vorgehensweise bringt nicht selten Komplikationen mit sich, da die Parameterliste des Kommandos erst greift, wenn die Liste der gefundenen Dateien bereits fertig ist. Es ist also mit dem Befehl ls -R *.tex nicht möglich, rekursiv alle Unterverzeichnisse nach *.tex Dateien zu durchsuchen. Probieren Sie verschiedene dieser Wildcards am besten im Zusammenhang mit dem Befehl echo aus, da dieser das Ergebnis Ihrer Jokerzeichen nicht interpretiert, sondern nur ausgibt Versteckte Dateien Alle Dateien, deren Name mit einem Punkt beginnt, gelten als versteckte Dateien. Deswegen berücksichtigt * nicht wirklich alle Dateien eines Verzeichnisses. Der Ausdruck.* bringt Sie auch nicht weiter, da hiermit zwar alle Dateien, aber auch das aktuelle und das übergeordnete Verzeichnis mit allen darin enthaltenen Dateien gemeint sind. Je nach zugehörigem Befehl können die Auswirkungen verheerend sein. Die Lösung dieses Problems ist.[!.]*. Mit diesem Ausdruck werden alle Dateien angesprochen, die mit einem Punkt beginnen und mindestens ein weiteres Zeichen enthalten, das kein Punkt sein darf. Wollen Sie alle versteckten Dateien des aktuellen und der untergeordneten Verzeichnisse anzeigen, dann hilft Ihnen das Kommando ls nicht weiter, da dessen Optionen ja erst nach dem Zusammenstellen der Dateiliste durch die Shell greifen. Zu empfehlen ist hier der Befehl find. -name.*, welcher aufgrund der Option name den nachfolgenden Ausdruck auf den Dateinamen anwendet und wegen. das aktuelle Verzeichnis durchsucht Verzeichnisse Im Linux-Dateisystem sind alle Verzeichnisse und damit sämtliche Datenträger dem Verzeichnis / untergeordnet. Es gibt keine Laufwerke im herkömmlichen Sinn, vielmehr werden deren Verzeichnisstrukturen in das Dateisystem von Linux eingehängt und erscheinen somit als eigenes Unterverzeichnis. Jedes Verzeichnis enthält von vorneherein zwei Verweise, einmal auf das aktuelle Verzeichnis (.) und auf das übergeordnete Verzeichnis (..). 78

79 9.2. Sicherheit 9.2. Sicherheit In dieses Kapitel gehören mehr Beispiele und Verweise auf die Kommandoreferenz Besitzverhältnisse und Zugriffsrechte Linux steht in der Tradition von Unix und ist deshalb ein echtes Multi-User-System. Aus diesem Grund ist es notwendig, strenge Regeln dafür vorzusehen, wer welche Rechte im System hat, damit eine Sicherheit gewährleistet werden kann. Diese umfasst sowohl den Schutz vor unberechtigtem Zugriff als auch vor Beschädigung durch Dritte. Wie bereits angesprochen, muss sich zunächst jeder Benutzer bei der Anmeldung gegenüber dem System mit einem Namen und dem dazugehörigen Passwort ausweisen. Innerhalb des System gibt es aber noch weitergehende Regelungen, die auf Datei und Geräteebene ansetzen. Dazu werden zusammen mit jeder Datei bzw. mit jedem Verzeichnis folgende Informationen gespeichert. Einmal der Besitzer (owner) der Datei, die Gruppe, die der Datei zuzuordnen ist und weitere neun Zugriffsbits (r für lesen (read), w für schreiben (write), x für ausführen (execute)), jeweils drei für den Besitzer, für andere Gruppenmitglieder und den Rest der Benutzer. Es gibt also drei Arten von Zugriffsrechten, die bei Dateien und Verzeichnissen aber eine unterschiedliche Bedeutung haben können, wie in Tabelle 9.4 auf Seite 79 angegeben. Recht Datei Verzeichnis r (read) Leserecht Der Inhalt der Datei darf gelesen und kopiert werden. Der Inhalt des Verzeichnisses darf gelistet werden. w (write) Schreibrecht x (execute) Ausführungsrecht Der Inhalt der Datei darf verändert, d.h. ergänzt oder gelöscht, werden. Die Datei kann als Befehl ausgeführt werden. Tabelle 9.4.: Rechte wie in ls -l angezeigt Der Inhalt eines Verzeichnisses darf geändert werden, d.h. es dürfen Dateien oder Verzeichnisse neu angelegt, umbenannt oder gelöscht werden. Wenn das Ausführungsrecht bei einem Verzeichnis gesetzt ist, bedeutet es, dass es möglich ist, in dieses Verzeichnis zu wechseln. Die Rechte an Dateien und Verzeichnissen werden beim Anlegen mit einer Standardvoreinstellung vergeben. Der Besitzer kann anschließend die Rechte neu festlegen. Nur der Systemadministrator kann die Rechte von Dateien und Verzeichnissen ändern, die ihm nicht gehören. Rechte, die für ein Verzeichnis gesetzt sind, haben immer eine höhere Priorität als Rechte, die für eine Datei in diesem Verzeichnis gesetzt sind. Ein Schreibrecht kann demnach nicht in Anspruch genommen werden, wenn eines der übergeordneten Verzeichnisse nur ein Leserecht aufweist. Diese Zugriffsrechte können den drei, in Tabelle 9.5 auf Seite 80 aufgeführten, Benutzergruppen zugeteilt werden.? Lassen Sie sich die Dateien eines Verzeichnisses durch den Befehl ls -l anzeigen. Das erste Bit beschreibt die Art der Datei, die aus Tabelle 9.6 auf Seite 80 ersichtlich wird. Anschließend folgen die Zugriffsbits. Die ersten drei stehen für die Rechte des Besitzers, dann folgt die Gruppe und zuletzt alle anderen Benutzer. Der Systemadministrator root darf natürlich alles. Dann folgt eine 79

80 9. Dateisystem Bezeichnung u (user) g (group) o (other) Bedeutung Besitzer Gruppe, zu der die Datei, das Verzeichnis gehört Alle übrigen Benutzer des Systems Tabelle 9.5.: Benutzerabkürzungen Kurzbezeichnung Dateityp d Directory, Verzeichnis - normale Datei b blockorientierte Gerätedatei c zeichenorientierte Gerätedatei l symbolic link Tabelle 9.6.: Dateitypen Ziffer, die angibt, wieviele Links auf diese Datei zeigen. Danach folgt der Name des Besitzers und der der Gruppe. Außerdem zeigt ls auch die Größe der Datei, deren letztes Änderungsdatum und ihren Dateinamen an. Die Zugriffsrechte bei Verzeichnissen müssen entsprechend anders interpretiert werden. Lesen heißt hier, sich den Inhalt anzuschauen, Schreiben beinhaltet auch das Hineinkopieren oder Löschen von Dateien und Ausführen bedeutet das Verzeichnis zu öffnen. Ähnlich verhält es sich bei den Zugriffsrechten von Geräten im Verzeichnis /dev, worauf hier jedoch nicht näher eingegangen werden soll Zugriffsrechte setzen Der Eigentümer oder root können mit dem Befehl chmod die Zugriffsrechte für bestehende Dateien und Verzeichnisse ändern. chmod Rechte Datei(en) / Verzeichnis(se) Dabei kennt das Kommando zwei Schreibweisen. Zum einen die Symboldarstellung, zum anderen die Oktalzahldarstellung. Bei der Symboldarstellung gibt es Parameter, wie in Tabelle 9.7 auf Seite 80 dargestellt. Benutzerklasse Aktion Zugriffsrecht u (user, Besitzer) - Recht wegnehmen r (read, lesen) g (group, Gruppe) + Recht setzen w (write, schreiben) o (other, übrige) = Recht absolut setzen x (execute, ausführen) a (all, alle) Tabelle 9.7.: Symboldarstellung 80

81 9.2. Sicherheit Bei der Oktalzahldarstellung wird für jede Benutzerklasse eine Ziffer zwischen 0 und 7 verwendet, die die gewünschte Rechtekombination angibt, wie in Tabelle 9.8 auf Seite 81. Wert Rechte Erläuterung 0 keine Zugriffsrechte 1 x Ausführungsrecht gesetzt 2 -w- Schreibrecht gesetzt (weniger sinnvoll) 3 -wx Schreib- und Ausführungsrecht gesetzt (nicht sinnvoll) 4 r Leserecht gesetzt 5 r-x Lese- und Ausführungsrecht gesetzt 6 rw- Lese- und Schreibrecht gesetzt 7 rwx Lese-, Schreib- und Ausführungsrecht gesetzt Tabelle 9.8.: Oktalzahldarstellung Zuweisung eines Besitzers oder einer Gruppe Mit Hilfe des Befehls chown bzw. chgrp kann einer Datei bzw. einem Verzeichnis ein anderer Besitzer bzw. eine andere Gruppe zugeordnet werden. chown [-R] neuerbesitzer Datei(en)/Verzeichnis(se) chgrp neuegruppe Datei(en)/Verzeichnis(se) Als Anwender muss einem jedoch bei diesem Vorgang bewusst sein, dass man sich eine solche Datei nicht mehr zurückholen kann. Daher ist es eventuell besser, nur eine Kopie weiterzugeben. Mit der Schreibweise chown user:gruppe Datei(en)/Verzeichnis(se) kann einer Datei gleichzeitig ein anderer Benutzer und eine neue Gruppe zugewiesen werden Verwaltung von Gruppen und Benutzern In der Datei /etc/passwd wird eine Liste aller Benutzer gespeichert. Sie enthält den Benutzernamen, dessen Passwort, die BenutzerID (UID), die GruppenID (GID), den auführlichen Namen als Kommentar, das Heimatverzeichnis und die Shell. Dabei ist das Passwort natürlich verschlüsselt oder in die Datei /etc/shadow ausgelagert. Hier ist wiederum der Name des Benutzers und dessen Passwort (bei * ist der login gespeert) abgelegt. Dann folgen Zahlen, die angeben, wann das Passwort das letzte Mal geändert wurde, wie lange es noch gültig ist usw. Letztendlich müssen der GID noch Gruppennamen zugeordnet werden. Dies passiert in der Datei /etc/group. Am Anfang jeder Zeile steht der Gruppenname, dann folgt die GID und schließlich die Namen der Benutzer, die zur Gruppe gehören. Hinweis Befehle wie ls, die Informationen zu Dateien und Verzeichnissen anzeigen, lesen Benutzer- und Gruppennamen aus den Dateien passwd und group aus und lösen so die UID und GID auf. Wenn Sie beispielsweise über NFS Laufwerke fremder Rechner einbinden, achten Sie darauf, dass für gleiche Benutzer und Gruppen sowohl die UID, als auch die GID auf den verbundenen Systemen übereinstimmen. Ansonsten kann es zu erheblichen Problemen kommen. Um die Administrierbarkeit zu gewährleisten, bietet sich in diesem Zusammenhang der Dienst NIS an, der im Kapitel Netzwerk beschrieben wird. 81

82 9. Dateisystem Feste und symbolische Links Links sind Verweise, mit denen Dateien oder Verzeichnisse angesprochen werden. Vorteilhaft ist, dass durch solche Links, von verschiedenen Orten der Verzeichnisstruktur aus, auf ein- und dieselbe Datei zugegriffen werden kann, ohne dass die Datei physikalisch mehrfach gespeichert werden muss. Unter Linux gibt es zwei verschiedene Arten von Links, die auf unterschiedliche Weise arbeiten. Zum einen die sogenannten Hardlinks, auch feste Links genannt, zum anderen die Symbolic bzw. symbolische Links. Mit dem Kommando ln [-s] kann ein Link angelegt werden. Die Option -s wird verwendet, um einen symbolischen Link anzulegen. Das Kommando ls -li gibt Ihnen die Möglichkeit solche Links nachzuvollziehen. Dadurch wird die I-Node und die Zahl der Links, die auf eine Datei zeigen, sichtbar.! Erstellen Sie mit ln Dateiname Linkname einen festen Verweis auf eine Datei in Ihrem Homeverzeichnis und schauen Sie sich im nachhinein mit dem Kommando ls -li das Resultat an. Hardlinks Ein Hardlink ist ein zweiter Name für eine Datei. Außer dem Namen gibt es dateisystemintern keinen Unterschied zwischen dem Link und dem Original. Beide Dateien verwenden dieselben Datenblöcke und besitzen dieselbe Inode-Nummer, d.h. sie werden unter derselben Nummer vom System verwaltet, woraus folgt, dass es sich um ein und dieselbe Datei handelt. Wird eine Datei geändert, so sind auch sämtliche Links von dieser Änderung betroffen. Hardlinks können anhand des Linkcounters, der bei der Ausgabe des Befehl ls -l hinter dem Rechteblock steht, identifiziert werden. Wird die Datei gelöscht, so wird zunächst nur der entsprechende Link gelöscht. Erst wenn der letzte Link entfernt wird, wird der Inode freigegeben und die Datei somit gelöscht. Ein Nachteil von Hardlinks ist, dass diese nicht partitionsübergreifend verwendet werden können, da Inode - Nummern nur innerhalb einer Partition eindeutig sind. Auch ist es nicht möglich, Hardlinks für Verzeichnisse zu verwenden. Symbolic Links Symbolische Links kennen die Beschränkung auf die Partition und auf Dateien nicht, da sie intern anders funktionieren. Ein symbolischer Link ist selbst wieder eine Datei mit der Typbezeichnung l. Diese weist eigene Datenblöcke und somit auch eine eigene Inode - Nummer auf. In den Datenblöcken ist jedoch nur ein Verweis in Form eines Pfadnamens auf die Originaldatei abgelegt. Wird diese gelöscht, führt der Link ins Leere. Symbolische Links erstellen Sie ebenfalls mit dem Befehl ln erweitert durch die Option -s. Im Gegensatz zu festen können symbolische Links auch auf Verzeichnisse und Dateien anderer Laufwerke verweisen. Das Löschen der Ursprungsdatei ändert zwar den Link selbst nicht, jedoch verweist der Link dann auf eine nicht mehr existierende Datei. Benutzen Sie symbolische Links beispielsweise um die Hierarchie der Verzeichnisstruktur abzuflachen und so eine Menge Tipperei an der Konsole zu sparen.! Erstellen Sie einen symbolischen Link zu einer beliebigen Datei und sehen Sie sich das Resultat an. Den Unterschied zwischen Hard- und Softlinks finden Sie in Tabelle 9.9 auf Seite 83. Der Vorteil der symbolischen Links besteht in ihrer einfachen Handhabung, während feste Links Speicherplatz sparen und wesentlich schneller arbeiten Links auf Programme Es kommt unter Linux relativ häufig vor, dass mehrere oft unterschiedliche Befehle auf ein- und dasselbe Programm verweisen, aber dennoch sehr unterschiedlich auf die Eingabe des Benutzers reagieren. Die Auflösung ist einfach und dennoch überraschend. Bei der Erstellung des Befehls wurden Mechanismen eingebaut, die überprüfen durch welchen Aufruf das Programm gestartet wurde und wie es auf den Befehl zu reagieren hat. Ein Beispiel findet sich in den mtools, die Kommandos wie mattrib und mcd enthalten. 82

83 9.3. Partitionen und Dateisysteme Vergleich Hardlink Symbolischer Link Auf Partition beschränkt ja nein Inode - Nummer wie Originaldatei eigene Inode - Nummer Linkcounter wird heraufgesetzt ja nein Originaldatei nicht mehr erkennbar bleibt erkennbar Quelldatei muss existieren ja nein (Verweis ins Leere) Linkfile darf nicht existieren ja ja Belegung eigener Datenblöcke nein ja (Block enthält Pfadangabe) Zugriffsrechte wie Originaldatei ja ja (nominell alle Rechte) Anwendbarkeit nur auf Dateien auf Dateien und Verzeichnisse Bedeutung anderer Name, gleiche eigene Datei mit Pfadangabe Datei zum Ziel Löschen der Originaldatei Originaldatei wird erst gelöscht, wenn der letzte Hardlink auf diese Datei gelöscht wird. Vorteil sehr performant, spart Speicherplatz Tabelle 9.9.: Vergleich von Soft- und Hardlinks Originaldatei kann gelöscht werden, wobei der Symbolische Link dann ins Leere zeigt. einfache Handhabung 9.3. Partitionen und Dateisysteme Der Dateibaum unter Linux stellt die logische Ordnung der Dateien dar. Mit der tatsächlichen Organisation der Daten auf der Festplatte hat dieser Verzeichnisbaum aber nicht viel zu tun. Die physikalische Organisation der Daten erfolgt in den sogenannten Dateisystemen, einer Art Verwaltungsstruktur jeder Partition. Das Dateisystem ermöglicht den Zugriff auf die Dateien anhand des Dateinamens. Die Kommandos des Betriebssystems werden dann in entsprechende Lese- oder Schreibbefehle auf der Festplatte umgesetzt. Somit ist das Dateisystem für den Anwender transparent, da er nur über die Befehlsschnittstelle mit diesem kommuniziert. Ein Teil der Kennzeichen eines Dateisystems, wie die Länge von Dateinamen, maximale Dateianzahl in einem Verzeichnis usw., können für einen Benutzer sichtbar sein. Andere Eigenschaften, beispielsweise die interne Verwaltungsstruktur des Dateisystems, die Art wie Daten gespeichert werden etc., bleiben hingegen im Hintergrund verborgen. Der Zugriff auf die verschiedenen Dateisysteme wird über Treiber realisiert, die sich im Kernel des Betriebssystems befinden müssen Zugriff auf mehrere Festplatten und Partitionen Unter Linux sind alle Laufwerke, deren Partitionen und Daten in einem Dateisystem vereint. Der Verzeichnisbaum anderer Datenträger wird in das Linux-Dateisystem eingehängt, man sagt gemountet. Der typische Anwender merkt also gar nicht, dass seine Daten auf mehrere Festplatten verteilt sind. An welcher Stelle welches Laufwerk eingebunden wird und einige weitere Parameter, steuert die Datei /etc/fstab. Mit dem Befehl df können Sie die derzeitig eingehängten Laufwerke betrachten. Wenn Sie weitere Datenträger in die Verzeichnisstruktur einhängen wollen, können Sie dies mit dem Befehl mount umsetzen. Vergessen Sie jedoch nicht das Laufwerk mit umount wieder auszuhängen, bevor Sie den Datenträger wechseln. Der Be- 83

84 9. Dateisystem fehl mount liest zunächst die am Prompt mitgegebenen Parameter und vervollständigt diese gegebenenfalls mit Einträgen aus der Datei /etc/fstab. Ein Befehlsstring für mount könnte folgendermaßen aussehen: mount -r -t msdos /dev/hda1 /dosc Achten Sie darauf, dass das Verzeichnis /dosc angelegt ist. Wenn nicht erstellen Sie mit mkdir ein Verzeichnis mit diesem Namen. Sollten bereits Daten in diesem Verzeichnis abgelegt worden sein, so werden diese, solange das andere Medium gemountet ist, ausgeblendet Zugriff auf CD-ROM Laufwerke Diese Laufwerke werden im Prinzip genauso verwaltet, wie Festplatten. Natürlich ergibt sich, aufgrund der Medienwechsel, ein häufigeres mounten und unmounten. Außerdem bringt die CD ein eigenes Format namens iso9660 mit. Um eine CD manuell in das Dateisystem einzubinden, ist folgender Befehlsstring vonnöten: mount -t iso9660 -o ro /dev/hdc /cdrom Achten Sie auch hier wieder darauf, dass das Verzeichnis /cdrom besteht. Die Option ro ist bei einer CDROM zwar klar, beim Mounten muss diese jedoch angegeben werden, damit keine Fehlermeldung erscheint Zugriff auf Diskettenlaufwerke Der Zugriff auf Diskettenlaufwerke erfolgt auf dieselbe Art und Weise. Der Befehlsstring lautet hier leicht abgewandelt: mount -t auto -o ro /dev/fd0 /floppy Mit den Befehlen der mtools können Sie hingegen auch ohne die umständlich Prozedur des Mountens auf eine Diskette zugreifen Dateisystemtypen Wie vielleicht schon deutlich geworden ist, beherrscht Linux eine Menge von Dateisystemen, genaugenommen werden Sie kaum ein Betriebssystem finden, dass problemlos mit einer solchen Unzahl an Dateisystemen zurecht kommt. ext2 Das derzeit übliche Dateisystem unter Linux heißt ext2. Es unterstützt Dateinamen mit bis zu 255 Zeichen, Dateien bis zu 2 GByte Größe und kann Datenträger mit bis zu 4 TByte verwalten. Der Code der diesem Dateisystem zu Grunde liegt, ist sehr ausgereift, sehr zuverlässig und auch performant. reiserfs Dieses Dateisystem ist noch relativ neu und bietet gegenüber ext2 eine Journaling-Option, die es ermöglicht, das Dateisystem nach einem Rechnerabsturz sehr schnell wiederherzustellen. Dafür arbeitet es nicht so performant, weil ständig mitprotokolliert wird, auf welche Inodes zugegriffen wurde. minix Das Dateisystem minix war Grundlage der ersten Versuche in der Linux-Welt. Da es jedoch erheblich leistungsschwächer und zudem nicht frei kopierbar ist, hat es heute nur noch eine geringe Bedeutung für Linux. msdos Dies ermöglicht den Zugriff auf alte DOS bzw. Windows Partitionen. 84

85 9.4. Dateisystemtypen sysd / bsd Diese Dateisysteme rühren von anderen Unix Derivaten her. ufs Das Unix File System ist das Standarddateisystem unter Sun Solaris 2.x. Es beruht auf dem Berkeley Fat Fast File System. vfat Linux kann mit Hilfe von vfat auch auf Partitionen von Windows 9x zugreifen. Die langen Dateinamen bleiben dabei erhalten. ntfs Das Dateisystem von Windows NT kann bis heute nur gelesen werden. Der Schreibzugriff ist noch im Experimentalstadium und sollte auf keinen Fall vor einem Backup der Windows NT Partition angewendet werden. hpfs Der Zugriff auf OS/2 Partitionen ist sowohl im Lese- als auch im Schreibmodus möglich. hsfs / iso9660 Über die Einbindung des High Sierra File Systems, dem die Norm iso9660 zugrunde liegt, haben Sie Zugriff auf nahezu alle CD-ROMs. udf Das neue Dateisystem für CD-ROMs und DVDs wird erst ab Kernelversion 2.4n unterstützt. Für den Kernel 2.2n gibt es jedoch Patches. nsf Das Network File System ist die unter Unix gebräuchliche Variante, Laufwerke anderer Unix-Rechner über das Netzwerk einzubinden. Solche verteilte Dateisysteme werden durch die Strukturierung in NFS-Server und -Clients umgesetzt. ncp Das Netware Core Protocol ist die Novell Variante des eben beschriebenen nfs. smbfs Das Server Message Buffer File System ist das Netzwerk-Dateisystem von Microsoft. Der Zugriff auf shares einer Linux Umgebung ausgehend von Windows Clients erfolgt über die Bereitstellung dieses Dateisystems. tmpfs Das Temporary File System imitiert eine Festplatte im Hauptspeicher und ist das Standarddateisystem für das Verzeichnis /tmp. Es nutzt auch die Swap-Bereiche als temporären Speicher. swapfs Der Kernel benutzt den Swap-Bereich der Festplatte aufgrund der Implementierung des Swap File Systems Ein- und Aushängen von Dateisystemen Jedes Dateisystem befindet sich auf einem physikalischen Gerät, beispielsweise auf einer Diskette, einer CD-ROM, einer Partition einer Festplatte usw. Wenn Linux startet, wird automatisch das Dateisystem, auf dem sich das Betriebssystem befindet, verwendet. Sollen weitere Dateisysteme in die Verzeichnisstruktur eingebunden werden, so werden diese mit dem Befehl mount, der in der Regel nur von root ausgeführt werden darf, eingehängt. mount [-a -t <Typ> -v -f -w -r -o <Liste> -h] Gerätedatei Mountpoint Die Parameter dieses Befehls finden Sie in Tabelle 9.10 auf Seite 86. Die Gerätedatei gibt wiederum den Namen des gewünschten Gerätes an. Der Mountpoint ist ein bereits vorhandenes Verzeichnis im Dateibaum von Linux. Dabei ist zu berücksichtigen, dass der Inhalt eines bereits verwendeten Verzeichnisses nicht mehr sichtbar ist, wenn hierauf ein weiteres Dateisystem gemountet wird. Deshalb ist es empfehlenswert ein leeres Verzeichnis für den Mount-Vorgang zu verwenden, das zudem einen sprechenden Namen hat. Folgende Voraussetzungen müssen also erfüllt sein, damit das Mounten erfolgen kann. 85

86 9. Dateisystem Option Beschreibung -a mountet automatisch alle Dateisysteme, die in /etc/fstab eingetragen sind -t Typ gibt den Dateisystemtyp an, in Kombination mit der Option -a kann erreicht werden, dass nur die Dateisysteme aus /etc/fstab mit dem angegebenen Dateisystemtyp gemountet werden -v gibt während der Durchführung Meldungen aus -f imitiert den Mount-Vorgang und informiert in Kombination mit der Option -v den Benutzer, was beim Mounten passieren würde -w erlaubt einen Schreibzugriff auf das gemountete System -r erlaubt nur einen Lesezugriff auf das gemountete System -o Liste enthält Einstellungen für die vierte Spalte der /etc/fstab -h gibt einen Hilfetext aus Tabelle 9.10.: Dateisysteme - Parameter Das zu mountende Gerät muss ein bekanntes Dateisystem aufweisen. Der Mountpoint muss als Verzeichnis bereits angelegt sein. Das aktuelle Verzeichnis darf nicht der Mountpoint sein. Der Mount-Vorgang wird vom Superuser ausgeführt. Das Aushängen von Dateisystemen wird mit dem Befehl umount durchgeführt. Die Syntax lautet, wie folgt. umount [-t <Typ> -a] Gerätedatei oder umount [-t <Typ> -a] mountpoint Die Parameter finden Sie in Tabelle 9.11 auf Seite 86. Option Beschreibung -t Typ hängt alle Dateisysteme vom angegebenen Typ ab -a hängt alle Dateisysteme ab Tabelle 9.11.: Umount - Parameter Linux verwendet für das Mounten zwei Systemdateien, auf die im folgenden näher eingegangen wird Datei /etc/fstab Die Datei /etc/fstab enthält eine Liste von Dateisystemen, die beim Systemstart in der Regel automatisch gemountet werden sollen. Sie ist wie unten abgebildet aufgebaut. Die Datei enthält folgende Angaben. 86

87 9.4. Dateisystemtypen den Namen der Gerätedatei den mountpoint den Dateisystemtyp die Mount - Optionen einen Hinweis für das Programm dump, welches Dateisystem gesichert werden soll einen Hinweis für das Programm fsck, in welcher Reihenfolge die Dateisysteme geprüft werden sollen Die vierte Spalte enthält diverse Mount - Optionen, wobei die Argumente aus Tabelle 9.12 auf Seite 87 zulässig sind. Argument async atime auto defaults dev exec noatime noauto nosuid nouser remount ro rw suid sync user Beschreibung asynchroner, gepufferter Zugriff auf das Dateisystem ändern des Datums der letzten Benutzung einer Datei bei Zugriff auf die Datei automatisches Mounten mit der Option -a möglich benutzen der Standardeinstellungen (rw, suid, dev, exec, auto, nouser, async) steht für zeichen- und blockorientierte Gerätedateien ermöglicht die Ausführung von binären Dateien keine Datumsaktualisierung der letzten Benutzung von Dateien kein automatisches Mounten mit der Option -a möglich s-bit hat keine Wirkung normale Benutzer dürfen dieses Dateisystem nicht mounten erneutes Mounten eines bereits eingehängten Dateisystems möglich erlaubt nur Lesezugriff erlaubt Schreib- und Lesezugriff s-bit kann verwendet werden nur synchrone, ungepufferte Zugiffe auf das Dateisystem erlaubt es einem beliebigen Benutzer, dieses Dateisystem zu mounten Tabelle 9.12.: fstab - die Parameter Ein manueller Mount-Vorgang erzeugt also nur ein zeitlich begrenztes Einhängen des Dateisystems, da es beim nächsten Systemstart nicht automatisch wieder gemountet wird. Durch entsprechende Änderungen in der Datei /etc/fstab kann jedoch bewirkt werden, dass das Einbinden ab dem nächsten Mal von selbst erfolgt. Achten Sie beim Editieren auf die vom System vorgegebenen Spalten, da eine Veränderung zu unschönen Problemen führen kann. Denken Sie auch an den Zeilenumbruch nach der letzten Zeile, damit die Datei für das System lesbar bleibt. Ist ein zu mountendes Dateisystem in der Datei /etc/fstab eingetragen, kann das Kommando mount verkürzt eingegeben werden, da die benötigten Informationen aus dieser Datei ausgelesen werden. 87

88 9. Dateisystem Datei /etc/mtab Die Datei /etc/mtab enthält hingegen alle im Moment gemounteten Dateisysteme. Mit dem Befehl mount wird ein Eintrag in diese Tabelle erzeugt. Beim Herunterfahren verwendet Linux diese Tabelle, um alle Dateisysteme wieder sauber auszuhängen. Die Datei /etc/mtab kann beispielsweise so aussehen Interna des Dateisystems ext2 In diesem Abschnitt soll Ihnen Hintergrundwissen zur internen Verwaltung des Linux-Dateisystems ext2 vermittelt werden. Das Dateisystem ext2 bietet folgende Features: Verwendung von Inodes zur Verwaltung der Daten. Partitionen dürfen bis zu 16GByte groß sein, demnächst sollen bis zu 4TByte realisiert sein. Dateien können bis zu 2GByte groß sein. wichtige systemrelevante Daten werden sofort synchronisiert, also direkt nach der Änderung auf die Festplatte geschrieben und nicht wie üblich in einen Zwischenpuffer gestellt. Ein Teil des Dateisystems ist für den Superuser reserviert Aufbau des ext2-dateisystems Zunächst wird der Speicherplatz des Datenträgers in Blöcke unterteilt, wobei jeder Block eine Nummer zugewiesen bekommt. Die Blockgröße beträgt üblicherweise 1024 Byte. Anschließend werden diese Blöcke in sechs Gruppen geteilt, die zur Speicherung verschiedener Datentypen vorgesehen sind. Die beiden ersten Gruppen bestehen jeweils nur aus einem Block. Alle anderen nehmen je nach Partition und Inodedichte sehr viel mehr Speicherplatz ein. Die erste Gruppe ist der sogenannte Bootblock, der ein kleines Programm zum Starten des Betriebssystems enthält. Der Superblock, die zweite Gruppe, gibt an, wie groß die vier weiteren Gruppen sind. Er enthält die Anzahl der vorhandenen logischen Datenblöcke (allocation units), den Namen des Datenträgers, die maximal mögliche Anzahl von Dateien usw., und beschreibt auf diese Weise das Dateisystem genauer. Die dritte Gruppe, das sogenannte I-Node-Bitmap, besteht aus einzelnen Bits, wobei jedes einzelne Bit angibt, ob der zugehörige I-Node Block frei oder belegt ist. Ähnliches gilt für die vierte Gruppe, das Daten-Bitmap, das angibt welche Blöcke für Daten frei bzw. belegt sind. Die fünfte Gruppe schließlich ist der Speicherplatz für die I-Nodes, wobei pro Block acht I-Nodes abgelegt werden können. Der Speicherplatz für Daten findet sich letztendlich in der sechsten Gruppe, die auch die größte Gruppe darstellt, da in ihr, neben einigen wenigen Verzeichnisinformationen und Querverweisen, der tatsächliche Inhalt der Dateien gespeichert wird. Während die Gruppen eins bis fünf ausschließlich Verwaltungsinformationen enthalten Dateien und Verzeichnisse Im Dateisystem ext2 besteht jede Datei und jedes Verzeichnis aus zwei Bestandteilen. Zum einen den Datenblöcken, zum anderen dem Inode, der alle Informationen außer den Dateinamen enthält. 88

89 9.6. Interna anderer Dateisysteme I-Nodes (Informationsknoten) In den I-Nodes werden in 128 Bytes alle Verwaltungsinformationen gespeichert. Dazu gehören: der Dateityp die Datei- bzw. Verzeichnisgröße die Zugriffsrechte die Benutzer- (UID) und die Gruppen-ID (GID) die Anzahl der Links auf den Inode den Zeitpunkt der Erstellung, der letzten Änderung und des letzten Lesezugriffs einen Verweis auf die ersten zwölf Datenblöcke der Datei Letztendlich werden alle Informationen mit Ausnahme des Dateinamens gespeichert. Ein Inode enthält also die Informationen, welche Datenblöcke zu welcher Datei gehören. Ein Datenblock ist standardmäßig acht KByte groß, kann aber beim Einrichten des Dateisystems auch eine andere Größe zugewiesen bekommen. Ein Inode besteht aus fünfzehn Adressen, von denen zwölf direkt und drei indirekt auf Datenblöcke verweisen. Kleine Dateien haben dadurch direkt Zugriff auf die Datenblöcke. Die dreizehnte Adresse verweist auf einen sogenannten einfach indirekten Block, der weitere 126 Adressen beinhaltet. Einschließlich der zwölf direkten Datenblöcke, ergeben sich also 138 Datenblöcke, die die Datei belegen kann. Sollte dies immer noch nicht ausreichen, so verweist die vierzehnte Adresse auf einen doppelt indirekten Block, der wiederum auf 126 Adressen zeigt, die wiederum auf einfach indirekte Blöcke verweisen. Schließlich zeigt die fünfzehnte Adresse auf einen dreifach indirekten Block Interna anderer Dateisysteme Übungen 1. Welche Zugriffsrechte gibt es? 2. Welche Benutzergruppen gibt es? 3. Legen Sie eine leere Datei in Ihrem Homeverzeichniss an und geben Sie dem Besitzer alle, der Gruppe Schreib- und Leserechte, und nehmen Sie den übrigen Benutzern alle Rechte. 4. Übergeben Sie die neu angelegte Datei einem anderen Benutzer. 5. Ändern Sie die Rechte auf Ihr Homeverzeichnis so ab, dass jeder zumindest das Leserecht darauf hat. 6. Legen Sie zwei Hardlinks auf die gerade erstellte Datei an und lassen Sie sich den Linkcounter anzeigen. 7. Legen Sie auch einen symbolischen Link auf diese Datei an. 8. Woran ist erkenntlich, ob ein Gerät block- oder zeichenorientiert arbeitet? Wie ermittelt man die Majorund Minor Device Number und was sagen diese aus? 9. In welchem Verzeichnis befinden sich Linux - Befehle, die von jedem Benutzer ausgeführt werden dürfen, in welchem die Befehle, die nur privilegierten Benutzern zur Verfügung stehen? 89

90 9. Dateisystem 10. Welches Verzeichnis enthält die Gerätetreiber? 11. Nennen Sie fünf verschiedene Dateisysteme, deren Ursprung bzw. Besonderheit. Zusammenfassung Zusammengefasste Inhalte des vorangegangenen Kapitels. 90

91 10. Softwareinstallation Die Kürze des folgenden Abschnitts darf nicht über die unbestrittene Wichtigkeit, der Installation weiterer Programmpakete hinwegtäuschen. Dabei kann zwischen drei grundsätzlich unterschiedlichen Verfahren unterschieden werden. Unter Linux kann nachzuinstallierende Software im rpm-format, als gepackte Binärdateien und als, oftmals ebenfalls gepackter, Quellcode vorliegen. Lernziele In diesem Kapitel lernen Sie, distributionseigene Pakete nachzuinstallieren, zweites Lernziel, drittes Lernziel RPMs RPMs können Sie sehr einfach mit YaST installieren. Dazu wählen Sie im Hauptmenü von YaST Paketverwaltung, und dann Pakete einspielen. Im folgenden Bildschirm betätigen Sie RETURN, um den Ort auswählen zu können, an dem sich Ihre RPM - Pakete befinden. Wenn Sie hier Verzeichnis wählen, können Sie den Pfad zu diesen Paketen angeben... Sobald das System in dem von Ihnen angegebenen Pfad RPM - Pakete findet, können Sie diese mit den Pfeiltasten anwählen und installieren TAR.GZs Kompilierte Pakete Im Internet finden Sie oft Softwarepakete in Form von tar.gz-dateien. Dabei handelt es sich um gepackte Archive, vergleichbar mit zip-dateien. Diese Archive müssen Sie entpacken, bevor Sie die enthaltenen Programme verwenden können. Achten Sie darauf, dass sich das Archiv in einem eigenen Verzeichnis befindet, da man nie weiß, ob ein neues für die entpackten Dateien angelegt wird. Mit tar -xzf archiv.tar.gz oder tar -xvzf archiv.tar.gz entpacken Sie das Archiv, wobei tar durch -v etwas gesprächiger wird und ausgibt, welche Dateien gerade entpackt werden. 91

92 10. Softwareinstallation Quellcode Pakete Oftmals finden Sie im Internet keine bereits für Ihre Distribution kompilierten Softwarepakete. Statt dessen werden Sie überall auf tar.gz-archive mit Sourcecode stossen. Dies ist kein Grund zur Sorge, sofern Sie eine aktuelle Distribution verwenden, treten beim eigenen Kompilieren der Quellen kaum Probleme auf. Bei Softwarepaketen, die sich in einem auslieferungsfähigen Zustand befindet, finden Sie für gewöhnlich die beiden Dateien README und INSTALL, die Sie bei der Konfiguration, Kompilation und Installation der Software unterstützen sollten. Die nachfolgend beschriebene Methode gilt jedoch in den meisten Fällen und ist bei fehlender Dokumentation einen Versuch wert. Entpacken Sie bitte zuerst die Quellen aus dem tar.gz-archiv in ein Arbeitsverzeichnis wie in?? auf Seite?? beschrieben. Als nächstes erfolgt die Anpassung der Software an die jeweilige Platform und das Betriebssystem. Es wird unter anderem festgestellt, welchen Compiler Sie verwenden und wo die Bibliotheken in Ihrer Distribution liegen. Dazu dient bei den meisten Paketen das mitgelieferte Skript./configure. Sie können dem Skript auch meistens noch weitere Parameter übergeben, wie zum Beispiel mit --prefix [Verzeichnis] das Zielverzeichnis für die Installation. Eine genaue Beschreibung der Parameter entnehmen Sie bitte der Ausgabe von./configure --help. Falls bei der Ausführung von./configure eine zwingende Voraussetzung nicht erfüllt wird, werden Sie darauf hingewiesen. Beim Aufruf von./configure werden sogenannte Makefiles erstellt, die genau auf Ihr System zugeschnitten sind. Mit Hilfe der Makefiles ist es möglich, dass Sie Ihre Software mit dem Befehl make compilieren können. Falls die Umwandlung erfolgreich durchlaufen wurde, kann die fertige Software mit make install an Ihr Zielverzeichnis kopiert werden. Nachdem die Software installiert ist, können Sie diese sofort verwenden. Achtung Die oben beschriebene Vorgehensweise reicht zwar für die meisten Fälle aus, kann aber auch von Software zu Software unterschiedlich sein. Lesen Sie in jdem Fall die Dateien README und INSTALL, in denen sich genauere Anweisungen verbergen! Sie sollten außerdem darauf achten, dass Sie die Softwarepakete aus aus vertrauenswürdigen Quellen beziehen. Die Möglichkeiten korrumpierter Pakete reichen aufgrund des als root durchgeführten Installationsvorgangs vom Ausspionieren von Daten bis hin zur völligen Zerstörung des Systems! Übungen 1. Installieren Sie die RPM-Pakete enlightenment, mozilla und gkrellm nach. 2. Laden Sie die neueste Version der Blackbox im Sourcecode aus dem Internet herunter und installieren Sie diesen Windowmanager auf Ihrem Computer. 3. Laden Sie die aktuelle Version des Administrationstools webmin aus dem Internet herunter und führen Sie die Installation durch. 92

93 10.2. TAR.GZs Zusammenfassung Nach der Lektüre dieses Abschnittes können Sie selbständig Software nachinstallieren. 93

94 10. Softwareinstallation 94

95 Teil II. Linux für Administratoren - Einsatz auf dem Server - 95

96

97 11. Bootkonzept und -manager Auch dieses Kapitel unterteilt sich in zwei wesentliche Abschnitte. Zunächst soll Ihnen das Bootkonzept, auch System-V-Init-Prozess genannt, vorgestellt werden. Dazu gehört im wesentlichen ein Einblick in die Abläufe beim Systemstart und die Erläuterung der distributionsspezifischen Details. Im zweiten Teil wird der Bootloader LILO thematisiert und dessen Konfiguration erklärt. Noch eine Warnung vorne weg: Auch in diesem Kapitel wird tief in das System eingegriffen. Nehmen Sie Änderungen an den Konfigurationsdateien nur vor, wenn Sie wissen was Sie tun. Für den Fall, dass sich Linux nicht mehr booten lässt, sollten Sie eine Bootdiskette mit einem Editor bereithalten, um im Ernstfall die root Partition von Hand zu mounten und die vorgenommenen Änderungen rückgängig machen zu können. Lernziele In diesem Kapitel lernen Sie, grundlegendes über den Bootvorgang des Rechners, den Bootmanager LILO kennen, die Bedeutung des Kernels beim Booten einzuschätzen, den Ablauf des System V Init Starts zu verstehen, das Runlevelkonzept kennen Bootvorgang Bevor auf einzelne Begriffe näher eingegangen wird, soll Ihnen ein grober Überblick über die Vorgänge beim Hochfahren des Systems, vom Einschalten bis zum Login, gegeben werden BIOS Beim Einschalten des Systems springt der Rechner an den Adressbereich 0xFFFFFF0, der generell immer dann angesprungen wird, wenn ein RESET ausgeführt wird. An dieser Adresse befindet sich das sogenannte BIOS (Basic Input/Output System), eine Software, die sich auf einem Baustein der Hauptplatine Ihres Computers befindet. Ihre Aufgabe sind unter anderem die so genannten Power-On-Self-Tests, kurz POSTs. Es wird geprüft welche Hardwarekomponenten aktiv und angeschaltet sind. Anschließend werden Bildschirm und Tastatur initialisiert und der Arbeitsspeicher getestet. Nachdem die grundlegenden Komponenten des Systems dem BIOS bekannt sind, werden Informationen über die wichtigsten Peripherie-Geräte aus dem CMOS ausgelesen. Dazu gehört beispielsweise auch die Geometrie der Massenspeicher. Bis zu diesem Zeitpunkt ist das Booten des Systems völlig unabhängig vom installierten Betriebssystem und die Hardware steht nur über die vom BIOS zur Verfügung gestellten Routinen zur Verfügung. 97

98 11. Bootkonzept und -manager CMOS Im CMOS des Computers wird unter anderem eine Liste der Bootmedien verwaltet. Es werden nun der Reihe nach die ersten Sektoren dieser Medien nach dem sogenannten Bootblock durchsucht. Dieser zeichnet sich durch einen Wert aus: An Adresse 0x1fe muss der Wert 0xaa55 eingetragen sein. Sie können das überprüfen durch Eingabe von hexdump -n 512 /dev/hda MBR Bei einem Desktop PC befindet sich der Bootblock meistens auf der ersten IDE Festplatte. Ihr erster Sektor wird auch als MBR oder Master Boot Record bezeichnet. Auch die einzelnen Partitionen der Festplatte besitzen in ihren ersten Sektoren jeweils Bootsektoren. In diesen legen die Betriebssysteme, die auf diesen Partitionen installiert wurden ihre Bootprogramme ab. Der MBR wird sofort in den Speicher an Adresse 0000:7C00 kopiert und ausgeführt. Dieser Programmcode heißt Bootprogrammcode: Bootprogrammcode Das Bootprogramm kopiert sich sofort selbst an Stelle 0000:0600 und fährt dort mit der Ausführung fort. Hier beginnt nun spezifischer Code der verschiedenen Bootmanager. Dazu stehen dem Programm insgesammt 446 Bytes zur Verfügung. Im Anschluss daran befindet sich die Partitionstabelle: Partitionstabelle Der Bereich der Partitionstabelle beginnt ab der Adresse 0000:07BE im Speicher, im MBR im ersten Sektor der Festplatte am Offset 01BE. Die Partitionstabelle selber besteht aus vier Einträgen von jeweils 16 Byte Länge. Jeder dieser Einträge ist aufgeteilt wie in Tabelle 11.1 auf Seite 98 angegeben. Die Grafik 11.1 auf Seite 99 zeigt ein Beispiel für eine Partitionstabelle. Hier ist eine Primäre FAT32 Partition, eine erweiterte Partition, eine Linuxpartition und eine Linux-Swappartition eingetragen. Bytes Bedeutung 00 Aktivbit Start-CHS 04 Partitionstyp End-CHS 08-0B Start LBA 0C-0F End LBA Tabelle 11.1.: Struktur eines Eintrags in der Partitionstabelle Wie Sie sicher bereits bemerkt haben, gibt es in der Partitionstabelle 4 Einträge von jeweils 16 Byte Länge. Viele Systeme haben jedoch mehr als 4 Partitionen - Wie kann das funktionieren? Die Lösung besteht darin, dass weitere Partitionen ermöglicht werden durch eine einseitig verknüpfte Liste von weiteren Partitionen. In der Praxis heisst das, dass es einen Partitionstyp gibt (im oberen Beispiel die sogenannte Erweiterte Partition, also Typ 0Fh), der als Platzhalter für mehrere andere Partitionen dient. Dabei verweist die Startadresse der Platzhalterpartition auf den Anfang der ersten Tochterpartition, die wieder auf den Anfang der nächsten Tochterpartition verweist, und so weiter. 98

99 11.1. Bootvorgang Adresse A 0B 0C 0D 0E 0F 00001BE B FE BF 7C 3F FE 25 9c CE D 0F FE FF FF 3D 26 9C 00 9F 2A 2E DE C1 FF 83 FE FF FF DC 50 CA 08 4E 01 B EE C1 FF 82 FE FF FF 2A 52 7A 09 C2 2D AK CHSStart ID CHSEnde LBA Adresse LBA Länge Abbildung 11.1.: Beispiel für eine Partitionstabelle Die genauen Details der Partitionstabelle seien hier ausgeklammert, da die Partitionstabelle gut von grafischen Tools verwaltet werden kann. Für interessierte Anwender sei hier auf das Linuxprogramm fdisk hingewiesen, mit dessen Hilfe Sie die Details der Partitionstabelle editieren können. Linux geht mit Erweiterten Partitionen erheblich freizügiger um als Windows. Sie sollten neue Logische Linuxpartitionen immmer direkt an den Anfang des freien Speichers innerhalb der Erweiterten Partition schreiben, damit Windowsprogramme wie Partition Magic nicht durcheinander kommen - vorausgesetzt, Sie verwenden solche! Wenn Sie die Partitionstabelle von Hand bearbeiten, können Sie Ihren kompletten Festplatteninhalt zerstören. Abhilfe kann in diesem Fall nur noch eine BootCD/Diskette mit dem Recovery- Werkzeug gpart helfen. Gpart versucht die ursprüngliche Partitionierung Ihrer Festplatte wieder zu erraten, kann aber dabei durchaus Fehler machen! LILO Der Linux Boot Loader ist ein komfortabler Bootloader, der alle gängigen Betriebssysteme starten kann. Er bietet ein Menu an, in dem das zu startende Betriebssystem auszuwählen ist. Handelt es sich dabei um ein Linux-System können zusätzlich noch Kernel-Parameter übergeben werden. LILO besteht aus zwei Hauptteilen. Der erste ist sehr klein, er muss nämlich in die 466 Bytes passen, die ihm der Masterbootrecord zur Verfügung stellt. Dadurch kann LILO gleich nach dem BIOS ausgeführt werden. Anschliessend kann LILO den zweiten Teil des Bootloaders nachladen, der sich an einer beliebigen Stelle auf der Festplatte befinden kann. Im zweiten Hauptteil des LILO ist der Code gespeichert, der für die Anzeige des Bootmenüs verantwortlich ist. Je nach Wahl des Users werden entweder die Bootsektoren anderer Partitionen angesprungen, oder das gewünschte Kernelimage in den Hauptspeicher geladen Grub In der aktuellen SuSE 8.1 wird nicht mehr LILO sondern Grub als Bootmanager verwendet. GRUB bietet etwas mehr Komfort als lilo: Sie müssen nun nicht mehr jedesmal, wenn Sie einen neuen Kernelparameter für den Start anfügen wollen den kompletten MBR neu schreiben dies ist bei GRUB unnötig, denn er kann standardmässig die geläufigsten Dateisysteme auslesen. Sie müssen daher nur einmal den MBR schreiben, und GRUB liest seine restlichen Parameter aus einer bestimmten Datei auf der Festplatte aus: /boot/grub/menu.lst. Hier finden Sie die Einträge zu den einzelnen Menüpunkten des Bootmanagers, die sich meistens relativ gut selbst erklären. Falls Sie dennoch in die Verlegenheit kommen, Ihren GRUB erneut in den MBR schreiben zu müssen (zum Beispiel durch die Installation gewisser anderer sogenannte Betriebssysteme), so können Sie das durch 99

100 11. Bootkonzept und -manager grub-install /dev/festplattendevice erledigen Kernel Der Kernel wird durch den Bootloader angestartet und dadurch in den Arbeitsspeicher geladen. Sämtliche im System befindliche Hardware wird jetzt initialisiert und die übergegebenen Parameter wenn möglich ausgewertet. Des Weiteren werden die BIOS Register der Grafikkarte und das Ausgabeformat des Bildschirms überprüft. Anschließend liest der Kernel die Einstellungen des BIOS und initialisiert die Schnittstellen des Mainboards. Dann testen die Treiber als Bestandteile des Kernels die Hardware und initialisieren diese, wenn notwendig. Die Partitionen werden geprüft und das root Dateisystem gemountet. Zuletzt wird das Programm /sbin/init gestartet, dem die noch verbleibenden Parameter übergeben werden. Der Kernel selbst steuert weiterhin das gesamte System, verwaltet die Rechenzeit von Programmen und deren Zugriffe auf die Hardware Init Init ist der erste laufende Prozess im System und steht deshalb innerhalb der Prozesshierarchie immer ganz oben (vgl. Kapitel Prozessverwaltung). Nachdem die verbliebenen Parameter ausgewertet wurden, erfolgt eine Basiskonfiguration des Systems und das Einbinden der Dateisysteme. Anschließend wird in den entsprechenden Runlevel gewechselt und die damit verbundenen Dämonprozesse (daemon) gestartet. Zuletzt erfolgt die Aufforderung zum Login. Dazu werden verschiedene Konfigurationsdateien gelesen und zahlreiche Skripten abgearbeitet (vgl. nähere Erläuterungen im nächsten Abschnitt). BIOS liest CMOS zeigt MBR Bootsektor1 Bootsektor2 lädt Init ruft auf Kernel Bootsektor3 Abbildung 11.2.: Bootprozess grafisch veranschaulicht Systemstart-V-Init-Prozess Jetzt nachdem einige Grundlagen geklärt wurden, kann detaillierter auf die Vorgänge beim Systemstart eingegangen werden. Im wesentlichen ist zu klären, welche Mechanismen nach dem dem Anstarten des Prozesses init anlaufen. Dabei soll Ihnen aufgezeigt werden, an welcher Stelle einzugreifen ist, wenn andere Dienste mitgestartet oder bestimmte Konfigurationen vorgenommen werden sollen. 100

101 11.2. Systemstart-V-Init-Prozess Programm init Das Programm /sbin/init ist dafür zuständig, dass das System korrekt initialisiert wird. Es ist allen anderen Prozessen übergeordnet und wird deswegen auch Vater-Prozess (parent) genannt, d.h. dass alle weiteren Prozesse von init oder dessen Kind-Prozessen (child) gestartet werden. Init hat die höchste Priorität. Demnach wird er bevorzugt vor allen anderen Prozessen ausgeführt. Stirbt init, sterben auch alle anderen Prozesse und das System stürzt ab. Zugleich ist init das einzige Programm, das direkt vom Kernel gestartet wird und es kann auch mit dem Kommando kill nicht beendet werden (weitere Informationen zur Prozessverwaltung sind im gleichnamigen Kapitel zu finden). Über die Datei /etc/inittab kann init konfiguriert werden. In dieser Datei werden die einzelnen Runlevel, und was in diesen geschehen soll, definiert. Die verschiedenen Skripten, die init startet, können durch die Einträge in dieser Konfigurationsdatei festgelegt werden. Diese Skripten sind übersichtlich im Verzeichnis /etc/init.d zusammengefasst Runlevel Die Runlevel unter Linux definieren den Zustand des Betriebssystems. Was sich hinter dem einzelnen Runlevel Code verbirgt und in welchem Runlevel das System hochgefahren werden soll (default runlevel), ist in der Datei /etc/inittab dokumentiert. Beachten Sie bitte, dass die Runlevel versions- und distributionsspezifisch sind. Runlevel 0 Das System wird angehalten. Es werden alle laufenden Prozesse beendet und zuletzt init selbst abgeschlossen. Das Abschalten des Rechners ist nach Erreichen dieses Zustandes gefahrlos möglich. Runlevel 1 Der Single User Mode ist für Wartungsarbeiten oder Datensicherungen gedacht. Es läuft ein Linux Kernel, jedoch ist nur die root Partition gemountet. Nur der Benutzer root darf sich anmelden, alle anderen Benutzer haben keinen Zugang zum System. Alle Terminals sind getrennt und es ist nur noch die Arbeit an der Konsole möglich. Runlevel 2 Im Multi User Mode ohne Netzwerk sind zwar sämtliche Benutzer am System zugelassen, allerdings ist es nicht möglich auf Remote-Systeme zuzugreifen, weil das Netzwerk nicht gestartet wird. Runlevel 3 Das Netzwerk wird mitgestartet und das Einloggen erfolgt textbasiert. Runlevel 4 Derzeit ist dieser nicht belegt. Runlevel 5 Nachdem der X-Server gestartet wurde, dürfen sich alle Benutzer anmelden, auch wenn weiterhin alle Konsolen zur Verfügung stehen. Zudem wird das Netzwerk mitgestartet. 101

102 11. Bootkonzept und -manager Runlevel 6 Beim Wechsel in diesen Runlevel wird das System, nachdem alle Dienste beendet und alle Dateisysteme ausgehängt sind, durchgestartet. Als Systemadministrator (root) ist es jederzeit möglich in einen anderen Runlevel zu wechseln, indem mit dem Kommando init die gewünschte id des Runlevels an das System übergeben wird. init x init-skripten Im Verzeichnis /sbin/init.d gibt es zwei Arten von Skripten. Zum einen Skripten, die direkt von init aufgerufen werden, was beim System-Boot, beim sofortigen Herunterfahren oder beim Neustart geschieht. Zum anderen indirekt von init gestartete Skripten. Beim Wechsel von Runleveln wird immer das übergeordnete Skript /etc/init.d/rc ausgeführt, woraufhin die relevanten Skripten in der richtigen Reihenfolge ausgeführt werden. Alle Skripten sind unter dem Verzeichnis /etc/init.d gespeichert. Auch die Skripten, die beim Wechseln des Runlevels gestartet werden, sind dort abgelegt, aber sie werden in der Regel als symbolischer Link aus den Unterverzeichnissen /etc/init.d/rcx.d aufgerufen. Diese Organisation ist sehr übersichtlich und vermeidet ein mehrfaches Vorkommen der Skripten, weil jedes Skript sowohl als Start- als auch als Kill-Skript gestartet werden kann. Der Unterschied liegt in der Parameterübergabe, die START oder STOP lautet. Die Kill- und Start-Skripten eines Runlevels sind in entsprechend benannten Verzeichnissen organisiert (/etc/init.d/rcx.d) und dort als Link realisiert. Durch ihre Benennung wird ersichtlich, um welchen Typ von Skript es sich handelt. Die Nummer im Namen der Links gibt an, in welcher Reihenfolge die zahlreichen Skripten abgearbeitet werden. Es kann jedoch auch ein sogenannter default runlevel festgelegt werden, in dem das System immer gestartet werden soll. Dies ist durch Anpassung der Einträge in der Datei /etc/inittab möglich. Hier könnte beispielsweise der default runlevel geändert werden oder das Verhalten des Systems beim Drücken der Tastenkombination Strg + Alt + Entf festgelegt werden. Wenn ein Runlevel gewechselt wird, werden die Kill-Skripten des aktuellen Runlevels ausgeführt. Diese beenden verschiedene Programme des Runlevels. Anschließend werden die Start-Skripten des neuen Runlevels ausgeführt. Init liest also die Konfigurationsdatei /etc/inittab und ruft das Skript /etc/init.d/rc auf, dem es den neuen Runlevel als Parameter übergibt. Als erstes noch bevor nur ein Dienst gestartet wird, kommt das Skript /etc/init.d/boot.local zur Ausführung. Anschließend ruft rc alle Kill-Skripten des aktuellen Runlevels auf, die im neuen Runlevel kein entsprechendes Start-Skript aufweisen Bootkonzepte Das einfachste Bootkonzept ergibt sich zweifellos auf einem Rechner mit nur einem einzigen Betriebssystem, wie es oft bei nur Windows-Maschinen der Fall ist. Aber auch ein reiner Linux-Rechner ist denkbar. In diesem Fall ist es dennoch sinnvoll LILO zu installieren, da damit die Möglichkeit besteht, dem Kernel in einer Kommandozeile Parameter oder zusätzliche Informationen über Hardware mitzugeben, die den Startvorgang beeinflussen können. In einem solchen Szenario würde, wie bereits erwähnt, der MBR zusätzliche Informationen über den weiteren Bootvorgang enthalten. Sobald mehrere Betriebssysteme auf einem Rechner installiert sind, bieten sich anfänglich jedoch noch andere Bootkonzepte an. Der Ablauf nach Auslesen des MBR bleibt beim Start von Linux jedoch grundsätzlich gleich dem eben beschriebenen Vorgang. 102

103 11.4. LILO - Linux-Bootloader System von Diskette / CD-ROM booten Bei diesem Konzept wird ein Betriebssystem von der Festplatte geladen, während die alternativen Betriebssysteme mit Hilfe von Boot-Disketten bzw. Boot-CDs beim Hochfahren gebootet werden können. Bedingung für diesen Vorgang ist ein bootfähiges Disketten bzw. CD-ROM Laufwerk. Der Vorteil dieser Konfiguration besteht darin, dass man sich die heikle Installation des Bootloaders erspart. Allerdings werden auch die Nachteile dieses Vorgehens sehr schnell ersichtlich. Der Start des Rechners mit dem alternativen Betriebssystem dauert länger. Außerdem sind wechselbare bootfähige Medien eine zusätzliche Sicherheitslücke im System. Je nach Einsatz des Rechners ist es ein Vor- oder Nachteil, dass Linux nicht ohne Bootdiskette / BootCD gestartet werden kann. Installation eines Bootmanagers Ein Bootmanager erlaubt es, mehrere Systeme gleichzeitig auf einem Rechner zu halten und diese abwechselnd zu nutzen. Das zu ladende Betriebssystem wird bereits während des Bootens ausgewählt. Ein Wechsel erfordert den Neustart des Rechners. Allerdings ist es bei einer solchen Konfiguration unerlässlich, dass der gewählte Bootmanager alle anderen Betriebssysteme starten kann. Um Ärger zu vermeiden, sollte man von allen installierten Systemen zunächst eine Bootdiskette erstellen, damit man im Notfall oder bei Fehleinschätzung der Fähigkeiten des Bootmanagers dennoch Zugriff auf alle Betriebsysteme hat LILO - Linux-Bootloader Im Folgenden wird zunächst die Installation und Konfiguration von LILO, dem Bootmanager für Linux- Systeme, näher erläutert. LILO ist ein vielseitiger Bootmanager, der für die Installation im MBR geeignet ist. Er funktioniert unabhängig von der Partitionstabelle und greift direkt auf die Festplatten zu, ohne auf ein angelegtes Dateisystem angewiesen zu sein. Aus diesem Grund ist es auch möglich von anderen Festplatten bzw. Partitionen als der aktivierten primären Partition zu booten, d.h. dass Betriebssysteme beim Systemstart grundsätzlich von den Bootsektoren aller Partitionen gestartet werden können. Außerdem macht LILO es möglich mit verschiedenen Linux-Kerneln zu starten, wobei diesen noch weitere Parameter mit Hilfe des Bootpromptes mitgegeben werden können. LILO ist der Linux - Bootmanager. Um die Konfiguration vorzunehmen, geht man wie folgt vor. Der Punkt Kernel- und Bootkonfiguration unter Administration des Systems beinhaltet die Konfiguration von LILO. Mit F4 können neue Konfigurationen erstellt werden. Diese entsprechen den Einträgen im LILO Bootmenü. Zuerst muss der Name des Menüpunktes eingegeben werden. Dann ist das zu bootende System auszuwählen. Unter root Partition ist die zu startende Festplatte in der Form /dev/xxxx anzugeben. Sollen weitere Einträge erstellt werden, so sind die oben angesprochenen Punkte nochmal durchzuführen. Wenn Konfigurationen für alle zu startenden Betriebssysteme erstellt worden sind, müssen noch zwei Parameter für Linux festgelegt werden. Zum einen der Ort, an den LILO installiert werden soll und zum anderen die Wartezeit beim Booten. Den Ort kann man in Tabelle 11.2 auf Seite 11.2 vergleichen. Die Frage, ob die root Partition aktiviert werden soll, darf natürlich nicht mit Ja beantwortet werden, wenn auf dem System ein Betriebsystem wie DOS oder Windows läuft, das nur von der aktiven Partition gebootet werden kann. 103

104 11. Bootkonzept und -manager Ort Begründung MasterBootRecord Diese Option sollte nur gewählt werden, wenn man sicher sein kann, dass alle installierten Systeme von LILO gebootet werden können. Bootsektor der Rootpartition Wenn der MasterBootRecord unbeeinträchtigt bleiben soll, empfiehlt es sich diese Einstellung zu wählen. Diskette Soll von Diskette gebootet werden, ist diese Möglichkeit sinnvoll. Tabelle 11.2.: lilo - Wo hin damit? Andere Betriebssysteme Linux bietet die Möglichkeit, andere Betriebssysteme als Menüpunkte in LILO mit aufzunehmen. Problemlos funktioniert das mit DOS, Windows 95 - ME, Windows NT und Windows Dazu muss in der /etc/lilo.conf einfach nur die Partition, auf der das System sich befindet eingetragen werden. Die Integration von Windows XP gestaltet sich analog, solange XP sich auf einer mit NTFS formatierten Partition befindet. Wenn jedoch Windows XP auf eine logische FAT32 Partition installiert wurde, fehlt mir bisher die Möglichkeit, XP mit in den Bootmanager einzubinden, da das direkte Eintragen der Partition in die /etc/lilo.con nicht den gewünschten Erfolg bringt: Der Rechner bleibt beim Booten hängen... Als Alternative sei hier die Möglichkeit erwähnt, Linux in den NT-Bootmanager mit aufzunehmen. Dazu weisen Sie LILO an, sich in den Bootsektor der Linux-Root-Partition einzutragen. Danach führen Sie folgenden Befehl aus: dd if=/dev/hda3 of=/windows/bootpartition/linux.img bs=512 count=1 Damit haben Sie den Bootsektor der Partition /dev/hda3 in die Datei linux.img auf Ihrer Windows- Bootpartition übertragen. Diese können Sie nun bequem als weiteren Menüpunkt in Ihrer boot.ini Datei mit aufnehmen LILO deinstallieren Um LILO zu deinstallieren und den MBR zu restaurieren geben Sie folgenden Befehl ein: lilo -u /dev/hda Grafischer Boot Wie Sie sicherlich bemerkt haben, unterscheidet sich der Systemstart einer SuSE-Linux-Box von dem einer Linux-Box mit gewöhnlichem Standardkernel. SuSE hat den Standardkernel um ein Splash-Screen Modul erweitert. Dieses ist für die Anzeige des SuSE Hintergrundbildes verantwortlich. Wer sich durch dieses Bild gestört fühlt, oder um ein Corporate Design bemüht ist, sucht oft nach einer Möglichkeit, dieses Bild durch ein eigenes zu ersetzen. Dies geschieht durch die Anpassung einiger Dateien im Verzeichnis /usr/share/splash. 104

105 11.5. Grafischer Boot Übungen 1. Welches Programm ruft der Kernel beim Booten auf? Und was ist das besondere an diesem Programm? 2. In welcher Datei wird der Standard-Runlevel ersichtlich? Was wird mit dieser Datei gesteuert bzw. in ihr dokumentiert? 3. Mit welchem Kommando werden die Runlevel gewechselt und was passiert bei einem solchen Wechsel? Zusammenfassung Zusammengefasste Inhalte des vorangegangenen Kapitels. 105

106 11. Bootkonzept und -manager 106

107 12. RPM - RedHat Paket Manager Der ursprünglich von RedHat stammende Paket Manager wird zwar von modernen Installationstools vor neugierigen Blicken verborgen, allerdings bleibt deren Ausführung dem Administrator vorbehalten. Aber auch wenn Benutzer keine Software systemweit installieren dürfen, so brauchen sie gelegentlich Auskunft über das eine oder andere Paket. An der Kommandozeile bietet der Befehl rpm alles was man zum Umgang mit der Paketverwaltung benötigt. Lernziele In diesem Kapitel lernen Sie, die Paketdatenbank des Paket Managers abzufragen, Abhängigkeiten anzuzeigen und zu lösen, Informationen über einzelne Pakete zu erhalten Grundlagen Auf den ersten Blick erscheint die Installation von Software eine einfache Sache zu sein. Erst bei genauerem Hinsehen offenbart sich, dass mehr dahinter steckt als ein einfacher Kopiervorgang vom Installationsmedium in das lokale Dateisystem. Gerade in Multiusersystemen sind folgende Punkte zu beachten. Umgebungsvariablen der Benutzer Berechtigungen im Dateisystem verschiedene Versionsstände Dokumentation Konfigurationsdateien Abhängigkeiten zu anderen Paketen rückstandsloses Entfernen von Softwarefragmenten Die Verwaltung dieser Informationen erfolgt mit Hilfe einer Datenbank, die von durchdachten Werkzeugen, beispielsweise YaST2, bedient wird. Spätestens wenn Pakete, die nicht von der Distribution mitgeliefert wurden, installiert werden sollen, kommt man jedoch um die Verwendung von rpm nicht mehr herum. 107

108 12. RPM - RedHat Paket Manager Namenskonvention In der Regel enthält der Name eines rpm-paketes folgende Einzelinformationen, die durch Bindestriche bzw. Punkte voneinander getrennt werden. Name des Pakets, kann vom Entwickler frei bestimmt werden, Versionsnummer, ergibt sich aus der laufenden Projekt-Entwicklung, Releasestand, wird laufend für den Build des Pakets vergeben, Plattform, gibt Auskunft über die Art des kompilierenden Rechners z.b. alpha, i386, ppc Endung, lautet auf rpm Installation Die Installation einzelner Pakete lässt sich leicht bewerkstelligen. Dabei kann das rpm-paket im lokalen Dateisystem oder auf einem FTP- bzw. HTTP- Server liegen. # rpm -i /share/install/suse8.0/suse/doc4/books noarch.rpm Sind alle Abhängigkeiten aufgelöst, kann sofort mit der installierten Software gearbeitet werden. Bei Schwierigkeiten helfen ggf. einige Parameter weiter, die in der Manualseite von rpm aufgeführt werden (z.b. -v für eine gesprächigere Ausgabe, hash für eine Fortschrittsanzeige, test um zu prüfen, ob alle Installationsvoraussetzungen erfüllt sind usw.) Abfragen der Paketdatenbank Die Abfrage der Paketdatenbank beginnt immer mit der Option -q für Query. Datei - Paket Manchmal ist es interessant zu erfahren in welchem Paket eine bestimmte Datei bzw. ein häufig benutztes Kommando zu finden ist. Um dem auf die Schliche zu kommen, muss zunächst der komplette Pfad in Erfahrung gebracht und dann dem Befehl rpm übergeben werden. > rpm -qf type -p konsole kdebase Paketinformationen Zu den zahlreichen Paketen der Distribution sind auch etliche Informationen in der Datenbank bzw. im Paketheader abgelegt, die wie folgt erfragt werden können > rpm -qi kdebase Name : kdebase3 Relocations: (not relocateable) Version : 3.0 Vendor: SuSE AG, Nuernberg, Germany Release : 5 Build Date: Mit 27 Mär :50:26 CET 108

109 12.3. Abfragen der Paketdatenbank Install date: Mit 22 Mai :52:23 CEST Build Host: D4.suse.de Group : System/GUI/KDE Source RPM: kdebase src.rpm Size : License: GPL Packager : Summary : KDE base package: base system Description : This package contains kdebase, one of the basic packages of the K Desktop Environment. It contains among others KWIN, the KDE window manager; KONQUEROR, the KDE browser; KControl, the configuration program. This package is not needed if you want to start some KDE 2 applications, but not to use the KDE 2 Desktop. Authors: The KDE Team SuSE series: kde Distribution: SuSE Linux 8.0 (i386) Paketinhalt In der Regel gibt die dem Paket beliegende Dokumentation Auskunft über den Umfang der Software, die Namen der Konfigurationsdateien und deren Installationspfad. Allerdings weiß darüber auch die Datenbank Bescheid. > rpm -ql kdebase more /etc/opt/kde3/share/config/kdm /etc/opt/kde3/share/config/kdm/kdmrc /opt/kde3/bin /opt/kde3/bin/appletproxy /opt/kde3/bin/chooser /opt/kde3/bin/conttest /opt/kde3/bin/drkonqi /opt/kde3/bin/extensionproxy /opt/kde3/bin/kaccess /opt/kde3/bin/kaddressbook /opt/kde3/bin/kappfinder /opt/kde3/bin/kate /opt/kde3/bin/kblankscrn.kss /opt/kde3/bin/kcheckpass /opt/kde3/bin/kcminit /opt/kde3/bin/kcmshell /opt/kde3/bin/kcontrol /opt/kde3/bin/kdcop /opt/kde3/bin/kdebugdialog /opt/kde3/bin/kdeeject 109

110 12. RPM - RedHat Paket Manager /opt/kde3/bin/kdeprintfax /opt/kde3/bin/kdesktop Abhängigkeiten Die Fähigkeiten von rpm gehen jedoch über die reine Installation von zusätzlicher Software hinaus. So können auch Abhängigkeiten zu anderen Paketen abgebildetet werden. In der Regel wird damit nur am Rande konfrontiert, da die ausgeklügelten Installationswerkzeuge der Distributionen bestehende Abhängigkeiten erkennen und auflösen können. Um zu erkennen, welche Pakete von dem gefragten Paket benötigt werden, wird folgender Befehl angewendet. > rpm --requires -q kdebase kdebase3-ksysguardd kcontrol.so kdesktop.so keditbookmarks.so kfmclient.so khotkeys.so klipper.so kmenuedit.so konqueror.so kwrite.so ld-linux.so.2 libc.so.6... Auch der umgekehrte Weg ist denkbar. Welche Pakete bauen auf einem bestimmten anderen Paket auf und werden nach einer unbedachten Deinstallation möglicherweise nicht mehr funktionieren. > rpm --whatrequires -q kdebase kein Paket verlangt kdebase Erstellung eigener Pakete Hier die Erfahrungen aus der Arbeit dokumentieren! Übungen Zusammenfassung Zusammengefasste Inhalte des vorangegangenen Kapitels. 110

111 13. Kernel und Kernelmodule Wer glaubt, dass Linux schon immer so umfangreich war wie heute, der irrt. Nicht nur die verschiedensten Distributoren, allen voran SuSE, haben immer mehr Software dazugepackt, sondern auch der eigentliche Betriebssystemkern und die darum angeordneten Kernelmodule haben in den letzten Jahren ordentlich an Codeumfang zugelegt. Lernziele In diesem Kapitel lernen Sie, das dem Kernel zugrunde liegende Konzept kennen, die Aufgaben des Kernels einzuschätzen, eine Kernelkompilierung und -installation durchzuführen, den Umgang mit Kernelmodulen zu verstehen. Dieses besonders systemnahe Kapitel richtet sich weder an Einsteiger noch an Anwender. Es bietet sich jedoch denjenigen an, die tiefer in das System einsteigen wollen und hinter die Kulissen des Betriebssystems blicken möchten. Für das allgemeine Verständnis sollten Sie Kenntnisse im Aufbau von IT-Systemen mitbringen und insbesondere die Hardware Ihres eigenen Systems kennen. Achtung! Der Kernel ist nicht nur dem Namen nach der innerste Kern von Linux. Sie bewegen sich im vorliegenden Kapitel sehr nah am System, was zwar einerseits interessant, andererseits aber auch nicht ganz ungefährlich ist. Gehen Sie also, nicht bloß weil Sie ständig als root angemeldet sein werden, mit Bedacht vor Grundlagen Bevor der Einstieg in die Umgebung des Kernels gelingen kann, sind noch einige Grundlagen zu schaffen. Dazu gehören neben den Aufgaben des Kernels auch der grundlegende konzeptionelle Ansatz Aufgabenteilung Der Kernel stellt eine Schnittstelle zwischen den einzelnen Hardwarekomponenten und den Anwendungen dar. Darüber hinaus übernimmt er grundlegende Funktionen wie die Speicher- und Prozessverwaltung. Module können in diesem Sinne als Treiber verstanden werden, die den Zugriff auf Geräte, wie Festplatten, Netzwerkkarten usw. gewährleisten. Alle Zugriffe auf die Hardware müssen vom Kernel koordiniert werden, d.h. keine Anwendung darf direkt auf einzelne Geräte zugreifen. Ausnahmen von dieser Regel sind beispielsweise X-Server, die direkt zur Grafikkarte durchgreifen oder verschiedene Datenbanken, die unter Umgehung des Kernel-Caches raw auf die Platten schreiben. 111

112 13. Kernel und Kernelmodule Gerätedateien Damit Anwendungen die verschiedensten Komponenten bzw. deren Treiber überhaupt ansprechen können, stellt Linux im Dateisystem eine Unmenge an Gerätedateien, die ausschließlich im Verzeichnis /dev zu finden sind, bereit. Der Zugriff auf das jeweilige Gerät kann also so erfolgen, als ob es eine Datei wäre. Die Abwicklung der internen Systemaufrufe übernimmt dann der Kernel oder das zuständiges Modul. Beispiel Das Kommando dd soll das Image einer Bootdiskette auf Diskette schreiben. Dabei darf es nicht einfach am Kernel vorbei auf den Floppy-Controller zugreifen. Stattdessen schreibt es auf die Gerätedatei /dev/fd0. Alles andere ist Aufgabe des Kernels. Genauere Erläuterungen zum Devicefilesystem /dev finden Sie im gleichnamigen Kapitel Konzeption Eine Kernel-Architektur kann grundsätzlich zwei konzeptionelle Ansätze verfolgen. Zu Beginn der Linuxentwicklung führte dies auch zu heftigen Streitigkeiten zwischen Linus Torvalds, der mit dem vorerst monolithischen Ansatz, ein anderes Model verfolgte als der Universitätsprofessor Andrew Tanenbaum, der Minix mit einem Microkernel implementiert hatte. Allerdings werden Sie im laufenden Betrieb auf keine der nachfolgend beschriebenen Lösungen in ihrer reinsten Form treffen. Monolithischer Ansatz Sämtliche Funktionen des Kernels werden bei der Kompilierung in diesen integriert. Daraus ergibt sich zwar einerseits eine einfache Struktur, andererseits braucht der Kernel aber aufgrund seiner Größe mehr Systemressourcen und ist überdies nicht sonderlich flexibel. Wenn beispielsweise neue Hardware hinzukommt, muss ein neuer Kernel kompiliert werden, um die Unterstützung für diese Komponente zu aktivieren. Modularisierter Ansatz Zunächst wird nur das Notwendigste in den sogenannten Microkernel integriert. Zusätzliche Funktionen werden von eigens kompilierten Kernelmodulen abgedeckt. Diese Module können im laufenden Betrieb in den Kernel eingebunden und später wieder entfernt werden, weshalb der Kernel immer optimal an das System angepasst ist. Das spart zum einen wertvolle Systemressourcen und bringt zum anderen erhöhte Flexibilität, da neue Hardwarekomponenten ohne langwierige Neukompilierung des Kernels in das System integriert werden können Versionsnummern Anhand der Versionsnummer eines Kernels kann zwischen stabilen Anwender-Kerneln und noch nicht ausgereiften Entwickler-Kerneln unterschieden werden. Der Unterschied besteht in der zweiten Ziffer in der Versionsnummer. Ist diese Ziffer gerade, so handelt es sich um einen ausgiebig getesteten Kernel, der für Anwender freigegeben wurde. Ist diese jedoch ungerade, so kann der Kernel noch nicht als stabil bezeichnet werden und ist in erster Linie für Kernel-Entwickler und muss noch ausgiebigen Stabilitäts- und Belastungstests ausgesetzt werden. 112

113 13.2. Kompilierung und Installation Kompilierung und Installation Sämtliche Distributoren liefern brauchbare Standard-Kernel und eine umfangreiche Sammlung von Modulen mit. Einerseits laufen diese Kernel zwar stabil und enthalten die gängigsten Funktionen, andererseits heißt das aber, dass diese kaum für das von Ihnen eingesetzte System und die gefahrenen Anwendungen optimiert sind. Die folgende Anleitung soll es Ihnen nicht nur ermöglichen einen Kernel zu kompilieren und zu installieren, sondern Ihnen auch ein tieferes Verständnis für das System vermitteln Motivation Einer der wichtigsten Gründe für die Beschäftigung mit den Kernel-Quellen ist das Durcharbeiten der mitgelieferten und äußerst umfangreichen Dokumentation. Natürlich gibt es weitere gute Gründe für die Kompilierung eines eigenen Kernels, beispielsweise die Optimierung des Betriebssystems, die Integration besonderer Funktionen, das Durcharbeiten der Kerneldokumentation, die Verwendung des neuesten Kernels. An dieser Stelle sei noch einmal betont: Erfüllt der verwendete Kernel Ihre spezifischen Anforderungen und darüber hinaus Ihre Vorstellungen von Stabilität und Systemsicherheit, brauchen Sie weder ein Kernel- Update bzw. einen Kernel-Patch noch eine Kernel-Kompilation durchzuführen Installation der Kernel-Quellen Zunächst müssen die Quellen des Kernels installiert werden. SuSE liefert hierzu die Quellen des Standardkernels und die des distributionsspezifischen Kernels mit. Sie finden die Pakete mit Suchbegriffen wie Linux, Kernel oder Quellen in der Paketdatenbank. Sind Sie auf eine aktuelle Kernelversion angewiesen, so finden Sie diese im Internet. Erste Anlaufstelle wäre hier der jeweilige Distributor, der in der Regel eigene Kernelversionen zertifiziert und entsprechend als Paket bereitstellt. Hinzu kommt, dass die Distributoren eigene Patches einspielen, die den Kernel speziell für ihre Distribution anpassen. Reicht dies nicht aus, kann die neueste Entwicklerversion bei heruntergeladen werden. Hier finden sich zu den letzten Versionen sogenannte Changelogs, die die Änderungen der letzten Prepatches enthalten. Nach der Installation finden Sie die Kernelquellen im Verzeichnis /usr/src/linux-n, wobei das n für die Kernelversion steht. In der Regel gibt es auch ein Verzeichnis /usr/src/linux, dass jedoch nur eine Verlinkung auf eines der Quell-Verzeichnisse ist Konfiguration Es wurde bereits angesprochen, dass ein Kernel für das jeweils verwendete System optimiert werden kann. Dazu ist es nicht nur wichtig die eingebaute Hardware zu kennen, sondern auch zu wissen, welche Aufgaben der jeweilige Rechner zu übernehmen hat. Im privaten Gebrauch mag dies eine untergeordnete Rolle spielen, beim professionellen Einsatz von Application Servern und Datenbanken dürfen diese Überlegungen nicht außen vor bleiben. Bevor die eigentliche Kernel-Kompilierung begonnen werden kann, müssen umfangreiche Einstellungen, die in der Datei.config gespeichert werden, getätigt werden. Nach der Installation der Quellen ist diese 113

114 13. Kernel und Kernelmodule Datei unter Umständen noch nicht vorhanden, so dass Sie bei null anfangen müssten. Wenn Sie bei der gleichen Kernelversion bleiben, gibt es allerdings Abhilfe, da SuSE eine Standardkonfiguration in der Datei vmlinuz.config im Verzeichnis /boot ablegt. Mit dem Befehl cp /boot/vmlinuz.config /usr/src/linux-n/.config kann diese für den jeweiligen Kernel übernommen werden. Im Editor betrachtet, werden schnell zwei Sachverhalte deutlich. Erstens ist der Umfang kaum überschaubar (fast jede Zeile enthält eine Einstellung) und zweitens gibt es zu nahezu jeder Angabe grundsätzlich drei Möglichkeiten. Yes Unterstützung wird in den Kernel integriert, beispielsweise dann wichtig, wenn Sie das Gerät bereits beim Booten benötigen. Modul Treiber wird als Modul kompiliert und kann später bei Bedarf mit eingebunden werden. No Unterstützung wird nicht mitkompiliert. Auch wenn es möglich ist, sollten Sie die Änderungen nicht eigenmächtig in die Datei.config eintragen, sondern eines der unten beschriebenen Werkzeuge verwenden. Wechseln Sie dazu in das Verzeichnis /usr/src/linux-n und führen Sie als root einen der genannten Befehle aus. Dabei gilt: Wenn Sie unsicher sind, sollten Sie in jedem Fall die Dokumentation zur Rate ziehen oder es bei der Standardeinstellung belassen. #make config Dieses Programm weist am wenigsten Komfort auf, da Sie eine endlose Liste von Fragen der Reihe nach beantworten müssen und ein Zurückgehen oder Vorwärtsspringen nicht möglich ist. Letztendlich arbeiten Sie einfach die Einstellmöglichkeiten von.config sequentiell ab. Einzigster Vorteil dieser Methode besteht darin, dass keinerlei zusätzliche Programme installiert werden müssen. #make menuconfig Dieses Programm ist vergleichsweise komfortabel. Die Konfiguration erfolgt zwar immer noch im Textmodus, allerdings können jetzt die einzelnen Konfigurationspunkte in einer Menüstruktur ausgewählt werden. Es ist also möglich, nur rasch vereinzelte Punkte zu verändern, ohne die gesamte Liste der Einstellungen durchzuarbeiten. #make xconfig Dieses Programm ist weit anspruchsvoller, da ein X - Server laufen und zudem tcl/tk installiert sein muss. Die Konfiguration erfolgt jetzt per Mausklick, indem einzelne Optionen aus den Menüs bzw. Listen an- bzw. abgewählt werden. Anschließend speichern Sie die vorgenommene Konfiguration ab. Gleich welchen Befehl Sie verwenden, bleiben Ihnen eine Menge Fragen zur Kernelkonfiguration nicht erspart. Jedoch kommt es nicht selten vor, dass viele spezielle Einstellungen nicht getätigt werden können, weil die dazugehörige grundsätzliche Unterstützung nicht aktiviert wurde. In vielen Fällen werden Sie sich also in die Dokumentation einlesen oder von vorneherein bei der Standardeinstellung verbleiben müssen Kompilierung Nachdem Sie die benötigten Einstellungen getätigt haben, muss der Rechner den Kernel und die Module kompilieren. Führen Sie dazu die untenstehenden Befehle der Reihe nach im Verzeichnis /usr/src/linux-n aus und lehnen Sie sich zurück, da der gesamte Vorgang je nach Systemleistung länger dauern kann. 114

115 13.2. Kompilierung und Installation #make dep Die Abhängigkeiten zwischen den zu kompilierenden Kernelbestandteilen werden geprüft und das Ergebnis in das entsprechende Quell-Verzeichnis in Dateien namens.depend eingetragen. #make clean Übergebliebene Reste vorangegangener Kompilationsläufe werden gelöscht. #make bzimage Die Kompilierung des Kernels wird gestartet und der fertige Kernel mit dem Namen bzimage in das Verzeichnis /usr/src/linux-n/arch/i386/boot kopiert. Die Module sind bei diesem Kompilationslauf jedoch noch nicht enthalten. #make modules Jetzt werden die Kernelmodule kompiliert. Dieser Vorgang dauert, in Abhängigkeit von der Anzahl der Module, wesentlich länger als die eigentliche Kernel-Kompilierung. Nach diesem recht zeitaufwendigen Vorgang, sind zwar der Kernel und die dazugehörigen Module kompiliert, allerdings hat dies noch keine Auswirkungen auf das System, da der Kernel noch nicht installiert wurde. Sie müssen Ihr System dazu bringen, mit dem neuen Kernel zu booten und die neuerstellten Module einzubinden Installation des Kernels Nachdem der Kernel und sämtliche Module kompiliert wurden, werden im Anschluss zunächst die zahlreichen Module und erst danach der Kernel installiert. #make modules install Die gerade kompilierten Module, die verstreut im Quellpfad des Kernels liegen, werden in das Verzeichnis /lib/modules/n kopiert. # cp /usr/src/linux-n/arch/i386/boot/bzimage /boot/vmlinuz.user Beim Booten des Rechners wird durch LILO der ausgewählte Kernel gestartet. Haben Sie einen neuen Kernel kompiliert, muss der Kernel in das Verzeichnis /boot kopiert und LILO entsprechend angepasst werden. Überschreiben Sie keinesfalls einen der funktionsfähigen Kernel, sondern legen Sie eine neue Datei beispielsweise mit dem Namen vmlinuz.user an. Jetzt muss dem Linux Loader (LILO) noch ein neuer Eintrag in der Datei /etc/lilo.conf hinzugefügt werden, wobei Sie sich an den bereits vorhandenen Einträgen orientieren können. Damit der neue Eintrag auch beim Booten sichtbar wird, muss zu guter Letzt noch das Kommando lilo ausgeführt werden. Dabei werden die internen Zeiger von LILO auf die veränderten Kernel aktualisiert. Dies ist immer dann notwendig, wenn sich Kernel-Dateien geändert haben, also auch dann, wenn Sie nochmals einen Kernel kompilieren und damit einen älteren im Verzeichnis /boot überschreiben Initial Ramdisk Theoretisch wäre ein Linuxkernel mit den oben genannten Vorbereitungen voll benutzbar. Es gibt da jedoch noch eine kleine Schwachstelle in diesem Konzept: Eventuell gehören Sie zu den Menschen, die zum Beispiel ihre Root-Partition mit dem neuen Dateisystem reiserfs formatiert haben. Oder sie sind glücklicher Besitzer eines Brenners, der über die ide-scsi Module angesprochen wird. Sie ahnen bereits: Für beide Geräte wird nach SuSE-Standard jeweils ein Kernelmodul erzeugt. Woher jedoch soll der Kernel beim booten diese Module nachladen, wenn diese auf eben der Reiser-Partition abgelegt sind? Für dieses Problem haben sich die Leute bei SuSE das Konzept der Initial-Ramdisk ausgedacht: Der Bootloader lädt eine Datei mit eben diesen Modulen, die so dringend vom Kernel benötigt werden in den Hauptspeicher, auf den ja bekanntlich ohne Schwierigkeiten zugegriffen werden kann. 115

116 13. Kernel und Kernelmodule So weit, so gut. Ihr selbst compilierter Kernel braucht jedoch eventuell ebenso eine Ramdisk, aber die wurde ja bisher nicht erzeugt Hier kommen Sie ins Spiel. 1. Um diese Ramdisk zu einzurichten, rufen Sie zuerst den Sysconfig-Editor im YaST auf, um die Variable Base-Administration/Common-Basics/initrd modules mit den richtigen benötigten Modulen zu füllen. 2. Jetzt müssen Sie die neue Ramdisk nur noch erstellen lassen. Dies erledigt für Sie das Werkzeug mkinitrd. Sie müssen es aufrufen mit zwei Parametern: -k dahinter geben Sie in Anführungszeichen die Kerneldatei an, für die Sie eine Ramdisk erzeugen wollen -i dahinter geben Sie in Anführungszeichen den Namen der neuen Ramdisk an 3. Schliesslich tragen sie die neue Ramdisk im Bootmanager, z.b. GRUB ein Systemtest Jetzt starten Sie den Rechner durch und wählen beim Hochfahren den entsprechenden Eintrag im LILO aus. Kurz darauf wird der neue Kernel zum ersten Mal gestartet. Dabei sollten Sie genauestens die Kernel- und Modulmeldungen beobachten. Treten hierbei bereits Fehler auf, kommen Sie um eine erneute Konfiguration und Kompilierung nicht herum. Verläuft hingegen alles problemlos und funktionieren alle Hardwarekomponenten sollten Sie den Kernel im laufenden Betrieb eine Weile testen und dabei die Systemperformance und Stabilität beobachten. Darüber hinaus ist auch die Funktion der zahlreichen, aber vielleicht selten verwendeten, Hardwarekomponenten sicherzustellen Verwaltung der Kernelmodule Wie bereits deutlich geworden sein sollte, beruht der Linux-Kernel im wesentlichen auf Modulen. Im folgenden soll das Konzept der Kernelmodule aufgezeigt und die internen Systemabläufe bei der Einbindung von Modulen verdeutlicht werden Motivation Die Vorteile des modularisierten Kernels sind vielleicht schon weiter oben klar geworden. Hier noch einmal in kurzen Stichpunkten. Treiber für selten benötigte Hardware werden nur bei Bedarf geladen, Kernel beherrscht viele Funktionen, bleibt aber übersichtlich schlank, Laden und Entladen der Treiber ermöglicht die wechselweise Benutzung von unverträglichen Geräten ohne Durchstarten des Systems, Vereinfachung und Beschleunigung der Entwicklung von Treibern Modulklassen LowLevel-Treiber Ganz nah am System sind die eigentlichen Hardwaretreiber, wie z.b. für den Festplattencontroller, den Chipsatz oder die Netzwerkkarten. 116

117 13.3. Verwaltung der Kernelmodule HighLevel-Treiber Darauf aufsetzend gibt es Treiber für die diversen Dateisysteme und Netzwerkprotokolle. Binary-Treiber Daneben gibt es Treiber für die Unterstützung der verschiedenen Binary-Formate, wie z.b. a.out Automatismen Die Modulverwaltung erfolgt in der Regel automatisch und gegenüber dem Anwender völlig transparent, ohne dass dieser manuell eingreifen müsste. Noch nicht geladene Module werden bei Bedarf selbstständig eingebunden und danach wieder entfernt. Dafür ist ein, in den Kernel integrierter, Bestandteil namens kmod zuständig. Beim Nachladen optionaler Module berücksichtigt kmod verschiedene Parameter und Modulabhängigkeiten. Die dazugehörigen Konfigurationsdateien werden während der Installation und später bei der Konfiguration des Systems von den entsprechenden Tools der Distribution gewartet Selbstverwaltung Nichtsdestotrotz kann die Modulverwaltung auch von Hand durchgeführt werden. Die Erklärungen zu den nachfolgend aufgeführten beispielhaften Kommandos sollen Licht ins Dunkel bringen und die Vorgehensweisen der angesprochenen Automatismen verständlich machen. #lsmod Der Befehl zeigt die derzeit geladenen Module und deren Größe an. Zusätzlich erfahren Sie durch einen Zähler, wie oft das jeweilige Modul gerade geöffnet ist und von welchem Modul gerade darauf zugegriffen wird. Alle Module, die kmod automatisch geladen hat, werden mit dem Flag autoclean gekennzeichnet. #insmod ne io=0x300 irq=5 Mit diesem Kommando werden Module (hier eine Netzwerkkarte) nachgeladen. Als Parameter werden zum einen der Modulname und zum anderen die vom Gerät belegten Ressourcen (IO-Adresse, IRQ) mitgegeben. Sollte ein Fehler auftreten (falscher Modulname, falsche Ressourcen) wird eine Fehlermeldung zurückgegeben. #modprobe es1371 Nicht selten ist das korrekte Einbinden eines Modules (hier eine Soundkarte) von anderen Modulen abhängig. Aus der Datei /lib/modules/n/modules.dep werden diese Abhängigkeiten gelesen und fehlende Module mitgeladen. Außerdem bestimmt modprobe die Ressourcen einer Komponente mit Hilfe der Datei /etc/modules.conf. Der angeführte Beispielbefehl lädt demnach zwei Module. Zunächst das Modul soundcore und danach das davon abhängige Modul es1371. Modprobe unterstützt auch die Funktionalität, mehrere passende Module durchzuprobieren. Spricht einer der Treiber an, so wird davon ausgegangen, dass das Gerät im System vorhanden ist. #rmmod isa-pnp Dieses Kommando entfernt Module (hier die Unterstützung für Plug and Play fähige ISA Karten) aus dem System und gibt den belegten Speicher wieder frei. Einzelne Module können natürlich nur entfernt werden, wenn diese gerade nicht verwendet werden. Mit der Option -a werden alle zur Zeit nicht benötigten Module entfernt. #depmod Dieser Befehl erstellt zusammen mit der Option -a die Datei modules.dep, damit modprobe die Abhängigkeiten der Kernelmodule bestimmen kann. Auch die Angaben in der Datei /etc/modules.conf werden dazu herangezogen. 117

118 13. Kernel und Kernelmodule Konfiguration Nehmen Sie Änderungen an der Datei /etc/modules.conf nur dann vor, wenn Sie wissen was Sie tun. Die Einstellmöglichkeiten sind sehr systemnah und damit riskant! Dennoch ist es gut zu wissen, was mit dieser Datei gesteuert wird, um das System in seiner Gesamtheit besser zu verstehen. alias: gibt an, für welche Devices welche Kernelmodule geladen werden sollen, options: bestimmt die Optionen für das angegebene Modul, path: zeigt auf die Verzeichnisse, in denen sich die Kernelmodule befinden, pre-install / post-install: legt Aktionen fest, die vor bzw. nach dem Laden eines Moduls ausgeführt werden. Daneben gibt es noch zahlreiche weitere Anweisungen, die an dieser Stelle jedoch nicht näher erläutert werden Kernelmodule von Drittanbietern Der Linuxkernel bietet die Integration von dynamisch nachladbaren Modulen an. Das kann man auch vergleichen mit den unter der M$ Welt so bekannt gewordenen Treibern. Auch unter Linux können Module von Drittanbietern, wie zum Beispiel Hardwareherstellern eingebunden werden. Dazu müssen die jeweiligen Module für den verwendeten Kernel kompiliert werden. Dies passiert relativ häufig, einige prominente Beispiele seien hier aufgelistet: alsa Advanced Linux Sound Architecture; viele moderne Soundkarten werden nicht mehr direkt durch das Linux-Kernelprojekt unterstützt. Das ALSA Team springt in diese Lücke und schreibt ergänzende Module für diese Soundkarten. nvidia Viele moderne Desktop PCs werden mit NVidia Grafikkarten bestückt. Um zum Beispiel die allseits beliebten Ego-Shooter oder harmlosere Spiele mit voller Hardwareunterstützung laufen lassen zu können, liefert NVidia Treiber für Ihre Grafikkarten mit einem verbundenen Kernelmodul aus. Dadurch können auch OpenGL Anwendungen unter Linux von vorhandener Beschleunigungshardware provitieren... vmware Der Hersteller von PC-Emulatoren verwendet Kernelmodule um sein virtuelles Netzwerkdevice in das Linuxsystem einzubinden. Damit ist es dem emulierten Betriebssystem möglich, über den Linux-Host auf das echte Netzwerk zuzugreifen... Wie man sieht, ist die Nutzung von Kernelmodulen durch Drittanbieter weit verbreitet. Wenn man erst einmal die Scheu vor dem Kompilieren von Zusatzmodulen und die Installation selbiger überwunden hat, findet man dies gar nicht mehr so ungewöhnlich. Für ein Beispiel möchte ich hier auf die Installation eines ALSA-Moduls im Kapitel auf Seite 132 verweisen... Übungen

119 13.3. Verwaltung der Kernelmodule Zusammenfassung Im vorangegangenen Kapitel haben Sie den Kernel und dessen Aufgaben kennengelernt. Mit der Kernelkompilierung und der Modulverwaltung sind Sie tief in das System eingestiegen. Auch wenn solche Eingriffe nur selten notwendig sind, sollten Sie das grundlegende Verständnis für diese systemnahen Vorgänge im Hinterkopf behalten. 119

120 13. Kernel und Kernelmodule 120

121 14. Hardware Die Unterstützung von Standardhardware bereitet zwar nur noch selten Bauchschmerzen, von der unkomplizierten Benutzung sämtlicher Features einzelner Komponenten kann aber noch lange nicht die Rede sein. Ein guter Grund der eigenen Hardware mit Betriebssystemmitteln auf den Zahn zu fühlen. Informationen zur verbauten Hardware erhält man aber auch mit Hilfe des Procfs, das im Kapitel?? auf Seite?? ausführlich beschrieben ist. Lernziele In diesem Kapitel lernen Sie, die Hotplugfähigkeiten von Linux kennen, die Möglichkeiten der Hardwareerkennung, die Verwendung von PCMCIA Karten, die Konfiguration des APM, das Tunen des IDE Subsystems, einige Details zur Konfiguration von Netzwerkkarten, die Installation von Soundkartentreibern mit ALSA Arbeitsspeicher Detaillierte Informationen zur derzeitigen Verwendung des Arbeitsspeichers können in der Datei /proc/meminfo nachgeschlagen werden. Die Größe des Arbeitsspeichers wird in der Regel korrekt vom Kernel erkannt. Nach einer Arbeitsspeichererweiterung kann es aber notwendig sein, den Kernelparameter mem z.b. durch mem=1024m auf die richtige Größe zu setzen Festplatten Informationen über die verbauten Platten können mit dem Kommando hdparm abgefragt werden. alisa: # hdparm -i /dev/hda /dev/hda: Model=IC35L040AVER07-0, FwRev=ER4OA41A, SerialNo=SX0SXLP2830 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs } RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=40 BuffType=DualPortCache, BuffSize=1916kB, MaxMultSect=16, MultSect=16 121

122 14. Hardware CurCHS=16383/16/63, CurSects= , LBA=yes, LBAsects= IORDY=on/off, tpio={min:240,w/iordy:120}, tdma={min:120,rec:120} PIO modes: pio0 pio1 pio2 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 *udma4 udma5 AdvancedPM=yes: disabled (255) Drive Supports : ATA/ATAPI-5 T D revision 1 : ATA-2 ATA-3 ATA-4 ATA-5 Kernel Drive Geometry LogicalCHS=5005/255/63 PhysicalCHS=79780/16/63 Informationen über den Festplattenzugriff im PIO bzw. DMA Modus erhält man ebenfalls mit hdparm. alisa: # hdparm -cd /dev/hda /dev/hda: I/O support = 1 (32-bit) using_dma = 1 (on) Natürlich können sämtliche Parameter auch mit hdparm gesetzt werden (vgl. hierzu man hdparm). Allerdings muss man dabei mit Bedacht vorgehen, da unter Umständen bei fehlender Hardwareunterstützung seitens des Chipsatzes bzw. des Plattensubsystems das System stehen bleibt oder im Verlauf der Benutzung Fehler auftreten bzw. Daten verloren gehen können Hotplug Hotplugfähige Komponenten können im laufenden Betrieb angeschlossen und wieder abgenommen werden. Zuerst denkt man hier vielleicht an USB, aber auch PCI, PCMCIA, Firewire und SCSI gehören dazu. Die Aufgabe von Hotplug ist es diese Hardware zu erkennen und einzubinden. Aber auch das Entfernen der Komponenten muss vorbereitet und die belegten Ressourcen freigegeben werden Kernel Damit das Hotplug-System überhaupt funktionieren kann, müssen die Treiber eines hotplugfähigen Busses in der Lage sein, neue Geräte zu erkennen und dem Betriebssystem zu melden. Im Kernel 2.4 sind USB, PCMCIA, Firewire, teilweise PCI und das Netzwerksubsystem dazu in der Lage. Dieser erste Teil von Hotplug ist fest in den Kernel und dessen Module einkompiliert und kann ohne weiteres nicht beeinflusst werden Shellskripte Der zweite Teil von Hotplug ist eine ganze Sammlung an Skripten im Verzeichnis /etc/hotplug, die die Behandlung der vom Kernel gemeldeten Hotplug Ereignisse übernimmt. Als Schnittstelle zwischen dieser Sammlung und dem Kernel gibt sich das Skript /sbin/hotplug. Zu dessen Aufgaben gehört nicht nur das Einbinden bzw. Herauslösen von Geräten durch das Laden bzw. Entfernen von Treibermodulen. Auch das Mounten von Dateisystemen, die Konfiguration von Netzwerkkomponenten usw. kann durch diese Shellskripte abgedeckt werden. Wenn ein hotplugfähiges Gerät angeschlossen wird, ruft der Kernel das Skript /sbin/hotplug auf und übergibt ihm zusätzliche Informationen über die entsprechende Hardwarekomponente. Dann verteilt es die Arbeit an weitere Skripte, sogenannte Agenten, die dann die Treiber laden und die Konfiguration übernehmen. Je nach Hardware wird der usb.agent, der pci.agent usw. verwendet. Der Kernel gibt zwar alle Hotplugereignisse an /sbin/hotplug weiter, solange jedoch das Hotplugsystem nicht gestartet ist, werden alle Ereignisse verworfen. Außerdem erkennt der Kernel bereits erste Komponenten, wenn noch gar kein Dateisystem gemountet ist. Diese Ereignisse gehen dann einfach verloren. Um das zu vermeiden wird in den Skripten /etc/hotplug/*.rc versucht, für bereits vorhandene Hardware 122

123 14.3. Hotplug entsprechende Ereignisse nachträglich zu erzeugen. Das Hotplug-System kann mit rchotplug start gestartet und mit rchotplug stop gestoppt werden Konfiguration In der SuSE typisch gut kommentierten Datei /etc/sysconfig/hotplug gibt es einige Variablen, die das Verhalten des Hotplug-Systems steuern. Von besonderem Interesse sind die Variablen HOTPLUG_START_USB, HOTPLUG_START_PCI und HOTPLUG_START_NET. Weitere Variablen werden im folgenden näher beleuchtet Logdateien Alle Meldungen des Hotplug-Systems werden in die Datei /var/log/messages geschrieben USB Schließt man ein USB Gerät an, ermittelt das Skript /etc/hotplug/usb.agent einen geeigneten Treiber und lädt diesen. Die Zuordnung von Hardware und Treiber erfolgt mehrstufig. Zunächst wird die Datei /etc/hotplug/usb.usermap herangezogen. Findet sich hier keine Lösung wird eine individuelle Modulzuordnung durch die Datei /etc/hotplug/usb.handm versucht. Zuletzt wird die Zuordnungstabelle des Kernels /lib/modules/kernelversion/modules.usbmap verwendet. Je nach Typ werden die USB Komponenten anders behandelt. Speichermedien Die Dateisysteme auf solchen Speichermedien werden, nachdem die erforderlichen Treiber geladen worden, durch /usr/sbin/checkhotmounts gemountet. Netzwerkgeräte Netzwerkkomponenten lösen ein eigenes Hotplugereignis im Kernel aus. Der USB Agent spielt hier nur insofern eine Rolle, dass er für das spätere Hotplugereignis Hardwareinformationen hinterlegt. Kameras Solche Komponenten werden durch den KDE Hardwarescan erkannt. Die erforderlichen Zugriffsrechte auf das Devicefile werden dann durch /etc/hotplug/usb/usbcam gesetzt. Mäuse Solche Komponenten benötigen ausschließlich einen geladenes Modul, welches durch den USB Agenten geladen wird. Tastaturen Diese werden schon beim Bootvorgang benötigt und werden deshalb nicht von Hotplug behandelt. Modems und ISDN-Karten Leider wird diese Hardware noch nicht von Hotplug behandelt. In der bereits angesprochenen Datei /etc/sysconfig/hotplug finden sich noch weitere Variablen, die modulspezifische Angaben machen, so z.b. welche Module für den USB Hostcontroller geladen werden sollen und welche Module bei einem späteren Entfernen wieder entladen werden müssen. 123

124 14. Hardware Zusammenfassung Die Hotplugfähigkeiten unterliegen einer äußerst dynamischer Entwicklung, die sich im wesentlichen im Kernel widerspiegelt. Insofern kann davon ausgegangen werden, dass im Kernel 2.6 eine noch bessere Unterstützung für diese Art von Hardware geboten wird PCI und PCMCIA Hotplugereignisse für PCMCIA Karten werden nur dann ausgelöst, wenn es sich dabei um CardBus-Karten handelt und auch nur dann, wenn das Kernel PCMCIA-System aktiv ist. Technisch gesehen sind CardBus- Karten beinahe PCI Geräte, weshalb beide Bussysteme vom selben Skript /etc/hotplug/pci.agent behandelt werden. Im Wesentlichen wird hier wiede r der Treiber ermittelt und geladen. Außerdem werden Informationen hinterlegt, wo die Hardware angeschlossen wurde, damit ein späteres Netzwerkereignis die richtige Konfiguration auswählen kann. Die Auswahl der zugehörigen Treiber ist zweistufig. Zuerst wird in der Datei /etc/hotplug/pci.handmap nach individuellen Einstellungen gesucht. Bleibt das erfolglos wird wiederum die Kerneltabelle unter /lib/modules/kernelversion zu Rate gezogen. Sobald die Karte wieder entfernt wird, werden auch die verwendeten Module wieder entladen. Führt das Entfernen der Treiber zu Problemen, kann dies durch die Variable HOTPLUG_PCI_MODULES_NOT_TO_UNLOAD in der Datei /etc/sysconfig/hotplug abgefangen werden Netzwerk Wird im Kernel ein neues Netzwerkinterface angemeldet, löst dieser ein Netzwerk-Hotplugereignis aus, welches vom Skript /etc/hotplug/net.agent behandelt wird. Gegenwärtig werden Ethernet-, Tokenringund WirelessLAN-Interfaces berücksichtigt. Die Hardwareinformation, die zur Konfiguration der Interfaces notwendig ist, wird von vorausgegangenen USB- bzw. PCI-Hotplug-Ereignissen bereitgestellt. Dann werden die Skripte /sbin/ifup bzw. /sbin/ifdown aufgerufen, die so in der Lage sind, einer bestimmten Karte immer die richtige Konfiguration zuzuweisen, auch wenn das Interface, aufgrund der willkürlichen Namenszuordnung durch den Kernel, einen anderen Namen hat. Schlägt die automatische Ermittlung der Hardware fehl, kann die Beschreibung der Netzwerkkarte in der Variable HOTPLUG_NET_DEFAULT_HARDWARE in /etc/sysconfig/hotplug abgelegt werden. HOTPLUG_NET_TIMEOUT legt übrigens fest wie lange der Agent auf eine zur Laufzeit erzeugte Hardwarebeschreibung wartet Firewire Unter SuSE werden für FireWire Komponenten derzeit nur die Treiber geladen. In nachfolgenden Versionen dürfte sich die Unterstützung solcher Komponenten weiter verbessern PCMCIA Hardware Es gibt zwei unterschiedliche Typen von PCMCIA 1 -Karten. 1. PC-Karten verwenden einen 16 Bit breiten Bus zur Datenübertragung und sind aufgrund ihreres günstigen Anschaffungspreises recht weit verbreitet. Solche Karten werden zum Großteil sauber unterstützt. 1 Personal Computer Memory Card International Association 124

125 14.5. Hardware Erkennung 2. CardBus-Karten verwenden einen 32 Bit breiten Bus, was diese zwar beschleunigt aber auch teurer macht. Auch für diese Karten gibt es bereits etliche Treiber, allerdings ist die Unterstützung aufgrund einiger Instabilitäten noch verbesserungsbedürftig. Die zweite notwendige Komponente ist der PCMCIA-Controller bzw. die PC-Card / CardBus-Bridge, wobei Linux alle gängigen Modelle unterstützt Dokumentation Ausführliche Informationen zu PCMCIA finden sich übrigens im Verzeichnis /usr/share/doc/packages/pcmcia/. Neben dem PCMCIA HowTo listet hier auch eine eigene Datei alle unterstützten Karten Kommandos Um zu erfahren, welche Karten gerade angemeldet sind, führt man cardctl ident aus. Man erhält Informationen über die einzelnen Steckplätze und erfährt welche Funktion die jeweilige Karte hat. Der Typ des Controllers lässt sich laut SuSE Administrationshandbuch mit dem Befehl probe abfragen. Handelt es sich um ein PCI-Gerät kann man auch mit lspci -vt einige zusätzliche Informationen erhalten Software Derzeit gibt es zwei zu einander inkompatible Möglichkeiten das PCMCIA Subsystem zu unterstützen, die jeweils auf verschiedene Kartentreibersätze aufbauen. 1. Das externe PCMCIA ist das ältere und damit das stabilere von beiden. Es wird zwar immernoch weiterentwickelt, die verwendeten Module sind jedoch nicht in die Kernelquellen integriert. 2. Das Kernel PCMCIA System ist eine aktuelle Entwicklung, die erst im Kernel 2.4 aufgenommen wurde. Es werden vor allem neuere CardBus Komponenten besser unterstützt. Die Voreinstellung von SuSE verwendet das Kernel PCMCIA. Neben den Möglichkeiten an der Kommandozeile gibt es auch ein grafisches Tool namens cardinfo zur Verwaltung von PCMCIA-Karten Konfiguration Die Konfiguration des PCMCIA Systems findet sich in der Datei /etc/sysconfig/pcmcia. Hier wird nicht nur bestimmt, welches der beiden Systeme verwendet wird. In seltenen Fällen ist es notwendig, anzugeben, welcher Treiber für den PCMCIA-Controller mit welchen Optionen geladen werden soll. Nach Änderungen wird das PCMCIA-System mit rcpcmcia restart durchgestartet. Vorübergehende Wechsel zwischen den beiden Systemen sind allerdings auch mit rcpcmcia external bzw. rcpcmcia kernel möglich. Programm PCMCIA CardInfo Hardware Erkennung hwinfo Schon einmal das Programm hwinfo betrachtet? Hier folgt eine Liste der Möglichkeiten. 125

126 14. Hardware lspci Gibt etwas schneller alle Informationen zu den eingebauten PCI Geräten aus Profile Sie kennen das Problem: Sie sitzen an Ihrem Laptop daheim und surfen mit Ihrem DSL Anschluss, oder tauschen Daten mit Ihrem Arbeitsplatzrechner aus. Am nächsten Tag an Ihrem Arbeitsplatz verbinden Sie sich wieder mit dem Firmennetzwerk. Natürlich haben beide Netzwerke verschiede IPs und Netzwerkmasken. Trotzdem wollen Sie nicht jeden Tag zweimal die Netzwerkdaten komplett umstellen. Die beiden Systeme External und Kernel PCMCIA gehen verschiedene Wege, um diese Funktionalitäten zu erreichen: SCPM Als Bestandteil des hotplug-systems ist das Kernel-PCMCIA genauso in das Globale Profilmanagement per SCPM eingebunden, wie alle anderen Geräte. Sie steuern SCPM über das Program scpm mit einem entsprechendem Parameter. Nach der Aktivierung von SCPM mit dem Befehl scpm enable können Sie sich den Namen des aktiven Profils mit scpm active ausgeben lassen. Ein neues (eigenes) Profil können Sie sich durch den Aufruf von scpm add PROFILNAME erzeugen. Durch ein scpm switch PROFILNAME wechseln Sie im laufenden Betrieb das aktuelle Profil. Scpm erkennt dann automatisch, welche Änderungen am System vorgenommen werden müssen, und tauscht die entsprechenden Konfigurationsdateien aus, bevor die relevanten Dienste neu gestartet werden. Änderungen an den Profilen können Sie ausführen, in dem Sie diese wie gewohnt durchführen, beim nächsten Profilwechsel werden diese dann erkannt und abgespeichert. Als Ergänzung können Sie Ihrem Bootmanager (lilo, grub) als Kernelparameter die Option PROFILE=profilname mitgeben, um gleich beim Systemstart im richtigen Profil zu landen Schemen Für PC Cards können Sie SCPM nicht zur Verwaltung dieser Profile hernehmen, und sind auf eine eigene Lösung des PCMCIA Systems angewiesen: schemes. Den Namen des aktuellen Schemas können Sie sich durch Eingabe des Befehls cardctl scheme anzeigen lassen. Wenn Sie dabei noch zusätzlich einen neuen Schemennamen übergeben, wechselt der Cardmanager in dieses neue Schema und sobald Sie eine neue Karte einschieben/anmelden, wird Sie nach dem neuen Schema initialisiert PCMCIA Überblick PCMCIA Geräte werden vom oben dargelegten Hotplug-System nur dann behandelt, wenn es Card-Bus- Karten sind und das Kernel PCMCIA-System gewählt wurde. PCMCIA Karten sind für PC-Verhältnisse bereits relativ alt - das Konzept stammt noch aus Commodorezeiten. Über die Jahre hinweg ist dieser Standard den Bedürfnissen der User angepasst worden. Heutzutage sind größtenteils zwei Versionen von PCMCIA Karten gängig: 16Bit- und 32Bit-Karten. Die älteren 16Bit-Karten werden auch oft als PC Card -Karten bezeichnet, wobei man neuere 32Bit-Karten oft unter dem Namen CardBus -Karten findet. Linux unterscheidet beide Typen, in der Art und Weise, wie diese benutzt werden können. Es existiert seit langem ein Zusatzpacket für Linuxsysteme, mit dessen Hilfe man PCMCIA-Karten betreiben kann. Dieses ist allein lauffähig und nicht auf Kernelunterstützung angewiesen. Daher wird es auch bei SuSE als der External -PCMCIA Manager bezeichnet. Seit der Kernelversion 2.4 enthält der Linuxkernel Unterstützung für PCMCIA Karten. 126

127 14.7. PCMCIA Diese sind homogen in das Management von Hotpluggeräten eingebettet. Zumindest theoretisch. Denn der Linuxkernel unterstützt größtenteils nur die neueren CardBus -Karten. Dies ist eine häufige Ursache für Probleme vor allem mit billigeren oder älteren PCMCIA Karten, denn SuSE Linux 8.1 hat standardmäßig die Kernelversion von PCMCIA aktiviert. Begründet wird das mit der besseren Unterstützung für PCMCIA WLAN Adapter. Ich persönlich kenne allerdings mehr 16Bit-WLAN-Karten als 32Bit-Karten... Die beiden Varianten von PCMCIA Systemen sind leider inkompatibel zueinander und können nicht gleichzeitig betrieben werden. Sie stellen das verwendete System in der Datei /etc/sysconfig/pcmcia ein, indem Sie die entsprechende Variable (PCMCIA SYSTEM) auf den entsprechenden Wert (kernel oder external) setzen. Vorübergehend können Sie auch mit Hilfe der rc-skripte manuell zwischen beiden Systemen umschalten. Die Syntax lautet dabei rcpcmcia restart kernel beziehungsweise rcpcmcia restart external Kernel PCMCIA Zuerst möchte ich auf den neuen Kernel PCMCIA Manager eingehen, da es so aussieht, als ob SuSE Linux sich in Zukunft ganz auf diesen Mechanismus verliesse. Augenscheinlich lassen sich PCMCIA Karten (vor allem die Netzwerkkarten) sehr einfach mit den grafischen SuSE Werkzeugen einrichten, sobald Sie allerdings mehrere PCMCIA Karten Ihr eigen nennen, kommen Sie sehr schnell an die Grenzen der Masken. CardBus Karten werden seit SuSE Linux 8.1 durch den Hotplug-Manager gehandhabt. Dieser übernimmt die Initialisierung der CardBus Karten und behandelt sie weiterhin wie die sonst üblichen (und von der Architektur her ähnlichen) PCI Karten. CardBus Netzwerk- (und Wireless-) Karten erzeugen beim Einstecken ein spezielles Hotplug-Event, dass geeignet abgefangen werden kann. Die Events für andere Kartenarbeiten sind teilweise noch in der Entwicklung und werden in zukünftigen Versionen eingebaut werden. Bei der Entnahme der Karten werden die entsprechenden Module auch wieder aus dem Speicher genommen. Genauere Instruktionen zur Einstellung von CardBus Netzwerkkarten sind nicht nötig, da die Einrichtung genauso erfolgt wie die von normalen PCI Netzwerkkarten. Die Beschreibungen hierzu finden Sie im Kapitel zu hotplug. Verschiedene Konfigurationen verwalten Sie beim Kernel PCMCIA mit dem SCPM Werkzeug, wie unter auf Seite 126 beschrieben External PCMCIA Wenn Sie den External PCMCIA Manager wie oben beschrieben aktiviert haben, können Sie die gewünschten Einstellungen an Ihren Karten mit Hilfe der Konfigurationsdateien im Verzeichnis /etc/pcmcia vollziehen. Für jede Art von PC Cards finden Sie eine entsprechende Konfigurationsdatei mit der Endung.opts, die alle zum größten Teil sehr gut kommentiert sind, daher möchte ich an dieser Stelle nicht auf die einzelnen Dateien eingehen, zumal External PCMCIA sowieso über kurz oder lang durch das Kernel System abgelöst werden soll. Wie eine Netzwerkkarte eingerichtet wird, erfahren Sie im Abschnitt auf Seite Kartenkontrolle Linux ist ein Mehrbenutzersystem. Daher ist es nur verständlich, dass sie als Benutzer nicht einfach PCM- CIA Karten nach belieben ein- und ausbauen können. Wenn Sie die Entnahme rechtzeitig ankündigen, kann Linux die Karten korrekt abmelden. In manchen Fällen ist aber eine Entnahme ohne vorherige Benachrichtigung nicht tragisch, zum Beispiel bei Netzwerkkarten... Sie verschaffen sich eine Übersicht über die derzeit eingebauten Karten und deren Anmeldung über den Befehl: cardctl status 127

128 14. Hardware Um eine dieser Karten auszuwerfen, geben Sie als User root den Befehl: cardctl eject [Nummer des Slots, den Sie leeren wollen] Jetzt können Sie die Karte entweder entnehmen, oder wieder beim System anmelden mit dem Aufruf von: cardctl insert [Nummer des Slots, der angemeldet werden soll] Dieser Befehl ist normalerweise nicht notwendig. Sie können ihn allerdings dazu verwenden, Karten, die Sie mit eject abgemeldet aber nicht entnommen haben, wieder anzumelden Beispieleinrichtung: PCMCIA-Netzwerkkarten Die Installation von Netzwerkkarten unter SuSE Linux gestaltet sich denkbar einfach. Sie stecken dazu die Karte in den PCMCIA Slot und rufen YaST2 auf. Hier wählen Sie unter dem Modul Netzwerk/Basis das Icon Konfiguration der Netzwerkkarte aus und fügen eine neue Netzwerkkarte hinzu, für die Sie als Treibermodul einfach PCMCIA ankreuzen. Die restlichen netzwerkspezifischen Einstellungen treffen Sie je nach Wunsch mit Hilfe des grafischen Assistenten. Soweit die Theorie - in der Praxis gestaltet sich diese Prozedur etwas schwieriger, durch die zwei verschiedenen PCMCIA Manager und die gehobenen Ansprüche in Bezug auf Profile/Schemen und andere Spezialitäten. Netzwerkkarten mit dem External PCMCIA Manager Die Einstellungen, die für Ihre Netzwerkkarte gelten sollen, finden sie in der Datei /etc/pcmcia/network.opts. Hier sind verschiedene Teilbereiche definierbar, die jeweils auf verschiedene Arbeitsumgebungen passen. Besonders interessant dabei ist die erste Zeile jeder Konfiguration, in der im Falle der SuSE Vorgabe eingetragen steht: SuSE,*,*,*) allgemein: [Schemenname],[Slot],[Instanz],[MAC-Adresse]) Dabei handelt es sich um ein Muster, das immer dann überprüft wird, wenn eine PCMCIA Netzwerkkarte durch einlegen oder explizite Anmeldung dem System bekannt gemacht wird. Dieses Muster besteht aus vier Spalten, getrennt durch Kommata und abgeschlossen durch die Klammer. Die einzelnen Teile bezeichnen: Schemenname: Wird mit dem Namen des aktuellen Schemas verglichen Slot: Wird mit der Nummer des Slots verglichen, in den Sie die neue Karte eingelegt haben. Instanz: Keine Ahnung, was das ist. MAC-Adresse: Wird mit der Hardware-MAC-Adresse der Netzwerkkarte verglichen Unbelegte Teile werden durch * gekennzeichnet. Die Auswertung der Vergleiche erfolgt von links nach rechts. Ein passendes Muster führt zur Anwendung der folgeneden Konfiguration. So können Sie zum Beispiel die Netzwerkkarte, je nach dem in welchem Steckplatz sie eingelegt ist, mit unterschiedlichen IPs ausstatten. 128

129 14.8. APM - Advanced Power Management Die meisten Konfigurationsmöglichkeiten sind dabei ziemlich selbserklärend, unterstützt von den Kommentaren. Ungewohnt sind jedoch die Einträge start_fn() und stop_fn(). Mit Hilfe dieser beiden Funktionen können Sie spezielle Befehle beim Start- oder Stopvorgang der Netzwerkkarte einstellen. Das ist zum Beispiel dann nützlich, wenn Sie Ihren Laptop zwischen zwei Netzwerken hin- und hertragen, die durch DHCP-Server nur MAC-Adressen von eingetragenen Netzwerkkarten zulassen. Wenn Sie in beiden Netzen mit verschiedenen MAC-Adressen angemeldet sind ist es unheimlich praktisch, die MAC-Adresse Ihrer Netzwerkkarte durch das start_fn() Skript auf das jeweilige Netzwerk anzupassen. Netzwerkkarten mit dem Kernel PCMCIA Manager Diese Netzwerkkarten richten Sie genau so ein wie allgemein PCI Netzwerkkarten. Auf Schemen müssen Sie dabei ja nicht achten. Wie Sie PCI Netzwerkkarten einrichten, entnehmen Sie dem Kapitel darüber Compact Flash Adapter Compact Flash Karten haben dank Digitalkameras und MP3-Spielern einen Hohen Grad der Verbreitung erreicht. Unter Linux können diese Speichermedien über gängige Compact Flash PCMCIA Adapter Karten angesprochen werden. Die Einbindung in das System erfolgt denkbar einfach: Sobald der Adapter in das Kartenlaufwerk gesteckt wird, wird die Flashkarte erkannt und eingebunden. Der Benutzer kann Sie verwenden wie eine beliebige Partition der Festplatte, durch einen Mountpoint im Dateisystem. Angesprochen wird diese Partition durch den nächsten freien Buchstaben, bei einem IDE-System mit zwei IDE-Kanälen also als /dev/hde1. Durch einen Eintrag in der Datei /etc/fstab mit der Option user, kann der Systemadministrator die Benutzung solcher Karten für alle User ermöglichen. Soll die Karte entnommen werden, so ist sie zuerst durch einen umount Befehl freizugeben, und durch cardctl eject [x] auszuwerfen! APM - Advanced Power Management Die Powermanagement Funktionalitäten unter Linux sind eher als rudimentär zu betrachten, für ACPI besteht gar keine Unterstützung, und APM wird nur sehr einfach unterstützt: Suspend Mode Sie können Ihren Rechner mit dem Befehl apm -s in den Suspend-Modus versetzen Standby Mode Mit dem Befehl apm -S versetzen Sie den Rechner in den Standby-Modus. Auch diesmal wecken Sie ihn wieder durch Tastendruck Batterie-Füllstand Sie erfahren mit apm -m den derzeitigen Akkufüllstand IDE- und ATAPI Geräte Unter Linux steht ein Leistungsfähiges Tool zum Test und zur Konfiguration von IDE-Geräten zur verfügung. 129

130 14. Hardware Informationen bezüglich IDE Geräte Eine kompakte Information über Ihre Geräte können Sie über hdparm -i /dev/hd[x] abrufen. Sie erfahren dadurch, welche Standards das Gerät beherrscht und welches Modell in Ihrem Computer steckt Geschwindigkeitstests Mit hdparm können Sie sehr leicht die Performance Ihrer Geräte testen. Normale Lesetests starten Sie mit hdparm -t /dev/hd[x] und Tests unter Berücksichtigung des Caches mit hdparm -T /dev/hd[x] PIO-Mode und (U)DMA-Mode Für ältere Laufwerke ergibt sich manchmal die Notwendigkeit, die Geschwindigkeit, in der dieses angesprochen wird manuell herunterzusetzen. Dies kann mit dem Einstellen des PIO-Modes über hdparm -p [x] /dev/hd[x] erreicht werden. Weitere Einstellungen sind: Auch Ultra-DMA oder normaler DMA-Zugriff macht auf älteren Systemen Probleme, daher kann man diesen Modus explizit über hdparm -d[x] /dev/hd[x] ein- und abgeschaltet werden. Die Feineinstellungen für den (U)DMA-Zugriff können Sie mit dem Parameter -X?? treffen, dazu lesen Sie bitte die Man-Pages zu hdparm 32bit-I/O Support können Sie mit hdparm -c[x] /dev/hd[x] einstellen. Sie können Ihr System ernsthaft beschädigen, wenn Sie mit hdparm falsche Einstellungen treffen! Um diese Einstellungen permanent vorzunehmen müssen Sie entweder beim Kernel-Kompilieren auf die richtige Konfiguration achten, oder die Boot-Skripten anpassen, darauf wird jedoch in den entsprechenden Kapiteln genauer eingegangen Netzwerkkarten Hier sollte die Autonegotiation und die Möglichkeiten von ifconfig diskutiert werden manuelle Einrichtung von Netzwerkkarten Unter Linux wird die Netzwerkkarte mit Hilfe von ifconfig eingerichtet. SuSE geht allerdings einen eigenen Weg in diesem Bereich, um dem Benutzer das mühseelige Erstellen eigener Skripts abzunehmen. Im Nächsten Kapitel wird genauer darauf eingegangen, zum besseren Verständnis soll hier jedoch auch der konventionelle Weg geschildert werden: Mit ifconfig fragen Sie die konfigurierten Netzwerkinterfaces ab. Hier sollte auf jeden Fall ein Loopback lo eingetragen sein, weil sonst diverse Programme nicht richtig funktionieren werden. Wenn Sie den Rechner in ein Netzwerk integrieren wollen und die Netzwerkkarte korrekt in das System eingebunden wurde, sollte hier auch ein zweites Interface beispielsweise eth0 zu sehen sein. Alle anderen eventuell noch nicht eingerichteten Netzwerkinterfaces bringt ein Aufruf von ifconfig -a ans Licht. Angezeigt werden die grundsätzlichen Daten des jeweiligen Netzwerkinterfaces, wie die IP-Adresse, die Subnetzmaske und die MAC Adresse. Die eigentliche Funktion von ifconfig besteht in der Einrichtung des Netzwerkes. Normalerweise übernehmen die SuSE Skripte diese Aufgabe für Sie, aber z.b. auf Boot-Disketten/CDs werden Sie die manuelle Einrichtung der Netzwerkkarte selbst übernehmen müssen. Zudem bietet ifconfig auch tiefergreifende 130

131 Netzwerkkarten Einstellungsmöglichkeiten als die Masken einem zeigen. So können Sie zum Beispiel die MAC-Adresse Ihrer Netzwerkkarte temporär ändern. Vorgehensweise Voraussetzung für die Einrichtung des Netzwerks ist die korrekte Einbindung der Netzwerkkartentreiber in den Kernel, was im Kapitel Kernel näher erläutert ist. 1. Rufen Sie ifconfig auf 2. Nun sehen Sie, ob das gewünschte Interface bereits eingerichtet ist. Wenn es bereits läuft, dannn sollten Sie es herunterfahren, bevor Sie Einstellungen daran vornehmen: ifconfig eth0 down 3. Nun können Sie zum Beispiel die MAC-Adresse des Interfaces einstellen: ifconfig eth0 hw ether 99:99:99:99:99:99 4. Der nächste Schritt ist die Zuweisung einer IP-Adresse und einer Subnetzmaske, wie unter TCP/IP üblich: ifconfig eth netmask Nun kann das Interface wieder hochgefahren werden: ifconfig eth0 up Einrichtung der Netzwerkkarte über die Konfigurationsdateien SuSE Linux 8.1 verwaltet sämtliche Netzwerkkarten und deren Einstellungen im Verzeichnis /etc/sysconfig/network. Hier legen Sie für jede Ihrer Netzwerkkarten ein individuelles Konfigurationsskript in einer eigenen Datei an. Die Zuordnung von Konfigurationsdateien zu Netzwerkkarten erfolgt über einen Abgleich der Namen der Konfigurationsdateien mit den Kenndaten der Netzwerkkarten. Möglich sind hierbei Differenzierungen zwischen Bustypen (z.b. PCI, USB, PCMCIA,...), Interfaces (z.b. eth, wlan,...) oder MAC-Adressen. Wenn Sie sich für eine dieser Spezifizierungen entschieden haben, legen Sie die entsprechende ifcfg-xxxxxxxx Datei an, und füllen Sie sie mit den Daten Ihrer Netzwerkverbindung. Sie können das bereits vorliegende ifcfg-lo als Beispiel dafür nehmen, oder in der man-page von ifup nachsehen. Letzteres ist das SuSE eigene Skript, das als Wrapper für ifconfig gedacht ist. Nach einem Aufruf von rcnetwork restart sollten Sie Ihre Änderungen bewundern können WLAN Karten Damit Sie WLAN Karten unter Linux hernehmen können, müssen die Wireless Extensions auf Ihrem System installiert sein. So ausgestattet, können Sie mit dem Befehl iwconfig die Parameter der Wireless-Geräte in Ihrem System einrichten. Die dazugehörige man-page gibt Ihnen dazu genauer Auskunft. Um Ihre WLAN Karte automatisch beim Start des Systems initialisieren zu lassen, haben Sie die Möglichkeit, die entsprechenden Optionen entweder global in der Datei /etc/sysconfig/network/wireless zu setzen, oder für jedes Interface einzeln in der jeweiligen Konfigurationsdatei ifcfg-xxxxx, wie oben beschrieben. 131

132 14. Hardware ALSA - Advanced Linux Sound Architecture Soundkarten unter Linux zum laufen zu bringen ist gewöhnlich gar nicht schwer. Die meisten User benutzen die in der Standarddistribution mitgelieferten Module. In manchen Fällen gestaltet sich dies jedoch unmöglich Wenn Sie eine Soundkarte Ihr eigen nennen, die so neu ist, dass sie weder im Kernel, noch in den mitgelieferten Zusatzmodulen unterstützt wird Wenn Sie einen neuen Kernel installieren In beiden Fällen werden Sie nicht umhin kommen, die Treiber für Ihre Soundkarte manuell hinzuzufügen. Dabei hilft Ihnen das sogenannte ALSA-System. ALSA steht für Advanced Linux Sound Architecture. Sie können im Internet nachsehen, welche Soundkarten unter ALSA unterstützt werden. Eine Übersicht finden Sie unter Um ALSA auf Ihrem Linuxcomputer zu installieren müssen Sie 3 Pakete von der ALSA Homepage herunterladen. Achten Sie vor allem bei neueren Soundkarten darauf, auch die aktuellen Ausgaben der Pakete zu bekommen. Sie benötigen die Pakete: alsa-driver Um das Driver-Paket zu installieren, geben Sie nach dem Entpacken die Befehlskette./configure --with-cards=xxxxx --with sequencer=yes;make;make install ein, wobei Sie die Zeichenkette XXXXX mit dem richtigen Modulnamen wie auf der ALSA Webpage beschrieben ersetzen. alsa-lib installieren mit./configure;make;make install alsa-utils installieren mit./configure;make;make install Abschliessend müssen die Module noch bei jedem Rechnerstart mitgeladen werden alsaconf Grafikkarten Für die meisten Grafikkarten bieten Distributoren wie SuSE standardmässige XServer an. Mit diesen XServern lässt sich meist problemlos arbeiten. Sobald Sie allerdings daran denken, auf Ihrer Linux-Box ein 3D-Spiel auszuführen, kommen Sie schnell an die Grenzen dieser Lösung. Ähnlich wie unter Windows gibts es auch unter Linux die Möglichkeit, die Fähigkeiten einer 3D-Beschleunigerkarte voll auszureizen schliesslich existiert auch für Linux eine OpenGL Implementation. Die Einrichtung einer 3D-Karte erfordert meist jedoch ein wenig Handarbeit. Eine weit verbreitete Marke von Grafikkarten ist die GeForce Reihe von NVidida. Weil deren XServer aus lizenzrechtlichen Gründen nicht mit in der SuSE Standarddistribution verteilt werden darf, stellt diese Grafikkarte ein ideales Beispiel dar, wie man unter Linux neue XServer einbinden kann... Nvidia Um Grafikkarten des Herstellers NVidia korrekt einzubinden laden Sie sich zuerst von der NVidia-Homepage die aktuellen Treiber herunter. Diese werden ausgeliefert in zwei Paketen: 1. NVIDIA_kernel-version.tar.gz 132

133 Grafikkarten 2. NVIDIA_GLX-version.tar.gz Beide Pakete entpacken Sie wie gewohnt mit tar xfz filename.tar.gz. Nun liegen die zwei Pakete im Quellcode vor, und Sie müssen sie nur noch übersetzen. Das ist nätig, weil NVidia die Hardwarebeschleunigung mit Kernelunterstützung realisiert hat, und sie die nötigen Module passend zu Ihrem Kernel kompilieren müssen. Dies erledigen Sie durch: /# cd NVIDIA_kernel-version /NVIDIA_kernel-version# make install /NVIDIA_kernel-version# cd.. /# cd NVIDIA_GLX-version /NVIDIA_GLX-version# make install Jetzt sind beide Pakete übersetzt und einsatzbereit. Sie stellen Ihren aktuellen XServer auf den neuen um, indem Sie im Runlevel 3 die Konfigurationsdatei /etc/x11/xf86config abändern. Sie bessern innerhalb der Section Device aus: Driver "nvidia". Innerhalb der Section Module muss stehen: Load "glx" und auf keinen Fall Load "dri" oder Load "GLcore". Nun ist Ihre Karte fertig eingerichtet, und Sie können Ihrem Laster von nun an auch unter Linux fröhnen! Übungen Zusammenfassung Zusammengefasste Inhalte des vorangegangenen Kapitels. 133

134 14. Hardware 134

135 15. LVM - Logical Volume Manager Wer kennt ihn nicht, den Server, der kurz nach seiner Übernahme in das Produktionsumfeld über sich hinauswächst und sich plötzlich ganz anderen Anforderungen gegenübergestellt sieht, als zunächst geplant. Flexiblie Abhilfe bezüglich Dateisystemplatz schafft hier der Logical Volume Manager (LVM), der bei SuSE Linux bereits seit mehreren Distributionen zum Lieferumfang gehört und mittlerweile zuverlässig grafisch konfiguriert werden kann. Lernziele In diesem Kapitel lernen Sie, die Funktionsweise des Logical Volume Managers und dessen Einsatzgebiete kennen, RAID Systeme von LVM Implementierungen abzugrenzen, den Logical Volume Manager zu konfigurieren Grundlagen Bevor auf die Konfiguration und spezifische Kommandos des LVM eingegangen werden kann, müssen zunächst die Funktion und einige grundlegende Begriffe geklärt werden. Volume Management heißt, dass zunächst eine abstrakte Ebene über dem physikalischen Speicher erzeugt wird, deren Verwaltung übernimmt der sogenannte Logical Volume Manager übernimmt. Dadurch wird die hardwareseitige Speicherbereitstellung vollständig vom softwareseitigen Speichermanagement entkoppelt. Dies hat zur Folge, dass flexible Änderungen in beiden Ebenen möglich werden, ohne dass die jeweils andere davon beeinträchtigt wird Funktion und Begriffe ohne LVM: wie gewohnt gibt es physikalische Laufwerke mit Partitionen. Auf diese wird entweder über Dateisysteme oder ohne Benutzung des Kernelcaches und Dateisystemtreiber zugegriffen (sog. raw). mit LVM: zwischen die physikalischen Laufwerke, auch Physical Volumes genannt, und den Partitionen wird eine abstrakte Schicht mit sogenannten Volume Gruppen eingezogen. Eine solche besteht also aus einer Gruppierung von nahezu beliebigen physikalischen Speicher. Aus der Sicht des Systems handelt es sich hierbei um ein physikalisches Laufwerk, obwohl es in der Regel aus mehreren zusammen gruppiert ist. Die Volume Group wird jetzt in Logical Volumes unterteilt, wobei jedes einzelne als Partition betrachtet und behandelt werden kann. 135

136 15. LVM - Logical Volume Manager Einsatzgebiete Flexibilität: Im laufenden Betrieb können Logical Volumes ohne weiteres vergrößert werden. Bei entsprechender Unterstützung durch das Dateisystem kann der neue Speicherplatz sofort ohne Betriebsunterbrechung benutzt werden. Anwendungen und User bemerken diesen Vorgang nicht. Da die Verwaltungsinformationen des LVM auf den einzelnen physikalischen Devices abgelegt sind, können sich die eigentlichen Devicenamen z.b. durch den Ein- / Umbau weiterer Platten ändern, ohne dass hieraus Probleme entstehen. HA-Systeme: Die Verwaltung einer Volume Group und der Logical Volumes kann geschehen, während diese vom System genutzt werden. So ist es beispielsweise durch die vollständige Trennung von logischem und physikalischen Speicher möglich, während des Lese- und Schreibzugriffs sämtliche physikalische Speichermedien zu tauschen. Darüber hinaus ist es denkbar, im laufenden Betrieb den logischen Speicher an einen anderen physikalischen Ort zu verschieben. Snapshots: Ein Snapshot Device ist ein Alias für ein bestehendes Logical Volume und stellt ein Abbild (nur Lesezugriff) desselben zum Zeitpunkt des Snapshots dar. Diese Funktionalität ist in der LVM Abstraktionsschicht implementiert und damit softwareunabhängig. Dies ermöglicht Sicherungsläufe, die den normalen Betrieb des Systems kaum beeinträchtigen. Concatenation und Striping: Wie bereits weiter oben beschrieben, besteht mit LVM die Möglichkeit mehrere Speichersubsysteme zu einer Volume Group zusammenzufassen. Die darauf angelegten Logical Volumes können jetzt in zwei Art und Weisen angelegt werden. Zum einen verkettet, also linear hintereinander, oder abschnittsweise verteilt über die Physical Volumes des Speicherpools. Mit letzterem wird zudem der Datenfluss beschleunigt, da die physikalischen Devices abwechselnd in Anspruch genommen werden. Shared Storage Cluster Option: Die Verwaltungsinformationen des LVM sind auf den physikalischen Geräten gespeichert. Beim Booten werden alle dem System bekannten Physical Volumes initialisiert, eventuelle LVM Konfigurationen ausgelesen und dementsprechend ins System integriert. Daher muss LVM in einem gemeinsamen Speichercluster nur einmal aufgesetzt werden. Allerdings fehlt noch ein völliges Clusterbewusstsein, weil die Konfigurationsinformationen nicht ohne Neustart an die Knoten verteilt werden Verwaltung und Beschränkungen Jedes Physical Volume (PV) ist in Physical Extents (PE) von gleicher Größe unterteilt. Diese ist zwar grundsätzlich variierbar innerhalb einer Volume Group jedoch gleich. Jede PE bekommt eine ID zugewiesen. Ein PE ist die kleinste Einheit, die vom LVM auf der physikalischen Ebene adressiert werden kann. Jedes Logical Volume (LV) ist in Logical Extents (LE) aufgeteilt, die die gleiche Größe wie die PEs haben. Jedem LE wird über eine Tabelle genau ein PE zugewiesen. Dieser Vorgang heißt Mapping und bringt einen gewissen Zeitaufwand mit, der bei jedem Lese- und Schreibzugriff entsteht. Allerdings ist dieser im Vergleich zur Reaktionszeit der Festplatte vernachlässigbar klein, da die wesentlichen Informationen im Cache vorgehalten werden. Die bereits erwähnten Verwaltungsinformationen werden auf jedem PV im sogenannten VGDA abgelegt. Hier wird im wesentlichen neben der Mapping Tabelle, die Zugehörigkeit des PV zur Volume Group und die Größe eines PE gespeichert. 136

137 15.2. Konfiguration Abgrenzung von RAID Systemen Grundsätzlich ist das Logical Volume Management kein Ersatz für RAID. RAID Systeme sind sehr hardwarenah implementiert und demzufolge von einem bestimmten Controller / Speichersubsystem abhängig. Je nach Konfiguration soll es vor einem Ausfall der Platten schützen oder den Datendurchsatz erhöhen. Vorteile des LVM sind bereits weiter oben genannt worden und ergeben sich vor allem aus den Erklärungen zur HA und der aus LVM resultierenden Flexibilität, was das Speichermanagement anbelangt. Ein konkretes Beispiel soll noch einmal klar LVM von RAID abgrenzen. Angenommen ein RAID Array ist bereits mit der vollen Anzahl an Platten bestückt. Ohne die Trennung von logischem und physikalischem Speicher ist es in diesem Fall nicht mehr möglich, den Plattenplatz für den Benutzer / die Anwendungen transparent zu erweitern. Das Problem ergibt sich daraus, dass die in einem RAID Array zusammengefassten Platten an einem Controller hängen müssen. Mit LVM spielt die physikalische Anordnung der Laufwerke hingegen keine Rolle. Zudem müsste der Rechner bei einer Änderung der SCSI Controller Konfiguration heruntergefahren werden. Mit LVM kann der Betrieb ununterbrochen fortgesetzt werden. Es sei noch einmal betont: LVM bietet nicht unbedingt Schutz gegen Datenverlust nach einem Plattenausfall. Zu Bedenken ist die Implementierung des LVM in Software, die zwar systemnah arbeitet aber eben doch von der Hardwareebene abstrahiert ist Konfiguration Die Konfiguration des LVM kann sowohl mit einzelnen Kommandos in der Shell, als auch mit YaST2 vorgenommen werden. Im folgenden soll die grundsätzliche Vorgehensweise erläutert werden. Eine detaillierte Dokumentation finden Sie im LVM HowTo oder im von SuSE veröffentlichten Whitepaper Vorgehensweise Jede LVM Konfiguration setzt sich aus drei Teilschritten zusammen (eine ordentliche Konzeption sollte dem vorausgegangen sein). Initialisierung der Physical Volumes, Definition der Volume Group, Einrichtung der Logical Volumes Physical Volumes Bei Physical Volumes kann es sich um Partitionen (vom Typ 8E), um völlig unpartitionierten Plattenplatz und um RAID-Systeme handeln. Beim Anlegen des PV wird eine einzigartige LVM ID generiert und zusammen mit anderen Verwaltungsinformationen in die ersten Sektoren der Partition / Platte geschrieben. Später wird diese stets ausgelesen und somit beispielsweise das Mapping zwischen LEs und PVs umgesetzt. Beim Verwenden von ganzen Platten ist es unumgänglich, dass diese keine Partitionstabelle aufweisen und nicht nur einfach eine leere. Mit folgendem Befehl kann dies bewerkstelligt werden. Vorsicht! dd if=/dev/zero of=/dev/[device name of disk] bs=1k count=1 137

138 15. LVM - Logical Volume Manager Volume Group Jedes PV wird nach dem Anlegen einer Volume Group zugeordnet. Diese Konfiguration wird ebenfalls in den LVM Verwaltungsinformationen festgehalten Logical Volume Das Anlegen der Logical Volumes ist der letzte Schritt bezüglich der LVM Konfiguration und entspricht dem bereits bekannten Anlegen von Partitionen. Später erfolgt der Zugriff auf diese mit Hilfe von Device Dateien, so wie Sie es bisher aus dem Umgang mit herkömmlichen Geräten gewöhnt waren Dateisysteme Damit sind die Platten jedoch noch nicht bzw. nur raw benutzbar. Letztendlich müssen auf den LVs noch Dateisysteme angelegt und Mountpoints im Root-Dateisystem vorgesehen werden Administration Im folgenden werden einige Befehle aufgezeigt, die der administrativen Verwaltung dienen. Diese stellen bei weitem nicht alle Möglichkeiten eines Logical Volume Managers dar. Weitere Informationen finden sich im Whitepaper von SuSE. Im Beispiel heißt die Volume Group vg system und das Logical Volume lv home. Es wird davon ausgegangen, dass eine IDE Platte hdb in das System eingebaut und vom BIOS korrekt erkannt wird. Erweitern einer Volume Group vgextend /dev/vg_system /dev/hdb Vergrößern eines Logical Volumes lvextend -L +1000M /dev/vg_system/lv_home resize_reiserfs /dev/vg_system/lv_home Verkleinern einer Partition umount /home reiserfsck -check /dev/vg_system/lv_home resize_reiserfs -s -1000M /dev/vg_system/lv_home lvreduce -L -1000M /dev/vg_system/lv_home mount /home Verkleinern einer Volume Group vgreduce /dev/vg_system /dev/hdb 138

139 15.3. Administration Entfernen eines Logical Volumes umount /usr/ora_vzn lvscan lvchange -a n /dev/vg_oracle/lv_ora_vzn lvscan lvremove /dev/vg_oracle/lv_ora_vzn Entfernen einer Volume Group vgdisplay vgchange -a n vg_oracle vgdisplay vgremove vg_oracle Anlegen einer Volume Group vgcreate -s 32M -v vg_oracle /dev/sdb1 lvcreate -n lv_ora_vzn -L 200G -v vg_oracle lvdisplay /dev/vg_oracle/lv_ora_vzn Anlegen eines Dateisystems mkreiserfs /dev/vg_oracle/lv_ora_vzn Übungen Zusammenfassung Zusammengefasste Inhalte des vorangegangenen Kapitels. 139

140 15. LVM - Logical Volume Manager 140

141 16. Administration Dieses etwas knapp geratene Kapitel zur Administration umfasst nicht viel mehr als die Benutzer- und Gruppenverwaltung. Kein sehr spannendes Thema, aber doch ein wesentlicher Bestandteil des Gesamtsystems ohne dem ein vernünftiger Betrieb eines Multiusersystems nicht möglich wäre. Lernziele In diesem Kapitel lernen Sie, neue Benutzer und Gruppen anzulegen, bestehende Beutzer- und Gruppeneinstellungen zu ändern, bereits eingetragene Benutzer und Gruppen zu löschen, due zugehörigen Systemdateien kennen Systemverwalter Die Administration des Systems umfasst in erster Linie die Benutzer- und Gruppenverwaltung. Solcherlei Eingriffe in das System bedürfen bestimmter Rechte, die nur der Benutzer root hat. Dieser darf im Allgemeinen alles. Deswegen ist es notwendig, dass insbesondere, wenn man als root angemeldet ist, besondere Umsicht walten lässt. Man kann sich sowohl gleich als root einloggen, als auch mit dem Befehl su nachträglich root Rechte erhalten. Außerdem ist es mit su [Benutzername] möglich, sich als anderer Benutzer am System anzumelden. Ergänzt man beim Kommandoaufruf ein -, so werden auch alle Umgebungsvariablen dem neuen Account angepasst. Die derzeitigen Rechte sind an der Symbolik des Promptes zu erkennen. Ein # steht hier für die privilegierte shell mit root Rechten. Für größere Arbeiten am System ist es sicherlich sinnvoll, sich gleich als root am System anzumelden. Eine Sicherheitslücke würde sich hingegen bei andauernder Benutzung des root Accounts auftun, die leicht vermieden werden kann, solange man diszipliniert am System arbeitet Login- und Systemsicherheit Viele Einstellungen, die den Login und die Systemsicherheit betreffen, werden in der Datei /etc/login.defs konfiguriert. Diese ist jedoch so gut kommentiert, das weitere Erläuterungen kaum notwendig sind Name Service Cache Daemon Der NSCD ist ein Daemonprozess, der einen Cache für viele der üblichen Namensanfragen bereithält. Die zentrale Konfigurationsdatei findet sich unter /etc/nscd.conf und trifft vorallem Einstellungen bezüglich der gepufferten Dateien und deren Vorhaltezeit im Cache. 141

142 16. Administration Wichtige Systemdateien Das System verwaltet die Informationen über die einzelnen Benutzer bzw. Gruppen in den Konfigurationsdateien /etc/passwd, /etc/shadow und /etc/group. Es ist möglich, diese Dateien mit einem Editor selbst zu editieren, da es sich hierbei um reine Textdateien handelt. Dabei muss man natürlich mit einer gewissen Vorsicht umgehen, da Linux ein bestimmtes Format der angesprochenen Dateien erwartet. Sollte dieser Aufbau nicht korrekt sein, können die Dateien nur noch teilweise oder gar nicht mehr ausgewertet werden. So sollte beispielsweise der Zeilenumbruch in der letzten Zeile nicht vergessen werden. Eine fehleranfällige manuelle Bearbeitung der zugrunde liegenden Dateien ist vor dem Hintergrund der zur Verfügung stehenden durchaus komfortablen Tools also nicht zu empfehlen Konfigurationstools Unter Linux haben Sie für ein- und dieselbe Sache sehr oft nicht nur ein Konfigurationstool zur Hand. Außerdem könnten Sie sämtliche Einstellungen auch per Hand vornehmen. Deshalb zunächst ein paar Regeln, die Ihnen das Leben bei der Konfiguration erleichtern. Konfigurationen, die mit einem vertrauenswürdigen Tool durchgeführt werden können, sollten nicht von Hand in die entsprechenden Dateien eingetragen werden. Ist ein Teilaspekt des Systems mit einem bestimmten Werkzeug konfiguriert worden, sollten diese Einstellungen wieder mit demselben Tool verändert werden. Dokumentieren Sie umfangreiche Änderungen am System mit, damit Sie bei einer späteren Neuinstallation nicht wieder vor demselben Problem stehen. Bevor Sie Änderungen direkt in einer der zahlreichen Konfigurationsdateien durchführen, sichern Sie das Original. Führen Sie danach den Befehl SuSEconfig aus, damit alle abhängigen Dateien mit den neuen Einstellungen versorgt werden. Gehen Sie erst von einer korrekten Konfiguration aus, wenn Sie das System komplett durchgestartet haben YaST2 Kontrollzentrum YaST2 steht grundsätzlich sowohl textbasiert als auch grafisch zur Verfügung. Beide Varianten nehmen sich letztendlich in der Funktionalität nichts. Die Konfigurationsmöglichkeiten, die das YaST2 Kontrollzentrum und seine Module bieten, werden von Version zu Version ausgefeilter. Dennoch kann YaST2 in seiner heutigen Form YaST1 noch nicht vollständig ersetzen, da noch wenige Funktionen fehlen. Die Dialoggestaltung ist derweil bereits an vielen Stellen so intuitiv, dass der Anwender in der Regel ohne größere Schwierigkeiten mit diesem Werkzeug zurecht kommt Sax2 Mit diesen beiden Tools wird der X Server eingerichtet, wenn dies nicht bereits während der Installation geschehen ist. Dabei greifen beide Programme auf eine umfangreiche Hardwaredatenbank zu und versuchen so, die installierten Komponenten korrekt zu erkennen, was in der Regel problemlos klappt. Sollten einzelne Einstellungen nicht richtig vorgenommen worden sein, so können Sie hier manuell nachsteuern. Der letzte und wichtigste Schritt ist der Text des X Servers. Nur wenn dieser korrekt gestartet werden kann und keine 142

143 16.4. Konfigurationstools Darstellungsfehler aufweist, können Sie danach das X Window System starten. Sax2 ist dem älteren Sax in der Regel vorzuziehen. Führen Sie jedoch eine einmal begonnene Konfiguration in jedem Fall zu Ende, da sonst falsche Einträge in die Konfigurationsdateien geschrieben werden KDE Kontrollzentrum Das KDE Kontrollzentrum ähnelt der Systemsteuerung unter Windows. Die hier angebotenen Möglichkeiten sind sehr umfangreich und ermöglichen es dem einzelnen Anwender, seinen eigenen Desktop bis zur Unkenntlichkeit zu verstellen. Mit einigen Optionen kann man den Linux Desktop auch dem Windows-System angleichen. Andere Einstellmöglichkeiten sind das Verhalten der Task-Leiste, der Bildschirmhintergrund, die virtuellen Desktops, die Eingabegeräte Maus und Tastatur, der Bildschirmschoner uvm Webmin All diese Konfigurationsmittel haben entschiedene Nachteile: Es gestaltet sich sehr schwer, diese Tools sinnvoll zu verwenden, wenn man nicht direkt vor dem Rechner sitzt, den man konfigurieren will. Diese Lücke schliesst Webmin, denn man kann es von jedem Computer aus, der übers Netzwerk angeschlossen ist, mittels eines Browsers ansprechen. Der Funktionsumfang der meisten Tools ist sehr stark eingeschränkt. Webmin besitzt einen großen Umfang an mitgelieferten Oberflächen. Von MySQL und Samba über NIS bis ProFTP - alle Dienste werden unterstützt, auch zusätzliche Plugins für nicht direkt unterstützte Dienste (z.b. Tomcat) sind frei erhältlich. Die Bedienung verläuft komplett grafisch im Gegensatz zu den meisten anderen Einrichtungstools (z.b. YaST) Webmin nimmt alle Verwaltungsmöglichkeiten unter einen Hut, und macht somit doppelte Benutzerverwaltungen und Passwortlisten unnötig. Zusatztools wie zum Beispiel myadmin oder SWAT werden dadurch überflüssig. Installation Webmin ist nicht Bestandteil der SuSE Distribution, trotzdem gestaltet sich die Installation von Webmin denkbar einfach. Voraussetzung ist, dass Sie die das aktuelle.tar.gz Paket von herunterladen. Sie müssen nur die folgenden Schritte als Root ausführen: 1. Entpacken Sie das Archiv mit tar xzf webmin-0.9x.tar.gz. 2. Rufen Sie./setup.sh im Verzeichnis webmin-0.9x/ auf. 3. Beantworten Sie die Fragen, die das Skript an Sie stellt nach Ihren Wünschen. Benutzung Sie können nun Webmin von jedem Browser aus aufrufen indem Sie die URL aufrufen, wobei Rechnername der Name des Rechners ist, auf dem Sie Webmin installiert haben. Daraufhin werden Sie dazu aufgeforert, den bei der Installation vergebenen Usernamen und Passwort einzugeben. Nun können Sie Webmin zum Einrichten des Rechners verwenden. 143

144 16. Administration Benutzerverwaltung Um am System arbeiten zu können, benötigt ein Anwender einen Benutzernamen und ein Passwort. Diese Kennung und ein bestimmter dem Benutzer zugeordneter Bereich für die Datenablage wird in der Regel durch den Administrator eingerichtet. Wie bereits angesprochen werden die Informationen von Linux in Textdateien gespeichert, in die im folgenden ein tieferer Einblick gewonnen werden soll. Die Passwörter aller Benutzer werden in der Datei /etc/passwd gespeichert. Diese Datei wird beim Einloggen eines Benutzers vom System gelesen und ausgewertet. Sie beinhaltet durch einen Doppelpunkt voneinander getrennte Felder, wie in Tabelle 16.1 auf Seite 144 beschrieben. Feldname Benutzername Passwort BenutzerID GruppenID Kommentar Home-Verzeichnis Shell Funktion Der Name eines Benutzers wird vom Administrator festgelegt, der sich jedoch an bestimmte Namenskonventionen halten muss. Die Mindeslänge beträgt zwei Zeichen, die Höchstlänge acht Zeichen. Er darf keinen Doppelpunkt und keine Zeilenschaltung enthalten. In früheren Versionen stand an dieser Stelle einmal das verschlüsselte Passwort. Dieses ist jedoch aus Sicherheitsgründen in die Datei /etc/shadow verlagert worden. Hier steht eine, innerhalb des lokalen Rechners, eindeutige numerische Benutzernummer (UID für UserID), da das System in der Regel nicht mit Namen sondern mit Nummern arbeitet. Diese muss eine nicht negative ganze Zahl sein, wobei die Null an root vergeben ist, die Nummern eins bis 99 für systemseitig angelegte Benutzer reserviert sind und die Nummern über 500 von Linux für normale Benutzer vorgesehen sind. Es ist zwar möglich mehreren Benutzernamen eine UID zuzuordnen, für das System handelt es sich in diesem Fall um einen Benutzer. Die Zahl kennzeichnet die primäre Zugehörigkeit des Benutzers zu einer Gruppe. Auch hier wird eine ganze positive Zahl vergeben. Benutzer mit derselben GID, gehören der gleichen Gruppe mit denselben Rechten an. Was sich genau hinter einer bestimmten GID verbirgt, wird in der Datei /etc/group beschrieben. Dieses Feld enthält in der Regel eine genauere Beschreibung des Benutzers, beispielsweise den vollen Namen. Die Angabe des Homeverzeichnisses, das zugleich das Arbeitsverzeichnis des Benutzers darstellt, besteht aus einer absoluten Pfadangabe. Nach dem Anmelden befindet sich der Benutzer innerhalb dieses Verzeichnisses, wobei es üblich ist, für jeden Benutzer einen gesonderten Ordner unterhalb von /home zu erstellen, in dem dieser alle Rechte besitzt. An dieser Stelle wird festgelegt, mit welchem Kommandointerpreter der Benutzer nach der Anmeldung konfrontiert wird. Es ist auch möglich an dieser Stelle den Pfad eines ausführbaren Programms anzugeben, welches dann automatisch gestartet wird sobald sich der Benutzer anmeldet. Tabelle 16.1.: Einstellungen in der /etc/passwd 144

145 16.5. Benutzerverwaltung Wie bereits angesprochen werden die Passwörter der Benutzer in der Datei /etc/shadow verwaltet. Auch diese Datei basiert auf Text und enthält durch Doppelpunkt getrennte Felder. Sie ist nicht für den Benutzer lesbar, sondern allein der Administrator hat sämtliche Rechte auf dieser Datei. Der Inhalt ist in Tabelle 16.2 auf Seite 145 beschrieben. Feldname Funktion Benutzername Dieser Eintrag entspricht dem in der Datei /etc/passwd. Passwort Dieses Feld beinhaltet das verschlüsselte Passwort des Benutzers. Änderungsdatum Hier steht die Anzahl der Tage, die seit dem und dem Datum, an dem das Passwort zuletzt geändert wurde, vergangen sind. Minimale Anzahl von Tagen, an denen das Passwort gültig ist. Maximale Anzahl von Tagen, an denen das Passwort gültig ist. Warntage Inaktivsetzen des Passwortes Ablaufdatum Erst nach Ablauf kann ein Benutzer das Passwort ändern. Dies verhindert, dass ein geändertes Passwort vom Benutzer gleich wieder zurückgesetzt wird. Nach Ablauf dieser Anzahl Tage muss der Benutzer sein Passwort ändern. Dieses Feld enthält die Anzahl der Tage, an denen der Benutzer eine Warnung erhält, dass er sein fast abgelaufenes Passwort bald ändern muss. Die Meldung erscheint in der Regel beim Abmelden. Die Anzahl der Tage, nach deren Ablauf der Account automatisch gespeert wird, wenn sich der Benutzer nicht angemeldet hat, wird in diesem Feld festgelegt. Dieses Feld enthält die Anzahl der Tage, nach denen die Gültigkeit des Accounts abläuft. Das Datum wird durch die Anzahl der seit dem vergangenen Tage dargestellt. Tabelle 16.2.: Felder in der /etc/shadow Befehle zur Benutzerverwaltung Wie bereits angesprochen, sollte aufgrund der hohen Fehleranfälligkeit die manuelle Bearbeitung der Konfigurationsdateien vermieden werden, solange entsprechend mächtige Befehle zur Verfügung stehen. Für das Anlegen eines neuen Benutzers greift das System auf hinterlegte Standardeinstellungen, die mit dem Befehl useradd -D angezeigt werden können, zurück, sofern nichts anderes angegeben wird. Diese Einstellungen werden der Datei /etc/default/useradd entnommen. Die gelisteten Einträge haben folgende Bedeutung. Neue Benutzer werden per Standardeinstellung der Gruppe mit der GID 100 zugeordnet. Normalerweise handelt es sich hierbei um die Gruppe Users. Die Homedirectories neuer Benutzer werden unter /home angelegt und erhalten als Verzeichnisnamen den Namen des Benutzers. Der Account wird nicht auf inaktiv gesetzt, sollte sich der Benutzer eine längerer Zeit nicht anmelden. Zudem wird der Account nie ablaufen. Neue Benutzer erhalten die bash als Kommandointerpreter nach der Anmeldung zugeteilt. Beim Anlegen der Homedirectories werden die Vorlagedateien aus /etc/skel kopiert. Zum Ändern der Voreinstellungen wird ebenfalls der Befehl useradd -D, durch weitere 145

146 16. Administration Optionen ergänzt, verwendet (z.b. useradd -D [-g GID] [-b Verzeichnis] [-s Shell] [-f Tage] [-e mm/dd/y Wann immer mit dem Kommando useradd Voreinstellungen angesehen oder verändert werden sollen, wird neben weiteren Optionen immer die Option -D für default benötigt. Ohne diesen Zusatz wird useradd benutzt, um weitere Benutzer anzulegen. Dabei lautet die Syntax: useradd [-m [-k Verzeichnis]] [-u UID] [-o] [-s shell] [-g GID] [-G GID,GID,...] [-d Verzeichnis] [-e Datum] [-f Tage] [-c Kommentar ] Benutzername Die Optionen haben dabei die Bedeutung aus Tabelle 16.3 auf Seite 146. Option Bedeutung -m Das Homedirectory des Benutzers wird automatisch angelegt. Die Vorlagedateien werden dabei aus dem Standardvorlageverzeichnis kopiert. -m -k Verzeichnis Das Homedirectory des Benutzers wird automatisch angelegt. Die Vorlagedateien werden dabei aus dem angegebenen Verzeichnis kopiert. -u UID Der eindeutige numerische Wert der BenutzerID. Standardmäßig würde der erste freie Wert größer als 99, also nach den Systemkennungen, verwendet. -u UID -o Der numerische Wert der BenutzerID, allerdings darf die Nummer bereits vorhanden sein. -s Shell Der Name der Shell oder des Startprogramms des Benutzers. Fehlt diese Option wird die Standardshell übernommen. -g GID Gibt die primäre Gruppe zu der ein Benutzer gehört an. Es kann sowohl der numerische Wert als auch der Gruppename angegeben werden. Allerdings muss diese Gruppe bereits vorhanden sein. -G GID,GID,... Eine Liste weiterer Gruppen, zu denen der Benutzer gehören kann. Die Listeneinträge werden nur durch Kommata getrennt aneinandergereiht. Es gelten dieselben Bedingungen wie bei der primären Gruppe. -d Verzeichnis Das automatisch erstellte Homeverzeichnis des Benutzers, wenn dafür nicht der in den Standardvorgaben enthaltene Pfad verwendet werden soll. -e mm/dd/yy Das Datum, ab welchem sich der Benutzer nicht mehr anmelden darf. -f Tage Die Anzahl an Tagen, nach denen der Account gesperrt wird, wenn sich der Benutzer nicht mehr angemeldet hat. -c Kommentar Kommentar zum Benutzereintrag, in der Regel eine nähere Beschreibung des Benutzers. Tabelle 16.3.: Parameter von useradd Sollen die Benutzereinstellungen geändert werden, steht das Kommando usermod dafür bereit. Dieses 146

147 16.5. Benutzerverwaltung Feldname Gruppenname Gruppenpasswort GruppenID Benutzerliste Funktion Der Name einer Gruppe wird vom Administrator festgelegt. Er darf die Höchstlänge von acht Zeichen nicht überschreiten, keinen Doppelpunkt und auch keine Zeilenschaltung enthalten. Das verschlüsselte Passwort der Gruppe ist an dieser Stelle abgelegt. Die Verwendung dieses Passwortmechanismus ist jedoch äußerst unüblich. In diesem Feld wird dem Gruppennamen eine eindeutige numerische Gruppennummer (GID für GroupID) zugeordnet, da das System nicht mit Namen sondern mit Nummern arbeitet. Nummern zwischen null und 99 sind für Systemgruppen reserviert. In der Regel werden also Nummern zwischen 100 und 1000 aufwärts für Gruppen verwendet. Hier werden die zur Gruppe gehörenden Benutzer eingetragen. Die Zugehörigkeit eines Benutzer zur primären Gruppe wurde bereits in der Datei /etc/passwd hinterlegt, während weitere Gruppenzugehörigkeiten für eventuelle sekundär Gruppen hier festgehalten sind. Tabelle 16.4.: /etc/group aufgeschlüsselt weist dieselben Optionen wie das eben beschriebene useradd auf. Das Kommando userdel löscht einen nicht mehr benötigten Benutzer. Die Syntax lautet userdel -r Benutzername. Die Option -r bewirkt, dass auch das Homeverzeichnis des angegebenen Benutzers gelöscht wird. Hierbei ist Vorsicht geboten, da sich alle persönlichen Daten hierin befinden und diese nach dem Löschen unwiderruflich verloren sind Gruppenverwaltung Wenn Benutzer zu Gruppen zusammengefasst werden, muss die GID der Benutzer übereinstimmen und es muss ein entsprechender Eintrag in der Datei /etc/group vorhanden sein, da sonst die Gruppe nicht vom System erkannt wird. In jeder Zeile dieser Datei steht wiederum genau eine Gruppe, wobei jede Zeile vier durch Doppelpunkt voneinander getrennte Felder enthält, wie in Tabelle 16.4 auf Seite 147 erläutert Befehle zur Gruppenverwaltung Ähnlich wie bereits angesprochen, werden auch die Gruppen verwaltet. Das Kommando, um eine neue Gruppe hinzuzufügen, lautet groupadd. Die Syntax groupadd [-g GID [-o]] Gruppenname. Die Parameter sind in Tabelle 16.5 auf Seite 148. Auch Gruppen können nachträglich geändert werden. Der entsprechende Befehl lautet groupmod und umfasst abgesehen von -n dieselben Optionen wie das Kommando groupadd. Mit -n NeuerName kann der Gruppenname verändert werden. groupmod [-g GID [-o]] [-n NeuerName] Gruppenname Mit dem Kommando groupdel können Gruppen wieder gelöscht werden. Die Syntax ist sehr einfach und sieht folgendermaßen aus. groupdel Gruppenname. Zu beachten ist allerdings, dass nur Gruppen gelöscht 147

148 16. Administration Option Bedeutung keine Option Das System verwendet als GID die größte bereits vorhandene GID und addiert eins dazu. Nicht zu vergessen sind hierbei auch wieder die für Systemgruppen reservierten Nummern von 0 bis 99. -g GID Der neuen Gruppe wird die angegebene numerische GID zugewiesen. -g GID -e Die verwendete GID ist bereits vorhanden und wird mehrfach belegt. Tabelle 16.5.: groupadd Parameter Feldname Name Status mm/dd/yy Min Max Warn Inactive Informationsgehalt Benutzername L steht für locked (gespeertes Passwort) P steht für password (gültiges Passwort) NP steht für no password (kein Passwort gesetzt) Datum, an dem das Passwort zuletzt geändert wurde Mindestanzahl Tage zwischen Passwortänderungen Höchstanzahl Tage zwischen zwei Passwortänderungen Anzahl Tage vor Passwortablauf, an denen der Benutzer eine entsprechende Warnmeldung erhält Anzahl der Tage, nach denen das Benutzerkonto abläuft, wenn der Benutzer sich nicht angemeldet hat Tabelle 16.6.: passwd Ausgabe werden können, die nicht primäre Gruppe eines Benutzers sind. In diesem Fall müssten erst allen Mitgliedern eine neue primäre Gruppe zugewiesen werden. Diese Regelung ist eine notwendige Einschränkung um sicherzustellen, dass jeder Benuter Mitglied einer primären Gruppe ist Passwortverwaltung und -alterung Einem Passwort ist stets eine besondere Bedeutung beizumessen, da es maßgeblich für die Sicherheit im System ist. Der Passwortstatus eines Benutzers kann mit dem Befehl passwd abgefragt werden. Die Syntax lautet passwd -S Benutzername. Die Ausgabe ist wie in Tabelle 16.6 auf Seite 148 zu interpretieren. Nach dem Anlegen einen neuen Benutzers mit den weiter oben beschriebenen Befehlen ist dessen Passwortstatus Locked, d.h. der Benutzer kann sich nicht anmelden, bis ihm ein Passwort gesetzt wurde. Auch zum ändern eines Passwortes oder zum Ändern von Passwortmerkmalen ist das Kommando passwd zuständig, allerdings um weitere Optionen ergänzt. Die Syntax lautet passwd [-f Kommentar] [-s Shell] [-g GID] [-x max] [-n min] [-w warn] -l -u -d Die Optionen haben die Bedeutung wie in Tabelle 16.7 auf Seite 149. Das Passwort muss aus Kontrollgründen zweimal eingegeben werden. Mit dem Kommando passwd kann root auch ein bestehendes Passwort ändern, auslesen kann er es hingegen nicht. Vorsicht ist bei der Löschung eines Passworts walten zu lassen, weil sich jetzt jeder ohne Passwortabfrage am System anmelden kann. 148

149 16.6. Drucker - Installation und Verwaltung Option Bedeutung -f Kommentar Fügt einen Kommentar in die /etc/passwd ein. -s Shell Ändert die Anmelde-Shell des Benutzers -g GID Weist einer Gruppe ein Passwort zu. -x max Beschreibt das Feld Höchstanzahl Tage -n min Beschreibt das Feld Mindestanzahl Tage -w warn Setzt die Einstellung für das Feld Anzahl Tage für Warnmeldung -l Setzt das Passwort auf locked (gesperrt) -u setzt den Passworteintrag zurück auf den Wert, den es vor der Sperre hatte -d Setzt den Passworteintrag auf leer Tabelle 16.7.: passwd Parameter Auch wenn die Befehle für die Benutzer- und Gruppenverwaltung nicht schwer zu erlernen sind, so ist der Umgang mit ihnen nicht gerade komfortabel und zumindest anfänglich eher fehleranfällig. Deswegen werden in aller Regel die Benutzer mit yast oder über ein grafisches Tool namens KDE Benutzermanager, der mittlerweile auch zuverlässig arbeitet. Bei YaST ist anzumerken, dass sich der entsprechende Dialog unter Administration des Systems/Benutzerund Gruppenverwaltung verbirgt. Die Bedienung des grafischen Tools kuser ist hingegen so intuitiv, dass keine näheren Erklärungen notwendig sind. Vielleicht nur soviel, dass es weitaus mehr Optionen der Befehle umsetzt als das klassische yast. Übungen In welcher Datei sind die Standardeinstellungen für das Anlegen eines Benutzers abgelegt? Wie kann man sich diese anzeigen lassen? Mit welchen Kommandos können Benutzer bzw. Gruppen angelegt und deren Passwörter und deren Einstellungen bearbeitet werden? Welche Dateien verbergen sich hinter der Benutzer- und Gruppenverwaltung von Linux? Wo wird das Passwort für einen Benutzer in aller Regel abgelegt und was ist die administrative Begründung dafür Drucker - Installation und Verwaltung In diesem Abschnitt wird auf die Einrichtung eines Druckers unter Linux eingegangen. Zudem wird besprochen, wie Druckerwarteschlangen verwaltet und Drucker überwacht werden können Installation Am einfachsten kann ein Drucker mit Hilfe von Yast eingerichtet werden. Starten Sie hierfür yast und wählen Sie im Hauptmenü den Befehl Administration des Systems. Wählen Sie dann den Unterpunkt Hardware in System integrieren und dann den Befehl Drucker konfigurieren. 149

150 16. Administration Im sich öffnenden Fenster können Sie folgende Optionen festlegen. ob der Drucker farbig angesteuert wird den Typ des Druckers den Namen des Druckers die Papiergröße die Schnittstelle den Device - Namen Anschließend wählen Sie Install, damit die Einträge in die Konfigurationsdatei übernommen werden. Linux besitzt mit dem apsfilter einen mächtigen Filter, der automatisch den Typ einer Datei erkennen, diese dann bestmöglichst konvertieren und auf dem Drucker ausgeben kann. Linux kennt das PostScript - Format und kann entsprechende Dateien drucken. Da zumeist jedoch kein PostScript - Drucker am System angeschlossen ist, wird das Programm Ghostscript zur Interpretation und Konvertierung eingesetzt. Der Anschluss eines Druckers erfolgt in der Regel über eine parallele Schnittstelle. Wie alle anderen Hardwarekomponenten auch, werden diese Schnittstellen über Gerätedateien angesprochen, in diesem Fall /dev/lp0, /dev/lp1 usw Warteschlangen Verwenden Sie den Befehl lpr mit folgender Syntax, um eine Datei auszudrucken. lpr [-P Drucker] [-# Anzahl] [-J Job] [-T Titel] [-i Leerstellen] [-w Spalten] [-hmrs] [-cdfglnptv] dateiname Die wichtigsten Optionen zum Kommando lpr werden in Tabelle 16.8 auf Seite 151 erklärt. Die auszudruckende Datei wird nicht direkt ausgedruckt. Die Druckaufträge werden zunächst gespoolt, d.h. in temporäre Dateien zwischengespeichert und vom Druckerdämon gesteuert der Reihe nach abgearbeitet. Auf diese Weise können von verschiedenen Anwendern mehrere Druckaufträge gleichzeitig zum Drucker gesandt werden, ohne dass es zu Konflikten kommt. Der Anwender kann nach Absetzen des Druckauftrages sofort weiterarbeiten. Eine Druckerwarteschlange, auch Drucker - Queue genannt, besteht aus einem Eintrag in der Datei /etc/printcap, der die Warteschlange festlegt, und einem Verzeichnis in /var/spool, in das für jeden Druckauftrag zwei Dateien gestellt werden, die eine für Daten und die andere für die Steuerung. Ein Druckauftrag wird unter Linux in folgenden Schritten abgearbeitet. zu druckende Datei wird in das Verzeichnis einer Drucker - Queue kopiert eine zugehörige Steuerdatei wird erstellt, die zusammen mit der Datei einen Job bildet die Datei wird durch Angaben der Steuerdatei durch einen Filter geschickt, der die Daten entsprechend den Duckeranforderungen konvertiert die Datei wir entsprechend der Reihenfolge ihres Eintrags in der Drucker - Queue auf dem Drucker ausgegeben 150

151 16.6. Drucker - Installation und Verwaltung Option Beschreibung -P Drucker gibt den zu verwendenden Drucker an, fehlt die Angabe, wird der Standarddrucker verwendet. -# Anzahl gibt die Anzahl der gewünschten Ausdrucke an. -J Job gibt den Jobnamen zum Ausdruck auf der Kopfseite an, fehlt die Option wird der Name der auszudruckenden Datei verwendet. -T Titel gibt den in der Kopfzeile zu verwendenden Titel an, fehlt die Option, wird der Name der auszudruckenden Datei verwendet. -i Leerstellen gibt die Anzahl der Leerstellen an, die als linker Seitenrand eingehalten werden sollen. -w Spalten gibt die Anzahl der pro Seite zu verwendenden Spalten an. -h unterdrückt den Ausdruck einer Kopfseite. -m sendet dem Benutzer eine mail, wenn der Druckauftrag abgeschlossen ist. -r löscht die zu druckende Datei, nachdem der Druckauftrag abgeschlossen ist. -s verwendet im Spoolverzeichnis anstatt einer Kopie der zu druckenden Datei einen symbolischen Link zur Originaldatei. -cdfglnptv geben den je nach Dateityp zu verwendenden Filter an. Tabelle 16.8.: lpr - Parameter Überwachung Zur Steuerung Ihrer Drucker und Druckaufträge verwenden Sie das Kommando lpc. lpc [Kommando [Argumente...]] Das Programm lpc kann folgende Aktionen durchführen. deaktivieren eines oder aller Drucker deaktivieren einer oder aller Druckerwarteschlangen ändern der Reihenfolge einzelner Druckaufträge innerhalb der Warteschlange Statusabfrage Warteschlange einem anderen Drucker zuordnen einzelne Druckaufträge einer anderen Warteschlange zuordnen Priorität eines Druckauftrages ändern Druckauftrag neu starten Die Parameter von lpc finden Sie in Tabelle 16.9 auf Seite 152. Es ist zwar eine direkte Eingabe der Kommandos beim Programmaufruf von lpc möglich, wenn jedoch keine der oben erläuterten Optionen angegeben wird, erscheint der lpc Prompt, hinter dem Sie dann die gewünschten Kommandos mit den erforderlichen Argumenten eingeben können. Die bei manchen lpc Kommandos benötigte Druckauftragsnummer können Sie mit dem Befehl lpq ermitteln. 151

152 16. Administration Option Beschreibung abort [all Drucker...] beendet den Druckdämon für den / die angegebenen Drucker sofort, der laufende Druckauftrag wird abgebrochen clean [all Drucker...] löscht alle Dateien aus der dem / den angegebenen Drucker (n) zugeordneten Warteschlange enable [all Drucker...] aktiviert die Warteschlange für den / die angegebenen Drucker exit beendet lpc disable [all Drucker...] deaktiviert die Warteschlange für den / die angegebenen Drucker down [all Drucker...] [Nachricht] kombiniert die Kommandos stop und disable, eine Nachricht für die Benutzer kann hinzugefügt werden help [Kommando] gibt eine kurze Erklärung zum angegebenen Kommando, ohne Argument wird eine Liste der verfügbaren Kommandos ausgegeben quit beendet lpc restart [all Drucker...] Beendigung und Neustart des Spooldämons für den / die angegebenen Drucker start [all Drucker...] aktiviert den Spooldämon für den / die angegebenen Drucker status [all Drucker...] fragt den Status des / der angegebenen Drucker(s) ab stop [all Drucker] beendet das Drucken von Aufträgen an dem / den angegebenen Drucker (n), sobald der laufende Auftrag abgeschlossen ist topq Drucker [Jobnummer...] [Benutzer...] stellt den / die angegebenen Job(s) an den Anfang der Warteschlange up [all Drucker...] kombiniert die Kommandos start und enable Tabelle 16.9.: lpc - Parameter 152

153 16.6. Drucker - Installation und Verwaltung Ausgabesteuerung Das Kommando lpq dient zum Verfolgen der Druckerwarteschlange und zum Ermitteln der Jobnummer eines Druckauftrages. lpq [-a] [-l] [-P Drucker] [Benutzer...] [Jobnummer...] Die Optionen und Argumente werden in Tabelle auf Seite 153. Option Beschreibung -a zeigt die Warteschlangen aller Drucker an -l gibt alles im langen Format aus -P Drucker zeigt die Warteschlange des angegebenen Druckers Benutzer zeigt die Aufträge des / der angegebenen Benutzer Jobnummer zeigt die Druckaufträge mit der / den angegebenen Druckauftragsnummer (n) Tabelle : lpq - Parameter Ohne Angabe einer Option oder eines Arguments wird die Warteschlange des Standarddruckers angezeigt. Das Kommando lprm dient zum Löschen von Druckaufträgen aus der Warteschlange. lprm [-P Drucker] [[Jobnummer] [Benutzer]...] Die Parameter sind wieder mal in einer Tabelle, nämlich auf Seite 153. Um die Wirkung der Kommandos zu verdeutlichen, wurden im obigen Beispiel vor und nach dem lprm Kommando der jeweilige Zustand der Warteschlange mit lpq überprüft. Sie können an obigen Beispiel auch deutlich sehen, dass ein Druckauftrag in zwei Dateien (Steuerdatei und Daten) abgelegt wird, da beim Entfernen eines Druckauftrags zwei Dateien gelöscht werden. Beachten Sie, dass nur der Superuser das Recht hat, Jobs anderer Benutzer zu löschen. Übungen Richten Sie einen weiteren Drucker auf Ihrem System ein. Option Beschreibung -P Drucker gibt den Drucker an, aus dessen Warteschlange ein Auftrag gelöscht wird, ist keiner angegeben, gilt der Standarddrucker als ausgewählt Benutzer gibt den Benutzer an, dessen Auftrag / Aufträge gelöscht werden sollen Jobnummer spezifiziert den zu löschenden Auftrag anhand der Druckauftragsnummer Tabelle : lprm - Parameter 153

154 16. Administration Schicken Sie einen Druckauftrag an diesen neuen Drucker, um dessen Funktion zu überprüfen. Lassen Sie sich den Druckerzustand anzeigen. Starten Sie einmal einen Drucker durch. Überprüfen Sie die Jobs im Spool - Verzeichnis. Löschen Sie einen beliebigen Job aus der Queue Umgang mit Dateisystemen Dieser Abschnitt behandelt die Partitionierung der Festplatte und das anschließende Einrichten eines Dateisystems Partitionierung einer Festplatte mit fdisk Bevor Sie ein neues Dateisystem auf einer Partition erzeugen können, muss diese zunächst einmal auf der Festplatte erstellt werden. Bei der Installation wird dieser Vorgang bequem mit Yast bzw. Yast2 durchgeführt. Zu beachten ist, dass durch eine nachträglich durchgeführte Partitionierung gegebenenfalls Daten zerstört oder bereits vorhandene Partitionen verschoben werden und so andere Bezeichnungen erhalten und damit nicht mehr korrekt gemountet werden können. Der Befehl lautet: fdisk [Plattenname] Vorsicht! Mit diesem Befehl können Sie Ihr System völlig zerstören. Im Menü, das Sie sich mit m anzeigen lassen, sind sämtliche Möglichkeiten aufgeführt. Mit x erhalten Sie weitreichende Optionen aus dem Expertenmenü Überprüfen des Dateisystems mit fsck Immer wenn eine Datei geändert, neu angelegt oder gelöscht wird, muss das Betriebssystem diese Aktualisierungen des Dateisystems durchführen. Meistens werden solche Änderungen in einem Puffer zwischengespeichert und asynchron auf die Festplatte übertragen. Aufgrund der asynchronen Datenübertragung, die sehr performant arbeitet, muss der Rechner möglichst ordentlich heruntergefahren werden, damit noch im Puffer befindliche Daten sauber auf die Festplatte zurückgeschrieben werden. Die Pufferung ist notwendig, damit der Benutzer, auch wenn die Änderungen noch nicht auf der Festplatte durchgeführt worden sind, unbeeinträchtigt weiter arbeiten kann. Nur bestimmte systemrelevante Prozesse, wie z.b. die Freigabe von Inodes, werden synchron durchgeführt, um auf diese Weise zu vermeiden, dass das Dateisystem inkonsistent wird. Dennoch kann ein Dateisystem aus diversen Gründen solche Inkonsistenzen aufweisen. In den meisten Fällen sind hierfür Hardware-Fehler oder Stromausfälle verantwortlich. Sollte der Rechner nicht ordnungsgemäß heruntergefahren worden sein, führt das Betriebssystem beim Neustart einen Check des Dateisystems durch und schlägt bei Bedarf geeignete Korrekturmaßnahmen vor. Dies geschieht mit Hilfe des Programms fsck, das auch manuell gestartet werden kann. fsck [-A -a -r -R -N -V -t <Dateisystemtyp>] Dateisystem Die Parameter finden Sie in Tabelle auf Seite 155. Beachten Sie, dass eine Überprüfung des Dateisystems mehrmals durchgeführt werden sollte und zwar solange bis keine Fehler mehr auftreten. Der Vorgang läuft in der Regel in mehreren Phasen ab. 154

155 16.7. Umgang mit Dateisystemen Option Beschreibung -A prüft alle in der Datei /etc/fstab aufgeführten Dateisysteme -a repariert automatisch das Dateisystem ohne Rückfrage -r erzeugt Sicherheitsabfragen, vor der möglichen Reparatur -R verhindert, dass das Root-System bei einer Überprüfung mit der Option -A ebenfalls überprüft wird -N führt keine echte Überprüfung durch, sondern gibt nur aus, wie eine Überprüfung aussehen würde -V gibt zeitgleich zur Überprüfung detaillierte Meldungen aus -t Dateisystemtyp gibt den Typ des Dateisystems an Tabelle : fsck Parameter erste Phase In der Initialisierungsphase werden die Optionen und Argumente, die dem Befehl übergeben wurden, auf ihre Richtigkeit hin überprüft. Zudem wird der Superblock auf Lesbarkeit kontrolliert. Tritt hierbei bereits der Fehler Der Superblock ist nicht lesbar auf, sollten Sie dem Vorschlag des Systems einen Backup-Superblock zu verwenden, zustimmen. zweite Phase Jetzt wird die Inode-Tabelle überprüft. Hier können zum Beispiel die Fehler Falsches Inode - Format, Bad Blocks, Nicht existierende Blöcke, doppelte Blöcke oder unbekannter Inode - Typ auftauchen. An dieser Stelle sollten Sie das Programm die fehlerhaften Angaben löschen lassen. dritte Phase Es werden Verzeichniseinträge entfernt, die auf Inodes verweisen, die die vorherige Phase als fehlerhaft oder nicht vorhanden gekennzeichnet hat. vierte Phase Es wird überprüft, ob es Verzeichnisse ohne Verbindung zum Dateisystem gibt. Solche Verzeichnisse treten dann auf, wenn in der vorangegangenen Phase übergeordnete fehlerhafte Verzeichnisse entfernt wurden, die jetzt untersuchten Verzeichnisse aber keine Fehler aufweisen. Diese werden nach erfolgter Bestätigung in das Verzeichnis lost + found gestellt. fünfte Phase Das Dateisystem wird nach Dateien durchsucht, die nicht referenziert sind. Auch diese werden in das Verzeichnis lost + found kopiert. letzte Phase Die Listen, die die freien Datenblöcke und die bereits verwendeten Inodes führen, werden mit der Liste verglichen, die fsck neu aufgebaut hat. Bei Abweichungen wird vorgeschlagen, die alten Listen durch die neuen zu ersetzen. 155

156 16. Administration Wechsel von ext2 von ext3 Der Wechsel von ext2 auf ext3 gestaltet sich recht einfach, da beide Dateisysteme binär kompatibel sind. Ein einfaches Kommando genügt. Allerdings muss das Dateisystem dafür unmounted sein. tune2fs -j <device> Im gemounteten Zustand wird dann das Dateisystem in der Datei.journal mitgeschrieben. Übungen Mit welchem Befehl kann eine Festplatte partitioniert werden? Mit welchem Befehl erhalten Sie eine Liste aller Partitionen Ihres Systems? Mit welchem Befehl kann ein Dateisystem überprüft werden? Mounten und Unmounten Sie zur Übung verschiedene Dateisysteme. In welchen Verzeichnissen kann der normale Anwender Dateien und Unterverzeichnisse anlegen? Wie heißen die zentralen Konfigurationsdateien, die das Ein- und Aushängen von Dateisystemen mitbestimmen? Syslog-Daemon Der Syslog-Daemon ist für das Mitloggen umfangreicher Systemmeldungen zuständig. Die Konfiguration findet sich unter /etc/syslog.conf. An dieser Stelle muss noch eine genaue Betrachtung des syslogd durchgeführt werden. Insbesondere ist die Möglichkeit interessant, auf einem remote loghost zu loggen Cron Das Kommando cron ist etwas schwieriger zu handhaben. Jedoch können hiermit Aufgaben immer zu bestimmten Zeitpunkten wiederholt werden. Diese Zeitsteuerungen werden in einer Tabelle namens crontab hinterlegt, wobei jede Zeile grundsätzlich identisch aufgebaut ist und deren Inhalt in Tabelle auf Seite 156 erläutert wird. Feld Inhalt Minute 0 bis 59 oder * Stunde 0 bis 24 oder * Tag des Monats 0 bis 31 oder * Monat 0 bis 12 oder Monatsname oder * Wochentag 0 bis 7 oder Wochentag oder * (0 entspricht Sonntag) Kommando jedes beliebige Linux - Kommando oder ein beliebiges Programm Tabelle : crontab - Parameter 156

157 Logdateien Da es unter Umständen zu schweren Systemfehlern aufgrund einer falschen crontab kommen kann, sollten Sie zunächst eine temporäre Datei editieren und erst nach nochmaliger Kontrolle diese Datei ins System einspielen und den crond durchstarten. Die benutzerspezifischen Tabellen für den crond liegen unter /var/spool/cron/tabs. Als systemweite Tabelle wird die Datei /etc/crontab verwendet, in der zusätzlich zur Zeitangabe der Benutzer, unter dem der jeweilige Auftrag laufen soll, angegeben werden muss. Ebenso verhält es sich mit den paketspezifischen Cron-Tabellen in /etc/cron.d. Das Skript /usr/lib/cron/run-crons wird durch die systemweite crontab alle 15 Minuten aufgerufen, um sicherzustellen, dass eventuell versäumte Läufe rechtzeitig nachgeholt werden. Innerhalb des Skripts wird dann mit Hilfe der Dateien im Verzeichnis /var/spool/cron/lastrun geprüft, ob ein erneuter Lauf notwendig ist Logdateien Zahlreiche Systemdienste und der Kernel selbst schreiben im laufenden Betrieb oft in unregelmäßigen Abständen in sogenannte Logfiles, die meistens im Verzeichnis /var/log abgelegt sind. Hier kommt es also zu einem dynamischen Wachstum, dass durch geeignete Mechanismen kontrolliert werden muss, um ein Volllaufen des Dateisystems zu verhindern. Vor SuSE 8.0 war hierfür die Datei /etc/logfiles zuständig, deren Syntax selbsterklärend ist. Ab SuSE 8.0 wird hierfür das Paket logrotate verwendet, dessen Konfiguration zum einen in etclogrotate.conf und zum zweiten im Verzeichnis /etc/logrotate.d abgelegt ist. Die genaue Syntax kann in der manpage von logrotate nachgeschlagen werden. Logrotate selbst wird einmal täglich durch den crond über das Skript /etc/cron.daily/logrotate Übungen Zusammenfassung Zusammengefasste Inhalte des vorangegangenen Kapitels. 157

158 16. Administration 158

159 17. Prozesskonzept Im folgenden Kapitel soll Ihnen Grundlagenwissen hinsichtlich der Prozesse und ihrer Verwaltung vermittelt werden. Während im ersten Teil auf den Prozess selbst und dessen mögliche Zustände eingegangen wird, liegt der Schwerpunkt des zweiten Teils auf der Prozesshierarchie, den Kenndaten eines Prozesses und der Kommunikation zwischen den Prozessen. Im dritten Teil werden die Kommandos, die zur Steuerung und Verwaltung von Prozessen notwendig sind, behandelt. Zur Abrundung des Kapitels werden am Ende Dienste genannt, die Prozesse zeit- und ressourcenabhängig anstoßen. Lernziele In diesem Kapitel lernen Sie, etliche neue Begrifflichkeiten im Kontext der Prozessverwaltung zu definieren, die verschiedenen Prozesszustände kennen, grundlegendes zur Prozesskommunikation, administrative Prozessverwaltung durchzuführen Grundlagen Der Begriff des Prozesses und dessen Abgrenzung gegenüber dem Programm, ist nicht leicht festzumachen. Deswegen soll zunächst eine Erklärung versucht werden. Beachten Sie, dass im Verlauf des Kapitels der Einfachheit halber von einem Rechnersystem mit einer CPU ausgegangen wird Definition des Begriffs Prozess Ein Prozess ist zunächst ein Programm während der Ausführung, kann darüber hinaus aber auch als Paket für ein Programm betrachtet werden, dass verschiedene Informationen verwaltet und über dessen Schnittstellen das Betriebssystem steuernd eingreifen kann. Ein Beispiel soll der Verdeutlichung dienen. Wird von einem Benutzer ein Programm gestartet, so wird der zugehörige Programmcode in den Hauptspeicher geladen. Das ablaufende Programm wird dann als Prozess bezeichnet. Startet ein anderer Benutzer dasselbe Programm, handelt es sich um verschiedene Prozesse, obwohl beide das gleiche Programm ausführen. Denken Sie aber bei Prozessen nicht nur an Programme, die von den Benutzern des Systems gestartet werden, wie die Shell, verschiedenste Kommandos oder Anwendungen unter X, sondern auch an die im Hintergrund laufenden Dämonen (daemons). 159

160 17. Prozesskonzept Prozesszustände Während der Lebenszeit eines Prozesses nimmt dieser unterschiedliche Zustände an, wobei solche Zustandswechsel immer durch das Eintreten eines bestimmten Ereignisses ausgelöst werden. Man unterscheidet hierbei im wesentlichen drei Zustände: aktiv, bereit und blockiert. Ein Prozess ist aktiv (running), wenn er gerade von der CPU bearbeitet wird und bereit (ready), wenn er die CPU benutzen könnte. Ein blockierter (blocked) Prozess, wartet auf das Eintreten eines bestimmten Ereignisses (z.b. auf eine Eingabe des Benutzers). In einem Rechnersystem mit nur einem Prozessor kann immer nur ein Prozess aktiv sein. Für alle anderen verwaltet das Betriebssystem verschiedene Wartelisten, in der beispielsweise alle bereiten Prozesse in der Reihenfolge ihrer Ankunft und in Abhängigkeit von ihrer Priorität eingetragen werden. Die blockierten Prozesse werden ohne besondere Anordnung in einer eigenen Warteliste geführt, bis das entsprechende Ereignis eintritt. Wird ein Programm gestartet, so wird der zugehörige Prozess am Ende der Warteliste für bereite Prozesse eingetragen. Erst wenn er bis an den Anfang der Tabelle vorgedrungen ist und die CPU frei wird, bekommt er CPU-Zeit zugeteilt und wechselt seinen Zustand von bereit auf aktiv (dispatch). Um ein endloses Besetzen der CPU durch den Prozess zu verhindern, wird nach Ablauf einer Zeitscheibe die CPU wieder entzogen (timerunout). Der Prozess wird zurück in die Warteliste gestellt und ein anderer Prozess bekommt die CPU zugeteilt. Denkbar wäre auch, dass ein Prozess vor dem Ablauf der ihm zustehenden CPU-Zeit eine Einoder Ausgabeoperation anfordert. In diesem Fall gibt er selbständig die CPU frei (block). Dies ist zugleich der einzigste Zustandswechsel, den ein Prozess selbst veranlassen kann. Der letzte mögliche Zustandswechsel ist das Eintreten eines Ereignisses auf das ein blockierter Prozess wartet, wodurch dieser aufgeweckt wird (wakeup). Die vier möglichen Zustandswechsel stellen sich also wie in Abbildung 17.1 auf Seite 160 dar: aktiv dispatch block time run out bereit wakeup blockiert Abbildung 17.1.: Prozesszustände Prozesskontrollblock Wird ein neuer Prozess angelegt, so werden zur Verwaltung benötigte Informationen in einen sogenannten Prozesskontrollblock (process control block, kurz PCB) geschrieben. Dabei handelt es sich beispielsweise um die eindeutige Prozesskennung (process identification, kurz PID) den Namen des auszuführenden Programms die Priorität des Prozesses den momentanen Prozesszustand den aktuellen Programmschritt die Adresse des vom Programm belegten Hauptspeichers 160

161 17.1. Grundlagen die reservierten Ressourcen den Benutzer, der das Programm gestartet hat usw. Bei der Zuteilung der CPU an die Prozesse greift das Betriebssystem auf den PCB zu, damit der Prozess an seiner unterbrochenen Stelle fortfahren kann. Verlässt der Prozess den aktiven Zustand werden für die Fortsetzung des Prozesses notwendige Informationen in den PCB zurückgeschrieben Entstehung einer Prozesshierarchie Eine Prozesshierarchie entsteht durch die Möglichkeit eines Prozesses einen oder mehrere neue Prozess zu starten (spawn). Ein auf diese Weise erzeugter Prozess wird Sohnprozess (child process) und der erzeugende Prozess Vaterprozess (parent process) genannt. In dieser Hierarchie gilt, dass ein Sohnprozess immer nur einen Vater hat, aber jeder Vaterprozess mehrere Sohnprozesse aufweisen kann Prozessoperationen Zur Verwaltung der Prozesse muss das Betriebssystem über Operationen verfügen, die das Prozessverhalten beeinflussen. Einige dieser Funktionen (dispatch, timerunout, block und wakeup) wurden bereits weiter oben genannt. An dieser Stelle kommen noch folgende hinzu. Erstellen eines Prozesses (create) Diese Operation zieht einige Arbeiten nach sich. So muss beispielsweise eine neue PID vergeben, ein Eintrag in die Prozesstabelle des System vorgenommen, die Prozesspriorität festgelegt und ein PCB angelegt werden. Außerdem müssen die benötigten Ressourcen reserviert werden. Löschen eines Prozesses (kill) In diesem Fall reicht es nicht aus, nur den Prozess selbst zu entfernen. Insbesondere müssen auch die Einträge aus den systeminternen Tabellen gelöscht, die reservierten Ressourcen freigegeben und der PCB entfernt werden. Dabei werden in der Regel auch alle zuvor gestarteten Sohnprozesse gelöscht. Suspendieren eines Prozesses (suspend) bzw. Wiederbeleben eines suspendierten Prozesses (resume) Eine Suspendierung wird zumeist nur für kurze Zeit vorgenommen, wenn das System überlastet oder benötigte Ressourcen zur Zeit nicht verfügbar sind. Je nachdem in welchem Zustand sich der Prozess vor der Suspendierung befunden hat, wird er entweder auf suspendiert-bereit oder suspendiert-blockiert gesetzt. Nachdem sich die Situtation geändert hat, wird der Prozess wiederbelebt. Ändern einer Prozesspriorität (change) Im Betriebssystem konkurrieren alle Prozesse um die CPU. Dabei ist es von der Priorität abhängig wie oft ein Prozess innerhalb einer bestimmten Zeiteinheit die CPU zugeteilt bekommt. Um eine Änderung der Priorität eines Prozesses auch nachträglich zu ermöglichen, verfügt das Betriebssystem über die Operation change. 161

162 17. Prozesskonzept Prozesse unter Linux Wie bereits angesprochen, wird bei der Ausführung eines Kommandos oder einer Anwendung immer ein eigener Prozess gestartet. Als Ausnahme sind Befehle zu nennen, die vom Kommandointerpreter der Shell selbst ausgeführt werden, sogenannte built-in-funktionen. Der nachfolgende Abschnitt geht im Einzelnen auf die Prozesshierarchie, die Prozesskenndaten und die Kommandos zur Prozessverwaltung ein Prozesshierarchie Ein kurzer Abriss des Betriebssystemstarts und des Anmelden eines Benutzers soll verdeutlichen, wie sich die Prozesshierarchie unter Linux aufbaut. Zunächst wird nach dem Booten der Linux-Kernel in den Arbeitsspeicher geladen und zur Ausführung gebracht. Dieser Prozess erhält die PID 0 und startet das Programm init mit der PID 1, der die Wurzel der Prozesshierarchie bildet, da ihm alle weiteren System- und Benutzerprozesse untergeordnet sind. Init liest dann die Datei /etc/inittab und wertet die Einträge, wie z.b. den zu startenden Runlevel, aus. Durch die jeweiligen Startskripten werden jetzt Sohnprozesse von init mit eindeutigen PIDs erzeugt, die zunächst die drei Dateien Standardeingabe (stdin), Standardausgabe (stdout) und Standardfehlerausgabe (stderr) anlegen. Danach startet init unter anderem das Programm getty, dass die Aufforderung zum Anmelden am entsprechenden Terminal ausgibt und auf die Eingabe des Benutzernamens wartet. Getty ruft dann das Kommando login, mit dem Benutzernamen als Argument, auf, so dass das Passwort abgefragt und auf seine Richtigkeit überprüft werden kann. Sollten keine Fehler auftreten, startet init als nächstes die Standardshell des Benutzers (vgl Eintragung in /etc/passwd). Dieses Programm ist kein neuer Prozess, sondern läuft immer noch unter der gleichen Prozessnummer wie der von init für das entsprechende Terminal erzeugte Sohnprozess. Die zu startende Shell ist benutzerspezifisch und wird in der Datei /etc/passwd angegeben, wobei die Standardshell unter Linux die Bourne-Again-Shell (/bin/bash) ist. Dieses Programm ist ein Kommandointerpreter und dafür verantwortlich, dass alle vom Benutzer eingegebenen Kommandos entgegengenommen, ausgewertet, entsprechende Sohnprozesse erzeugt und durch den Kernel ausgeführt werden. Eventuelle Kernel-Meldungen werden dem Benutzer wieder durch die Shell übermittelt. Ist in /etc/passwd der Eintrag false gesetzt, kann der Benutzer keine Shell starten, sondern nur nach außen angebotene Dienste nutzen. Beendet jetzt der Benutzer seine Sitzung beispielsweise mit dem Kommando exit, so wird der Sohnprozess gelöscht und von init ein neuer Sohnprozess für dieses Terminal gestartet Prozesskenndaten Zu jedem Prozess gibt es eine Reihe von Informationen, die vom Betriebssystem in verschiedenen internen Tabellen, wie den PCB (vgl. Erklärungen weiter oben), verwaltet werden. Dabei können einige dieser Daten von einem Vaterprozess an seine Sohnprozesse weiter vererbt werden. Typische Prozesskenndaten sind nachfolgend aufgelistet und in Teilen weiter unten genauer erläutert. Prozessnummer (process identification, kurz PID) Prozessnummer des Vaterprozesses (parent process identification, kurz PPID) Benutzernummer (user identification, kurz UID) und Gruppennummer (group identification, kurz GID) des Prozesseigentümers Prozesspriorität 162

163 17.2. Prozesse unter Linux Prozesszustand Kontrollterminal, das Terminal von dem der Prozess aus gestartet wurde CPU-Zeit, die der Prozess bisher verbraucht hat CPU-Status (Befehlszähler und Inhalt der Register) Adresse des Programmes im Arbeitsspeicher Dateien, die vom Prozess geöffnet sind Arbeitsverzeichnis (working directory) des Prozesses usw. Prozessnummer Die Nummer (PID), die jeder Prozess beim Starten zugewiesen bekommt, ist systemweit eindeutig, so dass sichergestellt ist, das zwei gleichzeitig laufende Prozesse niemals die gleiche PID besitzen. Die Prozessnummer des Vaterprozesses (PPID) gibt an, von welchem Prozess ein bestimmter Sohnprozess erzeugt wurde. Benutzer- und Gruppennummer des Prozesseigentümers Ein Prozess besitzt zwei Arten von UID und GID, zum einen die effektive UID / GID, zum anderen die reale UID / GID. Ist das set-user-id-bit bzw. set-group-id-bit für ein Programm nicht gesetzt, so sind die effektiven UID / GID für den erzeugten Prozess gleich den realen UID / GID, nämlich die UID und GID des Aufrufenden. Ist dagegen das set-user-id-bit bzw. das set-group-id-bit gesetzt, so wird als effektive UID / GID die UID / GID des Eigentümers der Programmdatei und als reale UID / GID die des Aufrufenden für den hieraus erzeugten Prozess gesetzt. Ein Beispiel verdeutlicht diese Funktionalität. Auf die Passwortdatei /etc/shadow hat nur der Benutzer root Schreibberechtigung. Trotzdem muss es jedem Benutzer möglich sein, sein Passwort zu ändern. Das Kommando heißt passwd und darf von jedem Benutzer ausgeführt werden. Die ausführbare Datei gehört dem Benutzer root und hat das set-user-id-bit gesetzt. Wird passwd gestartet, läuft der entsprechende Prozess unter der effektiven UID von root, so dass in die Datei /etc/shadow geschrieben werden darf. Eine Loch in der Systemsicherheit entsteht in diesem Fall nur, wenn jeder die Programmdatei /sbin/passwd verändern darf, da somit die Möglichkeit besteht, Kommandos mit root Berechtigung auszuführen. Prozesspriorität Wie bereits angesprochen konkurrieren im Betriebssystem sehr oft mehrere Prozesse um die Zuteilung der CPU. Ein Algorithmus legt dabei anhand der Priorität fest, wie schnell Prozesse in der Warteliste nach vorne rücken. Damit ist sichergestellt, dass alle Prozesse irgendwann zur Ausführung gelangen, wobei Prozesse mit hoher Priorität öfter die CPU zugeteilt bekommen. Die Priorität ist dabei nicht nur abhängig von der beim Start festgelegten sondern zusätzlich von der vom Prozess verbrauchten Zeit, seiner Größe und seiner Wartezeit. Prozess-Adressraum Daneben verfügt ein Prozess noch über einen sogenannten Adressraum, welcher in drei getrennte Bereiche unterteilt ist, wie in Tabelle 17.1 auf Seite 164 angedeutet. 163

164 17. Prozesskonzept Segment Textsegment Datensegment Stacksegment Beschreibung enthält den Programmcode, ist schreibgeschützt und kann von mehreren Prozessen gleichzeitig benutzt werden. enthält die Benutzerdaten des Prozesses und wird nochmals in einen initialisierten und einen nicht initialisierten Datenbereich unterteilt. enthält den Benutzerstack und die Verwaltungsdaten des Prozesses. Tabelle 17.1.: Prozess-Adressraum Prozesskommunikation Die Kommunikation zwischen Prozessen kann mit unterschiedlichsten Mechanismen erfolgen, von denen einige im folgenden vorgestellt, andere nur genannt werden sollen. Dateien Ein Prozess kann Daten in Dateien schreiben, welche von anderen Prozessen wieder ausgelesen werden. Allerdings ist diese Form des Datenaustausches nicht sehr effizient, da zeitaufwendige Plattenzugriffe unvermeidlich sind. Die Datei bzw. die enthaltenen Daten werden nach dem FIFO Prinzip verarbeitet, d.h. dass zuerst die Datensätze gelesen werden, die schon am längsten in der Datei stehen. Beispiel: ls > inhalt grep * < datei Das erste Kommando schreibt die Ausgaben des Befehls ls in eine Datei mit dem Namen inhalt. Sollte diese Datei noch nicht bestehen, wird sie angelegt, ist sie bereits vorhanden, wird sie überschrieben. Anschließend liest grep wieder die Inhalte der Datei aus. Mit werden die Ausgaben an die Datei angehängt und mit 2 die Standardfehlerausgabe umgeleitet. Pipes Um zeitaufwendige Zugriffe auf externe Speichermedien zu vermeiden, können im Arbeitsspeicher Puffer eingerichtet werden, die, als Pipe verwendet, einen deutlichen Geschwindigkeitsvorteil bieten. Ein Prozess schreibt seine Daten in diese Pipe, die ein anderer Prozess wieder auslesen kann. Eine Pipe ist einkanalig, d.h. ein Prozess kann entweder nur lesend oder nur schreibend darauf zugreifen. Sollen Daten in beide Richtungen ausgetauscht werden, ist das Einrichten einer zweiten Pipe notwendig. Wie Dateien auch, werden Pipes nach dem FIFO Prinzip verwaltet. Beispiel: ls grep * Ein Nachteil der Pipe besteht darin, dass deren Lebensdauer von den darauf zugreifenden Prozessen abhängt. Signale Signale werden in erster Linie zur Kommunikation zwischen System- und Benutzerprozessen verwendet. Dieses asynchrone Ereignis kann zu jedem beliebigen Zeitpunkt eintreten und bewirkt eine Unterbrechung auf Prozessebene. Signale können durch folgende Ereignisse ausgelöst werden. 164

165 17.3. Kommandos zur Prozessverwaltung Aktionen des Benutzers am Terminal (z.b. Tastenkombinationen, Beenden des Terminals) Programmfehler (z.b. Division durch Null) Senden eines Signals durch einen anderen Prozess (vgl. weiter unten) Fängt ein Programm ein Signal nicht explizit durch eine Signalbehandlungsroutine ab, so führt dies unweigerlich zum Programmabbruch. Wie später gezeigt wird, kann das Signal SIGKILL garnicht abgefangen werden. Andere Kommunikationsmöglichkeiten Des Weiteren gibt es sogenannte Named Pipes, Message Queues, Semaphores, Shared Memory und Streams Kommandos zur Prozessverwaltung Wenn ein Anwender ein Programm startet und wieder beendet, werden folgende Schritte durchgeführt. Erzeugen eines Prozesses Ausführen des Programms Beenden des Prozesses Ein Programm mit Unterprogrammen wird entsprechend abgearbeitet, indem weitere untergeordnete Prozesse für jedes gestartete Unterprogramm angelegt werden. Im folgenden werden Kommandos vorgestellt, die einen Zugriff auf die Prozesse erlauben Befehle zur Prozessansicht pstree Der Aufbau der Prozesshierarchie verdeutlicht sich bei Aufruf des Kommandos pstree, das durch die Option -h zusätzlich noch den aktuellen Prozess fett gedruckt hervorhebt. ps Die Informationen aller Prozesse werden, im jeweiligen Prozesskontrollblock zusammengefasst, von Linux verwaltet. Auf die darin enthaltenen Informationen kann über die eindeutige Prozessnummer, auch PID genannt, zugegriffen werden. Mit Hilfe des Befehls ps können Sie die Prozessnummer ausfindig machen. Die Ausgabe der einzelnen Spalten haben folgende Bedeutung. PID ist die eindeutige Prozessnummer, die fortlaufend vergeben wird TTY ist das Terminal, auf dem der Prozess gestartet wurde STAT bezeichnet den Prozessstatus wie in Tabelle 17.2 auf Seite 166 TIME gibt die vom Prozess verbrauchte Prozessorzeit an COMMAND steht für den Namen des Programms, das der Prozess ausführt Zudem gibt es weitere Optionen zum Kommando ps, die es erlauben, detaillierte Informationen über alle gerade laufenden Prozesse abzufragen. Sie stehen in Tabelle 17.3 auf Seite

166 17. Prozesskonzept STAT Bedeutung Erläuterung R runnable Prozess ist lauffähig S sleeping Prozess wartet auf ein Ereignis D uninterruptable sleep Prozess befindet sich im nicht unterbrechbaren Schlafzustand T traced gestoppter Prozess Z Zombie process Prozessausführung wurde abgeschlossen, ohne Vaterprozess zu informieren. W no resident pages Prozess belegt keine Seiten im Arbeitsspeicher Tabelle 17.2.: Prozessstatus Option Beschreibung -a zeigt die Prozesse aller Benutzer -e zeigt die Prozessumgebung -l langes Format -m zeigt die Speichernutzung -r zeigt nur die laufenden Prozesse -u zeigt die Besitzer der Prozesse -x zeigt die Prozesse, die von keinem Terminal kontrolliert werden Tabelle 17.3.: ps - Parameter 166

167 17.3. Kommandos zur Prozessverwaltung Prozessterminierung Wenn die Ausführung eines Befehls zu lange dauert, durch eine fehlerhafte Funktion die Eingabemöglichkeit der Shell blockiert ist oder das Kommando versehentlich gestartet wurde, gibt es die Möglichkeit diesen Prozess gezielt mit Hilfe das Befehls kill zu beenden. Dieses Kommando sendet ein Signal an den Prozess, der dieses Signal mit der nächsten CPU - Zuteilung empfängt. Ein Prozess kann, in Abhängigkeit von der Mächtigkeit des Signals und der Programmierung des Programms, auf unterschiedliche Weise auf ein solches Signal reagieren. Es ist durchaus möglich, dass das gesendete Signal, wenn man vom Signal SIGKILL absieht, ignoriert wird. Die Syntax lautet kill [-signalnummer] pid Sie müssen dem Kommando kill also sowohl eine Signal-, als auch eine Prozessnummer mitgeben. Die Bedeutung sämtlicher Signalnummern erhalten Sie mit dem Befehl kill -l. Die Prozessnummern werden mit dem Befehl ps ausgegeben. Geben Sie keine Signalnummer an, wird das Signal 15 (SIGTERM) an den Prozess gesendet. Dieses Signal fordert den Prozess auf, die laufenden Tätigkeiten abzuschließen und sich zu beenden. Das Signal 9 (SIGKILL) bedeutet, dass der Prozess sofort beendet wird. Diese Option sollte grundsätzlich als letzte Möglichkeit in Betracht kommen, da unter Umständen temporäre Dateien zurückbleiben Vorder- und Hintergrundprozesse Wenn ein Anwender einen Befehl am Terminal eingibt, wird das dazugehörige Programm gestartet. Dieses wird abgearbeitet und anschließend wieder beendet. In dieser Zeit ist das Terminal aber durch den Prozess belegt. Da es Prozesse gibt, die entweder sehr viel Zeit für die Ausführung in Anspruch nehmen oder aufgrund einer Umlenkung in eine Datei keine Ausgabe am Terminal verwenden, ist es möglich, diese auch im Hintergrund ablaufen zu lassen. Ein Prozess der gerade im Vordergrund abläuft, kann mit der Tastenkombination Strg + Z gestoppt werden. Anschließend kann dieser mit der Anweisung bg im Hintergrund ausgeführt werden. Natürlich kann ein Prozess von Anfang an in den Hintergrund verschoben werden. Um dies zu erreichen, hängen Sie ein & an die Befehlszeile an. Die Rückmeldung besteht aus zwei Nummern. Die Zahl in eckigen Klammern enthält eine neue ID, die die auf diesem Terminal gestarteten Hintergrundprozesse identifiziert. während die zweite Zahl ist die zugehörige PID darstellt. Jobs, die im Hintergrund arbeiten, lenken ihre Ausgaben (stdout, stderr) weiterhin auf das Terminal um. Wenn Sie im Vordergrund ungestört arbeiten wollen, müssen Sie diese Ausgabe selbst entsprechend umleiten. Mit dem Befehl jobs geben Sie die im Moment laufenden Hintergrundprozesse aus. Mit dem Befehl fg jobnummer können Sie den jeweiligen Prozess wieder in den Vordergrund holen. Außerdem ist es mit Strg + C möglich, den im Vordergrund laufenden Prozess zu beenden. Hintergrundprozesse bis zum Ende ausführen lassen Oftmals möchte man auf einem Rechner einen Prozess starten, der lange Zeit läuft, und keine Kommunikation mit dem Benutzer erfordert. Zum Beispiel langwierige Downloads aus dem Internet. Linux bietet die Möglichkeit, solche Prozesse zu starten, und sich daraufhin auszuloggen, ohne dass der Prozess beendet wird, wie es gewöhnlich der Fall ist. Dazu dient der Befehl nohup. Als Parameter dient der ganz normale Befehl, der ausgeführt werden soll. Um zum Beispiel die Homepage auf die eigene Festplatte zu spiegeln, und dabei nicht anwesend sein zu müssen, verwende man: 167

168 17. Prozesskonzept nohup wget -r & Achtung Einen Prozess, den Sie mit nohup gestartet haben, können Sie nur noch durch kill beenden! Zeitgesteuerte Prozessausführung Aufgaben, die zu bestimmten Zeiten ausgeführt werden sollen, müssen vom System zeitlich gesteuert werden. Dies könnten beispielsweise Datensicherungen oder große Druckaufträge sein. Oft handelt es sich um Vorgänge, die sehr viel Systemleistung benötigen oder zumindest eine Ressource des System dermaßen stark in Anspruch nehmen, dass ein vernünftiges Arbeiten der übrigen Benutzer nicht mehr möglich ist. Denkbar sind auch Sicherungen, die außerhalb der üblichen Benutzungszeiten durchgeführt werden müssen, um Inkonsistenzen zu vermeiden. Linux bietet zu diesem Zweck drei Programme an, die in der Lage sind, solche Aufgaben zeitgesteuert abzuarbeiten. at für die Ausführung von einmaligen Jobs cron für Aufgaben, die wiederholt auftreten batch für das Abarbeiten von Jobs, die nicht an einen festgelegten Zeitpunkt gebunden sind, sondern sich nach der Belastung der Systemressourcen richten atd Die Syntax lautet wie folgt. at [-l -d <jobnummer> -f <dateiname>] zeit Das Kommando at kennt die Optionen aus Tabelle 17.4 auf Seite 168. Option Beschreibung -l zeigt eine Liste der zur Ausführung anstehenden at - Jobs an -d jobnummer löscht den durch die Jobnummer spezifizierten Auftrag aus der Liste -f dateiname liest die auszuführenden Befehle aus der angegebenen Datei Tabelle 17.4.: at - Parameter Alternativ zu at -l können Sie auch das Kommando atq, zu at -d können Sie auch das Kommando atrm verwenden. Sie werden nach der Festlegung der Zeit aufgefordert, die gewünschten Aktionen anzugeben. Sind alle Anweisungen eingegeben worden, so können Sie die Eingabe mit Strg + D beenden. Wenn das System mit Hilfe des Befehls echo Nachrichten verschicken soll, so werden diese nicht am Terminal ausgegeben, sondern als mail an den jeweiligen Benutzer verschickt. 168

169 17.4. Zeitgesteuerte Prozessausführung batch Dieser Befehl entspricht in seiner Anwendung dem bereits besprochenen Befehl at, nur dass hierbei auf eine Zeitangabe verzichtet werden kann, da die eingegebenen Kommandos ausgeführt werden, wenn das System nur wenig belastet wird. Übungen Zusammenfassung Zusammengefasste Inhalte des vorangegangenen Kapitels. 169

170 17. Prozesskonzept 170

171 18. Netzwerk Abbildung 18.1.: Bildunterschrift Dieses Kapitel soll in die Grundlagen der Netzwerktechnologie einführen und einen Einblick in die Konfiguration der zugehörigen Hardware und Schnittstellen geben. Die Besprechung der zur Fehlersuche und -analyse eingesetzten Werkzeuge rundet das Ganze ab. Lernziele In diesem Kapitel lernen Sie, Grundlagenwissen über Netzwerktechnologie, -topologien und -protokolle, 171

Betriebssystem: Linux Ubuntu. Cora Zinz & Eva Burghardt

Betriebssystem: Linux Ubuntu. Cora Zinz & Eva Burghardt Betriebssystem: Linux Ubuntu Cora Zinz & Eva Burghardt 28.05.2014 Linux Geschichte und Philosophie Abgrenzung zu Unix (zunehmend proprietär) 1991: Beginn Entwicklung Linux-Kernel (Linus Torvald) 1992:

Mehr

Diskless GNU/Linux Workshop der LUGBZ http://www.lugbz.org/ Author: Karl Lunger 10.05.2003

Diskless GNU/Linux Workshop der LUGBZ http://www.lugbz.org/ Author: Karl Lunger 10.05.2003 Diskless GNU/Linux Workshop der LUGBZ http://www.lugbz.org/ Author: Karl Lunger 10.05.2003 Diskless GNU/Linux Was? Eine Maschine ohne lokalem Dateisystem X-Terminal (Prozesse der Anwendungen laufen auf

Mehr

Datenwiederherstellung von Festplatten des DNS-323

Datenwiederherstellung von Festplatten des DNS-323 Datenwiederherstellung von Festplatten des DNS-323 Inhalt DNS-323 DATENWIEDERHERSTELLUNG MIT KNOPPIX 5.1.1...2 ALLGEMEINE INFORMATIONEN...2 VORGEHENSWEISE IN ALLER KÜRZE...3 AUSFÜHRLICHE VORGEHENSWEISE...3

Mehr

Installations-Dokumentation, YALG Team

Installations-Dokumentation, YALG Team Installations-Dokumentation, YALG Team Version 8.1 1 Benötigtes Material 2 Vor der Installation 3 Beginn 4 Installation 4.1 Sicherheit 4.2 Partitionierung 4.3 Paketauswahl 4.4 Paketauswahl (fein) 5 Konfiguration

Mehr

Softwareverteilung. mit. m23

Softwareverteilung. mit. m23 Softwareverteilung mit m23 Überblick Was ist Softwareverteilung? Was ist m23? Warum m23? Wie funktioniert m23? Live-Demonstration Was ist Softwareverteilung? Was ist Softwareverteilung? Installation von:

Mehr

GDI-Knoppix 4.0.2 - Erste Schritte. Werner Siedenburg werner.siedenburg@student.fh-nuernberg.de Stand: 04.05.2006

GDI-Knoppix 4.0.2 - Erste Schritte. Werner Siedenburg werner.siedenburg@student.fh-nuernberg.de Stand: 04.05.2006 GDI-Knoppix 4.0.2 - Erste Schritte Werner Siedenburg werner.siedenburg@student.fh-nuernberg.de Stand: 04.05.2006 Dieses Dokument beschreibt elementare Dinge im Umgang mit Knoppix. Knoppix ist ein "Live-Linux".

Mehr

Documentation. OTRS Appliance Installationshandbuch. Build Date:

Documentation. OTRS Appliance Installationshandbuch. Build Date: Documentation OTRS Appliance Installationshandbuch Build Date: 10.12.2014 OTRS Appliance Installationshandbuch Copyright 2001-2014 OTRS AG Dieses Werk ist geistiges Eigentum der OTRS AG. Es darf als Ganzes

Mehr

Betriebssystem? Übersicht. Ziele. Grundlagen. Das ist nur die Oberfläche... Wissen, was man unter einem Betriebssystem versteht

Betriebssystem? Übersicht. Ziele. Grundlagen. Das ist nur die Oberfläche... Wissen, was man unter einem Betriebssystem versteht Betriebssysteme Grundlagen Quellen: InSy Folien zum Thema Unix/Linux Wikipedia Das ist nur die Oberfläche... 1 Ziele 2 Übersicht Wissen, was man unter einem Betriebssystem versteht Was Was ist istein einbetriebssystem?

Mehr

Kurs für Linux Online Kurs Verwalter des Linux System

Kurs für Linux Online Kurs Verwalter des Linux System Kurs für Linux Online Kurs Verwalter des Linux System Akademie Domani info@akademiedomani.de Allgemeines Programm des Kurses Linux Basis Programm MODUL 1 - Fundamental Einführung in Linux Das Verfahren

Mehr

Protokoll. Höhere Technische Bundeslehranstalt Fischergasse 30 A-4600 Wels. Titel der Übung: Windows Server 2003 Installation

Protokoll. Höhere Technische Bundeslehranstalt Fischergasse 30 A-4600 Wels. Titel der Übung: Windows Server 2003 Installation Protokoll Nr. 4 Höhere Technische Bundeslehranstalt Fischergasse 30 A-4600 Wels Protokoll Abteilung IT Übungs Nr.: 4 Titel der Übung: Windows Server 2003 Installation Katalog Nr.: 3 Verfasser: Christian

Mehr

Linux Systemadministration

Linux Systemadministration Seminarunterlage Version: 8.04 Version 8.04 vom 6. September 2013 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

Verlustfreier Übergang von Windows zu LINUX. axel.keller@mucl.de

Verlustfreier Übergang von Windows zu LINUX. axel.keller@mucl.de Verlustfreier Übergang von Windows zu LINUX axel.keller@mucl.de Keine Updates mehr für Windows XP, was nun? Mit Windows XP weitermachen? Internetverbindungen ggf. unsicher Weitere Unterstützung für Anwenderprogramme?

Mehr

Enigma2 Plugin Entwicklung mit Eclipse

Enigma2 Plugin Entwicklung mit Eclipse Enigma2 Plugin Entwicklung mit Eclipse Enigma2 Plugin Entwicklung mit Eclipse 1/15 Inhaltsverzeichnis 1 ÜBER... 3 2 INSTALLATION... 4 2.1 INSTALLATION VON ECLIPSE... 4 2.2 INSTALLATION VON PYDEV... 4 3

Mehr

Linux unter Windows ausprobieren

Linux unter Windows ausprobieren Linux unter Windows ausprobieren X L YYY/01 310/01 Register JKL Sie suchen nach einem kostenlosen und sicheren Betriebssystem? Dann sollten Sie einen Blick auf Linux werfen. Wir zeigen Ihnen, wie Sie Linux

Mehr

GeoShop Netzwerkhandbuch

GeoShop Netzwerkhandbuch Technoparkstrasse 1 8005 Zürich Tel.: 044 / 350 10 10 Fax.: 044 / 350 10 19 GeoShop Netzwerkhandbuch Zusammenfassung Diese Dokumentation beschreibt die Einbindung des GeoShop in bestehende Netzwerkumgebungen.

Mehr

Datenwiederherstellung von Festplatten des DNS-325 & DNS-320

Datenwiederherstellung von Festplatten des DNS-325 & DNS-320 Datenwiederherstellung von Festplatten des DNS-325 & DNS-320 Inhalt Datenwiederherstellung mit Ubuntu... 2 Allgemeine Informationen 2 Vorgehensweise in aller Kürze 4 Ausführliche Vorgehensweise 4 1) Voreinstellungen

Mehr

BACKUP Datensicherung unter Linux

BACKUP Datensicherung unter Linux BACKUP Datensicherung unter Linux Von Anwendern Für Anwender: Datensicherung in Theorie und Praxis! Teil 4: Datenrettung Eine Vortragsreihe der Linux User Group Ingolstadt e.v. (LUG IN) in 4 Teilen Die

Mehr

EASYINSTALLER Ⅲ SuSE Linux Installation

EASYINSTALLER Ⅲ SuSE Linux Installation EASYINSTALLER Ⅲ SuSE Linux Installation Seite 1/17 Neuinstallation/Update von Meytonsystemen!!! Die Neuinstallation von MEYTON Software ist relativ einfach durchzuführen. Anhand dieser Beschreibung werden

Mehr

Schäfer: Root-Server. Copyright (C) Open Source Press

Schäfer: Root-Server. Copyright (C) Open Source Press Schäfer: Root-Server Stefan Schäfer Root Server einrichten und absichern Alle in diesem Buch enthaltenen Programme, Darstellungen und Informationen wurden nach bestem Wissen erstellt. Dennoch sind Fehler

Mehr

Linux-HA-Cluster Heartbeat mit DRBD

Linux-HA-Cluster Heartbeat mit DRBD Linux-HA-Cluster Heartbeat mit DRBD Thomas Röhl 01. Oktober 2004 Inhalt Was ist ein HA-Cluster? Vorbereiten des Projekts Hardware Software Allgemeiner Aufbau des Clusters Installation von DRBD Installation

Mehr

Virtualisierung mit Virtualbox

Virtualisierung mit Virtualbox Virtualisierung mit Virtualbox Dies ist kein Howto im herkömmlichen Sinne. Genaue Anleitungen für Virtualbox gibt es im Intenet genug. Zu empfehlen ist auch das jeweils aktuelle Handbuch von Virtualbox

Mehr

Kurzanleitung. MEYTON Migrationstool. 1 Von 16

Kurzanleitung. MEYTON Migrationstool. 1 Von 16 Kurzanleitung MEYTON Migrationstool 1 Von 16 Inhaltsverzeichnis Sinn und Zweck des Migrationsprogramms...3 Die LIVE C D...3 START...3 Erste Schritte...4 Login...4 Einleitung...5 Die Bedienung...5 Das Hauptmenü...6

Mehr

Linux & Security. Andreas Haumer xs+s. Einsatz von Linux in sicherheitsrelevanten Umgebungen

Linux & Security. Andreas Haumer xs+s. Einsatz von Linux in sicherheitsrelevanten Umgebungen Linux & Security Andreas Haumer xs+s Einsatz von Linux in sicherheitsrelevanten Umgebungen Einführung Netzwerksicherheit wichtiger denn je Unternehmenskritische IT Infrastruktur Abhängigkeit von E Services

Mehr

2. Braunschweiger Linux-Tage. Vortrag über RAID. von. Thomas King. http://www.t-king.de/linux/raid1.html. 2. Braunschweiger Linux-Tage Seite 1/16

2. Braunschweiger Linux-Tage. Vortrag über RAID. von. Thomas King. http://www.t-king.de/linux/raid1.html. 2. Braunschweiger Linux-Tage Seite 1/16 2. Braunschweiger Linux-Tage Vortrag über RAID von Thomas King http://www.t-king.de/linux/raid1.html 2. Braunschweiger Linux-Tage Seite 1/16 Übersicht: 1. Was ist RAID? 1.1. Wo wurde RAID entwickelt? 1.2.

Mehr

GNU/Linux Eine Einführung Jan Tobias Mühlberg. Die Idee

GNU/Linux Eine Einführung Jan Tobias Mühlberg. Die Idee Die Idee Jede Sache, die dadurch, daß man sie weitergibt nicht verloren geht, wird nicht auf richtige Weise besessen, wenn man sie nur besitzt, aber nicht weitergibt St. Augustinus, De Doctrina Christiana,

Mehr

Laufwerke unter Linux - Festplatten - - USB Sticks - September 2010 Oliver Werner Linuxgrundlagen 1

Laufwerke unter Linux - Festplatten - - USB Sticks - September 2010 Oliver Werner Linuxgrundlagen 1 Laufwerke unter Linux - Festplatten - - USB Sticks - September 2010 Oliver Werner Linuxgrundlagen 1 Wie wird auf Festplatten zugegriffen? Es gibt nur einen Verzeichnisbaum, siehe Verzeichnisse Es gibt

Mehr

Diese Anleitung funktioniert ab Kanotix 2005/04 (für altere Versionen(nicht empfohlen!) bitte dort schauen: Grundinstallation )

Diese Anleitung funktioniert ab Kanotix 2005/04 (für altere Versionen(nicht empfohlen!) bitte dort schauen: Grundinstallation ) Grundsätzliches Es ist erlaubt, dieses Dokument zu kopieren, zu vertreiben und/oder zu ändern gemäß den Bedingungen der GNU Free Documentation Licence, Version 1.1. http://www.gnu.org/licenses/licenses.html#fdl

Mehr

8 Network File System einrichten

8 Network File System einrichten 155 8 Network File System einrichten Um Clients ganze Verzeichnisse von Servern zum Lesen oder Lesen und Schreiben zur Verfügung zu stellen, benutzt man im Unix-Umfeld und generell in heterogenen Umgebungen

Mehr

Dokumentation Schulprojekt: Samba als Serverdienst

Dokumentation Schulprojekt: Samba als Serverdienst Dokumentation Schulprojekt: Samba als Serverdienst Sandra Schreiner und Sascha Lenhart 20. September 2007 Inhaltsverzeichnis 1 Einleitung 3 1.1 Projektbeschreibung.............................. 3 1.2 Projektziele...................................

Mehr

Lokales Storage Teil 1

Lokales Storage Teil 1 Lokales Storage Teil 1 Zinching Dang 08. Juli 2015 1 Lokales Storage im Allgemeinen Lokales Storage im Allgemeinen Datenträger, die direkt am Host angeschlossen sind Anbindung über verschiedene Bus-Systeme

Mehr

GNU/Linux Zoltan Jany / Malte Bublitz 17. Juni 2014

GNU/Linux Zoltan Jany / Malte Bublitz 17. Juni 2014 GNU/Linux Zoltan Jany / Malte Bublitz 17. Juni 2014 Historie GNU/Linux Jany/Bublitz 2/41 K. Tomphson/D. Ritchie Unix als Industriestandard Betriebssystem Programmiersprache C 1969: Unix/C GNU/Linux Jany/Bublitz

Mehr

Installationshinweise Linux Kubuntu 9.04 bei Verwendung des PC-Wächter

Installationshinweise Linux Kubuntu 9.04 bei Verwendung des PC-Wächter Dr. Kaiser Systemhaus GmbH Köpenicker Straße 325 12555 Berlin Telefon: (0 30) 65 76 22 36 Telefax: (0 30) 65 76 22 38 E-Mail: info@dr-kaiser.de Internet: www.dr-kaiser.de Zielstellung: Installationshinweise

Mehr

Securepoint Security Systems

Securepoint Security Systems HowTo: Virtuelle Maschine in VMware für eine Securepoint Firewall einrichten Securepoint Security Systems Version 2007nx Release 3 Inhalt 1 VMware Server Console installieren... 4 2 VMware Server Console

Mehr

Informationen zu den neuen Debian GNU/Linux-Clients im Institut Mathematik, Universität Paderborn

Informationen zu den neuen Debian GNU/Linux-Clients im Institut Mathematik, Universität Paderborn Informationen zu den neuen Debian GNU/Linux-Clients im Institut Mathematik, Universität Paderborn Der Rechnerbetrieb Mathematik hat die Installation der bestehenden Linux-Clients von Debian GNU/Linux Version

Mehr

Arbeiten mit einer Live-DVD

Arbeiten mit einer Live-DVD Arbeiten mit einer Live-DVD Seminarix based on sidux (http://www.seminarix.org) Mit Seminarix based on sidux unternehmen die Autoren dieses Booklets den Versuch, für den Ausbildungsalltag brauchbare freie

Mehr

Linux Installation Party

Linux Installation Party Installation Party powered by FaRaFIN and Netz39 e. V. Alexander Dahl aka LeSpocky http://www.netz39.de/ 2013-04-17 Alexander Dahl (alex@netz39.de) Linux Installation Party 2013-04-17 1 / 13 Geschichte

Mehr

Installation unter LINUX mit PostgreSQL DB

Installation unter LINUX mit PostgreSQL DB Installation unter LINUX mit PostgreSQL DB Inhaltsverzeichnis 1. Installation und Konfiguration der PostgreSQL Datenbank... 3 2. Installation von Intrexx Xtreme 4.5... 5 Schreibkonventionen In diesem Handbuch

Mehr

> Soft.ZIV. Soft.ZIV Zentrales Dateisystem des ZIV für die Softwareverteilung

> Soft.ZIV. Soft.ZIV Zentrales Dateisystem des ZIV für die Softwareverteilung > Soft.ZIV Soft.ZIV Zentrales Dateisystem des ZIV für die Softwareverteilung Inhaltsverzeichnis Hersteller, Produkte, Versionen - Organisation von Soft.ZIV... 3 Viele Wege führen zur CD-ROM - Zugriff auf

Mehr

Städtisches Gymnasium Ahlen Linux Workshop. am 1.4.2006. Entstehung von Linux Philosophie der Entwicklung Architektur Distributionen Besonderheiten

Städtisches Gymnasium Ahlen Linux Workshop. am 1.4.2006. Entstehung von Linux Philosophie der Entwicklung Architektur Distributionen Besonderheiten am 1.4.2006 Entstehung von Linux Philosophie der Entwicklung Architektur Distributionen Besonderheiten 1 Wie alles begann... Von: torvalds@klaava.helsinki.fi (Linus Benedict Torvalds) Newsgroups: comp.os.minix

Mehr

Betriebssystem Linux - 1 -

Betriebssystem Linux - 1 - - 1 - Manche Menschen können sich nicht vorstellen, dass auf einem Computer etwas anderes installiert sein könnte, als Windows. Dabei gibt es eine große Zahl an sehr unterschiedlichen Betriebssystemen.

Mehr

Computer & GNU/Linux Einführung Teil 1

Computer & GNU/Linux Einführung Teil 1 Inst. für Informatik [IFI] Computer & GNU/Linux EinführungTeil 1 Simon Haller, Sebastian Stab 1/22 Computer & GNU/Linux Einführung Teil 1 Simon Haller, Sebastian Stabinger, Benjamin Winder Inst. für Informatik

Mehr

Kapitel 6,»Objektorientierte Programmierung«, widmet sich der objektorientierten Programmierung mit Python.

Kapitel 6,»Objektorientierte Programmierung«, widmet sich der objektorientierten Programmierung mit Python. 1.3 Aufbau des Buchs lichkeiten offen. Auf die Unterschiede der beiden Versionen gehe ich besonders ein, sodass ein späterer Umstieg von der einen zur anderen Version leichtfällt. Erste Zusammenhänge werden

Mehr

http://www.cis.upenn.edu/~bcpierce/unison/download/stable/unison- 2.9.1/

http://www.cis.upenn.edu/~bcpierce/unison/download/stable/unison- 2.9.1/ Einführung Was ist Unison? Unison ist ein Dateisynchronisationsprogramm für Windows und Unix. Es teilt sich viele Funktionen mit anderen Programmen, wie z.b. CVS und rsync. Folgend einige Vorteile des

Mehr

Software RAID oder LVM auf einem Suse Linux System aufsetzen

Software RAID oder LVM auf einem Suse Linux System aufsetzen Software RAID oder LVM auf einem Suse Linux System aufsetzen Das Software RAID Wir gehen hier nun von einer Neuinstallation aus. Hierbei haben wir zwei Festplatten im System, die ausschließlich nur für

Mehr

Windows 7 vernetzen. Windows 7 nutzt für die Freigabe von Ordnern über die Heimnetzgruppe sogenannte Bibliotheken. Dabei handelt.

Windows 7 vernetzen. Windows 7 nutzt für die Freigabe von Ordnern über die Heimnetzgruppe sogenannte Bibliotheken. Dabei handelt. Windows 7 verfügt über die neue Funktion Heimnetzgruppe. Damit lassen sich Dateien und Ordner zwischen Rechnern austauschen. Auf den Rechnern kann Windows XP, Vista und 7 installiert sein. Die mit Windows

Mehr

Die Geschichte von Linux

Die Geschichte von Linux Die Geschichte von Linux Erstellt durch: Benedikt Trefzer Datum: 20.2.2007 Zeittafeln und Referenzen siehe: http://www.a2x.ch/vortraege/linux_zeittafeln.pdf Unix Stammbaum Wikimedia Commons Bestandteile

Mehr

Linux Desaster Recovery. Kai Dupke, probusiness AG

Linux Desaster Recovery. Kai Dupke, probusiness AG Linux Desaster Recovery Kai Dupke, probusiness AG Agenda Vorstellung Problemstellung Desaster Recovery Verfahren Linux & Desaster Recovery Lösungen - Kommerziell & Open Source Enterprise Desaster Recovery

Mehr

I Grundlegende Internetdienste einrichten 9

I Grundlegende Internetdienste einrichten 9 Inhaltsverzeichnis I Grundlegende Internetdienste einrichten 9 1 DHCP Netzwerkkonfiguration zentral 10 1.1 Das DHCP-Protokoll und seine Einsatzmöglichkeiten......... 10 1.1.1 Einsatzmöglichkeiten......................

Mehr

Benutzerhandbuch / Installationsanweisung

Benutzerhandbuch / Installationsanweisung Das innovative Notfall-Alarm-System für medizinische Einrichtungen Benutzerhandbuch / Installationsanweisung 1. Einleitung... 1.1 Allgemeine Hinweise zur Installation... 3 1.2 Technische Voraussetzungen...

Mehr

Linux Desaster Recovery

Linux Desaster Recovery Linux Desaster Recovery Schlomo Schapiro Senior Consultant sschapiro@probusiness.de 05.04.2005 Agenda Vorstellung Problemstellung Desaster Recovery Verfahren Linux & Desaster Recovery Lösungen - Kommerziell

Mehr

Installationsanleitung Tivoli Storage Manager für Linux

Installationsanleitung Tivoli Storage Manager für Linux 11. März 2009, Version 1.0 Installationsanleitung für Linux Verwaltungsdirektion Informatikdienste Installationsanleitung für Linux Inhaltsverzeichnis...1 Installation... 1 Voraussetzungen...1 Ablauf der

Mehr

Betriebssysteme WS 2012/13 Peter Klingebiel, DVZ. Zusammenfassung Kapitel 4 - Datenträger/Dateiverwaltung

Betriebssysteme WS 2012/13 Peter Klingebiel, DVZ. Zusammenfassung Kapitel 4 - Datenträger/Dateiverwaltung Betriebssysteme WS 2012/13 Peter Klingebiel, DVZ Zusammenfassung Kapitel 4 - Datenträger/Dateiverwaltung Zusammenfassung Kapitel 4 Dateiverwaltung 1 Datei logisch zusammengehörende Daten i.d.r. permanent

Mehr

Grundlagen Linux. Grundlagen Linux. Axel Pemmann. 08. Februar 2005

Grundlagen Linux. Grundlagen Linux. Axel Pemmann. 08. Februar 2005 Grundlagen Linux Axel Pemmann 08. Februar 2005 1 / 25 1 Inhalt Inhalte des ersten Tages 2 Der Einstieg Distributionen Philosopie Eigenschaften Eigenschaften 3 Installation von Linux Vorbereitungen: Hard-

Mehr

Baqué und Lauter GmbH 02255 / 950300 Falkenweg 3 Fax 02255 / 950303 53881 Euskirchen

Baqué und Lauter GmbH 02255 / 950300 Falkenweg 3 Fax 02255 / 950303 53881 Euskirchen Baqué und Lauter GmbH 02255 / 950300 Falkenweg 3 Fax 02255 / 950303 53881 Euskirchen Anleitung für die Installation ein Netzwerks unter Windows 95,98,Me,2000. Netzwerke können auf sehr unterschiedliche

Mehr

Aufbau einer Testumgebung mit VMware Server

Aufbau einer Testumgebung mit VMware Server Aufbau einer Testumgebung mit VMware Server 1. Download des kostenlosen VMware Servers / Registrierung... 2 2. Installation der Software... 2 2.1 VMware Server Windows client package... 3 3. Einrichten

Mehr

Fileserver mit OSL Storage Cluster Hochverfügbare NFS und Samba Server in heterogenen Netzwerkumgebungen. 11.10.2007 Christian Schmidt

Fileserver mit OSL Storage Cluster Hochverfügbare NFS und Samba Server in heterogenen Netzwerkumgebungen. 11.10.2007 Christian Schmidt Fileserver mit OSL Storage Cluster Hochverfügbare NFS und Samba Server in heterogenen Netzwerkumgebungen 11.10.2007 Christian Schmidt Agenda Ausgangssituation am Beispiel der IBB Einführung in NFS und

Mehr

Dateisystem 1, Suchpfad, Befehlstypen

Dateisystem 1, Suchpfad, Befehlstypen Dateisystem 1, Suchpfad, Befehlstypen Linux-Kurs der Unix-AG Andreas Teuchert 17. Juni 2014 Was ist ein Dateisystem? Verwaltung von Dateien auf Datenträgern Beispiele: EXT3, EXT4, FAT, NTFS unter Linux

Mehr

Z- Software Informationen Modularer Aufbau und Einsatzmöglichkeiten

Z- Software Informationen Modularer Aufbau und Einsatzmöglichkeiten Z- Software Informationen Modularer Aufbau und Einsatzmöglichkeiten Z- DBackup Freeware für den Privatgebrauch Die hier angebotenen Freeware Programme (Standard- Versionen) sind Freeware für den Privatgebrauch,

Mehr

DESKTOP. Internal Drive Installationsanleitung

DESKTOP. Internal Drive Installationsanleitung DESKTOP Internal Drive Installationsanleitung Installationsanleitung für Seagate Desktop 2013 Seagate Technology LLC. Alle Rechte vorbehalten. Seagate, Seagate Technology, das Wave-Logo und FreeAgent sind

Mehr

Installation Guide. Installation Guide. Installationsanleitung für die anaptecs JEAF Plattform. Version 1.2 Letzte Änderung 05.

Installation Guide. Installation Guide. Installationsanleitung für die anaptecs JEAF Plattform. Version 1.2 Letzte Änderung 05. Installation Guide Thema Version 1.2 Letzte Änderung 05. Dezember 2011 Status Installationsanleitung für die anaptecs JEAF Plattform Freigegeben Inhaltsverzeichnis 1 Motivation... 4 1.1 Abgrenzungen...

Mehr

WIE-SERVICE24. Konfiguration Ihres Zugangs. VPN Portal. WIE-SERVICE24.com. Technical Notes. 2011-12-03_WIESERVICE24_TN1.doc Stand: 12/2011 (Rev.

WIE-SERVICE24. Konfiguration Ihres Zugangs. VPN Portal. WIE-SERVICE24.com. Technical Notes. 2011-12-03_WIESERVICE24_TN1.doc Stand: 12/2011 (Rev. WIE-SERVICE24 Konfiguration Ihres Zugangs VPN Portal WIE-SERVICE24.com Technical Notes 2011-12-03_WIESERVICE24_TN1.doc Stand: 12/2011 (Rev. A) Inhalt Inhalt 1 Allgemeines... 3 1.1 Information... 3 1.1

Mehr

Byte-Taxi. Bedienungsanleitung. Seite 1 von 8

Byte-Taxi. Bedienungsanleitung. Seite 1 von 8 Byte-Taxi Bedienungsanleitung Seite 1 von 8 Inhaltsverzeichnis 1. Beschreibung 3 2. Systemvoraussetzungen 4 3. Installationsanleitung 5 4. Bedienung 6 5. Infos & Kontakt 8 Seite 2 von 8 1. Beschreibung

Mehr

Im Original veränderbare Word-Dateien

Im Original veränderbare Word-Dateien Software Im Original veränderbare Word-Dateien Prinzipien der Datenverarbeitung Als Software bezeichnet man alle Programme, die in einer Computeranlage verwendet werden. Dabei unterscheiden wir zwischen

Mehr

Syslogic White Paper Leitfaden zur Erstellung eines korrekten Image (Datenträgerabbild)

Syslogic White Paper Leitfaden zur Erstellung eines korrekten Image (Datenträgerabbild) Syslogic White Paper Leitfaden zur Erstellung eines korrekten Image (Datenträgerabbild) 1. Einleitung 1.1 Bit-Image oder einfache Datensicherung? 1.2 Warum ist ein Image sinnvoll? 1.3 Welche Datenträger

Mehr

UNIX Ein kleiner Ausschnitt

UNIX Ein kleiner Ausschnitt UNIX Ein kleiner Ausschnitt Christian Brüffer brueffer@freebsd.org The FreeBSD Project UNIX p.1/19 Übersicht Was ist UNIX? Die UNIX Philosophie Die Geschichte von UNIX Was man beim Umstieg beachten sollte...

Mehr

18 Windows-Anwendungen auf Linux-PCs

18 Windows-Anwendungen auf Linux-PCs 575 18 Windows-Anwendungen auf Linux-PCs Windows-Anwendungen gelten für viele Anwender und Entscheider als so populär, dass sie sich auch für Windows-Betriebssysteme als Arbeitsumgebung entscheiden. Doch

Mehr

Alexander Schmidt/Andreas Lehr. Windows 7. richtig administrieren. 152 Abbildungen

Alexander Schmidt/Andreas Lehr. Windows 7. richtig administrieren. 152 Abbildungen Alexander Schmidt/Andreas Lehr Windows 7 richtig administrieren 152 Abbildungen Inhaltsverzeichnis 1 Grundlagen, Installation & Rollout 11 1.1 Grundlagen 12 1.1.1 Versionen und Editionen 12 1.1.2 Prüfung

Mehr

Computer & GNU/Linux Einführung Teil 1

Computer & GNU/Linux Einführung Teil 1 Inst. für Informatik [IFI] Computer & GNU/Linux EinführungTeil 1 Simon Haller, Sebastian Stab 1/17 Computer & GNU/Linux Einführung Teil 1 Simon Haller, Sebastian Stabinger, Philipp Zech Inst. für Informatik

Mehr

Anleitung zur Installation der Version 0.6 auf einem Digitainer Linspire MD 6202 mit SkyStar2Karte von André a1k_ratte Pfeiffer (16.Nov.

Anleitung zur Installation der Version 0.6 auf einem Digitainer Linspire MD 6202 mit SkyStar2Karte von André a1k_ratte Pfeiffer (16.Nov. Anleitung zur Installation der Version 0.6 auf einem Digitainer Linspire MD 6202 mit SkyStar2Karte von André a1k_ratte Pfeiffer (16.Nov.2008) computer_hobby@web.de Es wird kein Anspruch auf Vollständigkeit

Mehr

Vernetzung von Linux und Windows

Vernetzung von Linux und Windows Vernetzung von Linux und Windows Rechnern Installation, Konfiguration, Benutzung und Anwendungsbeispiele Referent: Andre Dibowsky andre@dibowsky.net Linux User Group Datteln Vernetzung von Linux und Windows

Mehr

Betriebssysteme K_Kap11C: Diskquota, Raid

Betriebssysteme K_Kap11C: Diskquota, Raid Betriebssysteme K_Kap11C: Diskquota, Raid 1 Diskquota Mehrbenutzer-BS brauchen einen Mechanismus zur Einhaltung der Plattenkontingente (disk quotas) Quota-Tabelle enthält Kontingenteinträge aller Benutzer

Mehr

http://www.nvu-composer.de

http://www.nvu-composer.de Kapitel 16 Seite 1 Ein portabler Web-Editor Wer viel Zeit in eine Website investieren will ist gut beraten, eine professionelle Software für Webdesigner zu beschaffen. Diese Programme sind sehr leistungsfähig,

Mehr

Dateisystem 1, Suchpfad, Befehlstypen

Dateisystem 1, Suchpfad, Befehlstypen Dateisystem 1, Suchpfad, Befehlstypen Linux-Kurs der Unix-AG Benjamin Eberle 8. Januar 2015 Was ist ein Dateisystem? Verwaltung von Dateien auf Datenträgern Beispiele: EXT3, EXT4, FAT, NTFS unter Linux

Mehr

Dokumentation. Servervirtualisierung mit XEN und open SUSE 11.1

Dokumentation. Servervirtualisierung mit XEN und open SUSE 11.1 Dokumentation Servervirtualisierung mit XEN und open SUSE 11.1 Inhalt...1 Partitionierung...1...2 Netzwerkkonfiguration...2 VNC-Server...5 Updates...7 Fernzugriff...7 XEN Hypervisor einrichten...9 Sicherung

Mehr

Leitfaden für die Installation der Videoüberwachung C-MOR

Leitfaden für die Installation der Videoüberwachung C-MOR Dieser Leitfaden zeigt die Installation der C-MOR Videoüberwachung als VM mit der freien Software VirtualBox von Oracle. Die freie VM Version von C-MOR gibt es hier: http://www.c-mor.de/download-vm.php

Mehr

Anleitung Gen2VDR Installationsanleitung für REYCOM. Gen2VDR Installationsanleitung für REYCOM

Anleitung Gen2VDR Installationsanleitung für REYCOM. Gen2VDR Installationsanleitung für REYCOM 1 Gen2VDR Installationsanleitung für REYCOM 2 Anleitung Gen2VDR Installationsanleitung für REYCOM Inhaltsverzeichnis 1 Allgemein... 3 1.1 Systemvoraussetzungen... 3 2 Installation... 4 2.1 Download der

Mehr

Rechnernutzung in der Physik. Betriebssysteme

Rechnernutzung in der Physik. Betriebssysteme Rechnernutzung in der Physik Betriebssysteme 1 Betriebssysteme Anwendungsprogramme Betriebssystem Treiber BIOS Direkter Zugriff von Anwenderprogrammen auf Hardware nur in Ausnahmefällen sinnvoll / möglich:

Mehr

09.06.2003 André Maurer andre@maurer.name www.andre.maurer.name Wirtschaftsinformatik FH 3.5 Fachhochschule Solothurn, Olten

09.06.2003 André Maurer andre@maurer.name www.andre.maurer.name Wirtschaftsinformatik FH 3.5 Fachhochschule Solothurn, Olten Aktuelle Themen der Wirtschaftsinformatik Zusammenfassung 09.06.2003 André Maurer andre@maurer.name www.andre.maurer.name Wirtschaftsinformatik FH 3.5 Fachhochschule Solothurn, Olten 1 Serverseitige Webprogrammierung

Mehr

Vorwort. Was ist so besonders an Linux?

Vorwort. Was ist so besonders an Linux? Vorwort Die erste Version des Linux-Kernels (Versionsnummer 0.01) wurde im September 1991 von Linus Torvalds (Helsinki) ins Internet gestellt. Seither wurde Linux von Tausenden von Programmierern weltweit

Mehr

LUSC Workshopweekend 2008. Verschlüsselung mit Truecrypt

LUSC Workshopweekend 2008. Verschlüsselung mit Truecrypt LUSC Workshopweekend 2008 Verschlüsselung mit Truecrypt Zusammenfassung Teil 1 Was ist Truecrypt? Warum Truecrypt? Was macht die Software? Verschiedene Varianten Anwendungsmöglichkeiten Gundlagen 1, 2

Mehr

I Installation und Erste Schritte 7

I Installation und Erste Schritte 7 Inhaltsverzeichnis I Installation und Erste Schritte 7 1 Allgemeines 8 1.1 Zur Geschichte von UNIX und LINUX................ 8 1.1.1 UNIX-Entwicklung....................... 8 1.1.2 Linux-Entwicklung......................

Mehr

MEMO_MINUTES. Update der grandma2 via USB. Paderborn, 29.06.2012 Kontakt: tech.support@malighting.com

MEMO_MINUTES. Update der grandma2 via USB. Paderborn, 29.06.2012 Kontakt: tech.support@malighting.com MEMO_MINUTES Paderborn, 29.06.2012 Kontakt: tech.support@malighting.com Update der grandma2 via USB Dieses Dokument soll Ihnen helfen, Ihre grandma2 Konsole, grandma2 replay unit oder MA NPU (Network Processing

Mehr

Kopieren einer Windows-Installation auf eine andere Platte

Kopieren einer Windows-Installation auf eine andere Platte Kopieren einer Windows-Installation auf eine andere Platte Für kaum einen Vorhaben gibt es so viele Anleitung im Internet, wie das Kopieren einer bestehenden Windows-Installation auf eine andere Festplatte.

Mehr

Inhaltsverzeichnis. I Linux-Grundlagen 9 INHALTSVERZEICHNIS

Inhaltsverzeichnis. I Linux-Grundlagen 9 INHALTSVERZEICHNIS Inhaltsverzeichnis I Linux-Grundlagen 9 1 Erste Schritte 10 1.1 Lernziele................................ 10 1.2 Anmelden amsystem.......................... 10 1.3 Online-Hilfe verwenden........................

Mehr

Mein eigener Homeserver mit Ubuntu 10.04 LTS

Mein eigener Homeserver mit Ubuntu 10.04 LTS In diesem Tutorial zeige ich ihnen wie sie mittels einer Ubuntu Linux Installation einen eigenen Homeserver für Windows Freigaben aufsetzen (SMB/CIFS). Zunächst zur der von mir verwendeten Software- /Hardwarekombination:

Mehr

Handbuch PCI Treiber-Installation

Handbuch PCI Treiber-Installation Handbuch PCI Treiber-Installation W&T Release 1.0, September 2003 09/2003 by Wiesemann & Theis GmbH Microsoft und Windows sind eingetragene Warenzeichen der Microsoft Corporation Irrtum und Änderung vorbehalten:

Mehr

WINDOWS 95 FÜR VIRTUAL BOX

WINDOWS 95 FÜR VIRTUAL BOX WINDOWS 95 FÜR VIRTUAL BOX Um Windows 95 auf Virtual Box vollständig zum Laufen zu bringen, werden folgende Daten benötigt: Windows 95 Image Windows 95 Bootdiskette Gültiger Windows 95 Schlüssel Universeller

Mehr

7 TCP/IP-Dienste konfigurieren

7 TCP/IP-Dienste konfigurieren 7 TCP/IP-Dienste konfigurieren In diesem Kapitel lernen Sie die Begriffe Ports,Sockets und Connections kennen (LPI 1: 109.1). den Zusammenhang der Ports von TCP/IP-Diensten mit der Datei /etc/services

Mehr

Managed VPSv3 Was ist neu?

Managed VPSv3 Was ist neu? Managed VPSv3 Was ist neu? Copyright 2006 VERIO Europe Seite 1 1 EINFÜHRUNG 3 1.1 Inhalt 3 2 WAS IST NEU? 4 2.1 Speicherplatz 4 2.2 Betriebssystem 4 2.3 Dateisystem 4 2.4 Wichtige Services 5 2.5 Programme

Mehr

Installationsanleitung Tivoli Storage Manager für Mac OS

Installationsanleitung Tivoli Storage Manager für Mac OS 11. März 2009, Version 1.0 Installationsanleitung für Mac OS X Verwaltungsdirektion Informatikdienste Installationsanleitung für Mac OS Inhaltsverzeichnis...1 Installation... 1 Voraussetzungen...1 Version

Mehr

Ronald Wölfel Wolfgang Borkner. mitp-trainingsbuch SuSE Linux Systemadministration

Ronald Wölfel Wolfgang Borkner. mitp-trainingsbuch SuSE Linux Systemadministration Ronald Wölfel Wolfgang Borkner mitp-trainingsbuch SuSE Linux Systemadministration Vorwort I I.I 1.2 I.2.I 1.2.2 I.2.3 I.2.4 i-3 2 2.1 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.5 2.6 2.7 2.7.1 2.7.2 2.7.3

Mehr

Installationsanleitung - Command WorkStation 5.5 mit Fiery Extended Applications 4.1

Installationsanleitung - Command WorkStation 5.5 mit Fiery Extended Applications 4.1 Installationsanleitung - Command WorkStation 5.5 mit Fiery Extended Applications 4.1 Fiery Extended Applications Fiery Extended Applications (FEA) 4.1 ist ein Softwarepaket für Fiery Druckcontroller mit

Mehr

Lokales Storage Teil 1

Lokales Storage Teil 1 Lokales Storage Teil 1 Linux-Kurs der Unix-AG Zinching Dang 08. Juli 2015 Lokales Storage im Allgemeinen Datenträger, die direkt am Host angeschlossen sind Anbindung über verschiedene Bus-Systeme möglich,

Mehr

ZMI Benutzerhandbuch Sophos. Sophos Virenscanner Benutzerhandbuch

ZMI Benutzerhandbuch Sophos. Sophos Virenscanner Benutzerhandbuch ZMI Benutzerhandbuch Sophos Sophos Virenscanner Benutzerhandbuch Version: 1.0 12.07.2007 Herausgeber Zentrum für Medien und IT ANSCHRIFT: HAUS-/ZUSTELLADRESSE: TELEFON: E-MAIL-ADRESSE: Zentrum für Medien

Mehr

Installationsanleitung

Installationsanleitung Installationsanleitung http:// www.pcinspector.de Verzichtserklärung Wir haben unser Bestes getan um sicherzustellen, dass die aufgeführten Installationsanweisungen in korrekter Weise wiedergegeben wurden

Mehr

Verfügbarkeit von Applikationen und Failover Szenarien. Winfried Wojtenek. wojtenek@mac.com

Verfügbarkeit von Applikationen und Failover Szenarien. Winfried Wojtenek. wojtenek@mac.com Verfügbarkeit von Applikationen und Failover Szenarien Winfried Wojtenek wojtenek@mac.com Verfügbarkeit % Tage Stunden Minuten 99.000 3 16 36 99.500 1 20 48 99.900 0 9 46 99.990 0 0 53 99.999 0 0 5 Tabelle

Mehr

4 l Springer Vieweg. Keine Angst. vor Linux/Unix. Unix-Anwender. Ein Lehrbuch für Linux- und. Christine Wolfinger

4 l Springer Vieweg. Keine Angst. vor Linux/Unix. Unix-Anwender. Ein Lehrbuch für Linux- und. Christine Wolfinger Christine Wolfinger Keine Angst vor Linux/Unix Ein Lehrbuch für Linux- und Unix-Anwender 11., vollständig überarbeitete Auflage 4 l Springer Vieweg Keine Angst vor Linux/Unix Ein Lehrbuch für Ein- und

Mehr

Xp-Iso-Builder Anleitung

Xp-Iso-Builder Anleitung Xp-Iso-Builder Anleitung Willkommen bei der xp-iso-builder Anleitung, hier werden Ihnen die einzelnen Schritte vom aussuchen der Quell-CD bis hin zur Fertigstellung der benutzerdefinierten XP-CD einzeln

Mehr

Betriebssysteme Kap A: Grundlagen

Betriebssysteme Kap A: Grundlagen Betriebssysteme Kap A: Grundlagen 1 Betriebssystem Definition DIN 44300 Die Programme eines digitalen Rechensystems, die zusammen mit den Eigenschaften dieser Rechenanlage die Basis der möglichen Betriebsarten

Mehr

Einführung in die Informationstechnik

Einführung in die Informationstechnik Heute Einführung in die Informationstechnik ato III Einführung in Betriebssysteme: GUI, Windows Graphische Benutzungsschnittstellen Historisches Aufgaben Aufbau Microsoft Windows Eigenschaften Dateisystem

Mehr