Betriebssysteme I - WS 2019/20 Prof. Dr. Dirk Müller
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Überblick ● Motivation ● Kernel, Distributionen, Anwendungen – Editoren ● Desktop-Umgebungen ● Dokumentation und Hilfe ● Philosophie von Linux – 10 Gebote für Linux-Nutzer ● wichtige Kommandos ● Dateiabstraktion ● Shell ● Ordnerstruktur ● Zusammenfassung Dirk Müller: Betriebssysteme I WS 2019/20 2/29
Motivation ● Windows kennt jeder, aber Linux ist bereits führend bei Servern und gewinnt auch Marktanteile auf dem Desktop. ● bekanntestes Open-Source-Projekt weltweit ● Mehrbenutzer-Multitasking-BS, UNIX-artig – monolithischer Kernel mit zuladbaren Kernel-Modulen ● Initiator und Benevolent Dictator for Life (BDFL, dt. in etwa „wohlwollender Diktator auf Lebenszeit“): finnischer Programmierer Linus Torvalds seit 1991 ● Steuerung über Shell, aber auch mächtige GUIs verfügbar ● für Plattformen von Handy bis Großrechner verfügbar – DEC Alpha, ARC, ARM, AVR32, Blackfin, C6x, ETRAX CRIS, FR-V, H8/300, Hexagon, Itanium, M32R, m68k, META, MicroBlaze, MIPS, mn10300, Nios II, OpenRISC, PA-RISC, PowerPC, s390, S+core, SuperH, SPARC, TILE64, Unicore32, x86, x86-64, Xtensa, z/OS Dirk Müller: Betriebssysteme I WS 2019/20 3/29
Ein bescheidenes Posting... From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: What would you like to see most in minix? Summary: small poll for my new operating system also kürzlich Message-ID: Geburtstag: Date: 25 Aug 91 20:57:08 GMT 28 Jahre Linux Organization: University of Helsinki Hello everybody out there using minix - I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I’d like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things). I’ve currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I’ll get something practical within a few months, and I’d like to know what features most people would want. Any suggestions are welcome, but I won’t promise I’ll implement them :-) Linus (torvalds@kruuna.helsinki.fi) PS. Yes - it’s free of any minix code, and it has a multi-threaded fs. It is NOT protable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that’s all I have :-(. Dirk Müller: Betriebssysteme I WS 2019/20 4/29
...wird der Start einer großen Karriere. Datum Version kompr. Größe [kB] Größe in LoC 17.09.1991 0.01 230 8.413 13.03.1994 1.0.0 1.259 170.581 09.06.1996 2.0.0 2.015 716.119 09.10.2008 2.6.27 63.721 9.709.868 30.09.2012 3.6.0 ca. 78.500 15.868.036 07.09.2016 4.7.3 ca. 86.000 21.712.846 12.08.2018 4.18 101.782 25.280.736 15.09.2019 5.3 xxx xxx 2025 8? 200.000? 40 Mio. ? Zählen der Zeilen: find -type f -not -regex '\./\.git.*'|xargs cat|wc -l neueste Versionen stets unter http://kernel.org/ zu finden Dirk Müller: Betriebssysteme I WS 2019/20 5/29
Wachstum des Linux-Kernels Quelle: https://www.linuxcounter.net/statistics/kernel, Download am 03.09.2018 Dirk Müller: Betriebssysteme I WS 2019/20 6/29
Marktstudie: Betriebssysteme auf den Computern der Top-500-Liste 100,0 % Linux seit 2017 Quelle: https://commons.wikimedia.org/wiki/File%3AOperating_systems_used_on_top_500_supercomputers.svg By Benedikt.Seidl (Eigenes Werk (own work) / source top500.org) [Public domain], via Wikimedia Commons Dirk Müller: Betriebssysteme I WS 2019/20 7/29
Kernel und passende Unterstützungssoftware ● Linux i. e. S. ist nur der Kernel. ● großer Fundus an Unterstützungssoftware – Kommandointerpreter (Shell): z. B. bash, ksh, csh, tcsh, dash, zsh – GNU Core Utilities – Dateiwerkzeuge (z. B. ls, cp, rm, touch, df) – Textwerkzeuge (z. B. head, wc, sort, uniq) – Shell-Werkzeuge (z. B. date, who, expr, test, du) – Entwicklungswerkzeuge: gcc (GNU Compiler Collection) – grafische Basisschnittstelle: X Window System seit 2008 Alternative: – Fenstermanager Anzeige-Server Wayland [5] – Desktop-Umgebungen ● Gesamtsystem mit korrekter Bezeichnung GNU/Linux – Namensstreit, mit Kurzform Linux Beiträge von Richard Stallman nicht ausreichend gewürdigt Dirk Müller: Betriebssysteme I WS 2019/20 8/29
Distributionen ● sind Zusammenstellungen des Kernels, von Applikationen und Werkzeugen zur Konfiguration, die ein lauffähiges Gesamtsystem erzeugen ● reduzieren den Konfigurations- und Updateaufwand beträchtlich (Standardeinstellungen, Paketmanagement) ● unterscheiden sich in vielen Einzelaspekten: – hauptsächliches Einsatzziel Desktoprechner, Server, eingebettetes System – Einstellung zu proprietären Komponenten – Sprachanpassung (Lokalisierung) ● Die Frage nach der besten Distribution führt gemeinhin zu Meinungsverschiedenheiten. Dirk Müller: Betriebssysteme I WS 2019/20 9/29
Distributionen: Auswahl Distribution Vorteil Nachteil Gentoo System wird selbst kompiliert, rolling release Fedora freies Linux der Firma Red Hat openSUSE freies Linux der Firma SUSE Linux GmbH meist etwas veraltete Debian frei und stabil Versionen Ubuntu anfängerfreundlich zu starke Win-Nachahmung Knoppix Live-System Mint gute Integration proprietärer Komponenten mehr unter [2] Dirk Müller: Betriebssysteme I WS 2019/20 10/29
Einige wichtige Anwendungen ● Textverarbeitung: OpenOffice, LibreOffice, LaTeX ● Kinoabend: MPlayer, VLC, GNOME Videos ● Bildbearbeitung: GIMP, ImageMagick ● Vektorgrafik: xfig, Inkscape ● Browsen im WWW: Firefox, Opera ● Notensatz: LilyPond ● Funktionsgraphen plotten: Gnuplot ● Dateien editieren: vi, emacs Dirk Müller: Betriebssysteme I WS 2019/20 11/29
Editoren unter Linux ● vi – auf jedem UNIX/Linux-System vorhanden – läuft im Terminal: Tastaturbedienung – gewöhnungsbedürftig, nicht intuitiv – VIM und Elvis als bekannte Clones ● emacs – anderes Extrem, kann alles: Mail lesen, browsen, spielen – sehr flexibel, aber schwierig zu konfigurieren (mittels Lisp) – grundlegende Edit-Kommandos entsprechen denen der Bash ● interner Editor des Midnight Commander – Nachbau des Kult-Programms Norton Commander (MS-DOS) – goldener Mittelweg, nicht zu simpel und nicht zu überladen – intuitive Bedienung Dirk Müller: Betriebssysteme I WS 2019/20 12/29
Vi-Zustandsdiagramm Einfügemodus normales Editieren i,a,o,c,s,... vi Befehlsmodus ZZ : komplexe Befehle wie Suchen und Kommandozeilen- Ersetzen modus x,q,q! + VIM hat sogar 6 Modi. – auch für Stapelverarbeitung und angeblich benutzerfreundlicher Dirk Müller: Betriebssysteme I WS 2019/20 13/29
Emacs “[...]I use Emacs, which might be thought of as a thermonu- clear word processor. It was created by Richard Stallman; enough said. It is written in Lisp, which is the only computer language that is beautiful. It is colossal, and yet it only edits straight ASCII text files, which is to say, no fonts, no boldface, no underlining. If you are a professional writer i.e., if some- one else is getting paid to worry about how your words are formatted and printed, Emacs outshines all other editing software in approximately the same way that the noonday sun does the stars. It is not just bigger and brighter; it simply makes everything else vanish.[...]” Neal Stephenson 1999 [1] Dirk Müller: Betriebssysteme I WS 2019/20 14/29
Desktop-Umgebungen ● K Desktop Environment (KDE) ● GNOME – MATE – Cinnamon ● XFCE, LXDE ● Unity (von Ubuntu) – ab Ubuntu 17.10 wieder GNOME [5] Deltas ● Tastaturbedienbarkeit ● Look & Feel Quelle: Kulandru mor, Download am 8.9.2016 https://commons.wikimedia.org/wiki/File%3APopular_free_desktop_environments.svg ● Umfang (Startzeit, Ressourcenbedarf) Dirk Müller: Betriebssysteme I WS 2019/20 15/29
Dokumentation und Hilfe ● man zeigt die zugehörige Handbuchseite ● info ebenso, aber mit Emacs-Steuerung – moderneres System mit Hyperlinks, häufig ausführlicher ● apropos zeigt zum Suchbegriff gehörige Handbuchseiten (sucht auch in Kurzbeschreibungen) – entspricht: man -k – ggf. mit mandb vorher den Index erstellen/aktualisieren ● whatis sucht nach Handbuchseite zu diesem Begriff und zeigt die Kurzbeschreibung dazu an – entspricht: man -f ● --help liefert Erklärungen zu einem Kommando ● im WWW häufig Vorschläge zur Lösung – auch zunächst exotisch erscheinender – Probleme zu finden Dirk Müller: Betriebssysteme I WS 2019/20 16/29
Handbuch ● man man zeigt, dass Handbuch in Kategorien eingeteilt ist 1 Ausführbare Programme oder Shell-Befehle 2 Systemaufrufe (Kernel-Funktionen) man –-locale=EN ls 3 Bibliotheksaufrufe (Funktionen in Programmbibliotheken) erzwingt englisches 4 Spezielle Dateien (gewöhnlich in /dev) Originalhandbuch zu ls 5 Dateiformate und Konventionen, z. B. /etc/passwd 6 Spiele 7 Verschiedenes (einschließlich Makropaketen und Konventionen), z. B. man(7), groff(7) 8 Befehle für die Systemverwaltung (in der Regel nur für root) 9 Kernel-Routinen [nicht Standard] ● typische Abschnittsnamen in einer Seite – BEZEICHNUNG, ÜBERSICHT, KONFIGURATION, BESCHREIBUNG, OPTIONEN, EXIT-STATUS, RÜCKGABEWERT, FEHLER, UMGEBUNGSVARIABLEN, DATEIEN, VERSIONEN, KONFORM ZU, ANMERKUNGEN, BEISPIEL, AUTOREN und SIEHE AUCH ● manchmal humorige Bemerkungen anzutreffen – man 3 gets – man rtfm Dirk Müller: Betriebssysteme I WS 2019/20 17/29
Philosophie von UNIX-artigen BS 1. Klein ist schön. 2. Gestalte jedes Programm so, dass es eine Aufgabe gut erledigt. 3. Erzeuge so bald wie möglich einen funktionierenden Prototyp. 4. Bevorzuge Portierbarkeit vor Effizienz. 5. Speichere Daten in einfachen Textdateien. 6. Verwende die Hebelwirkung der Software zu deinem Vorteil. 7. Verwende Shell-Skripte, um die Hebelwirkung und die Portierbarkeit zu verbessern. 8. Vermeide Benutzeroberflächen, die den Benutzer fesseln. 9. Mache jedes Programm zu einem Filter. Quelle: [3] Dirk Müller: Betriebssysteme I WS 2019/20 18/29
Die 10 Gebote für Linux-Nutzer and the ROOT user did speak 1.Thou shalt not log in as root. Use “sudo” or “su -” for administrative tasks. Quelle: [4] 2.Thou shalt use the package manager when possible. Sometimes installing from source code can’t be avoided, but when you use your distro’s package manager to install software, you can also use it to update and remove it. This is one of the main strengths of Linux. 3.Thou shalt be a part of the community. Freely give what you have received for free. Offer help and advice whenever you can. 4.Thou shalt read documentation and man pages. Always read the documentation. The people who wrote the software tried to anticipate your questions, and provided answers before you asked. 5.Thou shalt use the available support system. Switching to Linux can be tough. It can be frustrating, but there are a lot of people out there who want to help you. Let them. 6.Thou shalt search. In most cases, your question or problem has already been addressed. Try to find the answers that are already out there before asking someone to provide a new one. 7.Thou shalt explore. Linux opens a whole new world of options and possibilities. Try everything you can. 8.Thou shalt use the command line, or at least try it. It is a very powerful tool and is not all that hard to use. Really! 9.Thou shalt not try to recreate Windows. Linux is not meant to be a clone of Windows. It’s different. Embrace and appreciate the differences. 10.Thou shalt not give up. I tried several distributions before I found one I liked. I still try other distros from time to time. I also tried several different programs to serve one purpose before settling on what I use now (amarok, xmms, beep, exaile for music – azureus, ktorrent, deluge for bittorrents). If you don’t like the defaults, remember that you can change almost everything to suit you. Dirk Müller: Betriebssysteme I WS 2019/20 19/29
Standardisierung ● POSIX: Portable Operating System Interface ● standardisierte API, also Schnittstelle für Anwendungssoftware zum Betriebssystem mit 4 Teilen – Basis-Definitionen – System-Schnittstelle (Systemrufe) – Kommandozeileninterpreter und Hilfsprogramme – Erklärungen Spezifikation sh orientiert ● internationale Norm: ISO/IEC/IEEE 9945 sich an ksh (Korn-Shell) ● Beginn: IEEE1003.1 (1990) ● aktuell: IEEE Std 1003.1-2017 – https://pubs.opengroup.org/onlinepubs/9699919799/ ● zertifiziert: macOS, Solaris, HP-UX, Integrity, QNX Neutrino etc. ● weitgehend konform: Linux, PikeOS, Android etc. Dirk Müller: Betriebssysteme I WS 2019/20 20/29
22 wichtige Kommandos (1/2) Kommando Zweck(e) ls Liste von Dateien (im Verzeichnis) anzeigen; list pwd aktuellen Verzeichnisname anzeigen; print name of working dir cd Wechsel des aktuellen Verzeichnisses; change directory cp Kopieren von Dateien; copy mv Verschieben & Umbenennen von Dateien/Verz.; move rm Löschen von Dateien/Verzeichnisbäumen; remove Änderung von Zugriffs-/Änderungszeit von touch Dateien/Verzeichnissen & Anlegen von leeren Dateien mkdir Anlegen neuer Verzeichnisse; make directory rmdir Löschen leerer Verzeichnisse; remove directory Ändern der Zugriffsrechte für Dateien/Verzeichnisbaum; chmod change mode less seitenweise Ausgabe von Dateien; verbessertes more Dirk Müller: Betriebssysteme I WS 2019/20 21/29
22 wichtige Kommandos (2/2) Kommando Zweck cat Datei(en) verketten und ausgeben; concatenate who Anzeige der angemeldeten Benutzer find Suche nach Dateien/Verzeichnissen im Dateisystem Ausgabe von Zeilen in Dateien, die einem Muster folgen; global grep search for a regular expression and print out matched lines man Anzeige von Handbuchseiten; manual ps Ausgabe von Daten zu Prozessen; process status top Echtzeit-Auflistung der Prozesse CPU-Last; table of processes kill Senden von Signalen an Prozesse du Anzeige Speicherbedarf von Dateien/Verzeichnissen; disk usage df Anzeige des belegten/freien Speichers im Dateisystem; disk free ln Anlegen eines Links (Verweises) auf Dateien; link Dirk Müller: Betriebssysteme I WS 2019/20 22/29
„Alles ist eine Datei.“ Geräteunabhängigkeit: Dateisystem über verschiedene Geräte hinweg (auch: Hauptspeicher, Soundkarte, etc.) Abk. Dateityp Beschreibung Beispiel Texte, Bilder, Programme, - normale, reguläre Datei /usr/bin/ncal etc. d Verzeichnis Container für Dateien /usr Verweis auf eine andere l symbolischer Link /dev/stderr Datei zeichenorientiertes Gerät, das zeichenweise c /dev/pty0 Gerät beschrieben wird Gerät, das blockweise b blockorientiertes Gerät /dev/sda1 beschrieben wird FIFO-Puffer für die p benannte Pipe Kommunikation zwischen /run/dmeventd-client 2 Prozessen s Socket Kommunikationsendpunkt /tmp/.X11-unix/X0 Dirk Müller: Betriebssysteme I WS 2019/20 23/29
Shell ● normaler Nutzerprozess, der kontinuierlich – Kommandos einliest, – diese ausführt und – ggf. Ausgaben des Programms am Bildschirm darstellt ● viele verschiedene: csh, tcsh, ksh, dash, zsh, bash ● Eine Folge von Shell-Kommandos in einer ausführbaren Datei mit dem Suffix .sh abgelegt nennt man Shell-Skript. ● auch Konstrukte für Verzweigungen, Schleifen und Funktionsaufrufe enthalten => Programmiersprache ● mächtiges Werkzeug Dirk Müller: Betriebssysteme I WS 2019/20 24/29
Einfaches Shell-Skript #!/bin/bash Angabe, dass es # get filename ein Shell-Skript echo -n "Enter File Name : " ist (Magic Number) read fileName und welche Shell zu nutzen ist # make sure that file exists for reading if [ ! -f $fileName ]; then echo -e "File $fileName does not exist.\n" tr translate; übersetzt exit 1 und löscht Zeichen, fi etwas Komfort durch Bereichsangaben # convert uppercase to lowercase using tr command tr '[A-Z]' '[a-z]' < $fileName # clean exit without an error exit 0 Dirk Müller: Betriebssysteme I WS 2019/20 25/29
Linux-Ordnerstruktur Ordner Inhalt / (root) Wurzelverzeichnis /bin binaries; Binärprogramme für alle, z. B. cat, cp, grep /boot Dateien für den Bootvorgang, also Linux-Kernel, Bootloader, etc. /dev devices; Einstiegspunkte zur Ansteuerung von Geräten (Platte, Maus, etc.) /etc et cetera; systemweit gültige Konfigurationsdateien, z. B. host.conf /home benutzerspezifische Dateien incl. individuelle Konfigurationen /lib libraries; Bibliotheken, die beim Systemstart nötig sind incl. Kernel-Module /proc processes; System- und Kernel-Informationen sowie laufende Programme /root Heimverzeichnis des Root-Benutzers, aus Isolierungsgründen extra /run Dateien von laufenden Prozessen /sbin system binaries; Binärprogramme, die Root-Rechte benötigen, z. B. fsck /sys system; Sytem und Kernel, Ergänzung zu /proc /tmp temporary; temporäre Dateien, wird bei Neustart bereinigt /usr unix system resources; Anwendungsprogramme für Nutzer incl. X Window /var variable; veränderliche Daten Dirk Müller: Betriebssysteme I WS 2019/20 26/29
Typische Ordnerstruktur in Baumdarstellung Wurzelverzeichnis Konfigurationsdateien, entspricht in etwa der Registry in MS Windows (Nutzer-)Daten sauber von Programmen getrennt Quelle: [Ach2006], S. 141 Dirk Müller: Betriebssysteme I WS 2019/20 27/29
Zusammenfassung ● Linux mächtig und flexibel, aber Einarbeitung nötig – „Klein ist schön.“ und „Alles ist eine Datei.“ ● Shell als eine zentrale Schnittstelle – GUI-Basis ist X-Window-System, das außerhalb des Kernels läuft => kann nicht ganzes BS lahmlegen wie unter Windows – Desktop-Umgebungen und Fenstermanager wählbar => flexible Gestaltung, keine Einheitsoberfläche wie bei Windows ● Shell-Skripte: Kommandofolgen in einer ausführbaren Datei mit dem Suffix .sh abgelegt – zunächst etwas kryptisch, aber erlernbar ● Ordnerstruktur mit vielen Vorgaben und Konventionen – erleichtert das Finden und Managen von Dateien: saubere Trennung von Programmen und Daten – Pakete können über Dateien in Standardpfaden /etc und /var leicht interagieren, aber: i. d. R. Paketmanager nötig – Parallelinstallation verschiedener Versionen eines Pakets schwierig Dirk Müller: Betriebssysteme I WS 2019/20 28/29
Literatur [1] Neal Stephenson: „In the Beginning...was the Command Line“, HarperCollins US 1999 [2] It's FOSS, Ankush Das: „Best Linux Distributions For Everyone in 2019“, 11.09.2019, Download am 30.09.2019, https://itsfoss.com/best-linux-distributions/ [3] Mike Gancarz: “Linux and the Unix Philosophy”, Digital Press; 2nd Revised edition (22.07.2003) [4] PCLinuxOS Knowledge Base: “The 10 commandments for Linux users”, 26.02.2011, Download am 30.08.2017, http://pclinuxoshelp.com/index.php/The_10_commandments_for_Linux_users [5] Thorsten Leemhuis: „Linux-Distributionsfamilie Ubuntu 17.10 freigegeben“, heise-Online, 19.10.2017, Download am 22.10.2017, https://heise.de/-3865188 Dirk Müller: Betriebssysteme I WS 2019/20 29/29
Sie können auch lesen