Linux - Der Kernel |
Fangen
wir mit der Geschichte des Kernels an. Dieser ist schließlich auch das Herz
des Betriebssystems, welcher die Kommunikation zwischen den einzelnen Hardwarebestandteilen
wie CPU, Arbeitsspeicher etc. regelt. Der Kernel heißt Linux im Gegensatz
zum Namen des Betriebssystems, welches den Namen GNU(GNU is Not Unix)/Linux
trägt. Warum das so ist wird im nächsten Abschnitt angesprochen.
1991 begann Linus
Torvalds auf seinem Intel 80386, basierend auf dem Betriebssystem Minix
ein Betriebssystem, welches Ähnlichkeiten zu Unix aufweist, für x86 PCs
zu schreiben. Seine Beweggründe waren relativ einfach: Er fand kein Betriebssystem
welches seinen Anforderungen entsprach und das er sich leisten konnte
(MS Dos war nicht umsonst). |
Was ist nun GNU/Linux? |
Wie schon vorher erwähnt ist dies der eigentlich Name des Betriebssystems welches den Linux-Kernel beinhaltet. Dies wurde von Richard Stallmans Free Software Foundation so festgelegt und die erste Distribution die GNU/Linux im Namen trug war Debian, wobei die Distribution Slackware als Ur-Distribution gilt! Die Vorsilbe GNU soll darauf hinweisen, dass das Betriebssystem nicht nur aus dem Kernel besteht sondern Werkzeuge aus dem GNU Projekt beinhaltet, wie z.B die GCC (Gnu Compiler Collection) die Bibliotheken für C,C++,Java,Fortran,Objective-C und ADA und naürlich eben die Compiler selbst enthält. Eine kleine Auflistung unter welchen Prozessoren die GCC läuft kann man hier finden. Zunächst wollte man für das GNU Projekt einen anderen Kernel nehmen als Linux, welcher sich Hurd nannte. Allerings stellte sich das Unterfangen einen Kernel zu schreiben als so schwierig heraus, dass man zunächst auf Linux zurückgriff und offensichtlich ist man auch dabei geblieben. |
|
Zu den Distributionen |
Eine Distribution hat als Kernel logischerweise Linux. Was der Distributor an Paketen(die "Programme") zusammenstellt ist individuell, deshalb gibt es auch soviele davon. Hier erstmal eine kleine Aufzählung: Slackware(Die Ur Distribution), Debian, Suse(wohl eine der Bekanntesten), Red-Hat, wobei der Nachfolger von Red-Hat Fedora-Core ist, Mandrake, und eine der aufstrebensten die ich selbst benutze: Gentoo (natürlich gibt es sehr sehr viele mehr). Grundsätzlich ist Linux OpenSource und prinzipiell gibt es jede Distribution zum freien Download, allerdings wollen die Distributoren auch irgendwie Geld verdienen und entwickeln selbst Software oder packen auf ihre Distribution kommerzielle Pakete, die sie dann verkaufen. Hierbei gibts dann oftmals besseren Support von Hardware und eben mehr Pakete, was sich bei der Anzahl der CDs oftmals zeigt(8-10 CDs für die gekaufte "Professional" Version, 1-3 bei der Download-Version). Suse z.B packt für die Fritz! - Produkte Treiber mit auf die Distribution, welche bei der Installation, soweit vorhanden, gleich erkannt werden und somit dann beim ersten Start gleich genutzt werden können. Bei anderen Distributionen muß man sich dann halt erstmal den Treiber runterladen und installieren, wobei wir schon gleich beim nächsten Thema sind: Die Installation von Software. Diese läuft etwas anders ab als bei Windows. Grundsätzlich kann man mit jeder Distribution seine Software von grundauf selbst kompilieren. Dazu muss man sich nur die Sourcen runterladen(meist als .tar), und so vorgehen wie es in der Readme-Datei(in 99,9% der Fälle) steht. Einem Linux-Anfänger ist dies aber 1. Viel zu kompliziert, da man oftmals noch die ganzen Abhängigkeiten beachten muss, sonst tut sich nämlich gar nix und 2. weiß dieser auch nicht in welche Verzeichnisse die ganzen Dateien installiert werden und wenn man mal das Programm dennoch deinstallieren will, kann das kompliziert werden! Deshalb nutzen viele Distributionen sogenannte .rpms. Diese kann man in etwa mit .exe Dateien vergleichen, denn diese kann man relativ einfach installieren, außerdem werden die Abhängigkeiten in der Regel gleich mitbeachtet und sehr viele .rpms sind schon auf den zahlreichen CDs(gerade wenn man sich eine Distribution gekauft hat)dabei. Hier muss man allerdings aufpassen, da viele .rpms auf die jeweilige Distribution zugeschnitten sind, hierbei ist allerdings rpmseek sehr hilfreich. Wenn man sich ein wenig mehr auskennt kann man sich auch seine eigenen .rpms machen. RPMs werden übrigens mithilfe von Systemverwaltungstools(welche der Systemsteuerung bei Windows entsprechen)installiert. Diese heißen bei z.B bei Suse YAST (yet another setup tool), bei Mandrake HardDrake...Diese sind prinzipiell für Dasselbe zuständig. Die Installation der meisten Distributionen ist nicht sehr schwer und verläuft teilweise sehr viel angenehmer als bei Windows. Ein großer Vorteil dabei ist, dass man wählen kann welche Pakete nun installiert werden sollen und welche nicht. So kann man sich schon ein sehr kleines Betriebssystem mit ca. 200-300 MB installieren, muss dann aber auch auf den Komfort von großen grafischen Benutzeroberflächen verzichten und hauptsächlich mit der Konsole arbeiten. Für ältere Systeme mit schwächeren Prozessoren und wenig Arbeitsspeicher ist dies übrigens sehr empfehlenswert, da aufwändige Desktop Umgebungen sehr viel "Power" benötigen und man dies so umgehen kann, ohne auf die Aktualität des Betriebssystems verzichten zu müssen. Mittlerweile selbstverständlich, ist es ohne Weiteres möglich auf einen "Windowsrechner" eine Distribution zu installieren. Gebootet wird mithilfe eines sogenannten Bootloaders welcher bei der Installation einer Distribution gleich mitinstalliert wird. Standartmäßig dabei sind Lilo und Grub. Es gibt noch wesentlich mehr davon, aber das sind die beiden Gängisten. Darüber hinaus gibt es auch welche für Windows. Fat, fat32, ntfs etc. sind für Linux übrigens kein Problem. Windows erkennt allerdings keines der Linux Dateisysteme wie ReiserFs, ext2, ext3 (welche im Übrigen nicht fragmentieren)ohne zusätzlichen Programme. Somit ist es auch möglich von einer gestarten Linux-Umgebung auf Windows Dateien zuzugreifen und, falls man kein ntfs-Partition hat, auch auf diese zu schreiben. Gelesen werden können alle Partitionen und demnächst wird es wohl auch einen gut funktionierenden ntfs-writing support geben, im Kernel ist er jedenfalls schon vorhanden. Eine Installation von z.B Mandrake Linux dauert übrigens (ist natürlich abhängig von der Größe der Pakete die installiert werden sollen und der Aktualität der Hardware) im Schnitt ca. 15 min (AMD Athlon 800, 256 MB SD-Ram, 20 GB Samsung HD, 48xCD-ROM), was mittlerweile mit einem aktuelleren System nur ca. 7-8 min dauert. |
Grafische Benutzeroberflächen |
Die 2 größten und am meisten genutzen grafischen Benutzeroberflächen sind
wohl KDE und GNOME. Bei Windows gibt es keine Wahl eines Desktops, denn
er ist einfach da und das wars dann auch schon. Wie so oft läuft das unter
Linux gänzlich anders. Ein laufendes System ist nämlich in keinster Weise
von einem Desktop abhängig. Man kann nämlich wie im vorigen Abschnitt schon
erwähnt eine ziemlich sporadische Oberfläche wie z.B Blackbox verwenden.
Dies ist möglich, da man als Basis für eine grafische Benutzeroberfläche den sogenannten XServer verwendet der die "Kommunikation" mit der Hardware(insbesondere mit der Grafikkarte, der Eingabegeräte Maus und Tastatur und natürlich dem Bildschirm) regelt. Die 2 erwähnenswerten XServer unter Linux sind X.Org und XFree, wobei mittlerweile alle großen Distributionen X.org nutzen. Bei der Blackbox
hat man bei einem Rechtsklick ein kleines Menü (welches man aber beliebig
gestalten und erweitern kann) und eben die Shell, welches das wichtigste
Werkzeug bei Unix und Linux-Systemen ist. Beispiel für die Selbstverständlich lässt sich auch ein Hintergrundbild
einrichten und die Oberfläche lässt sich zusätzlich farblich gestalten.
Einen Dateibrowser muss man installieren(gibt es auch wie Sand am Meer)
wenn man weder Gnome noch KDE zusätzlich installiert hat, denn diese bringen
ihre Eigenen standartmäßig mit. Man kann mehere Desktops installieren
und sich vor jedem einloggen für einen entscheiden. Bei Gnome heißt der
Standartfilebrowser Nautilus und bei KDE Konqueror(lässt sich bei beiden
natürlich beliebig ändern!), wobei man den Konqueror zusätzlich auch als
Internet Browser nutzen kann.
|
Die Shell |
Die
Shell ist ein Kommandozeileninterpreter die geschrieben Text als Befehl
interpretiert und schließlich ausführt indem sie zum Beispiel ein Programm
startet. In Linux Systemen kommt die Bash zum Einsatz, aber auch unter Dos
gibt es die cmd.com was ebenfalls eine shell ist und selbst Windows XP hat
noch eine Eingabeaufforderung die allerdings in keinster Weise die selbe
Bedeutung wie unter Linux hat. Wie eben erwähnt benutzt Linux Bash als Kommandozeileninterpreter,
welche wiederum aus einem GNU-Projekt stammt. Jede grafische Benutzeroberfläche
verwendet ihre eigene Konsole mit der dann die Bash angesprochen wird. Solche
Terminals sind z.B Xterm, Gnome-Terminal... Eine Shell ist selbstverständlich
nicht nur dazu da um Programme zu starten, man kann sogenante Bash-Scripts
schreiben die selbst kleine Programm sind...man kann diese Scripts auch
sehr leicht ausführbar machen, so dass man sich das lästige schreiben sparen
kann und dann quasi nur das Script aufrufen muss, welches dann selbständig
abläuft. Hier nun eine kleine Auflistung von den wichtigsten und am häufgisten
gebrauchten Unix-Shell Kommandos( man beachte Leerzeichen und Groß- und
Kleinschreibung sehr genau!): - cp /quellverzeichnis/ /Zielverzeichnis/ : (copy)Kopieren einer Datei von einem Ort zum Anderen - cd /wunschverzeichnis/ : (change directory) ins gewünschte Verzeinis wechseln bzw. nur cd um ins Homeverzeichnis zu wechseln - ls /wunschverzeichnis/ : (list) Auflisten des Inhalts eine Verzeichnisses - rm /wunschverzeichnis/Wunnschdatei : (remove) löschen einer Datei - rmdir /wunschverzeichnis/ : (rm Directory) löschen eines ganzen Verzeichnisses(allerdings nur Leere) - su : (superuser) - sich als superuser anmelden um mit diesem Zugriff auf für normale User gesperrte Befehle, Anwendungen etc. - mount /mnt/Gerät : Gerät mouten um dann auf das Medium zugreifen zu können - umount /mnt/Gerät : Gerät aushängen um z.B die CD weider aus dem Laufwerk zu bekommen - sh /wv/script.sh : (shell) ein shell-script Ausführen - mv /qv/datei /wv/datei : (move) Datei von einem Ort zum anderen verschieben - kill(all) programmname : falls mal ein Programm nicht mehr reagiert um den Prozess zu beenden - modprobe treibername : laden eines Treibers, der allerings im Kernel aktiviert sein muss - nano -w /wv/textdatei : mit dem nano-Editor eine Textdatei öffnen und bearbeiten und mit angehängtem -w auch abspeichern - cat /wv/(Text)datei : schnellanzeige des Inhalts, allerdings bei Textdateien am sinnvollsten, da andere Formate anders kodiert sind - touch : erstellen einer Datei, bzw. wenn die Datei schon existiert kann man durch anhängen von-m und dem richtigen ZeitDatumformat den letzten Zugriffszeitpunkt oder den letzten Änderunsgzeitpunkt ändern z.B: touch -m 12142100 für den 14. Dez 21:00 Uhr - rpm -ivh xxxxx.rpm : um ein rpm Paket zu installieren (mit Statusanzeige und Ausgabe) - startx : starten des Xserver - dmesg : Ausgabe von Systeminfos - halt(oder auch shutdown) : Runterfahren - reboot : Neustart - adduser : einen neuenBenutzer hinzufügen - fsck.filesystem(ext3 z.B) : checkt das jeweilige Filesystem - fdisk /dev/hda(oder auch b) : fdisk tool - top : kleiner Systemmonitor |