Betriebssysteme

WiFi für den Raspberry Pi Streamingclient

18. Juli 2014 · Betriebssysteme · andreas · Kein Kommentar

Nachdem der Streamingclient seine Arbeit zur vollen Zufriedenheit erledigt, ist sinnvolle Erweiterung, den Raspberry Pi ins Wireless Lan (WLAN, WiFi) zu bringen.

Die einfachste Wahl ist ein Edimax EW-7811Un, der nicht nur für unter 10 Euro (inklusive Versand) erhältlich ist, sondern für den Arch Linux auch gleich die passenden Treiber mitbringt. Der einzige Nachteil des Sticks ist, daß ein Einstecken im eingeschalteten Zustand nicht möglich ist, da der Raspberry Pi beim Einstecken jedesmal reprouzierbar einen Neustart durchführt.

Nach dem Booten des Raspberry Pi sollte als erstes nachgesehen werden, ob der Stick erkannt und der Treiber eingebunden wurde

[root@alarmpi ~]# dmesg | grep usbcore ... [ 8.080843] usbcore: registered new interface driver rtl8192cu [root@alarmpi ~]# lsmod | grep 8192 8192cu 546045 0

Dann geht es an die Konfiguration der WiFi-Verbindung, was mittels “wifi-menu” dialoggesteuert durchgeführt werden kann. Nach dem erfolgreichen Scannen der vorhandenen Netze muss lediglich das gewünschte Netz ausgewählt sowie ein Name vergeben und der Schlüssel eingegeben werden, anschließend wird die Verbindung eingerichtet und gestartet.

Die Konfiguration wird als Textdatei unter dem gewählten Profilnamen im Verzeichnis “/etc/netctl” abgelegt und kann dort jederzeit angepasst werden.

/etc/netctl/PROFILNAME
Description='Automatically generated profile by wifi-menu' Interface=wlan0 Connection=wireless Security=wpa ESSID=MEINE SSID IP=dhcp Key=EINGANZTOLLERLANGERKEY

Damit die Konfiguration bei jedem Start verarbeitet und die WiFi-Verbindung aufgebaut wird, ist als abschließender Schritt noch ein

[root@alarmpi ~]# netctl enable PROFILNAME

notwendig. Der erfolgreiche Start und DHCP-Zugriff kann mittels eines Blicks auf die Ausgabe von “ifconfig” verifiziert werden. Sollten Probleme auftreten, hift meist ein Blick auf die netctl-Seite des ArchWikis, das die oben skizzierten Schritte ausführlich erläutert.


Konten-Synchronisierung unter Android einschalten

30. Juni 2014 · Betriebssysteme · andreas · 8 Kommentare

Wenn unter Android alle Konten nicht mehr synchronisieren und lediglich ein nicht änderbares “Synchronisierung AUS” in den Konteneinstellungen erscheint, so sollte der erste Blick in die Datenverbrauchs-Übersicht führen.
Dort im Menü überprüfen, ob “Daten automatisch sync.” aktiviert ist.


Debian auf SSD umziehen

20. Mai 2014 · Betriebssysteme · andreas · 2 Kommentare

Durch den anhaltenden Preisverfall ist der Gedanke naheliegend, auch bei Systemen, die nicht direkt als Arbeitsplatz-Rechner im Einsatz sind, die konventionelle HD durch eine SSD zu ersetzen. Ein typischer Kandidat hierfür ist zum Beispiel ein in der Ecke stehender VDR, der seine Bootzeit nicht nur auf unter 10 Sekunden (inklusive BIOS und GRUB) verkürzt, sondern mit SSD auch so gut wie geräuschlos arbeitet.

Als Windows-orientierter Anwender schwirren bei der Umzugsplanung zunächst Begriffe wie “Disk-Imager” und ähnliches durch den Kopf, unter Linux reichen - wie so oft - in der Regel Bordmittel.

Als erstes sollte geklärt werden, wie groß die benötigte SSD mindestens sein muß. Die Ausgabe von “df -h” liefert den zur Zeit belegten Festplattenplatz, der mit 4,2GB so gering ausfällt, daß selbst eine 60GB SSD vollkommen überdimensioniert scheint.

root@vdr:~# df -h Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf rootfs 143G 4,2G 132G 4% / udev 10M 0 10M 0% /dev tmpfs 203M 324K 203M 1% /run /dev/disk/by-uuid/dcb30b21-2bd8-465b-8e45-f8d7d6c50560 143G 4,2G 132G 4% / tmpfs 5,0M 0 5,0M 0% /run/lock tmpfs 1,2G 0 1,2G 0% /run/shm

Die SSD wird zunächst als zweite Platte ins System eingebaut und “fdisk” schafft Klarheit über die Verhältnisse:

root@vdr:~# fdisk -l Disk /dev/sda: 160.0 GB, 160041885696 bytes ... Device Boot Start End Blocks Id System /dev/sda1 * 2048 304205823 152101888 83 Linux /dev/sda2 304207870 312580095 4186113 5 Extended /dev/sda5 304207872 312580095 4186112 82 Linux swap / Solaris Disk /dev/sdb: 60.0 GB, 60022480896 bytes ... Device Boot Start End Blocks Id System

Wie der Ausgabe zu entnehmen ist die HD eine 160GB-Platte, unter “/dev/sda” zu erreichen, die SSD ist eine 60GB-Platte, die als “/dev/sdb” zur Verfügung steht. Insgesamt wurden auf der HD 2 Partitionen angelegt: eine Linux-Partition für Betriebssystem und Daten sowie eine SWAP-Partition.

Im nächsten Schritt kann nun die SSD analog zur HD aufgeteilt werden, das passende Werkzeug hierfür ist wiederum “fdisk”. Beim Anlegen der Systempartition sollte daran gedacht werden, das “Boot”-Flag für diese Partition zu setzen.

root@vdr:~# fdisk -l /dev/sdb Disk /dev/sdb: 60.0 GB, 60022480896 bytes ... Device Boot Start End Blocks Id System /dev/sdb1 * 2048 83888127 41943040 83 Linux /dev/sdb2 83888128 100665343 8388608 82 Linux swap / Solaris

Ob hierbei die ursprüngliche Partitionierung mit einer primären und einer erweiterten Partition plus logischem Laufwerk beibehalten oder auf zwei primäre Partitionen geändert wird, spielt für den Umzug keine Rolle.

Nach dem Anlegen der Partitionen werden die Dateisysteme erzeugt, was von “mkfs.ext4” bzw. “mkswap” erledigt wird:

root@vdr:~# mkfs.ext4 /dev/sdb1 ... Platz für Gruppentabellen wird angefordert: erledigt Inode-Tabellen werden geschrieben: erledigt Erstelle Journal (32768 Blöcke): erledigt Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt root@vdr:~# mkswap /dev/sdb2 Setting up swapspace version 1, size = 8388604 KiB no label, UUID=f5dbddec-78e4-452d-96b3-c304a056d4db

Nach dem Erstellen der Dateisysteme wird ein Verzeichnis angelegt und die Systempartition der SSD in dieses Verzeichnis eingebunden. Anschließend wird mittels “rsync” der Inhalt der HD auf die SSD kopiert. Wichtig ist der Parameter “one-file-system”, der dafür sorgt, daß sich rsync nicht im soeben angelegten Ordner in einer Endlosschleife verrennt.

root@vdr:~# mkdir /mnt/ssd root@vdr:~# mount /dev/sdb1 /mnt/ssd root@vdr:~# rsync -av --one-file-system / /mnt/ssd

Im nächsten Schritt muß die Datei “/etc/fstab” für die SSD angepasst werden. Während “früher” die einzelnen Partitionen als “/dev/sdb1” etc angesprochen wurden, werden in neueren Systemen die UUIDs verwendet.

root@vdr:~# blkid /dev/sda5: UUID="3d134e82-5338-4876-9a01-589259eb1569" TYPE="swap" /dev/sda1: UUID="dcb30b21-2bd8-465b-8e45-f8d7d6c50560" TYPE="ext4" /dev/sdb1: UUID="87111054-e9dc-4208-af1d-36657c13da4c" TYPE="ext4" /dev/sdb2: UUID="f5dbddec-78e4-452d-96b3-c304a056d4db" TYPE="swap"

Eine Liste der im System vorhandenen UUIDs kann mittels des Befehls “blkid” ermittelt werden, anschließend sind in der Datei “/mnt/ssd/etc/fstab” die UUIDs anzupassen, d.h. alle Einträge der UUID “3d134e82-5338-4876-9a01-589259eb1569” durch “f5dbddec-78e4-452d-96b3-c304a056d4db” und alle einträge der UUID “dcb30b21-2bd8-465b-8e45-f8d7d6c50560” durch “87111054-e9dc-4208-af1d-36657c13da4c” zu ersetzen.

root@vdr:~# vi /mnt/ssd/etc/fstab

Damit letztendlich von der Platte gestartet werden kann, muß noch der Bootloader “GRUB” entsprechend eingerichtet werden.

Hierzu wird mittels “chroot” das Rootverzeichnis temporär geändert und GRUB auf der SSD installiert. Wichtig ist, vor der Installation die Datei “/boot/grub/grub.cfg” anzupassen, hier müssen analog zur fstab die UUIDs ersetzt werden.

root@vdr:~# mount --bind /dev /mnt/ssd/dev root@vdr:~# mount --bind /proc /mnt/ssd/proc root@vdr:~# chroot /mnt/ssd root@vdr:/# vi /boot/grub/grub.cfg root@vdr:/# grub-install /dev/sdb Installation finished. No error reported. root@vdr:/# exit exit

Nach dem Verlassen des chroots mittels “exit” kann das System heruntergefahren und die HD abgeklemmt werden. Das System sollte nun von der SSD starten.

Nach erfolgtem Systemstart sind noch zwei Parameter in der Datei “/etc/fstab” hinzuzufügen, die sich hoffentlich positiv auf die Performance und Lebensdauer der SSD auswirken: “discard” sowie “relatime”. “discard” sorgt dafür, daß die SSD mit Hilfe des TRIM-Kommandos nicht mehr genutzte Speicherblöcke effektiver zu verwalten, “relatime” ist die sinnvolle Alternative zummeist vorgeschlagenen “noatime”.

/etc/fstab
... UUID=87111054-e9dc-4208-af1d-36657c13da4c / ext4 discard,relatime,errors=remount-ro 0 1 UUID=f5dbddec-78e4-452d-96b3-c304a056d4db none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 ...

Nicht-Domänen-Rechner remote herunterfahren

19. März 2014 · Betriebssysteme · andreas · 12 Kommentare

In einer Domäne ist es recht einfach, einen Rechner remote heruterzufahren. Einfach an der Kommandozeile

shutdown -s -t 0 -m \\HerunterzufahrenderRechner

eingeben und sofern der ausführende Benutzer innerhalb der Domäne die benötigten Rechte hat, führt der angegebene Rechner den Befehl klaglos aus.

Nicht so trivial ist das Szenario bei Rechnern im z.B. heimischen Umfeld, wo nur selten eine zentrale Benutzerverwaltung aktiv sein dürfte:

shutdown -s -t 0 -m \\HerunterzufahrenderRechner HerunterzufahrenderRechner: Zugriff verweigert(5)

Als ersten Lösungsansatz stößt man meistens auf den Hinweis, sich zuerst mittels einer administrativen Netzerkverbindung gegenüber dem herunterfahrenden Rechner zu authentifizieren, wofür sich z.B. die Freigabe IPC$ anbietet:

net use \\HerunterzufahrenderRechner\ipc$ Das Kennwort oder der Benutzername ist ungültig für \\HerunterzufahrenderRechner\ipc$ Geben Sie den Benutzernamen für "HerunterzufahrenderRechner" ein: Benutzer Geben Sie das Kennwort für "HerunterzufahrenderRechner" ein: Der Befehl wurde erfolgreich ausgeführt.

Unter Windows XP war dies schon vollkommen ausreichend, unter Windows Vista und Windows 7 wird allerdings weiterhin der Zugriff verweigert. Wie der KnowledgeBase-Artikel “Description of User Account Control and remote restrictions in Windows Vista” erklärt, handelt es sich hierbei um ein Feature und keinen Bug:

When a user who is a member of the local administrators group on the target remote computer establishes a remote administrative connection by using the net use * \remotecomputer\Share$ command, for example, they will not connect as a full administrator. The user has no elevation potential on the remote computer, and the user cannot perform administrative tasks.

Um auch über das Netzwerk verbundenen, lokalen Benutzern entsprechende Berechtigungen zu erteilen, ist das setzen des Registry-Schlüssels “LocalAccountTokenFilterPolicy” innerhalb des Pfades

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

notwendig, dieser muß als DWORD mit dem Wert 1 angelegt werden.


NumLock an der Konsole automatisch aktivieren

16. Februar 2014 · Betriebssysteme · andreas · Kein Kommentar

Standardmäßig ist bei Debian die NumLock-Funktion auf der Konsole nach dem Boot deaktiviert. Ist dies bei physikalischen Servern in der Regel kein größeres Ärgernis, da man nur selten direkt an der Konsole arbeitet und noch seltener neu startet, kann es bei einer auf dem lokalen Arbeitsplatz betriebenen virtuellen Maschine nerven: je nach verwendeter Virtualisierungslösung wird beim Boot der VM auch unter Windows die NumLock-Taste ausgeschaltet, was mehr als nervig ist.

bis Debian 7 “Wheezy”:

Die Lösung ist recht einfach - ein Skript namens “enablenumlock”

### BEGIN INIT INFO # Provides: enablenumlock # Required-Start: $syslog # Required-Stop: $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Enables numlock on console # Description: Enables numlock on console at boot time. ### END INIT INFO # Aktionen case "$1" in start) /usr/bin/setleds -D +num ;; stop) /usr/bin/setleds -D +num ;; restart) /usr/bin/setleds -D +num ;; esac exit 0

ins Verzeichnis “/etc/init.d” gepackt, ausfrührbar gemacht und dann mittels

update-rc.d enablenumlock defaults

in den Systemstart eingebunden. Beim nächsten Boot wird NumLock automatisch aktiviert.

ab Debian 8 “Jessie”:

Durch den Umstieg von sysvinit zu systemd funktioniert die oben geschilderte Lösung nicht mehr zuverlässig. Einfache Abhilfe schafft der Ansatz aus dem archlinux Wiki, welcher dem Dienst “getty@.service” zwei Zeilen hinzufügt:

# systemctl edit getty\@.service [Service] ExecStartPre=/bin/sh -c 'setleds +num < /dev/%I'

Nach einen Neustart ist Numlock dann wieder standardmäßig aktiviert. Wer sich an dem angezeigten Hint stört, findet im Wiki auch eine Möglichkeit, dessen Ausgabe zu unterdrücken.

Aktualisierungen:
2017-07-30: Aktualisierung für Debian 8 (und 9)