Sonntag, 25. Oktober 2015

Raspberry Pi: Kernel Ausgabe

Mit der Datei /boot/cmdline.txt kann u.A. die Ausgabe des Linux Kernels auf der virtuellen Konsole und/oder der seriellen Schnittstelle (de)aktiviert werden.
Um die Datei zu bearbeiten muss diese mit einem beliebigen Editor geöffnet werden.
z.B. 

$vi /etc/inittab

Aktivierung der Kernel Ausgabe auf der seriellen Schnittstelle ttyAMA0
otg.lpm_enable=0 console=ttyAMA0 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Aktivierung der Kernel Ausgabe auf der virtuellen Konsole tty0: 
otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Aktivierung der Kernel Ausgabe auf der seriellen Schnittstelle ttyAMA0 und der virtuellen Konsole tty0: 
otg.lpm_enable=0 console=ttyAMA0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Wie man sieht wird die Ausgabe durch den Eintrag console=ttyX (de)aktivert. Wird keine Angabe gemacht, erfolgte bei meinen Versuchen die Ausgabe auf der virtuellen Konsole. Ob man die Kernel Ausgabe vollständig unterdrücken kann, habe ich nicht probiert.


Raspberry Pi: Login via Serial

Das Raspberry Pi verfügt über eine Serielle Schnittstelle, dessen Pins (TxD und RxD) auf dem Connector P1 verfügbar sind. 

Raspberry Pi Pinbelegung:
Die folgende Abbildungen zeigen die Pinbelegung für das Modell A und B. (Quelle: elinux)

http://elinux.org/images/6/61/RPi_P1_header.png


http://elinux.org/images/8/80/Pi-GPIO-header-26-sm.png
Benötigt werden TxD0, RxD0 und GND. Als Gegenstelle dient z.B. ein USB2Serial - Wandler mit 3.3V Pegel (z.B. FTDI  TTL232R-3V3).

Raspberry Pi Login Konfiguration:
Standardmäßig ist das Raspberry Pi meist so konfiguriert, dass der Login über die serielle Schnittstelle nicht aktiv ist und nur die Ausgaben des Kernels ausgegeben werden. Um dies zu ändern muss die Datei  /etc/inittab angepasst werden. Dazu muss diese mit einem beliebigen Texteditor geöffnet werden,

$vi /etc/inittab

und folgende Zeile eingetragen werden. 

t0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 


Damit wird der Login auf der serielle Schnittstelle (ttyAMA0) mit 115200 Baud im vt100 Mode aktiviert.

Der grafische Login wird mit folgender (oder ähnlicher) Zeile aktiviert.

0:2345:respawn:/sbin/getty -L tty0 115200


Um einen oder beide Login Modi zu deaktivieren, muss einfach die Zeile mit einem führenden # auskommentiert werden.
z.b.

#t0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Um die Änderungen zu übernehmen muss ein Reboot durchgeführt werden. Anschließend kann der Login über serielle Schnittstelle erfolgen.

Überprüfung

Mit dem Tool who kann man sich anzeigen wer angemeldet ist. Das folgende Beispiel zeigt die Ausschrift für aktive Anmeldung via der virtuellen Konsole tty0 und via serieller Schnittstelle ttyAMA0.

$who                                                            
root            tty0            00:00   Jan  1 00:01:17                      
root            ttyAMA0         00:00   Jan  1 00:01:25








Freitag, 23. Oktober 2015

aktuelles runlevel herrausfinden

Um im laufenden System den aktuellen runlevel herrauszufinden, können folgende Möglichkeiten angewand werden.

Beispiel 1 Vorheriges und aktuelles Runlevel ausgeben:
$runlevel
N 2 

Hilfe:
Aufruf: runlevel [OPTION]... [UTMP]
Vorheriges und aktuelles Runlevel ausgeben.

Options:
  -q, --quiet                 reduce output to errors only
  -v, --verbose               increase output to include informational messages
      --help                  display this help and exit
      --version               output version information and exit

Die Systemdatei /var/run/utmp wird benutzt, solange keine alternative Datei
UTMP angegeben wird.


Beispiel 2:
$who -r
 Runlevel 2   2015-10-23 17:29

Hilfe:
Aufruf: who [OPTION]... [ DATEI | ARG1 ARG2 ]
Informationen über gerade angemeldete Benutzer ausgeben.

  -a, --all         dasselbe wie -b -d --login -p -r -t -T -u
  -b, --boot        Zeit des letzten Rechnerstarts („system boot“)
  -d, --dead        tote Prozesse ausgeben
  -H, --heading     Kopfzeile mit Spaltenbezeichnungen ausgeben
      --ips         print ips instead of hostnames. with --lookup,
                    canonicalizes based on stored IP, if available,
                    rather than stored hostname
  -l, --login       Login‐Prozesse des Systems ausgeben
      --lookup      versuchen, den Rechnernamen mittels DNS zu kanonisieren
  -m                nur Rechnernamen und Benutzer, die die Standardeingabe
                      verwenden
  -p, --process     aktive Prozesse ausgeben, die von init aufgerufen wurden
  -q, --count       alle Loginnamen und Anzahl der angemeldeten Benutzer
  -r, --runlevel    aktuellen Runlevel ausgeben
  -s, --short       nur Namen, Leitung und Zeit ausgeben (Vorgabe)
  -t, --time        das letztmalige Stellen der Systemuhr ausgeben
  -T, -w, --mesg    den Message‐Status des Benutzers als +, - or ? hinzufügen
  -u, --users       angemeldete Benutzer anzeigen
      --message     dasselbe wie -T
      --writable    dasselbe wie -T
      --help     diese Hilfe anzeigen und beenden
      --version  Versionsinformation anzeigen und beenden

Wenn keine DATEI angegeben ist, „/var/run/utmp“ nehmen. „/var/log/wtmp“ ist als
DATEI üblich. Wenn ARG1 ARG2 angegeben sind, wird -m angenommen:
gebräuchlich sind „bin ich“ oder „am i“.

Melden Sie Programmfehler für who (auf Englisch, mit LC_ALL=C) an bug-coreutils@gnu.org
GNU coreutils Homepage: 
Allgemeine Hilfe zur Benutzung von GNU-Software: 
Melden Sie Übersetzungsfehler für who an 
Für die vollständige Dokumentation starten Sie:
info coreutils 'who invocation'

Terminal leeren

Um unter linux den terminal Bildschirm zu löschen gibt es zwei Möglichkeiten:
1. Mit dem Kommando
$clear
2. Mit der Tastenkombination
Strg + l

Der wesentliche Unterschied besteht darin, dass clear in der history eingetragen wird und die Tastenkombination nicht.

Mittwoch, 21. Oktober 2015

Raspberry Pi: Swap deaktivieren

Auf GTKDB habe ich folgende Anleitung zur Deaktivierung der Swap-Datei gefunden. Der auf GTKDB beschriebene Weg bezieht sich auf das Raspbian Image von 2013-02-09, funktioniert aber auch unter Raspbian mit Debian Version 7.8.

Die Kontrolle über das Swapfile erfolgt mittels dphys-swapfile. Hier zusammengefasst der Ablauf zur Deaktivierung:
1.  Swap Status überprüfen
$swapon -s
    Sieht die Ausgabe wie folgt aus, ist swap bereits deaktiviert,
 Filename                Type        Size    Used    Priority
     Für den Fall das swap aktiv ist, wird der swap Dateiname und die Größe
     aufgelistet.
2. Swap deaktivieren
$sudo update-rc.d dphys-swapfile remove
3. Reboot um Änderung zu übernehmen
$sudo shutdown -r now
(Optional)
Für den Fall das Swap wieder aktiviert werden soll, können folgende Schritte ausgeführt werden.
1. Swap aktivieren
$sudo update-rc.d dphys-swapfile defaults
2. Reboot um Änderung zu übernehmen
$sudo shutdown -r now

Freitag, 9. Oktober 2015

Zeroconf



Mit Zeroconf erfolgt eine Namensauflösung in lokalen Netzwerken. Dabei besteht keine Notwendigkeit für einen DNS-Server. Rechner können über Ihren Rechnernamen direkt angesprochen werden. Es ist dabei nicht relevant, ob diese über statische IPs oder per DHCP konfiguriert werden.
Jeder Rechner erhält einen Rechnernamen nach folgendem Schema: hostname.domainname
Anschließend kann jedes Programm des Rechners (z.b. Browser, SSH) über diesen Namen angesprochen werden.
Unter Linux ist die Zeroconf Technik durch avahi verfügbar. Die installation erfolgt durch:

$ sudo apt-get install avahi-daemon

Die Konfiguration erfolgt über /etc/avahi/avahi-daemon.conf
Die wesentlichsten Angaben erfolgen unter dem Eintrag: [server]. Hier wird der hostname und die Domain eingetragen.

host-name=desktop
domain-name=local

Damit avahi mit anderen Programmen kommunizieren kann, muss DBUS in der Konfiguration aktiviert werden.

enable-dbus=yes

Um avahi anzuhalten oder zu starten werden folgende Methoden verwendet:

$ sudo service avahi-daemon start
$ sudo service avahi-daemon stop

Um den aktuellen Status zu erhalten wird

$ sudo service avahi-daemon status
   avahi-daemon start/running, process 12424

 verwendet.

Ich habe diese Konfiguration mit folgenden Varianten getestet:
- Linux Mint 17.2 Cinnamon 64-bit
- Raspbian GNU/Linux 7