Befehlsreferenz: Linux-Shell für den Raspberry Pi

Transcription

Befehlsreferenz: Linux-Shell für den Raspberry Pi
Befehlsreferenz: Linux-Shell für den Raspberry Pi
Dieses Dokument soll dabei helfen, dass sich Linux-Einsteiger schnell auf dem Raspberry
Pi (sowie auf dem KTM-Server) zurechtfinden und das nötige Know-How vermitteln, um
evlt. auftretende Fragestellungen selbstständig klären zu können.
Die Anleitung bezieht sich im besonderen auf das auf der Linux-Distribution Debian
basierende Raspbian-Betriebssystem. Dieses muss auf die SD-Karte kopiert werden und
wird dann durch einschalten des Raspberry Pi gestartet. Zur Installation kommt dabei der
NOOBS-Installer sowie das setup-Skript aus dem Projekt zum Einsatz, was die
Installationsroutine erheblich vereinfacht. Weiter soll an dieser Stelle nicht auf die
Installation eingegangen werden, da dies an anderer Stelle bereits ausreichend
Dokumentiert ist und die Referenz vor allem auf die Grundlagen von Linux eingehen soll.
Weiteres zu den Hintergründen findet sich auf der RPi-Projektseite (http://raspberrypi.org)
und im zugehörigen Wiki (http://elinux.org/RPi_Beginners).
Gliederung:
1. Die Konsoltenverbindung
2. Das Linux-Dateisystem
3. Die Dateioperationen
4. Die Paketverwaltung
5. Programme starten
6. Fehlersuche unter Linux
7. Rasbian spezifische
8. Backupen mit dd
9. Weiterführendes
15.12.13
Sebastian Bartsch
1 von 10
1. SSH-Verbindung und root-Rechte
Ist der ssh-Server auf dem RPi eingerichtet und das Netzwerk korrekt verbunden,
lässt sich mit folgendem Befehl die entfernte Kommandozeile starten:
student@LUTPC2010:~$ ssh pi@192.168.2.99
Bei dem ersten Verbindungsaufbau wird evtl. nach der Vertrauenswürdigkeit des
Server-Zertifikats gefragt und anschließend muss das Passwort des Nutzers pi
eingegeben werden. Bei Problemen mit den Zertifikaten kann es ggf. nötig werden,
die Client-seitigen Zertifikate zu entfernen:
student@LUTPC2010:~$ rm .ssh/known_hosts
Bei Netzwerkproblemen sollte man die Verfügbarkeit des Servers testen (denn je
nach Netzwerkkonfiguration kann sich die IP-Adresse des RPi auch ändern.):
student@LUTPC2010:~$ ping 192.168.2.99
Hat der nun angemeldete Nutzer nicht die nötigen Rechte (z.B. um das System
herunterzufahren), kann man mit sudo einen Befehl als Administrator ausführen:
pi@raspberrypi:~$ sudo shutdown -h now
Mit folgendem Befehl lässt sich auch eine dauerhafte root-Konsole zu öffnen:
pi@raspberrypi ~ $ sudo su
root@raspberrypi:/home/pi# shutdown -h now
Alle so geöffneten Konsolen lassen sich auch einfach wieder beenden:
root@raspberrypi:/home/pi# exit
pi@raspberrypi ~ $ exit
nutzer@client ~ $ exit
Zur Datenübertragung sei noch auf das Programm scp verwiesen, mit dem sich
Daten schnell und einfach via SSH an den RPi übertragen lassen:
student@LUTPC2010:~$ scp /pfad/quelle user@ip:/ziel
Die Quelle befindet sich dabei auf dem Client, das Ziel muss auf dem Pi spezifiziert
werden. Um zum Beispiel einen Ordner ins Home-Verzeichnis zu übertragen:
student@LUTPC2010:~$ scp -r Ordner pi@192.168.2.99:~
Das zum Datenaustausch etwas komfortablere SFTP basiert dabei auch auf SSH.
Die Anmeldedaten entsprechen dabei einfach denen der SSH-Verbindung.
15.12.13
Sebastian Bartsch
2 von 10
2. Navigation auf der Kommandozeile
Als erstes soll die grundlegende Struktur eines Linux-Dateisystems anschaulich
erklärt werden. Dazu werden die Befehle cd (zum Verzeichnisswechsel) und ls
(zur Auflistung des jeweiligen Ordnerinhalts) verwendet. Bei Linux gibt es
prinzipiell zwei wichtige Einstiegspunkte: Das Root- und das Nutzer-Verzeichnis.
Das Root-Verzeichnis stellt den hierarchisch höchsten Punkt der Datenstruktur
(wie C:\ in Windows) dar. Von dort aus lassen sich alle weitere Verzeichnisse
erreichen:
pi@raspberrypi ~ $ cd /
pi@raspberrypi / $ ls
bin home media opt …
Das auch als Home bezeichnete Nutzer-Verzeichnis dient dem jeweiligen Nutzer
als Einstiegspunkte, denn dort sind alle nutzerspezifischen Daten zu finden.
Versteckte Dateien (mit vorangestelltem Punkt) lassen sich dabei mit ls -a
anzeigen:
pi@raspberrypi / $ cd /home/pi
pi@raspberrypi ~ $ ls -a
bli bla .blubb …
home lässt sich dabei auch durch ein cd (ohne Pfad) oder ein cd ~ erreichen.
Zum Wechseln in ein Unterverzeichnis und wieder zurück verwendet man:
pi@raspberrypi ~ $ cd bla
pi@raspberrypi ~ $ cd ..
Dabei lassen sich auch absolute Pfade (also vom Rootverzeichnis aus) verwenden:
pi@raspberrypi ~ $ cd /home/pi/bla
pi@raspberrypi ~ $ cd /home/pi
Tipps zum bequemeren Umgang mit der Kommandozeile:
Moderne Shells unterstützen den Nutzer oft dadurch, indem sie Befehle und Pfade
vorschlagen/ergänzen. Durch ein doppeltes Drücken der TAB-Taste, wird die
Navigation erheblich erleichtert, da man nicht jedes mal den ls-Befehl zur
Navigationshilfe nehmen muss.
Desweiteren gibt es eine Befehlshistorie, die mit den Pfeiltasten gesteuert werden
kann. Mit Pfeil hoch erreicht man die früher aufgerufene Shell-Kommandos.
Will man den Befehlsverlauf weitergehend durchsuchen, so kann man mit strg+r
(und anschließendem Suchwort) noch ältere Befehle ausfindig machen.
15.12.13
Sebastian Bartsch
3 von 10
3. Erstellen, Kopieren, Verschieben und Löschen
Um diese Operationen einfach nachvollziehen zu können, bietet es sich an, eine
Datei und ein Ordner anlegen. Die Datei lässt sich z.B. mit dem nano-Texteditor
anlegen (kurz zur Anwendung: strg+o speichert den Inhalt und strg+x beendet den Editor wieder):
pi@raspberrypi ~ $ nano datei
pi@raspberrypi ~ $ mkdir ordner
Will man nun die Datei in diesen Unterordner kopieren oder verschieben, so
verwendet man dazu die Befehle cp bzw. mv:
pi@raspberrypi ~ $ cp datei ordner/
pi@raspberrypi ~ $ mv datei ordner/
Da der zweite Parameter auch den Dateinamen spezifizieren kann, eignet sich der
mv-Befehl auch zum Umbenennen von Dateien:
pi@raspberrypi ~ $ mv datei datei.txt
Will man Ordner kopieren, so muss man (vgl. scp) den -r Parameter verwenden:
pi@raspberrypi ~ $ cp -r ordner backup
Zum Löschen von Dateien bzw. Ordnern kann folgender Befehl verwendet werden:
pi@raspberrypi ~ $ rm datei
pi@raspberrypi ~ $ rm -r ordner
Hierzu können ggf. root-Rechte benötigt werden. Da die Kommandozeile über
keinen „Papierkorb“ verfügt, sollte dann aber äußerst vorsichtig (im Zweifel lieber
verschieben als löschen) vorgegangen werden!
15.12.13
Sebastian Bartsch
4 von 10
4. Installieren, Updaten und Deinstallieren von Programme
Debian bzw. Raspian verwendet zur Paketverwaltung (also zur Verwaltung der
installierten Software) die Tools dpkg, apt und aptitude. Da die Paketverwaltung
in das System eingreift, ist allen folgenden Befehlen ein sudo voran zustellen.
dpkg ermöglicht die manuelle Installation von einzeln heruntergeladenen Paketen,
wird aber nur in seltenen Fällen benötigt:
pi@raspberrypi ~ $ sudo dpkg -i software.deb
Zum Aktualisieren der Softwarequellen und der Software ist apt-get geeignet:
pi@raspberrypi ~ $ sudo apt-get update
pi@raspberrypi ~ $ sudo apt-get upgrade
Für weitergehende Updates (z.B. bei einem Upgrade des Betriebssystems)
verwendet man noch:
pi@raspberrypi ~ $ sudo apt-get dist-upgrade
Dieser Befehl sollte aber nur vorsichtig verwendet werden, da er einen tieferen
Eingriff in das System bedeutet.
Zum installieren und entfernen von Softwarekomponenten lässt sich ebenfalls apt
verwenden, doch gerade für Einsteiger bietet sich das Grafische aptitude an:
pi@raspberrypi ~ $ sudo aptitude
Die Bedienung im Programm erfolgt dabei mit Tastenkürzeln:
Mit / lässt sich eine Suche starten, mit N weiter fortsetzen (zurück: Umschalt+N).
Pakete lassen sich mit + zur Installation bzw. mit – zur Deinstallation vorwählen.
aptitude kümmert sich dabei automatisch um die benötigten Abhängigkeiten. Die
gewählten Änderungen können mit G übernommen werden. Mit Q lässt sich das
Programm beenden. Die Bedienung ist insgesamt recht intuitiv gestaltet.
Um externe Software zu verwenden, kann man diese entweder einzeln
herunterladen und installieren oder die Paketquellen entsprechend anpassen. Zum
herunterladen lässt sich wget verwenden:
pi@raspberrypi ~ $ wget http://example.com/folder/file
Die Einstellung der Paketquellen ist unter /etc/apt/sources.list zu finden
und lässt sich einfach mit einem Editor mit root-Rechten bearbeiten. Anschließend
müssen nur noch die Softwarequellen aktualisiert werden (apt-get update).
Allerdings sollte auch hierbei insgesamt vorsichtig vorgegangen werden!
15.12.13
Sebastian Bartsch
5 von 10
5. Programme starten und Skripte ausführen
Installierte Anwendungen lassen sich, wie z.B. top (zur Prozessüberwachtung),
meist durch den einfachen Aufruf des Namens in der Kommandozeile starten. Der
Startbefehl lässt sich meist mithilfe der Tabulatortaste ergänzen. Die genauen
Aufrufparameter unterscheiden sich von Programm zu Programm.
Will man ein Shell-Skript oder eine Anwendungsdatei direkt starten, so muss man
diese nur aufrufen:
pi@raspberrypi ~ $ /usr/bin/top
Allerdings müssen zum Starten von beliebigen Programmen evtl. die Rechte
angepasst werden. Hierzu als Beispiel die Erstellung eines eigenen Skripts:
pi@raspberrypi ~ $ nano script.sh
pi@raspberrypi ~ $ chmod +x script.sh
pi@raspberrypi ~ $ ./script
Das Skript kann dabei z.B. folgenden Inhalt haben (mit cat ausgegeben):
pi@raspberrypi ~ $ cat script.sh
#!/bin/bash
echo "Hallo Welt!"
Um ein Programm in den Hintergrund zu starten, kann man das kaufmännische &
(oder alternativ das komplexere screen-Programm) verwenden:
pi@raspberrypi ~ $ top &
Beenden lassen sich die meisten Programme durch das drücken von Q oder
strg+c. Ein gerade laufender Prozess lässt sich aber auch „abschießen“:
pi@raspberrypi ~ $ killall top
15.12.13
Sebastian Bartsch
6 von 10
6. Einstieg in die Fehlersuche in Linux
Zum Debuggen von Hardwareproblemen eignen sich beispielsweise die Tools
dmesg (zur Ausgabe von Kernel-Meldungen) und lshw bzw. lsusb (zur Auflistung
der Hardware). Softwarespezifische Probleme lassen sich mit top („Taskmanager“)
oder ps (Prozessverwaltung) und killall angehen. Die Speicherbelegung lässt
sich mit df -h, die RAM-Auslastung mit free anzeigen.
Die Log-Dateien sind allgemein unter /var/log/ zu finden, zur Ausgabe bieten
sich cat (Anzeigen des Dateiinhalts) oder tail (Ausgabe der letzten Zeilen) an.
Um unübersichtlich lange Ausgaben einschränken zu können, eignet sich der
grep-Befehl. Dazu muss diese per | (Pipe) weitergeleitet werden. Will man
beispielsweise nur Zeilen, die die Zeichenfolge usb enthalten aus der dmesg
extrahieren, so kann man das wie folgt tun:
pi@raspberrypi ~ $ cat /var/log/demsg | grep usb
Natürlich sind diese Befehle beliebig miteinander kombinierbar. Auch hierbei sind
ggf. root-Rechte erforderlich.
15.12.13
Sebastian Bartsch
7 von 10
7. Raspberry spezifische Besonderheiten
Rasbian verfügt mit raspi-config über ein eigenes, intuitiv bedienbares
Konfigurationswerkzeug (z.B. um SSH zu aktivieren oder zum Übertakten). Hat
man dort die grafische Oberfläche deaktiviert, so lässt sich diese aus einer lokalen
Konsole heraus mit xstart starten.
Mit dem Tool rpi-update lässt sich die Firmeware des RPi einfach updaten.
Um das Wlan einzurichten, muss man etwas tiefer in Linux einsteigen. Die
Grundlegenden Befehle dazu sind iwlist scan, iwconf, ifup und ifdown.
Die Konfiguration ist dabei in der sogenannten interfaces-Datei abgelegt (auf
ubuntuusers.de gut dokumentiert). Um diese anzupassen geht man wie folgt vor:
pi@raspberrypi ~ $ sudo ifdown wlan0
pi@raspberrypi ~ $ sudo nano /etc/network/interfaces
pi@raspberrypi ~ $ sudo ifup wlan0
Wird ein Wlan-Stick nicht richtig erkannt, so müssen evtl. noch die passenden
Treiber nachinstalliert werden. Hierbei ist wiederum ein Blick in die dmesg- bzw. in
die lsusb-Ausgabe, kombiniert mit einer kurzen Internetrecherche (Sitchworte:
Device ID, Linux/Debian/Ubuntu), äußerst hilfreich. Im Falle des AVM-Sticks ist der
nötige Treiber schnell installiert:
pi@raspberrypi ~ $ apt-get install firmware-linux-free
Für neue Hardwarekomponenten lassen sich die passenden Pakete normalerweise
schnell im Internet finden (z.B. wie für AVM auf https://wiki.debian.org/carl9170 ).
15.12.13
Sebastian Bartsch
8 von 10
8. Backupen mit dd
Zum Sichern und Wiederherstellen von Images des Raspian-Systems eignet sich das
Komandozeilentool dd (DiskDump). Damit sind Backups unter Linux ganz einfach möglich.
Allerdings muss dazu ein kurzer Exkurs zu den Geräte-Datein unter Linux gemacht
werden. Geräte sind unter Linux nach einem einfachen Schema benannt:
• Zuerst steht immer das Verzeichnis aller Gerätedateien: /dev/
• darauf folgt ein Bezeichner für die Geräteart, z.B.: /dev/sd
• anschließend sind die Geräte von a-z durchbuchstabiert, z.B.: /dev/sdc
• die Partitionen folgen abschließend als Nummern, z.B.: /dev/sdc2
Bei der Gerätedatei /dev/sdc2 handelt es sich also um die zweite Partition der tertiären
Festplatte. Zum Auffinden der richtigen Datei eignet sich dabei folgender Befehl:
student@LUTPC2010:~$ sudo blkid -o list -w /dev/null
Meist hat eine per Cardreader eingesteckte SD-Karte dabei den höchsten
Laufwerksbuchstaben. Ein Backup der unter /dev/sdx (fiktiver Platzhalter)
eingebundenen SD-Karte lässt sich wie folgt erstellen:
… :~$ sudo dd if=/dev/sdx bs=1M | gzip -c > image.img
Dieser Befehl leitet den Datenstrom der gesamten SD-Karte an gzip weiter, welches
diesen komprimiert und anschließend in die Datei image.img schreibt.
Zum Wiederherstellen dieses Images kann dann folgender Befehl verwendet werden:
… :~$ gunzip -dc image.img | sudo dd of=/dev/sdx bs=1M
Hier findet die Weiterleitung des Datenstroms in umgekehrter Reihenfolge statt, das Image
wird also entpackt und wieder auf die SD-Karte geschrieben.
Ggf. kann es bei diesen Befehlen nötig (und sauberer) sein, alle betroffenen Partitionen
vorher auszuhängen:
student@LUTPC2010:~$ sudo umount /dev/sdx
Entsprechend kann beispielsweise die erste Partition wie folgt wieder eingehängt werden:
student@LUTPC2010:~$ sudo mkdir /media/tmp
student@LUTPC2010:~$ sudo mount /dev/sdx1 /media/tmp
Der mkdir-Befehl dient dabei dazu, den benötigten Einhängepunkt zu erzeugen.
15.12.13
Sebastian Bartsch
9 von 10
Weitere Informationen:
Bei Fragen oder Problemen mit den Shell-Programmen lässt sich die Hilfe bzw. das
Manual befragen:
pi@raspberrypi ~ $ apt-get -h
pi@raspberrypi ~ $ man apt-get
Eine der nützlichsten Seiten Rund um Linux/Ubuntu ist ubuntuusers.de, hier gibt
es auch einiges zur Shell: http://wiki.ubuntuusers.de/Shell
Speziell zur Administration des KTM-Servers gibt es mit der Dokumentation zum
Webserver (Dokumentation_Server.pdf) eine eigene Referenz. Auch hierfür ist
http://wiki.ubuntuusers.de eine gute Anlaufstelle.
Eine weitere praktische Seite zum Lernen von Shell-Befehlen findet sich hier:
http://explainshell.com
Danke für die Aufmerksamkeit und viel Spaß beim Hacken ;-)
15.12.13
Sebastian Bartsch
10 von 10