Tips, Tricks & Fehlerlösungen zum Thema raspbian

Hier findet Ihr die Tips, Tricks und Lösungen die ich auf verschiedenen Internetseiten gefunden habe.
Kompakt aufbereitet und Drag & Drop fähig.

  • neuste Version von Win32DiskImager installieren
  • neuste Version von raspbian herunterladen
  • mit Win32DiskImager auf SD-Karte aufspielen

Um euch bei einem frisch installierten raspbian per SSH einzuloggen braucht ihr username und passwort:

  • username: pi
  • passwort: raspberry

Es versteht sich von selbst das man das Passwort danach direkt per raspi-config ändern sollte.

  • expand_rootfs – Expand root partition to fill SD card
    Die Images für den Pi passend entpackt meist auf eine 4 GB große SD Karte. Wer sie auf einer größeren Karte einsetzt, muss im Nachhinein die Systempartition vergrößern oder zusätzliche Partitionen anlegen, um den übrigen Platz auf der Karte im System nutzen zu können. Dieser Menüpunkt nimmt einem die Arbeit zur Partitionserweiterung ab.
    Nach dem Aufruf dieses Punkts ist soweit alles vorbereitet und beim nächsten Bootvorgang wird die Systempartitione entsprechend erweitert, was je nach Größe und Geschwindigkeit der SD-Karte etwas Zeit in Anspruch nehmen kann.
  • configure_keyboard – Set keyboard layout
    Über diesen Menüpunkt kann man die Tastaturbelegung auswählen. Der Aufruf benötigt ein paar Sekunden. Im Anschluss kann man aus einer Liste das passende Tastaturlayout auswählen. Wer seine Tatstatur nicht in der Liste aufgeführt findet, kann für eine normale Tastatur in voller Größe in der Regel die Voreinstellung „Generic 105-key (Intl) PC“ übernehmen.
    Die Frage nach der Sprachversion ist passend für die eingesetzte Tastatur zu beantworten. Voreingestellt ist eine englische Tastatur im britischen Layout. Über den Punkt „Other“ bekomtm man eine vergrößerte Auswahl, in der man zunächste das Grundlayout auswählt, hierzulande also wohl meist „German“ und im folgenden Dialog zur genaueren Spezifizierung des deutschen Layouts in der Regel wohl wieder einfach „German“ und dann „The default for the keyboard layout“ und „No compose key“.
    change_pass – Change password for ‚pi‘ user
    Der Benutzer „pi“ ist auf dem System bereits vorangelegt und kann als regulärer Benutzer für alltägliche Arbeiten benutzt werden. Über diesen Punkt können wir ihm ein Passwort nach eigenem Geschmack geben. Beachten sollte man, dass ggf. das eingestellte deutsche Tastaturlayout erst anch einem Neustart aktiv ist und y und z vertauscht sind. Wer auf Nummer Sicher gehen möchte, sollte diese Buchstaben und Sonderzeichen im Passwort nicht verwenden. Das Setzen eines leeren Passworts ist nicht möglich.
  • change_locale – Set locale
    Über diesen Punkt bestimmen wir Zeichensatz und Sprache des Systems. Für ein deutsches System setzen wir die Locale auf „de_DE.UTF-8 UTF-8“ indem wir den Punkt mit der Leertaste markieren. Die Markierung bei „en_GB.UTF-8 UTF-8“ können wir so auch aufheben. Mit einem Druck auf die TAB-Taste kommen wir auf die Schaltfläche „Ok“ und wählen nun nochmal „de_DE.UTF-8“ aus, damit Programme auf dem System deutsche Texte ausgeben, soweit diese verfügbar sind. Das System benötigt nun einen Augenblick um die Einstellung vorzunehmen.
  • change_timezone – Set timezone
    Hierüber können wir dem System sagen in welcher Zeitzone wir uns befinden. Wir wählen zunächst „Europe“ und danach „Berlin“ aus.
  • ssh – Enable or disable ssh server
    SSH ist eine Möglichkeit um über das Netzwerk u.a. auf die Textkonsole des Systems zugreifen zu können. Hierfür nuttz man z.B. unter Windows putty, oder von einem Mac oder Unix-System aus der Shell heraus das ssh-Kommando. Die Verbdindung wird automatisch verschlüsselt. Um den Zugriff zu ermöglichen muss auf dem Pi ein SSH-Serverdienst laufen, der über diesen Punkt aktiviert (Enable) oder deaktiviert „Disable“ wird.
  • boot_behaviour – Start desktop on boot?
    Hierüber weisen wir den Pi an beim Systemstart automatisch in die grafische Oberfläche zu booten (Yes) oder nicht (No). Bei letzterem landet man zuächst auf der textbasierten Konsole und kann dann manuell über startx das X11-Fenstersystem starten.
  • update – Try to upgrade raspi-config
    Ist der Pi an einem Netzwerk angeschlossen und per DHCP automatisch konfiguriert (hat man einen Router mit DHCP-Funktion im Netz, geschieht dies automatisch beim Bootvorgang), kann man hierüber das Tool raspi-config selbst auf den aktuellen Stand bringen. Bei einer Neuinstallation bietet es sich an dies als allererstes zu machen, um evtl. in den Genuss zusätzliche und / oder fehlerkorrigierter Funktionen einer neueren Version des Tools zu kommen.
    Nach Durchlauf der Aktualisierung befindet man sich wieder auf der Shell und muss sudo raspi-configaufrufen, um erneut in das Tool zu gelangen.


Um ein Test des Dateisystems beim nächsten Booten zu erzwingen

touch /boot/forcefsck


Für Karten mit dem Chip rtl8192c müssen wir eine Konfigurationsdatei für den Treiber anlegen

nano /etc/modprobe.d/8192cu.conf

Folgende Zeile wird in die Datei geschrieben

options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

Bei anderen Karten sollte folgender Eintrag in der interfaces-Datei funktionieren

nano /etc/network/interfaces

dort folgende Zeile einfügen

wireless-power off


Zuerst wechseln wir ins passende Verzeichnis

cd /etc/ifplugd/action.d/

Nun sichern wir zuerst das alte Skript und kopieren danach das neue Skript hierher

mv ifupdown ifupdown.original
cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown

Das wars auch schon, noch ein Neustart und in Zukunft kommt nach einem Verbindungsabbruch wieder ein Reconnect

reboot


Die mitgelieferte Bilbliothek von wolfram alpha entfernen – spart Platz und verringert die Fehleranfälligkeit

apt-get remove wolfram-engine


Gleich zu Beginn sollte man die installierten Software-Pakete aktualisieren

apt-get update
apt-get dist-upgrade


Zuerst müssen wir die entsprechende Konfigurationsdatei öffnen

nano /etc/network/interfaces

Danach bitte wie folgt ausfüllen

auto lo
iface lo inet loopback
 
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.24
netmask 255.255.255.0
gateway 192.168.0.1
 
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.0.23
netmask 255.255.255.0
gateway 192.168.0.1
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid "DEIN-WLAN-NAME"
wpa-psk "DEIN-WLAN-SCHLÜSSEL"

dns-nameservers 192.168.0.1


Ein Update der Raspberry Pi Firmware ist auch zu empfehlen. Dafür muss zunächst die passende Software installiert werden.

apt-get install git
wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update -O /usr/bin/rpi-update
chmod +x /usr/bin/rpi-update

Danach dann nur noch das neu installierte Script per Hand starten und das Firmware-Update einspielen.

rpi-update
reboot


Um fast alle x11-Komponenten zu entfernen nutzen wir folgende Befehle.

apt-get purge xserver* x11-common x11-utils x11-xkb-utils x11-xserver-utils xarchiver xauth xkb-data console-setup xinit lightdm libx{composite,cb,cursor,damage,dmcp,ext,font,ft,i,inerama,kbfile,klavier,mu,pm,randr,render,res,t,xf86}* lxde* lx{input,menu-data,panel,polkit,randr,session,session-edit,shortcut,task,terminal} obconf openbox gtk* libgtk* alsa* python-pygame scratch tsconf xdg-utils desktop-file-utils omxplayer
apt-get autoremove --purge
apt-get autoclean


Nach dem einloggen auf dem Raspberry Pi über ssh erscheint immer folgender, im Prinzip unnötiger, Copyright-Hinweis

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

>Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

Um stattdessen einen eigenen, sinnvollen Text anzeigen zu lassen müssen wir nur eine Datei ändern:

nano /etc/motd

Dort tragen wir jetzt einfach unseren Text ein, dieser erscheint dann beim nächsten einloggen.


Wenn Ihr irgendwann Probleme mit dem Pi habt und in der /var/log/messages folgender Eintrag auftaucht

[   21.280705] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

dann müsst Ihr die Bootpartition überprüfen, aber Achtung, wenn ihr per

apt-get install dosfstools

und anschließendem

fsck.fat -V /dev/mmcblk0p1

die Partiton überprüft, dann bekommt Ihr keinen Fehler angezeigt!
Stattdessen müssen wir die dosfstools selbst übersetzen.
Und auch wenn es komisch klingt, so klappt es! Also los:

umount /boot
git clone http://daniel-baumann.ch/git/software/dosfstools.git
cd dosfstools
make
make install
fsck.fat -V /dev/mmcblk0p1

mit 1 bestätigen und dann nochmal:

fsck.fat -a /dev/mmcblk0p1
mount /boot

Jetzt läuft die Partition wieder fehlerfrei.


Bekommt Ihr diese Fehlermeldung zu sehen:

kernel lacks cgroups or memory controller not avaiable, not starting cgroups ....

Dann keine Panik, um den Fehler los zu werden müssen wir nur einen zusätzlichen Befehl in den Bootmanager eintragen.
Zuerst öffnen wir die richtige Datei:

nano /boot/cmdline.txt

Und jetzt hängen wir den folgenden Abschnitt an das Ende der Zeile dran

cgroup_enable=memory (before elevator=deadline)

Danach ist die Fehlermeldung verschwunden.

Folgende Pakete halte ich für sehr nützlich, dabei nutze ich beim Raspberry Pi nie einen Monitor, sondern arbeite mit allen Programmen über die Konsole.

für einen leichteren Umgang mit den Start-Skripten nutze ich rcconf

apt-get install rcconf

vor allem auf dem Raspberry Pi 2 mit seinen 4 x Kernen finde htop übersichtlicher als top

apt-get install htop


Oft arbeitet man viel mit dem Raspberry Pi, entwickelt aber auf einem anderen Rechner.
Dann kommt irgendwann der Zeitpunkt wo ein FTP-Server interessant wird, hier also die Anleitung für proFTPD.

Zuerst installieren wir die Software an sich

apt-get install proftpd-basic

danach öffnen wir zuerst die Konfigurationsdatei und deaktivieren dort den IPv6 Support.
Außerdem setzen wir bei ServerName den entsprechenden Namen ein.

Nun sorgen wir dafür das nur ein Benutzer erlaubt ist und setzen das Standart-Verzeichnis auf dessen Root

nano /etc/proftpd/conf.d/sourcecode.conf

Hier dann folgenden Abschnitt einfügen

<Global>
           RequireValidShell off
</Global>
DefaultRoot ~ sc_user
<Limit LOGIN>
           DenyGroup !sc_user
</Limit>

Nun legen wir ein Verzeichnis für unseren ftp-Benutzer an

mkdir /sourcecode

Jetzt können wir den Benutzer anlegen und ihm ein Passwort verpassen und setzen dann auch gleich noch die Rechte

adduser sc_user --shell /bin/false --home /sourcecode
chown sc_user:sc_user /sourcecode

Damit beim hochfahren keine Fehlermeldung erscheint müssen wir noch ein Modul deaktivieren
Also entsprechende Datei öffnen

nano /etc/proftpd/modules.conf

Und dort folgendes Modul auskommentieren

# LoadModule mod_tls_memcache.c

Jetzt können wir proFTPD neustarten – das war es.
Abschließend würde ich noch per rcconf dafür sorgen das proFTPD automatisch mitstartet.

service proftpd restart
rcconf


Für ein schnelleren Systemstart und weniger Fehler schalten wir die interne Ethernet-Schnittstelle aus.
Dafür müssen wir nur ein init-Script anlegen und dieses beim Booten automatisch starten lassen.

nano /etc/init.d/disable-ethernet

Die Datei bekommt folgenden Inhalt

#!/bin/bash
            
### BEGIN INIT INFO
# Provides:          disable-ethernet
# Required-Start:    $local_fs
# Required-Stop:     
# Default-Start:     S
# Default-Stop:     
# Short-Description: Disables on-board Ethernet to fix WiFi+Lapdock
# Description:       When using the Raspberry Pi Model B on the
#                    Motorola Atrix Lapdock, inserting certain WiFi
#                    adapters into either the RPi's spare USB port or
#                    the Lapdock's USB ports causes the on-board
#                    Ethernet and WiFi adapter to malfunction.
#                    Disabling the on-board Ethernet driver allows
#                    the WiFi adapter to work simultaneously with the
#                    Lapdock.
### END INIT INFO
 
. /lib/lsb/init-functions
 
DEVICE_DIR=/sys/bus/usb/drivers/smsc95xx
BUS_ID="1-1.1:1.0"
INT_TOGGLE=true #issue ifdown and ifup?
#INT_TOGGLE=false
 
is_enabled () {
    [ -L "$DEVICE_DIR/$BUS_ID" ] && return 0 || return 1
}
 
toggle_int () {
    is_enabled || return 0 #ethernet not enabled
    [ "$(ls -1 "$DEVICE_DIR/$BUS_ID/net" |wc -l)" -eq "1" ] || return 0 #something wrong
    $INT_TOGGLE || return 0 #user doesn't want this
    [ ! -f /run/network/ifstate ] && return 0 #run level S
    int_name=$(ls -1 "$DEVICE_DIR/$BUS_ID/net")
    if [ "$1" == "up" ]; then
        log_action_begin_msg "Bringing on-board interface up"
        ifup $int_name
    else
        log_action_begin_msg "Bringing on-board interface down"
        ifdown $int_name
    fi
    log_action_end_msg $?
}
 
case "$1" in
    start)
        if ! is_enabled; then
            log_failure_msg "Service already running. Exiting."
            exit 0
        fi
        toggle_int down
        log_action_begin_msg "Disabling on-board network interface"
        echo "$BUS_ID" > $DEVICE_DIR/unbind
        log_action_end_msg $?
        exit $?
        ;;
    restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2 
        exit 3
        ;;
    stop)
        if is_enabled; then
            log_failure_msg "Service not running. Exiting."
            exit 0
        fi
        log_action_begin_msg "Enabling on-board network interface"
        echo "$BUS_ID" > $DEVICE_DIR/bind
        log_action_end_msg $?
        toggle_int up
        exit $?
        ;;
    status)
        if is_enabled; then
            echo "Service is NOT running: on-board interface enabled" >&2 
            exit 1
        else
            echo "Service is running: on-board interface disabled"
            exit 0
        fi
        ;;
    *)
        echo "Usage: $0 start|stop|status" >&2 
        exit 3
        ;;
esac

Danach dann nur noch das Script ausführbar machen

chmod 755 /etc/init.d/disable-ethernet

automatischen Start beim Booten aktivieren

insserv disable-ethernet

automatischen Start beim Booten deaktivieren

insserv -r disable-ethernet


root-Zugang erlangen (damit man nicht vor jeden Befehl sudo tippen muss)

sudo su -

System neustarten

reboot

System herunterfahren

shutdown -h now


Im Image enthalten sind alle Tips und als Extra ein fertig installiertes python 3.4 und proFTPD – das spart richtig Zeit.
Einzig die statische Netzwerk-Adresse habe ich weggelassen.

  • File: raspbian_custom.rar
  • raspbian-Version: 2015-05-05-raspbian-wheezy
  • letztes Update: 04.07.2015
  • User: pi / root
  • proFTPD User: sc_user
  • proFTPD Verzeichnis: /sourcecode
  • Passwort: raspberry

Das Passwort ist für alle User gleich.
Ich würde direkt nach dem ersten Start „raspi-config“ aufrufen, dort das Passwort für den User „pi“ ändern und danach den Speicherplatz auf die komplette SD-Karte erweitern.
Außerdem solltet Ihr noch das Passwort für den User „root“ und „sc_user“ ändern.

6 Gedanken zu „Tips, Tricks & Fehlerlösungen zum Thema raspbian“

  1. Hallo Christopher,
    ist dir schon einmal aufgefallen, dass die Schrift auf der Seite immer größer wird, je öfter ich die Sections auf und zuklappe?
    Ich bin gerade mit meinem Android Tablet hier. Desktop PC müsste ich mal testen.
    Mit dem Inhalt deiner Seite liegst du voll im Trend.
    Ich finde es super, auch weil ich weiß was für Arbeit das alles macht.
    Ein wenig Programmieren ist lustig. Dokumentieren dann eher ätzend.

    Antworten
  2. Punkt: Volumen unmounted.
    Das verstehe ich nicht. Ein
    apt-get install dosfstools
    überprüft definitv NICHT die Bootpartition. Und warum jetzt das Tool per hand kompiliert werden soll, wird auch nicht beschrieben???
    Bist du dir bei diesem Punkt wirklich sicher. ( Zumal die fsck-Tools bereits auf dem System drauf sind. )

    Antworten
    • Also klar, das ein „apt-get install dosfstool“ ersteinmal nicht die Bootpartition überprüft.
      Damit installiert man nur die notwendige Software, diese muss man für die Überprüfung dann nochmal seperat starten.
      Hier habe ich mich unglücklich ausgedrückt, ich werde das verbessern.

      Warum ich das per Hand kompiliere, obwohl es eigentlich zum System gehört?
      Das hat den Grund, das vor ca. 1 Jahr, ein Fehler im mitausgelieferten Paket vorhanden war.
      Dieser Fehler hat dazu geführt, das man zwar per „fsck.fat“ die Partition auf Fehler überprüfen konnte, reparieren ließ sich damit der Fehler jedoch nicht.
      Nachdem ich damals viele Stunden damit verbracht habe den Fehler zu finden (hatte immer wieder die Partition überprüft und repariert, der Fehler ging aber nie weg), hatte ich irgendwann Glück und bin auf einen Artikel gestossen der dazu geraten hat das Tool selbst zu übersetzen.

      Gesagt, getan, ich habe das Tools dann selbst kompliert und siehe da, auf einmal ging auch das reparieren der Partition und der Fehler war weg.

      Es ist durchaus möglich das der Fehler in den aktuellen raspbian-Ausgaben bereits korrigiert ist, das kann ich leider nicht sagen.
      Dafür müsste der Fehler bei mir nochmal auftreten, am besten mit einem „jungfräulichen“ raspbian.

      Ich hoffe du verstehst jetzt warum ich diesen Punkt mit aufgenommen habe.

      Antworten

Schreibe einen Kommentar