From 519f569cf70941dae8df59b577c2fd9cab505deb Mon Sep 17 00:00:00 2001 From: "Hans J. Koch" 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