Linux

Der Name „Linux“ beschreibt an sich kein Betriebssystem im eigentlichen Sinne, sondern lediglich den Kern eines Betriebssystems.

Ein Auto z.B. besteht nicht nur aus einem Teil, sondern aus vielen Tausenden. All diese Einzelteile werden in Baugruppen eingeordnet, von unterschiedlichen Firmen produziert und alle an das Werk geliefert. Welches dann schließlich alles zu einem Fahrzeug zusammensetzt und ausliefert.

Der Linux Kern wäre in dem Fall der Antrieb des Betriebssystems, alle anderen Teile des Betriebssystems kommen wo anders her und müssen an das Werk geliefert werden. Das Werk, bezeichnet sich in Fachkreisen als „Distribution“ und baut aus vielen einzelnen Bausteinen ein Betriebssystem zusammen. Dabei werden meist sämtliche Bestandteile des Betriebssystems in „Pakete“ gepackt, die sich über eine Paketverwaltung managen lassen.

Wie auch im Automobilbau, ist bei den Distributoren zwar vieles ähnlich, aber nicht alles gleich. Einer dieser Distributoren, die um den Linux Kern herum ein Betriebssystem gebaut haben ist Debian.

 Reise in die Vergangenheit

Als ich in die Computerwelt eingestiegen bin, gab es grade mal zwei nennenswerte Linux Distributoren, das waren Suse und Red Hat. Zu der Zeit hat ein normaler PC um die 5000 DM gekostet und Windows 98 war grad erschienen. Für mich hat Linux immer schon einen besonderern Reiz ausgemacht. Warum? Keine Ahnung.

Debian & Ubuntu

Wie auf der Seite über die Betriebssysteme für Einplatinencomputer bereits erwähnt, basieren die meisten Images für Einplatinencomputer auf Debian Linux – hier kann man Raspbian, das speziell für den Raspberry Pi angepasst wurde hervorheben.

Ein weiterer Distributor, der allerdings kein System um den Linux Kern gebaut, sondern direkt eine andere Distribution als Grundlage für ein Linux-Betriebssystem genommen hat ist Ubuntu, das ARMbian Projekt basiert zum Teil auf dieser Distribution.

Viele von euch werden bis dato vermutlich nur mit Windows unterwegs gewesen sein und Linux-Betriebssysteme als ein Buch mit Sieben-Siegeln sehen – nicht zu Unrecht.

Während man von Windows gewohnt ist, alles komfortabel über den Desktop zu erledigen und das allermeiste Plug&Play funktioniert, wird unter Linux viel im Terminal erledigt und erfordert ein hohes Maß an Eigeninitiative.

Vorteil des Ganzen ist, dass Linux, einmal eingerichtet, sehr zuverlässig seinen Dienst verrichtet und wenig anfällig gegenüber Viren o.Ä. ist.

Weiter geht’s aber mit ein paar Grundlagen. Ich kann leider nicht für alle Linux-Betriebssysteme sprechen, das Folgende bezieht sich hauptsächlich auf Debian und Ubuntu.

Groß- und Kleinschreibung

Spielt unter Linux, insbesondere im Terminal eine große Rolle und sollte immer beachtet werden.

 

Benutzer und Gruppen

Unter (Debian) Linux, wie auch unter Windows existieren Benutzer und Gruppen.

Anders als bei Windows, unterliegen diese Benutzer und Gruppen konsequenten Regularien. Der wichtigste Nutzer unter (Debian) Linux ist der sog. „Root“. Dieser Nutzer hat systemweit alle Rechte um Änderungen vorzunehmen. Mitunter kann das auch sehr gefährlich werden und das System unbrauchbar machen, daher sollte man immer wissen was man tut – wenn man es als Root umsetzt.

Damit man weniger gefährdet ist, erstellen die meisten Systeme automatisch einen weiteren Nutzer, der die Rechte des Root mit vorheriger Autorisierung nutzen kann. Unter Raspbian z.B. ist das der Nutzer „Pi“, bei Ubuntu (darauf basiert die ARMbian Version, die ich derzeit auf dem Tinkerboard verwende) wird jener Nutzer nach dem ersten Systemstart vom Nutzer selbst definiert.

Einige Programme, wie Fhem z.B., erstellen sich eigene Nutzer, diese haben in der Regel keine Root-Rechte, dürfen dementsprechend auch keine größeren Veränderungen am System vornehmen, oder gewisse Ordner lesen/beschreiben – außer man gewährt ihnen diese Rechte.

Zusammengefasst kann man also sagen, dass die Rechte für einzelne Nutzer durch den Root ganz gezielt gesetzt werden können/müssen und auch wichtige Änderungen nur vorgenommen werden können – wenn die Autorisierung für bzw. vom Root vorliegt.

sudo

Damit man nicht immer zwischen den Nutzern wechseln muss, gibt es unter Debian-Linux den Terminalbefehl „sudo“ (was soviel heißt wie SuperUserDO) – der bei Anwendungen, die Root-Rechte erfordern, vorangestellt wird und die Anwendung nach erfolgter Autorisierung als Root ausführt.

Um als normaler Nutzer den sudo-Befehl überhaupt nutzen zu können, muss sich der entsprechende Nutzer in der Gruppe „sudoers“ befinden. Wer in die Gruppe rein darf entscheidet wer? Natürlich der Root himself.

 

Frontend / Backend

Um diesen Teil zu verstehen hab ich, als langjähriger Windowsnutzer, unwahrscheinlich lange gebraucht. Wahrscheinlich einfach die Macht der Gewohnheit.

Viele Programme unter Linux sind sog. Deamons oder Backends. Das heißt – man führt das Programm aus – und nichts passiert, zumindest nichts sichtbares – denn ein Deamon oder ein Backend läuft nur im Hintergrund. Konfiguriert werden diese Deamons über Terminalbefehle, Webinterfaces, Frontends oder Konfigurationsdateien.

Frontends sind dabei meist sogar noch nicht mal vom selben Programmierer wie dem Backend, dann gibt es teilweise zig verschiedene Frontends, mit vielen verschiedenen Funktionen.

VDR ist z.B. so ein Backend / Deamon, das mit vielen verschiedenen Frontends (z.B. Kodi) genutzt werden kann.

Wenn man jetzt annimmt, dass das eigentliche System ja auch nur ein großer Deamon ist dann ist der

Desktop

auch nur ein Frontend, denn anders als unter Windows, wo es nur einen Desktop gibt, kann man unter Linux aus vielen verschiedenen grafischen Oberflächen, je nach individuellem Bedarf, wählen. Die meiner Meinung nach bekanntesten Desktops für Linux sind

  • Gnome (Ubuntu, ab Version 17.1)
  • KDE
  • Pixel (Raspbian nutzt diesen)
  • Unity (Ubuntu, bis Version 17.04)
  • Mate
  • Xfce
  • LXDE

Diese Liste kann man beinah beliebig fortführen – soll aber an dieser Stelle nicht von Belang sein.

Es ist möglich auch mehrere dieser Desktops parallel zu nutzen und entsprechend zu wählen, welcher geladen werden soll. Mit Vor- und Nachteilen der ganzen Desktops habe ich mich speziell allerdings nicht auseinander gesetzt. Ich nutze zwar Ubuntu auf meinem HTPC mit dem Unity Desktop – hauptsächlich ist dort allerdings Kodi geöffnet, Programminstallationen und Updates führe ich über das Terminal aus. Auf meinem Tinkerboard-Server ist kein Desktop aktiv.

Terminal

Das wichtigste Element ist das Terminal (auch Kommandozeile oder Shell). Ähnlich wie unter MS-DOS, kann hierüber das gesamte System verwaltet werden. Die gängigste Kommandozeile nennt sich „Bash“ (Bourne Again Shell).

Es gibt selbstverständlich eine gewaltige Litanei an Befehlen, alle aufzuschreiben grenzt an Wahnsinn. Eine super Seite zum Nachschlagen ist das Wiki, der Ubuntuusers. Dort sind sehr viele Anleitungen und Beschreibungen von Befehlen, Konfigurationen, Programminstallationen usw. aufgeführt.  Die wichtigsten Befehle reiße ich hier aber mal kurz an.

Apt

apt-get

Apt steht für „Advanced Package Tool“ und ist die am häufigsten verwendete Paketverwaltung von Debian-Linux basierenden Systemen. Apt verwaltet Pakete auf dem System, kann diese aktualisieren, erweitern oder entfernen. Apt benötigt dazu eine Internetverbindung, außerdem benötigt Apt stets Root-Rechte bzw. sudo.

Pakete können Vieles sein – Programme, Abhängigkeiten, Bibiliotheken usw. Alles was über Apt bezogen wird, gilt als „offizielle Paketquelle“. Nicht immer sind diese auch aktuell, weshalb auch hin und wieder manuell Paketquellen hinzugefügt werden müssen – oder Pakete außerhalb von Apt installiert werden müssen.

apt-get update & apt-get upgrade

sind zwei Befehle, die das System aktualisieren. apt-get update aktualisiert die Paketlisten und vergleicht diese mit den auf dem System installierten Paketen , apt-get upgrade aktualisiert die installierten Pakete.

Sofern man manuell eine Paketquelle zu Apt hinzugefügt hat, muss ein apt-get update ausgeführt werden, damit Apt die neue Quelle einliest.

apt-get dist-upgrade

aktualisiert die Pakete, wie auch apt-get upgrade, ist aber auch in der Lage weitere Pakete zu installieren oder Pakete zu entfernen.

apt-get autoremove

entfernt nicht mehr benötigte Pakete

apt-get remove/purge <Paket>

remove <Paket> deinstalliert das gewählte Paket, purge <Paket> deinstalliert das Paket und löscht zusätzlich alle Konfigurationen

apt-get install <Paket>

installiert das ausgewählte Paket

Desweiteren gibt es noch diverse Optionen, die man den Befehlen anhängen kann. Ein -f z.B. bewirkt, dass bei der Installation eines Pakets, automatisch fehlende Abhängigkeiten zusätzlich installiert werden – das ist äußerst praktisch, falls man nicht weiß ob oder welche Abhängigkeiten überhaupt benötigt werden. Ein Installationsbefehl würde dann z.B. apt-get -f install <Paket> heissen.

Weitere Optionen und Befehle zu Apt findet Ihr hier.

 

Navigation im Terminal

Um im Terminal durch das Dateisystem zu navigieren gibt es ein paar Befehle, die auch MS-DOS Nutzern bekannt vorkommen dürften 🙂

cd <Ordner> – wechselt in das angegebene Verzeichnis

cd .. – wechselt zurück in das obere Verzeichnis

dir – listet den Inhalt eines Verzeichnis auf, ausführlichere Auflistungen liefern

  • ls
  • ls -l
  • ls -la

reboot now – startet den Rechner neu

shutdown now – fährt den Rechner herunter

exit – verlässt das Terminal

mkdir <Name> – erstellt einen Ordner

mkdir /mnt/<Name> – erstellt einen Mount-Punkt

rm <Dateiname> – löscht eine Datei

mv <alter Name> <Neuer Name> – benennt eine Datei um

mv <Dateiname> <Ordner> – verschiebt Datei in Ordner

touch <Dateiname> – erstellt eine leere Datei

cp <Dateiname> <Ordner> – kopiert eine Datei in einen Ordner

rmdir <Ordner> – löscht einen leeren Ordner

rm -rf <Ordner> – löscht einen Ordner, samt Inhalt

 

Nano

ist ein Text-Editor und kann in vielen Fällen sehr nützlich sein, wenn man eine Datei bearbeiten oder erstellen muss. Um eine Datei zu erstellen, bearbeiten und/oder zu speichern sind Root-Rechte erforderlich.

nano <Dateiname> – öffnet eine Datei mit Nano. Die Datei kann nun entsprechend eingesehen, bearbeitet und abgespeichert werden, dazu sind die Tastenkombinationen

STRG+O – für das Speichern der Datei

STRG+X – für das Schließen des Editors

am Wichtigsten. Möchte man eine neue Datei erstellen, so genügt die Eingabe von

nano <Name der neuen Datei>

oder

nano <Ordner>/<Name der neuen Datei> – erstellt die Datei direkt im angegebenen Pfad.

Nano führt allerdings keine Prüfung der eventuell durchgeführten Änderungen durch, daher muss genau hingesehen werden, inbesondere gilt dies bei der Bearbeitung wichtiger Systemdateien.

 

Rechte vergeben

Wie oben bereits erwähnt ist das Thema Rechte unter Linux sehr heikel. Es wird immer wieder nötig sein gewisse Rechte für Dateien und Ordner zu vergeben, zum setzen der Rechte ist immer sudo erforderlich. Ein Befehl, der dies ermöglich ist

chmod

steht für „change mode“, angewendet wird der Befehl wie folgt:

sudo chmod <Ziffernfolge> <Datei oder Verzeichnis>

Die insgesamt 3 Ziffern, der <Ziffernfolge> entscheidet dabei, was wer tun darf.

Die erste Ziffer ist der Besitzer der Datei, die zweite die Gruppe der Datei, die dritte Ziffer sind Andere Benutzer.

Die jeweils gesetzten Ziffern entstehen aus der Summe folgender Faktoren:

Lesen: 4

Schreiben: 2

Ausführen: 1

4+2+1 = 7

Angenommen man möchte, dass der Besitzer Lesen, Schreiben und Ausführen darf, weiter nur lesen, dann wäre die erste Ziffer eine 7, die Zweite und Dritte jeweils die 4.

sudo chmod 744 <Datei oder Verzeichnis>

 

Um den Besitzer einer Datei zu ändern, gibt es den Befehl

chown

das steht für „change owner“ – angewendet wird der Befehl

sudo chown <Option> <USER>:<Gruppe> <Verzeichnis>

Beispiel: Das Verzeichnis „/opt“ gehört aktuell dem User Pi, neuer Besitzer soll der User Fhem werden, auf die Angabe einer Gruppe wird verzichtet –  der Befehl lautet

sudo chown -cR Fhem /opt

Die Optionen, in dem Fall „c“ und „R“ können am besten im Ubuntu Wiki nachgelesen werden, dort sind natürlich auch alle weiteren Optionen und weitere Beispiele aufgeführt.

 

Ich denke für den Einstieg werden die meisten hier nun gut gerüstet sein. Auch wenn viele Tutorials nur „Copy & Paste“ erfordern, ist es doch immer ganz schön wenn man in etwa weiß was man tut und sich im Falle eines Fehlers selbst zu helfen weiß.