Debian

Icinga2 startet nicht mehr nach Debian-Systemupdate

23. September 2016 · Anwendungen · andreas · Kein Kommentar

Nach einem Systemupdate wird Icinga2 nicht mehr ausgeführt und apt-get meldet eine Reihe von Fehlern:

icinga2-common (2.5.4-1~debmon70+3) wird eingerichtet ...
Neue Version der Konfigurationsdatei /etc/icinga2/icinga2.conf wird installiert ...
Neue Version der Konfigurationsdatei /etc/icinga2/features-available/gelf.conf wird installiert ...
Job for icinga2.service failed. See 'systemctl status icinga2.service' and 'journalctl -xn' for details.
invoke-rc.d: initscript icinga2, action "start" failed.
dpkg: Fehler beim Bearbeiten des Paketes icinga2-common (--configure):
Unterprozess installiertes post-installation-Skript gab den Fehlerwert 1 zurück
libicinga2 (2.5.4-1~debmon70+3) wird eingerichtet ...
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von icinga2-bin:
icinga2-bin hängt ab von icinga2-common (= 2.5.4-1~debmon70+3); aber:
Paket icinga2-common ist noch nicht konfiguriert.
dpkg: Fehler beim Bearbeiten des Paketes icinga2-bin (--configure):
Abhängigkeitsprobleme - verbleibt unkonfiguriert
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von icinga2-ido-mysql:
icinga2-ido-mysql hängt ab von icinga2-bin (= 2.5.4-1~debmon70+3); aber:
Paket icinga2-bin ist noch nicht konfiguriert.
icinga2-ido-mysql hängt ab von icinga2-common (= 2.5.4-1~debmon70+3); aber:
Paket icinga2-common ist noch nicht konfiguriert.
dpkg: Fehler beim Bearbeiten des Paketes icinga2-ido-mysql (--configure):
Abhängigkeitsprobleme - verbleibt unkonfiguriert
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von icinga2:
icinga2 hängt ab von icinga2-bin (= 2.5.4-1~debmon70+3); aber:
Paket icinga2-bin ist noch nicht konfiguriert.
icinga2 hängt ab von icinga2-common (= 2.5.4-1~debmon70+3); aber:
Paket icinga2-common ist noch nicht konfiguriert.
dpkg: Fehler beim Bearbeiten des Paketes icinga2 (--configure):
Abhängigkeitsprobleme - verbleibt unkonfiguriert
..........
Fehler traten auf beim Bearbeiten von:
icinga2-common
icinga2-bin
icinga2-ido-mysql
icinga2
E: Sub-process /usr/bin/dpkg returned an error code (1)

Ausschlaggebend ist der Fehler in dem Paket “icinga2-common”, die Fehler in den restlichen Pakten sind Folgefehler.

Freundlicherweise gibt dpkg auch gleich einige Tips zur Fehlersuche aus

root@monitoring:~# systemctl status icinga2.service
 ● icinga2.service - LSB: icinga2 host/service/network monitoring and management system
 Loaded: loaded (/etc/init.d/icinga2)
 Active: failed (Result: exit-code) since Do 2016-09-22 09:17:37 CEST; 8min ago
 Process: 6270 ExecStart=/etc/init.d/icinga2 start (code=exited, status=1/FAILURE)
Sep 22 09:17:37 vm-00017 icinga2[6270]: checking Icinga2 configuration
 Sep 22 09:17:37 vm-00017 icinga2[6270]: checking Icinga2 configuration. Check '/var/log/icinga2/startup.log' for details. ... failed!
 Sep 22 09:17:37 vm-00017 systemd[1]: icinga2.service: control process exited, code=exited status=1
 Sep 22 09:17:37 vm-00017 systemd[1]: Failed to start LSB: icinga2 host/service/network monitoring and management system.
 Sep 22 09:17:37 vm-00017 systemd[1]: Unit icinga2.service entered failed state.

Systemctl liefert den Hinweis, daß beim Check der Konfiguration wohl etwas nicht passt, und verweist auf die Logdatei “/var/log/icinga2/startup.log”

root@monitoring:~# cat /var/log/icinga2/startup.log
 information/cli: Icinga application loader (version: r2.5.4-1)
 information/cli: Loading configuration file(s).
 information/ConfigItem: Committing config item(s).
 critical/config: Error: Error while evaluating expression: Tried to access undefined script variable 'PluginContribDir'

die dann auch mehrfach den kitischen Fehler “Tried to access undefined script variable ‘PluginContribDir’” anmerkt.

Ein Blick in die Datei “/etc/icinga2/constants.conf” zeigt dann auch, daß die Variable tatsächlich weder gesetzt noch vorhanden ist. Im Verzeichnis “/etc/icinga2/” liegt aber noch eine “constants.conf.dpkg-dist” mit neuerem Datum als die “constants.conf”, in der die Zeile

/* The directory which you use to store additional plugins which ITL provides user contributed command definitions for.
 * Check the documentation, chapter "Plugins Contribution", for details.
 */
 const PluginContribDir = "/usr/lib/nagios/plugins"

vorhanden ist. Nach Hinzufügen der Definition in die “constants.conf” kann dpkg das Paket “icinga2-common” erfolgreich konfigurieren:

root@monitoring:~# dpkg --configure icinga2-common
 icinga2-common (2.5.4-1~debmon70+3) wird eingerichtet ...

Ein “apt-get update” läuft anschließend für die abhängigen Pakete problemlos durch.


Falsche Systemzeit in einer virtuellen Linux-Maschine unter Windows

1. März 2015 · Betriebssysteme · andreas · Kein Kommentar

Wenn sich Windows und Linux eine physikalische Hardware-Plattform teilen, kann es zu Unstimmigkeiten über die tatsächliche Uhrzeit kommen. Dies liegt darin begründet, daß Linux die Systemzeit standardmäßig als UTC betreibt, Windows hingegen nach lokaler Zeit.

Um Zeitdifferenzen zu bereinigen genügt ein

hwclock --localtime --systohc

als Benutzer root auf der Kommandozeile des Linux-Systems, welche die Einstellung korrigiert und in der Datei “/etc/adjtime” festhält.


Installation des vSphere SDK for Perl Package unter Debian

17. November 2014 · Betriebssysteme · andreas · Kein Kommentar

Debian gehört nicht zu den standardmäßig unterstützten Plattformen für den Betrieb des vSphere SDK for Perl. Damit es trotzdem läuft, sind ein paar kleine Anpassungen nötig:

Als erstes sollte die im Paket enthaltene und zur Installation verwendete Datei “vmware-install.pl” modifiziert werden, welche im Zuge der Installation das verwendete Betriebssystem ermittelt und somit auch die zu verwendenden Systemwerkzeuge festlegt.

Nach einem

vi vmware-install.pl

reicht es, nach dem String “ubuntu” zu suchen und dessen zweites Vorkommen durch “debian” zu ersetzen.

Anschließend müssen noch die fehlenden Pakete

Archive::Zip 1.28 or newer
Crypt::SSLeay 0.55 or newer
Class::MethodMaker 2.10 or newer
HTML::Parser 3.60 or newer
Data::Dump 1.15 or newer
SOAP::Lite 0.710.08 or newer
URI 1.37 or newer
XML::SAX 0.16 or newer
XML::NamespaceSupport 1.09 or newer
XML::LibXML::Common 0.13 or newer
XML::LibXML 1.63 or newer
LWP 5.805 or newer
LWP::Protocol::https 5.805 or newer

nachinstalliert werden, damit die benötigten Abhängigkeiten erfüllt sind, was ein

apt-get install libssl-dev libarchive-zip-perl libcrypt-ssleay-perl libclass-methodmaker-perl libhtml-parser-perl libdata-dump-perl libsoap-lite-perl libxml-sax-perl libxml-libxml-perl libtime-duration-parse-perl

erledigt. Debian konform sollten die ausführbaren Dateien im letzten Schritt statt nach “/usr/bin” in das Verzeichnis “/opt/bin” kopiert werden.


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: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# # / was on /dev/sda1 during installation
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

VDR mit Debian

23. Dezember 2013 · Anwendungen · andreas · 2 Kommentare

Der Video Disk Recorder (VDR) ist eine feine Sache: einfach eine digitale TV-Karte (entweder C/S oder T) in einen antiquierten PC einbauen und schon steht für wenig Geld ein vollwertiger digitaler Videorekorder zur Verfügung.

Neben speziellen VDR-Distributionen wie z.B. dem c’tVDR eignet sich fast jede Linux-Distribution als Basis. Dieser Artikel beschäftigt sich mit der Installation eines “normalen” SD-VDR auf Basis von Debian Wheezy.

Als Blaupause für die Basisinstallation dienten die Artikel von Tobias Grimm und Martin Selbald, wobei einige Hard- und Software-spezifische Besonderheiten eigene Lösungen benötigten. Die erste (nicht veröffentlichte) Fassung dieses Beitrags basierte auf der Installation eines No-Name-Rechners, die aktuelle Fassung wurde für die Installation auf einen DELL Precision T3400 überarbeitet. Eine wesentliche Änderung hierbei war der Umstieg von NVRAM-Wakeup auf ACPI Wakeup.

Dieser Beitrag erhebt keinen Anspruch auf Vollständigkeit, sondern dient der Dokumentation der durchgeführten Schritte.

Weiterlesen