From 519f569cf70941dae8df59b577c2fd9cab505deb Mon Sep 17 00:00:00 2001
From: "Hans J. Koch" <hjk@linutronix.de>
Date: Mon, 15 Jun 2009 23:13:20 +0200
Subject: Really commit things now...

---
 .../what-is-linux/handout_what-is-linux_de.tex     | 216 ++++++++++++++++++++-
 1 file changed, 210 insertions(+), 6 deletions(-)

(limited to 'linux-basics/what-is-linux/handout_what-is-linux_de.tex')

diff --git a/linux-basics/what-is-linux/handout_what-is-linux_de.tex b/linux-basics/what-is-linux/handout_what-is-linux_de.tex
index 4c391b2..d98170e 100644
--- a/linux-basics/what-is-linux/handout_what-is-linux_de.tex
+++ b/linux-basics/what-is-linux/handout_what-is-linux_de.tex
@@ -1,17 +1,221 @@
-\documentclass{article}
+\documentclass{lxarticle}
 \usepackage{german}
 \usepackage[utf8]{inputenc}
+\usepackage{lxheaders}
+
 
 \begin{document}
 
-\section*{Titel}
+\section*{Was ist Linux?}
+
+\subsection*{Geschichtlicher Hintergrund}
+
+Frühe elektronische Rechner, wie der in Abbildung \ref{img:eniac} gezeigte
+ENIAC, waren nicht frei programmierbar. Sie wurden für einen bestimmten
+Zweck gebaut, der ENIAC beispielsweise zur Berechnung von ballistischen
+Flugbahnen.
+
+\begin{figure}[h]
+\centering
+\includegraphics[width=0.5\textwidth]{images/785px-Eniac.jpg}
+\caption{ENIAC (1947)}
+\label{img:eniac}
+\end{figure}
+
+Im Laufe der 50-er und 60-er Jahre entwickelten sich die Rechner schnell
+weiter, was vor allem durch die Erfindung des Transistors beschleunigt wurde.
+Mit der freien Programmierbarkeit kam gleichzeitig die Nachfrage nach einem
+Betriebssystem. Zum einen stellte man schnell fest, das bestimmte Operationen,
+etwa Ein- und Ausgabe-Funktionen, von nahezu jedem Programm immer wieder
+benötigt wurden. Zum anderen hatte man bald den Wunsch nach größerer
+Hardware-Unabhängigkeit, damit ein einmal geschriebenes Programm ohne große
+Änderungen auf verschiedenen Rechnern laufen konnte.
+
+Die ersten Ansätze für ein universelles Betriebssystem blieben mehr oder
+weniger erfolglos. Die Entwickler verzettelten sich mit immer neuen
+Anforderungen und wenig durchdachten Konzepten. Die Systeme wurden
+unüberschaubar und für viele der damaligen Rechner zu gross.
+
+Erst das ab 1969 von Ken Thompson und Dennis Ritchie
+(Abbildung \ref{img:ken_ritchie}) entwickelte \emph{Unix} konnte sich auf
+breiter Ebene durchsetzen und zu einem Standard entwickeln.
+
+\begin{figure}[h]
+\centering
+\includegraphics[width=0.5\textwidth]{images/Thompson-sitting-Richie-standing-PDP11-1972.jpg}
+\caption{Ken Thompson (sitzend) und Dennis Ritchie an einer PDP11 (1972)}
+\label{img:ken_ritchie}
+\end{figure}
+
+In der zweiten Hälfte der 70-er Jahre veränderte sich der Computer-Markt
+radikal. Die Erfindung der integrierten Schaltung ermöglichte es, kleine und
+auch für Normalbürger erschwingliche Computer zu bauen. Dadurch entwickelte
+sich der bisher auf Hochschulen, Behörden und Großbetriebe beschränkte Markt
+zum Massenmarkt.
+
+\begin{figure}[h]
+\centering
+\includegraphics[width=0.3\textwidth]{images/Apple2.jpg}
+\caption{Apple 2 (1977)}
+\label{img:apple2}
+\end{figure}
+
+Als etwas ausgereiftere Homecomputer wie der Apple 2 (Abbildung \ref{img:apple2})
+zunehmend auch in Betrieben als Ergänzung zu den vorhandenen Großrechnern,
+beispielsweise als `intelligente' Terminals, eingesetzt wurden, beschloss
+IBM, Marktführer bei Großrechnern, dem etwas entgegen zu setzen. Man
+entwickelte den IBM-PC, der 1981 erschien. Durch die sehr knappen
+Zeitvorgaben war es den Entwicklern nur möglich, bereits am Markt befindliche
+Standard-Chips einzusetzen. Dadurch gelang es Firmen wie Compaq in kurzer
+Zeit, selbst ``IBM-kompatible'' Rechner auf den Markt zu werfen.
+
+Auch auf Unix hatte diese Entwicklung Einfluss. Bis dahin war Unix im
+universitären Umfeld entwickelt worden. Die Rechte am Code besaß zwar AT+T,
+er wurde aber ohne weiteres kostenlos an Dritte weitergegeben, vor allem
+zu Ausbildungszwecken. Es gab ja fast niemanden, der einen Unix-fähigen
+Computer besaß. Mit dem beginnenden Massenmarkt sah AT+T die Chance, mit
+Lizenzen Geld zu verdienen, und machte Unix zu Closed Source. Auch zu
+Ausbildungszwecken war der Code nicht mehr verfügbar. 
+
+Durch diese Lizenzänderung war es vielen Unix-Programmierern nicht mehr
+gestattet, ihre eigenen Programme zu nutzen. Einer von ihnen, Richard
+Stallman, gründete daraufhin 1984 die \emph{Free Software Foundation} und
+begann, ein eigenes Unix namens \emph{GNU} völlig neu zu schreiben. Um
+die eben gemachten Erfahrungen reicher, entwickelte er für den Code eine
+eigene Lizenz, die \emph{GNU Public License (GPL)}. Sie stellt sicher, dass
+bei Weitergabe eines Programms der Empfänger immer auch ein Recht auf den
+Sourcecode hat.
+
+Dem GNU-Projekt schlossen sich schnell weitere Programmierer an, und es
+gelang ihnen in relativ kurzer Zeit, die Grundlagen eines Unix-Systems zu
+erstellen. Dazu gehörten neben den vielen kleinen Unix-Systemprogrammen vor
+allem auch der Compiler gcc und der Editor Emacs. Beim Kernel war man weniger
+glücklich: Man entschied sich für ein zwar theoretisch interessantes, aber in
+der Praxis schlecht handhabbares Microkernel-Konzept. Dieser Kernel
+(\emph{GNU Hurd}) ist bis heute nicht produktiv einsetzbar...
+
+1991 hatte der finnische Student Linus Torvalds einen Terminal-Emulator
+geschrieben, mit dem er von daheim per Modem auf den Unix-Rechner der
+Universität zugreifen konnte. Als er immer mehr Funktionen hinzufügte, etwa
+einen Treiber zum Direktzugriff auf seine Harddisk, bemerkte er, dass er
+eigentlich auch gleich einen Betriebssystem-Kernel schreiben konnte. Er
+beschaffte sich die POSIX-Spezifikation, in der die Schnittstellen eines
+Unix-Kernels beschrieben sind, und implementierte eine Funktion nach der
+anderen.
+
+Nachdem dieser Kernel unter dem Namen \emph{Linux} veröffentlicht war,
+schlossen sich ebenfalls schnell hunderte von Programmierern an und
+arbeiteten an der Weiterentwicklung mit. Durch Kombination des
+GNU-Betriebssystems mit dem Linux-Kernel entstand so ein vollständig aus
+freier Software bestehendes System.
+
+Der Begriff ``Linux'' bezeichnet also streng genommen nur den Kernel.
+Allerdings hat es sich mittlerweile im Sprachgebrauch eingebürgert, das
+komplette System aus Programmen und Kernel als ``Linux'' zu bezeichnen.
+
+\subsection*{Ein Betriebssystem für Großrechner}
+
+Unix war von Anfang an ein Betriebssystem, das für den Betrieb auf
+Großrechnern ausgelegt ist. Das verwundert nicht weiter, den zur Zeit
+seiner Entstehung gab es noch keine Einzelplatzrechner im Sinne des
+heutigen PC. Die mit dieser Anwendung verbundenen Design-Entscheidungen
+sind auch heute noch wirksam und bestimmen maßgeblich das Verhalten von
+Linux-Systemen.
+
+Durch die freie Verfügbarkeit von Linux gab und gibt es ausserdem zahlreiche
+Anwender mit ganz unterschiedlichen Anforderungen. Von Cluster-basierten
+Datenbankservern bis zu kleinen batteriebetriebenen PDAs ist alles vertreten.
+Des weiteren werden sehr viele verschiedene Prozessor-Familien unterstützt.
+Dadurch war der Kernel schon sehr früh 64-Bit- und Endian-fest.
+
+Diesem historischen Hintergrund ist es zu verdanken, dass der Linux-Kernel
+heute sehr gut mit verschiedensten Hardware-Eigenschaften skaliert. Aus dem
+selben Source-Code kann ein Kernel für einen Server mit 1024 CPU-Kernen
+oder ein Kernel für ein kleines Embedded-System konfiguriert und erzeugt
+werden.
+
+\subsection*{Multiuser-Betrieb}
+
+Eine weitere wichtige Eigenschaft von Linux, die sich aus der
+Großrechner-Tradition ergibt, ist die Multitasking- und Multiuser-Fähigkeit.
+Während Multitasking, also das quasi-gleichzeitige Ausführen mehrerer
+Programme, heute jedem Computer-Anwender als Selbstverständlichkeit gilt,
+verdient der Multiuser-Betrieb nähere Betrachtung.
+
+Multiuser-Betrieb bedeutet, dass mehrere Anwender \emph{gleichzeitig} mit dem
+System arbeiten können. Jeder Anwender hat dabei den Eindruck, dass ihm das
+System allein gehört. Das Betriebssystem muss dazu Funktionalität
+bereitstellen, um die Datensicherheit zu gewährleisten und die gerechte
+Verteilung der Ressourcen unter den Benutzern sicherzustellen. Dazu gehört
+unter anderem, dass alle Dateien und Verzeichnisse mit Benutzerkennungen
+versehen werden, die jedem Benutzer sinnvolles Arbeiten ermöglichen, aber
+gleichzeitig seinen Zugriff auf fremde Daten einschränken. Diese
+Einschränkungen müssen im Kernel realisiert werden, damit sie nicht auf
+Anwenderebene umgangen werden können.
+
+In Unix war diese Funktionalität per Design schon immer vorhanden, während
+aus der Tradition der Einzelplatz-Rechner entstandene Betriebssysteme wie DOS
+oder Windows dies bis heute nicht leisten. Natürlich ist die freie Lizenz
+von Linux hier ebenfalls von Vorteil. Proprietäre Betriebssysteme haben
+schon aus Lizenzgründen ein Problem damit, wenn mehrere Anwender einen
+Rechner nutzen können.
+
+\subsection*{Login}
+
+Beim Hochfahren eines Linux-Systems werden üblicherweise alle für den
+Systemstart vorgesehenen Programme automatisch gestartet, ohne dass dazu
+ein Benutzereingriff nötig wäre. Durch Anpassung der dafür verantwortlichen
+Startskripte kann man so auch seine eigenen Applikationen starten. An dieser
+Stelle hat man root-Rechte, also vollen Zugriff auf alle Ressourcen.
+
+Möchte nach dem Hochfahren ein Benutzer mit dem System arbeiten, so muss
+er dem System mitteilen, wer er ist, und dies gegebenenfalls durch einen
+Authentifizierungsprozess glaubhaft machen. Diesen Vorgang nennt man
+``Login''.
+
+\begin{figure}[h]
+\centering
+\includegraphics[width=0.3\textwidth]{images/CPU_und_Terminals1-600px.png}
+\caption{Schematische Darstellung eines Großrechners}
+\label{img:mainframe}
+\end{figure}
+
+Abbildung \ref{img:mainframe} zeigt die Situation in schematischer Weise. Am
+Großrechner sind mehrere Terminals angeschlossen. Früher waren dies
+Fernschreiber, daher die Bezeichnung tty (von engl. teletype). Auf Abbildung
+\ref{img:ken_ritchie} kann man dies sehen -- da gab es noch keine Monitore.
+
+Unter Linux sind dies sogenannte \emph{virtuelle Terminals}. Selbst auf einem
+Laptop, der an nichts anderes angeschlossen ist, hat man mehrere solcher
+virtueller Terminals zur Verfügung. Eines davon wird meist von der grafischen
+Oberfläche benutzt.
+
+Zusätzlich gibt es weitere physikalische Terminals, so haben beispielsweise
+serielle Schnittstellen Bezeichnungen wie ttyS0, ttyS1 und so weiter. Jedes
+dieser Terminals ist völlig autark, das heisst, man muss sich in jedem
+Terminal erneut einloggen und authentifizieren.
+
+Logins sind unter Linux auf mehreren Wegen möglich. Ausser dem von Desktops
+her gewohnten Login am Bildschirm kann man sich auch mit Hilfe eines
+Terminal-Programms über eine serielle Schnittstelle einloggen. Weit verbreitet
+sind auch Logins über Netzwerkprotokolle wie ssh oder telnet.
 
-\subsection*{Abschnitt1}
+Da diese Login-Möglichkeiten unter Windows nicht üblich sind, kommt es hier
+häufig zu Verständnisschwierigkeiten. Als Übung sollten Sie sich per ssh
+auf einem entfernten Rechner einloggen und dann ein Programm starten. Machen
+Sie sich klar, dass das Programm auf dem entfernten Rechner ausgeführt wird
+und nicht etwa auf dem Rechner, an dem Sie gerade sitzen.
 
-Text
+\newpage
 
-\subsection*{Abschnitt2}
+\subsection*{Kontrollfragen}
 
-Text
+\begin{enumerate}
+\item Wie alt ist das Unix-Konzept mittlerweile?
+\item Seit wann gibt es den Linux-Kernel?
+\item Warum ist die Großrechner-Tradition von Linux auch für Embedded Systems
+	von Vorteil?
+\item Was passiert beim Login-Vorgang?
+\end{enumerate}
 
 \end{document}
-- 
cgit v1.2.3

