Betriebssysteme I - WS 2019/20 Prof. Dr. Dirk Müller

 
WEITER LESEN
Betriebssysteme I - WS 2019/20 Prof. Dr. Dirk Müller
Betriebssysteme I

   2 Linux

WS 2019/20

Prof. Dr. Dirk Müller
Betriebssysteme I - WS 2019/20 Prof. Dr. Dirk Müller
Ü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
Betriebssysteme I - WS 2019/20 Prof. Dr. Dirk Müller
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