Opensuse 12.3, LDAP-Client, sssd erfordert TLS/SSL – I

Vor ca. einem Jahr habe ich 5 Artikel zur Implementierung von LDAP mit Hilfe von YaST2-Tools auf Opensuse 12.1-Systemen verfasst. Die einleitenden Artikel waren:

Opensuse 12.1 -LDAP I/
Opensuse 12.1 – LDAP II
Opensuse 12.1 – LDAP III

Gestern hat sich leider bei Einrichtung eines neuen Opensuse-12.3-LDAP-Servers und zugehöriger OS12.3-Client-Systeme erwiesen, dass die Übertragbarkeit dieser Artikel auf Opensuse 12.3 nicht mehr uneingeschränkt gegeben ist. YaST2’s LDAP-Client-Einrichtung erzwingt offenbar seit Opensuse 12.2 den Einsatz von SSSD und führt dadurch potentiell zu einer Reihe von Problemen. In diesem und nachfolgenden Beiträgen gehe ich auf einige dieser Punkte und ein paar damit zusammenhängende Ungereimtheiten der YaST2-LDAP-Module ein.

Background-Infos: Ankündigung der SSSD-Umstellung durch SuSE für Opensuse 12.2

Nachdem ich Probleme mit der LDAP-User-Authentifizierung bekam und diese auf SSSD zurückführen konnte, war es gestern interessant für mich, zumindest ansatzweise herauszufinden, wann und wie der Umstieg auf SSSD bei Opensuse eigentlich herbeigeführt wurde. SSSD bedeutet “System Security Services Daemon”, ist meines Wissens eine Erfindung von Red Hat und soll gerade die Interaktion mit Remote-Auth-Diensten über geeignete PAM-Module vereinfachen und sicherer machen.

Begonnen wurde mit der Diskussion und Bereitstellung von SSSD offenbar schon im Vorfeld von OS 11.4 und des SLES 11. Im Opensuse-Bereich wurde der finale Umstieg dann offenbar mit Opensuse 12.2 beschlossen. Siehe hierzu:

http://swik.net/opensuse/Planet+SuSE/openSUSE+TV%3A+Deploying+sssd+%28Marcus+Moeller%29/e5l4h
https://features.opensuse.org/308902
https://features.opensuse.org/313142
http://lists.opensuse.org/opensuse-factory/2012-02/msg00167.html

Das Video unter dem ersten Link (von der FOSDEM 2011) zeigt, dass ein wichtiges Motiv für die Einführung von SSSD neben einer Vereinfachung der Konfigurationsdateien wohl die Beseitigung von Problemen mit dem NSCD-Offline-Caching in großen Installationen war. Vielleicht nicht unbedingt ein Problem, das die Masse der OS 12.3-User, sondern wohl eher SLES-Admins betrifft. Aber vielleicht täusche ich mich da.

Nun ist eine Umstellung von Remote-Authentisierungs-Modulen aus meiner Sicht doch eine größere Änderung an einem Linux-System. Man würde daher erwarten, dazu etwas in den Release Notes von Opensuse 12.2 oder Opensuse 12.3 zu finden. Fehlanzeige !

https://www.suse.com/releasenotes/i386/openSUSE/12.2/RELEASE-NOTES.en.html
https://www.suse.com/releasenotes/i386/openSUSE/12.3/RELEASE-NOTES.en.html

Geradezu amüsant mutet angesichts mancher Folgen dann die Diskussion der Umstellungs-Ankündigung im Opensuse Factory-Bereich an:

http://lists.opensuse.org/opensuse-factory/2012-02/msg00167.html
http://opensuse.14.
x6.nabble.com/Removing-support-for-nss-ldap-pam-ldap-from-YaST-LDAP-client-td4373062.html

Da wird lapidar das Ende von “nss_ldap” und “pam_ldap” zugunsten von sssd angekündigt. Zitat:

" According to feature #313142 (“YaST support only SSSD for LDAP based authentication”) we want to remove current nss_ldap/pam_ldap support from YaST modules and leave only support for SSSD. Target is next openSUSE realease (12.2). SSSD is there already now (12.1), but still only as an option. With new approach, we should of course provide a migration from current setups.
 
However, this also means that we will stop supporting non-encrypted connections to LDAP server, because SSL/TLS is a requirement for SSSD. So you have to prepare your LDAP servers so they are able to provide TLS."

Die Hervorhebung erfolgte durch mich. Interessant ist hier ja aber vor allem der letzte Satz, der natürlich Auswirkungen auf laufende LDAP-Installationen impliziert! Als Reaktion meinte dann einer der SuSE-Entwickler sehr zu Recht, dass das wohl Eingang in die Release Notes finden sollte. Darauf warteten wir aber leider vergeblich ….

YaST2 erzwingt die Nutzung von SSSD auf LDAP-Clients

Unter Opensuse 12.1 bot das YaST2-Modul “LDAP-Client” die Möglichkeit zur Nutzung von SSSD und zugehöriger PAM-Module bei der Interaktion mit einem LDAP-Server noch als wählbare Option an. Hier der entsprechende Screenshot von einem OS 12.1-System:

ldap_36

Ich hatte diese Option in meinen Artikeln zur LDAP-Konfiguration mittels YaST2 außen vor gelassen, da mir eine konventionelle Einrichtung des Servers und der Clients mit anschließender, kontrollierter Etablierung einer TLS-Kommunikation zwischen LDAP-Clients und LDAP-Server besser und verständlicher erschien.

Die Linux-Götter bei SuSE mögen wissen, wieso diese Option seit Opensuse 12.2 ersatzlos gestrichen wurde und “sssd” nun zwangsverordnet wird ! Ich fühle mich dadurch – trotz aller unbestrittenen Vorteile von SSSD – ungewarnt überfahren bis bevormundet. Und wie man sehen wird, gefährdet eine solches radikales Vorgehen laufende produktive Opensuse-Installationen, bei denen LDAP als Authentifizierungsmittel genutzt wird, zumindest potentiell.

Liegt es daran, dass die SuSE-Verantwortlichen Opensuse-Releases sowieso nur noch als Testplattform für den (inzwischen bei Einsatz von Virtualisierung überteuerten) SLES-Enterprise Server sehen und dass Ihnen eine Kontinuität beim Betrieb von Opensuse-Systemen herzlich egal ist? Alles unter dem wohlfeilen Deckmantel einer erzwungenen verbesserten Systemsicherheit? Die dann seltsamerweise gerade beim Einsatz von YaST2 zur Benutzerverwaltung doch nicht eingehalten wird (s.u.!) ?

Ich finde, man sollte den Opensuse-Usern die Chance geben, sich systematisch in Neuerungen/Verbesserungen einzuarbeiten, diese auszuprobieren und vor dem produktiven Einsatz verstehen zu lernen. In Sicherheitsfragen muss Überzeugung und Verständnis der Ausgangspunkt erforderlicher Maßnahmen sein. Da muss und sollte den Opensuse-Freunden eine Lernkurve zugestanden werden. Und nicht jeder baut sich mit Opensuse gleich ein Hochsicherheitsnetz auf. Für viele ist LDAP selbst ja schon eine gewaltige Herausforderung!

Wohlgemerkt:
Ich beklage nicht die Existenz oder den möglichen Einsatz von SSSD unter Opensuse 12.3 und erst recht nicht unter SLES. Ganz im Gegenteil !
Ich kritisiere aber die unkommentierte Einschränkung der Admin-Tools von YaST2 in dem Sinne, dass hier bislang fast problemfrei funktionierende Optionen zu einer sssd-freien Installation des LDAP-Dienstes
entfernt wurden. Und ich beklage zudem den eklatanten Mangel an einer Integration von entsprechenden Informationen zu SSSD und seinen Voraussetzungen in Yast2 oder aber den Release-Notes ! Letzteres vor allem im Interesse von Opensuse-Nutzern, die sich nicht dauernd und professionell mit allen Änderungen auseinandersetzen können.

Den Zwang zur Nutzung von SSSD würde man nömlich wirklich verstehen, wenn es dem unbedarften Nutzer dadurch tatsächlich leichter fallen würde, zu einem laufenden LDAP-Dienst oder clientseitig zu einer laufenden Verbindung mit einem bereits vorhandenen LDAP-Server zu kommen. Ohne bereits laufende Installation in ihrer Funktionstüchtigkeit zu gefährden. Das ist unter YaST2 aber leider nicht der Fall !

Davon zeugen hinreichend viele Artikel im Internet und Linuxforen. Man google mal zu “Opensuse 12.2 12.3 LDAP sssd TLS getent Problem” oder “Opensuse sssd PAM TLS LDAP Problem”.

Typische Probleme, die sich nach der Umstellung auf sssd ergeben können

In verschiedenen Beiträgen im Internet findet man folgende Schwierigkeiten beschrieben:

  1. User eines “Opensuse 12.3”-Client-Systems, das mit YaST2’s Modul “LDAP Client” für die User-Authentifizierung per LDAP konfiguriert wurde, werden sich gegenüber einem vorhandenen LDAP-Server, der keine TLS/SSL-Absicherung bereitstellt, nicht mehr authentifizieren können. Mit allen Folgen für produktive Opensuse-basierte Netzwerke ….
  2. “getent passwd” zeigt (ohne besondere Maßnahmen) nur noch die Liste der User an, die in der lokalen “/etc/passwd”- bzw. “shadow”-Datei erfasst sind, und nicht mehr die zusätzliche Liste der LDAP-User.
  3. Nach dem Versuch, den LDAP-Server mit einem “Self-signed Certificate” für TLS auszustatten, ergeben sich möglicherweise Probleme beim Einsatz von SSSD.
  4. Auch wenn man parallel zur LDAP-Client-Einrichtung einen neuen LDAP-Server unter Opensuse 12.3 aufsetzt, kann man eine TLS-Konfiguration umgehen und läuft dann in einem reinen OS 12.3-Netz in die oben beschriebenen Schwierigkeiten.

Das erste und wichtigste der genannten Probleme betrifft diejenigen, die ihren LDAP-Server ohne TLS/SSL-Fähigkeit betreiben. Zwar sollten zwei meiner früheren Artikel zu LDAP ja gerade zeigen, wie man TLS aufsetzt. Aber ich habe durchaus Verständnis für Leute, die einen solchen Schritt in kleineren, privaten Netzwerken erstmal gescheut haben und damit vielleicht sogar gut leben konnten. Die müssen künftig was tun.

Erkenntnisse aus eigenen LDAP-Tests unter OS 12.3

Nach mehreren Experimenten auf verschiedenen virtuellen Systemen halte ich folgende Erkenntnisse fest, die die oben dargestellten Schwierigkeiten bestätigen:

  1. YaST2 erzwingt bei der Anlage und Konfiguration eines LDAP-Clients per YaST den Einsatz von SSSD.
     
    Dies schließt aber eine Deinstallation von SSSD und ein manuelles konventionelles Setup der LDAP-Verbindungen auf Opensuse 12.3 Clients (ohne Benutzung von YaST2) nicht aus.
  2. SSSD erfordert im Zusammenhang mit einer lokalen oder einer Remote Authentifizierung über LDAP zwingend den Einsatz von TLS/SSL für die Verbindung zum LDAP-Server. Voraussetzung sind natürlich entsprechende OpenSSL-Zertifikate einer CA für den Server und entweder eine “starttls”-Fähigkeit des LDAP-Servers oder aber der Einsatz von “ldaps”. “gssapi” geht als Sicherheits-layer angeblich auch – habe ich aber nicht getestet.
  3. YaST2 erzwingt aber das Aufsetzen einer TLS/SSL-fähigen LDAP-Server-Installation unter Opensuse 12.3 nicht. Man kann die TLS-bezogenen Angaben auch einfach leer lassen und Warnungen des YasST2-LDAP-Server-Moduls
    übergehen!
  4. Auch bei der Konfiguration des YaST2-LDAP-Clients für die Anlage von User- und Gruppen-Accounts auf dem LDAP-Server wird das Initiieren einer TLS-Verbindung nicht wirklich erzwungen. Auch hier kann man Zertifikatsangaben einfach leer lassen.
  5. Die Anlage von Usern und Gruppen auf einem LDAP-Server funktioniert mit dem YasT2-LDAP-Client in der YaST2-Userverwaltung auf Rückfrage gemeinerweise auch ohne TLS. Bei Setzen einer bestimmten Option in der “/etc/sssd/sssd.conf” muss man nicht einmal eine Rückfrage beantworten. Das wirkt unter Sicherheitsgesichtspunkten eher schizophren und ist mindestens mal verwirrend. Denn man kann ja neue User ordnungsgemäß mit YaST auf einem TLS/SSL-freien dem LDAP-Server anlegen – nur kommen diese User nie zu einem erfolgreichen Login.
  6. Ein Login von vorhandenen oder neuen Usern, die über den LDAP-Server authentifiziet werden müssen, wird nach dem per YaST erzwungenen Einsatz der SSSD-PAM-Module auf einem OS 12.3-System aber ohne TLS-Fähigkeit des Servers nicht funktionieren. Und dies erwies sich in meinen Tests als sehr unabhängig von den Einstellungen in der “sssd.conf”. Ganz im Sinne der SSSD-Erfinder!
  7. Weitere Schwierigkeiten bereiten ggf. Self-Signed-TLS-Zertifikate des LDAP-Servers, wenn die entsprechenden Serverzertifikate der CA nicht auf den Client kopiert wurden und eine bestimmte Option in “etc/sssd/sssd.conf” nicht gesetzt wurde.

Die nachfolgende Abbildung zeigt, dass bei der LDAP-Client-Installation mittels YaST2 auf Opensuse 12.3-Systemen SSSD gezwungenermaßen installiert und aktiviert wird.

ldap_client_OS123_sssd_small

Bei mir sorgten die Tests für ein wenig Verwirrung bzgl. der YaST-LDAP-Module:

Bei der Abänderung der YaST2-Module hat man einerseits bei der Installation des LDAP-Clients eine Option weggenommen und SSSD auf den Clients erzwungen. Andererseits kann man bei der LDAP-Client-Einrichtung per YaST die eigentlich erforderlichen Zertifikatseingaben bzgl. des LDAP-Servers umgehen. Das wirkt irgendwie inkonsequent – Sinn würde das höchstens für andere Auth-Domainen machen, aber hier geht es ja gerade um die Einrichtung eines LDAP-Clients mit SSSD.

In der YaST2-Benutzerverwaltung kann man ferner entgegen den Sicherheitsbestrebungen von SSSD eine verschlüsselte Verbindung als LDAP-Admin beim Zugriff auf den LDAP-Server explizit vermeiden! Man kann dann beliebig und ungesichert User und Gruppen anlegen – die entsprechenden armen Anwender werden sich aber von einem Opensuse 12.3-Client aus nie mittels dem LDAP-Server ohne TLS authentifizeren können, wenn auf dem OS12.2/12.3 Client-System SSSD’s PAM-Module laufen.

Auch bei der LDAP-Serverinstallation unter OS 12.2/OS12.3 sind die Dinge nur halbherzig abgeändert – auch hier kann man auch TLS vermeiden, obwohl der Server dann nicht mit Opensuse 12.3-Clients zusammenarbeiten wird.

Ich finde: Gerade wegen fehlender Alternativen zu SSSD und des Fehlens deutliche und klarer Warnhinweise bzgl. der Konsequenzen ist das Verhalten der YaST2-LDAP-Module unter Opensuse 12.3 wirklich verwirrend. Ganz schlimm und wahrscheinlich überraschend trifft es als Konsequenz diejenigen, die neue Opensuse 12.3-Systeme einführen oder vorhandene Opensuse 12.2-Client-Systeme auf Opensuse 12.3 upgedated haben, dort die Yast2-Client-Einrichtung durchlaufen haben und die sich dann wie gewohnt gegenüber einem älteren Opensuse SLES oder Opensuse 12.1-System ohne TLS-Konfiguration authentifizieren wollen. In einem solchen Fall wird wohl gar nichts mehr gehen.

Fazit:
Das Schlimmste an den LDAP-Auth-Mechanismen von Opensuse 12.3 ist nicht der Einsatz von SSSD
sondern, dass der unbedarfte User über die Ursachen seiner resultierenden Probleme im Unklaren gelassen wird. Schon kleine zarte Hinweise auf der Startseite im YaST2 LDAP Client Modul darauf,

  • dass sssd seit Opensue 12.2 für die LDAP-Authentifizierung zwangsweise eingesetzt wird,
  • dass die Authentifizierung nicht wie gewohnt über pam_ldap ("pam_ldap.so") und nss_ldap ("libnss_ldap.so.2") erfolgt, sondern über pam_sss ("pam_sss.so"),
  • dass nur noch verschlüsselte TLS/SSL-Verbindungen zum LDAP-Server erlaubt werden,
  • dass ein vorhandener LDAP-Server ggf. entsprechend ertüchtigt werden muss,

wären wirklich hilfreich gewesen. Ganz nett wären dann noch Links zu Webseiten für eine sssd-Beschreibung und Konfigurationsoptionen gewesen. Aber da habe ich wohl zuviel erwartet.

TLS/SSL-freie Autentifizierung gegenüber einem LDAP-System trotz laufendem SSSD ?

Ganz verwirrend wird es für die verzweifelt nach einer Abhilfe suchenden OS 12.2/12.3-Anwender dann, wenn man im Internet von “Lösungen” zu einer TLS/SSL-freien Authentifizierung mit SSSD liest, wie etwa im Beitrag von “gsancome” unter

http://forums.opensuse.org/english/get-technical-help-here/install-boot-login/478283-how-do-i-disable-tls-ldap-2.html

oder hier:
http://lists.opensuse.org/opensuse-de/2013-03/msg00528.html

oder hier:
http://www.susethailand.com/suseforum/how-tofaq-%28beginner-skill%29-43/disable-tlsssl-for-ldap-on-opensuse-12-2/

Bei meinen Tests waren all diese Tipps zumindest unter Opensuse 12.3 nicht in dem Sinne wirksam, dass danach ein Login auf einem SSSD-basierten System nun plötzlich ohne SSL/TLS-Absicherung der Kommunikation zu einem LDAP-Server für die User-Authentifizierung funktioniert hätte. Nochmal im Klartext:

Ein Login von Usern mit LDAP-Authentifizierung funktioniert auf einem durch PAM und SSSD-PAM-Module geschützten Client grundsätzlich nicht, wenn der Client keine TLS/SSL-geschützte Verbindung zum authentifizierenden LDAP-Server aufbauen kann. Der LDAP-Server muss verschlüsselte Verbindungen unterstützen.

Dies gilt selbst dann, wenn es wie unter OS 12.3 auf einem Client-System als root möglich ist, die Userverwaltung unter YaST2 mit Login auf dem LDAP-Server über eine ungeschützte (!) Verbindung zu benutzen! Dass das möglich ist, liegt aber daran, dass YaST für den Kommunikationsaufbau mit dem LDAP-Server SSSD-Einstellungen über Py-LDAP-Connectivity-Module umgehen kann. Und solange der LDAP-Server auf dem normalen LDAP-Port offen sein sollte, ist ein Bind dorthin gar kein Problem. Dass hat aber mit der PAM-geschützten User-Authentifizierung und dem Login am OS12.3-Client leider gar nichts zu tun.

In den nächsten Beiträgen werde ich ein wenig näher auf ein paar Einstellungen in der “/etc/sssd.conf” eingehen und nochmal die Erzeugung von TLS/SSL-Zertifikate mittels YaST2 ansprechen. Ein sinnvoller Ausweg aus dem SSSD-Dilemma ist ja wohl der, seinen ungeschützten LDAP-Server endlich über “starttls” TLS/SSL-fähig zu machen !

Erster Check Opensuse 12.3

Der Artikel ist wegen eines laufenden arbeitsintensiven Projektes zwar schon etwas veraltet, aber vielleicht interessiert meine Erfahrungen mit dem Upgrade auf Opensuse 12.3 doch noch jemanden – zumal sie sehr positiv ist und SuSE ein Lob verdient:

Ich war mutig und habe inzwischen auf gleich drei Systemen ein Upgrade von Opensuse 12.2 auf Opensuse 12.3 vorgenommen. Das ging auf 2 Opensuse 12.2 Systemen (fast) wie geschmiert. Ich habe selten ein so problemfreies Upgrade wie auf diesen Systemen erlebt!
Auf einem dritten System (alter Laptop mit Nvidia FX 1500M-Karte gab es größere Probleme mit Nvidia-Treibern – sowohl unter Windows als auch unter Linux). Die ließen sich durch das Zuschalten des Nvidia-Community-Repositories für Opensuse 12.3 lösen. Das wars dann aber auch schon.

Upgrade eines einfachen Server-Testsystems

Das erste System war ein rel. schlankes Testsystem mit einem aktuellen Opensuse 12.2, vielen Server-Komponenten (LAMP, LDAP, KVM, …) und KDE 4.9 – ohne weitere Updates aus anderen Zusatzrepositories – also nur mit Paketen aus dem OSS_Update-Repo von SuSE und dem KDE-Repository. Bzgl. der Grafik-Karte lief vor und nach dem dem Upgrade der Nouveau-Treiber mit einer GTX9800+.

Zu diesem System gibt es hinsichtlich des Upgrades fast nichts zu sagen:

CD rein, 1920×1200-Auflösung und deutsche Sprache wählen, Partition mit dem upzugradenden 12.2-System auswählen, Start drücken und (im falle meiner Paketzusammenstellung) ca. 6,5 GB installieren lassen. Was die SuSE-Installationsroutine dann an Schritten durchführte, ging ohne jede Schwierigkeiten über die Bühne.

Als Bootloader wurde ein vorhandenes Grub2 upgedated. Während der Installation führte die Installationsroutine auf diesem System einen expliziten Neustart durch, bevor die Installation dann in einer zweiten Phase regulär beendet wurde.

Es wurde im Gegensatz zu früheren Installationen auf diesem System kein Kernelstart mit kexec versucht. Es gab vor und nach dem Neustart zu meiner Überraschung und im Gegensatz zu Opensuse 12.1/12.2 keinerlei Schwierigkeiten mit der Grafikkarte und dem Nouveau-Treiber. (Vielleicht sollte der SuSE-Installer das kexec-Spielchen in Zukunft ganz unterlassen?)

Der KDE-Desktop erschien schließlich im neuen SuSE-Layout, Kontact lief mit seinen Anbindungen an 2 Imap-Server (einer im lokalen Netz, einer extern) und an 2 Open-Xchange-Server (OX5, OX6, beide im lokalen Netzwerk) problemfrei. Alles im grünen Bereich. Auch die Nachinstallation eines geeigneten Treibers von der NVidia-Webseite bereitete keine Probleme.

Danach habe ich KDE auf 4.10 upgegradet sowie meine anderen üblichen Repositories geladen und entpr. Updates durchgeführt. No problem – außer den üblichen internen KDE-Themen.

Upgrade eines produktiven Entwicklungs-Systems mit etlichen Serverkomponenten

Ein wenig hakeliger lief es mit einem anderen System, das eine andere Nvidia-Karte (GTX 460) beherbergt und sich bereits auf dem Stand von KDE 4.10.1 befand. Auch hier lief alles glatt bis zum Neustart des Systems. Der wurde hier mit kexec versucht, was nach früheen Erfahrungen fast erwartungsgemäß schief ging. Irgendwie hat auf diesem System das Umschalten der Grafik-Modi mit dem Nouveau-Treiber noch nie geklappt. Es taucht noch die Meldung auf “Der Kernel wird mit kexec geladen”. Dann kommt noch “rcnscd: no such service nscd”. Anschließend reagiert der Schirm nicht mehr. Ich kenne dieses Verhalten seit Opensuse 12.1 auf verschiedenen Systemen. Irgendwie habe ich den Eindruck, dass das bei mir immer dann passiert, wenn vor dem Upgrade eines Systems der proprietäre Nvidia-Treiber von der NVidia-Webseite der aktive war. Irgendwie bekommen SuSE’s Upgrade-Routinenn dann den Wechsel zum Nouveau-Treiber nicht hin.

Das System läuft trotz
eingefrorenem Schirm allerdings weiter und installiert auch brav weiter. Man lausche ein wenig auf die Festplatten (soweit noch vorhanden und nicht durch SSDs ersetzt), warte bis die Aktivitäten aufhören und probiere dann mal CTRL-ALT-DEL. In meinem Fall half das. Das System fuhr runter, startete neu, zeigte mir ein Grub1 im neuen dunklen Opensuse-Look und ließ mich dann das neue OS 12.3-System (Desktop-Kernel) hochfahren. (Netterweiser gibt es im Grub1-menü auch eine Verzweigung in ein Grub2-Menü).

Auf diesem System erscheinen dann, wenn man die Startmeldungen von systemd und den LSB-Init-Skripten verfolgt (CTRL-ALT-F1), Fehlermeldungen zum Start von VMware (logisch, das muss ja erst neu kompiliert werden). Und dann stoppt der Prozess des Hochfahrens beim Versuch, die grafische Oberfläche zu starten.

Ein “CTRL-Alt-F2” bringt mich allerdings auf ein nutzbares Konsolenfenster. Von dort kann ich sshd starten. Dann kopiere ich mir von einem anderen Rechner per “scp” einen aktuellen Nvidia-Treiber aufs System. Achtung: Bei mir ging mit dem Kernel 3.7.10 nur die Version 310.40 des Nvidia-Treibers. Ältere Versionen bringen im Zuge der Nvidia-Installationsroutine Fehlermeldungen zu fehlenden Header-Dateien. Zur Sicherheit setze ich als Kernelparameter über YaST “nomodeset”, installiere den NVidia-Treiber und starte das System neu.

Alles läuft – die grafische Oberfläche von SuSE erscheint. Das gesamte System ließ sich dann anstandlos über diverse Repositories hinsichtlich aller Desktop- und Server-Komponenten (LAMP-Entw.-System) auf den neuesten Stand bringen und läuft nun unter KDE 4.10.2. VMware-Workstation musste ich auf die Version 9.0.2 bringen, damit die sich für den neuen Kernel kompilieren ließ. Jetzt laufen auch Win XP und Win 7 wieder im Fenster mit. Mit virtuellen Linux-Maschinen unter einem upgedaten KVM hatte ich keinerlei Probleme.

Etwas unangenehme Schwierigkeiten bereitet mir auf diesem System gerade eine vorhandene Open-Xchange 6.22-Installation. Der OX 6.22 Daemon lässt sich seit den letzten Paketupdates auf meinem System nicht mehr mit systemd (“systemctl start open-xchange”) oder “rcopen-xchange” starten. Es hilft nur ein Wechsel in das Verzeichnis /etc/init.d und dort ein manueller Start mit “./open-change start”. Das Problem ist sowohl an Open-Xchange wie auch Novell gemeldet (https://bugzilla.novell.com/show_bug.cgi?id=813767). Das Server-Backend von OX 6.22. läuft übrigens trotzdem – von Kontact aus kann man problemfrei zugreifen. Nur die OX6-Web-Dienste gehen nicht ohne den Workaround des manuellen Starts mit “./open-xchange start”.

Upgrade eines alten Dell-M90-Laptops mit alter Nvidia FX 1500M Quadro

Opensuse 12.3 habe ich auf diesem System von Opensuse 12.1 aus upgegraded. Das lief problemfrei – bis auf den Nvidia-Treiber. Meine übliche Strategie, einen Treiber von der Nvidia-Web-Seite zu nehmen, funktionierte hier gar nicht. Der Treiber 310.40 unterstützt die alte Karte nicht mehr – ältere Treiber melden dagegen Probleme mit Header-Dateien. Hier ist Nvidia offenbar zu faul, noch was für Besitzer älterer Karten in Hinblick auf 3-er Kernelversionen von Linux zu tun. Als hilfreich und zeitsparend erwies es sich dann, auf die Treiber des Opensuse Nvidia-Repositories zurückzugreifen. Der im Paket “nvidia-gfxG02-kmp-desktop” enthaltene Treiber funktioniert anstandslos mit der Quadro FX 1500M. Alle anderen Systemkomponenten des alten Dell M90 wurden durch Opensuse 12.3 anstandslos, auf Anhieb und perfekt unterstützt. Super!

Ich möchte ausdrücklich sagen, dass ich auf diesem Laptop-System aus Projektgründen auch Windows 7 (64Bit) als Dual-Boot-Option installieren musste. Win 7 (64Bit) bootet zugegebenermaßen zwar rasch und ist insgesamt spürbar schneller als XP – aber die Installation erwies sich hinsichtlich von Treibern als viel, viel größeres Problem als das Linux-Upgrade.

Ich musste Zusatztools installieren, um überhaupt an
geeignete Treiber für etliche Systemkomponenten zu kommen. Die Windows-Installation (natürlich ohne Serverkomponenten) kostete mich insgesamt etwa doppelt so viel Zeit wie der Opensuse 12.3 Upgrade. Und – ehrlich – der Windows 7 Desktop wirkt nicht nur langweilig – er ist es gegenüber modernen Linux-Desktops auch. Man muss sich die Tortur mit Windows doch immer mal wieder antun, damit man wieder mal weiß, was man an einem modernen Linux-System hat!

Opensuse 12.2 – textbasierter Boot Screen ohne Plymouth Animation

Leider ist unter einem aktuellem Suse oder Red Hat System Plymouth so stark in das Gespann grub2 und systemd integriert, dass ich mich eher davor hüte, alle Plymouth bezogenen Pakete zu deinstallieren. Nebenbei: Inzwischen ist wohl auch unter Ubuntu eine starke Einbindung von Plymouth in die Prozesse beim Systemstart vorgenommen worden. Siehe: http://ubuntuforums.org/showthread.php?t=1457388

Dennoch kommt ab und zu der Wunsch auf, den animierten Plymouth-Splash-Screen während des Boot-Vorgangs los zu werden, um ohne Umwege die Boot-Meldungen sehen zu können. Diesen Wunsch hatte zumindest ein Admin, der mich vorgestern per Mail anschrieb.

Auf meinen Opensuse 12.2-Systemen mit Grub2 half hier folgendes Vorgehen:

Deaktivieren des animierten Plymouth-Boot-Screens mit Hilfe von YaST2

Man öffne unter YaST2 das Modul “Boot Loader”. Im sich öffnenden Fenster gehe man zum Button “Boot Loader Options”. Das nächste Fenster zeigt eine Zeile zu Kerneloptionen:

no_plymouth_600

In dieser Zeile setzt man

splash=0

ein. Zudem entfernt man ein evtl. vorhandenes Schlüsselwort “quiet”. In Fall meines betrachteten Systems lautet die fertige Zeile dann:

video=1920×1200 resume=/dev/disk/by-id/scsi-3600050e004a669001c4b00002aaf0000-part1 splash=0 showopts

Auf anderen Systemen wird natürlich das Resume-Device für den Swap-Bereich eine andere Bezeichnung haben. Danach schließt man sukzessive die YaST2-Fenster.

YaST2 speichert die eben angegebenen YaST2-Bootloader-Daten übrigens in der Datei “/etc/default/grub” ab. Es lohnt sich, bei Gelegenheit mal einen Blick in diese Datei zu werfen! In dieser Datei kann man Basisoptionen für Grub2 hinterlegen. Auch ganz ohne YaST2, wenn es ein muss.

Auf dem hier veränderten System sieht die Datei dann so aus:

GRUB_DISTRIBUTOR=openSUSE
GRUB_DEFAULT=saved
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=300
GRUB_CMDLINE_LINUX_DEFAULT=” video=1920×1200 resume=/dev/disk/by-id/scsi-3600050e004a669001c4b00002aaf0000-part1 splash=0 showopts”
# kernel command line options for failsafe mode
GRUB_CMDLINE_LINUX_RECOVERY=”showopts apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe”
GRUB_CMDLINE_LINUX=””
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD …)
#GRUB_BADRAM=0x01234567,0xfefefefe,0x89abcdef,0xefefefef
# Uncomment to disable graphical terminal (grub-pc only)
GRUB_TERMINAL=gfxterm
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command "vbeinfo"
GRUB_GFXMODE=auto
# Uncomment if you don’t want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_LINUX_RECOVERY=true
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
GRUB_THEME=/boot/grub2/themes/openSUSE/theme.txt
GRUB_BACKGROUND=/boot/grub2/themes/openSUSE/background.png

Die dortigen Infos werden dann von einem der Scripts unter /etc/grub.d aufgegriffen, sobald YaST2 im Hintergrund
zusätzlich
grub2-mkconfig -o /boot/grub2/grub.cfg
ausführt, um die eigentliche grub2-Konfigurationsdatei unter /boot/grub2/grub.cfg erstellen zu lassen. Dort findet man die getroffenen Einstellungen letztlich natürlich auch wieder.

Bootet man nun neu, fährt das System dann schön im Textmodus hoch und man kann einen Blick auf die schnell vorbeiziehenden Meldungen von systemd und den gestarteten Applikationen zum Bootvorgang werfen.

——–
Drei ergänzende Hinweise

Hinweis 1:Grub 2
Nebenbei haben wir mal wieder gelernt, dass Grub2 relativ kompliziert – nämlich teils über die über die “/etc/default/grub”, teils über Script-Dateien – zu konfigurieren ist. Hierzu ein paar Links;
http://www.dedoimedo.com/computers/grub-2.html
http://doc.opensuse.org/documentation/html/openSUSE/opensuse-reference/grub2.html
http://manual.siduction.org/de/sys-admin-grub2-de.htm

Hinweis 2: Etwas Tipparbeit beim Umgang mit grub2 sparen
Übrigens (off topic):
Um beim Experimentieren mit Grub etwas Tipparbeit zu sparen und eine Ähnlichkeit mit (älteren) Debian-Derivaten herzustellen, kann man sich unter SuSE einen abgekürzten Befehl “update-grub” als Skript (an geeigneter Stelle im Suchpfad) hinterlegen:

#!/bin/sh
set -e
exec grub2-mkconfig -o /boot/grub2/grub.cfg “$@”

Wer sich über das “$@” wundert: grub2-mkconfig hat z.Z. zwar nur 3 Parameter, kann ja aber künftig noch mehr bekommen:

mysystem:~/bin # ./update-grub -v
grub2-mkconfig (GRUB2) 2.00
mysystem:~/bin # ./update-grub -h
Usage: grub2-mkconfig [OPTION]
Generate a grub config file
 
-o, –output=FILE output generated config to FILE [default=stdout]
-h, –help print this message and exit
-v, –version print the version information and exit
 
Report bugs to <bug-grub@gnu.org>.
mysystem:~/bin #

Hinweis 3: Kein graphischer Grub2-Bildschirm
Übrigens: Will man neben Plymouth auch den grafischen Grub2-Schirm loswerden, so muss man im oben dargestellten YaST2-Fenster den Haken bei der Option “use graphical console” entfernen. Dies führt dann zu einem Eintrag “GRUB_TERMINAL=console” in der “/etc/default/grub”.

Opensuse 12.2, systemd, 3ware 9650, Filesystem-Fehler

Ich habe auf einem System, das ich von Opensuse 12.1 auf Opensuse 12.2 upgegraded hatte, zweimal kurz hintereinander Probleme mit der Konsistenz des Root-Filesystems unter “ext4” bekommen.

Diese Schwierigkeiten kamen nach einigen größeren Update-Läufen, die ich nach dem Upgrade durchgeführt hatte.

Das Workstation-System beinhaltet einen LSI/3ware-Raid-Controller 9650SE mit einem Raid 10 Array. Das System hat sowohl unter Opensuse 11.4 als auch unter Opensuse 12.1 im Dauereinsatz gut und sehr performant funktioniert. Unter Opensuse 12.2 dagegen bereitet es nun leider Probleme nach Shutdowns mit PowerOff – die führen nämlich mindestens bei einer performance-orientierten Einstellung des Controllers zu Datenverlust und resultierenden Filesystem-Inkonsistenzen.

Interessanterweise konnte ich ähnliche Inkonsistenzen des Root-Filesystems trotz mehrer Anläufe und unterschiedlicher Einstellungen des Controllers nicht unter den auf dem PC immer noch vorhandenen Versionen Opensuse 11.4 und 12.1 provozieren. Das schließt RAM-Defekte praktisch aus. Man könnte nun noch auf einen Platten-Defekt in Sektoren, die die Root-Partition des Opensuse 12.2-Systems betreffen, als eigentliche Ursache tippen. Aber auch smartd zeigte keine Auffälligkeiten.

Die eine Frage ist also, wieso diese Probleme auf ein und demselben System hauptsächlich unter Opensuse 12.2 (vor allem nach umfangreichen SW-Updates) auftreten und nicht unter Opensuse 11.4 oder Opensuse 12.1.

Die andere Frage – und diese ist die für diesen Beitrag interessantere – ist, wie eigentlich systemd beim Booten mit einem inkonsistenten, korrumpierten Root-Filesystem umgeht.

Man muss sich ja selten genug mit dieser Situation auseinandersetzen – und fast hätte ich gerade wegen systemd nicht einmal gemerkt, dass ein gravierendes Problem vorlag ….

Früheres Verhalten von Opensuse bei defekten Root-Filesystemen unter System V

Man erinnere sich:

Unter System V stoppte der Bootprozess, wenn Opensuse 11.4 beispielsweise einen inkonsistenten Zustand des Filesystems entdeckte und wenn das dann automatisch gestartete “fsck” den Schaden nicht automatisch beheben wollte oder konnte. Der Admin wusste dann Bescheid, das System befand sich im Systemverwaltungs-Modus (Runlevel 1) und man konnte sich sofort um das Filesystem kümmern.

Das hatte u.a. den Vorteil, dass sich der Filesystem-Schaden in den vorgefundenen Grenzen hielt und nicht weiter durch Benutzung des fehlerhaften und inkonsistenten Systems verschlimmert wurde.

Aktuelles Verhalten von Opensuse 12.2 mit Systemd bei defekten Root-Filesystemen

Unter Opensuse 12.2 mit systemd ist die oben beschriebene, kluge Politik leider nicht mehr gegeben:

“fsck” (genauer e2fsck) wird zwar gestartet. Aber kommt “fsck” mit der Anzahl oder Qualität nicht klar, wird das fehlerhafte Root-Filesystem durch “systemd” nach kurzem Einblenden einer Warnung in die laufenden Startmeldungen gnadenlos gemounted und der Systemd-Bootvorgang setzt sich fort ! Ja – man mag es kaum glauben – mit einem korrumpierten Filesystem !

Das fand und finde ich nicht nur schockierend, sondern geradezu fahrlässig!

Denn man merkt das Ganze ggf. nur zufällig – nicht zuletzt wegen der hohen Geschwindigkeit von systemd. Bei angeschaltetem Plymouth sieht man u.U. gar nichts, wenn man nicht aufpasst. Zwar wechselt der Schirm beim Start von fsck zu einer Konsole mit Textmodus, aber danach geht es zügig weiter und man landet nach wenigen Sekunden im grafischen Modus – als ob nichts wäre.

Bei textorientiertem Startup ist es fast noch schwerer, das Problem mitzubekommen – die “fsck”-Warnung geht in
der Flut der schnell ablaufenden “systemd”-Meldungen zum Systemstart unter. Was für ein Sch….

Aber der Reihe nach!

Wann traten die Probleme auf?

Die Probleme traten bislang ausnahmslos nach umfangreichen mit YaST2 durchgeführten SW-Updates (KDE, Kernel, … ) auf. Und zwar dann, wenn ich nach den Updates nicht sofort einen Systemneustart durchgeführt hatte, sondern mehrere Stunden weiterarbeitete und danach einen Shutdown mit PowerOff machte.

Auf einem ähnlichen System, auf dem OS 12.2 neu installiert wurde, traten solche Probleme bislang nicht auf. Auch ein anderes upgegradetes System zeigt das Verhalten (noch) nicht. Die anderen Systeme befinden sich jedoch noch auf einem anderen SW-Update-Level.

Allerdings weisen diese anderen Systeme bzgl. des Write-Caches des Raid-Controllers auch andere Einstellungen auf:

Der Parameter “StorSave” des 9650-Raid-Controllers steht im Fall der anderen Systemen auf “Balance” – im Fall der problematischen Systeme jedoch auf “Performance”.

Der Controller der problembehafteten Systeme ist ferner nicht batteriegepuffert. Vielleicht passieren im Rahmen des von systemd gesteuerten Shutdowns bei “performanter” Nutzung des Schreibcaches ja unangenehme Dinge. Vielleicht wird der Puffer des LSI/3ware-Controllers beim Shutdown nicht rechtzeitig geleert, vielleicht wird kein “sync” mehr aufgerufen – was weiß ich.

Man muss die Sache, die erst mit Opensuse 12.2 aufgetreten ist, jedenfalls beobachten:

Das Problem trat ausschließlich auf dem Root-Filesystem auf. Alle anderen gemounteten Filesysteme (alle vom Typ “ext4”) des gleichen Raid 10 Arrays – auch solche für virtuelle Maschinen – meldeten auch bei regelmäßig erzwungenen fsck-Vorgängen keinerlei Problem. Das ist deswegen interessant, weil das Root-Filesystem vor dem Power Off als letztes ausgehängt wird.

Ein Verify des Raid-Arrays zeigt nach einem Auftreten von Fehlern im Root-Filesystem jedenfalls auch aufgetretene Parity-Fehler an. Das spricht ein wenig dafür, dass der Shutdown unter “systemd” ggf. zu rasch erfolgt. Komisch nur, dass das auf dem gleichen System unter Opensuse 12.1 nicht geschieht ! Eine Problem zwischen Treiber und Kernel 3.4 ???

Ich habe den LSI/3ware-Controller nun einige Wochen im “Balanced” Modus des Schreibcaches betrieben. Es trat bis heute kein weiteres Problem mit dem Root-Filesystem auf.

Noch fehlt allerdings noch die Gegenprobe, um auszuschließen, dass das Problem nicht einfach durch problematische Update-Pakete oder Update-Vorgänge erzeugt wurde. Ich hatte dafür wegen anderer Themen bislang einfach keine Zeit.

Wegen der Raid-Controller-Einstellungen möchte ich das Ganze bislang also lediglich als Beobachtung ansehen, deren Ursache unklar ist. Ich werde den Raid-Controller nun wieder auf “Performance” stellen und die Sachlage weiter verfolgen.

Nachtrag 19.01.2013:

Nach vielen Tests muss ich leider feststellen: Bei einem Shutdown mit PowerOff kommt es unter OS 12.2 und systemd mit relativ hoher Wahrscheinlichkeit zu Datenverlusten und inkonsistentem Root-Filesystem, wenn der 3Ware-Controller bzgl. der Schreibpufferung (Parameter “Storsave”) auf “Performance” eingestellt ist.

Wie äußerte sich die Inkonsistenz des Root-Filesystems?

Falsche Inode-Verweise, vor allem etliche verwaiste Inodes und falsche Referenz-Counter. Interessant ist, dass die Dateien, die im Rahmen der letzten “fsck”-Bereinigung im Verzeichnis “lost&found” auftauchten, alle mit YaST2 selbst zu tun
hatten.

Die Schäden waren insgesamt jedenfalls von einer solchen Qualität, dass das automatisch gestartete “fsck” damit nicht mehr ohne User-Eingriffe klarkommen wollte. In den von mir beobachteten 2 Fällen tauchte deshalb der Hinweis auf ein manuell durchzuführendes “e2fsck” auf (s.u.) !

Was macht Systemd beim Starten mit Inkonsistenzen im Root-Filesystem ?

Tja, in meinen Fällen bemerkte systemd beim Starten zwar die Fehler im Filesystem.
fsck wurde dann gestartet. Aber in den Fällen, in denen fsck nicht mehr ohne Userunterstützung mit den Fehlern klarkommen wollte, wurde das kaputte Filesystem – wie gesagt – gnadenlos gemountet.

Dies geschah in meinem Fall an vier Tagen hintereinander (2.11. bis 5.11.), weil ich von den Fehlern – dank des “fantastisch” schnellen systemd – im Entwicklungsstress nichts mitbekommen habe. Erstaunlich, dass ich überhaupt arbeiten konnte.

Nachfolgend ein Auszug aus “/var/log/messages”:

Nov 2 08:49:25 mux kernel: [ 36.774057] EXT4-fs (sda6): warning: mounting fs with errors, running e2fsck is recommended
Nov 2 08:49:25 mux kernel: [ 36.774270] EXT4-fs (sda6): re-mounted. Opts: acl,user_xattr
 
Nov 2 08:53:58 mux kernel: [ 325.684513] EXT4-fs (sda6): error count: 1896
Nov 2 08:53:58 mux kernel: [ 325.684518] EXT4-fs (sda6): initial error at 1351765087: ext4_lookup:1045: inode 922772
Nov 2 08:53:58 mux kernel: [ 325.684523] EXT4-fs (sda6): last error at 1351786094: ext4_lookup:1045: inode 922772
 
Nov 3 09:41:24 mux kernel: [ 30.059173] bootsplash: status on console 0 changed to on
Nov 3 09:41:24 mux kernel: [ 30.849236] EXT4-fs (sda6): warning: mounting fs with errors, running e2fsck is recommended
Nov 3 09:41:24 mux kernel: [ 30.855514] EXT4-fs (sda6): re-mounted. Opts: acl,user_xattr
 
Nov 3 09:46:00 mux kernel: [ 322.602348] EXT4-fs (sda6): error count: 1896
Nov 3 09:46:00 mux kernel: [ 322.602353] EXT4-fs (sda6): initial error at 1351765087: ext4_lookup:1045: inode 922772
Nov 3 09:46:00 mux kernel: [ 322.602357] EXT4-fs (sda6): last error at 1351786094: ext4_lookup:1045: inode 922772
 
Nov 4 08:34:31 mux kernel: [ 34.497854] bootsplash: status on console 0 changed to on
Nov 4 08:34:31 mux kernel: [ 35.111163] EXT4-fs (sda6): warning: mounting fs with errors, running e2fsck is recommended
Nov 4 08:34:31 mux kernel: [ 35.111397] EXT4-fs (sda6): re-mounted. Opts: acl,user_xattr
 
Nov 4 08:39:07 mux kernel: [ 326.695619] EXT4-fs (sda6): error count: 1898
Nov 4 08:39:07 mux kernel: [ 326.695621] EXT4-fs (sda6): initial error at 1351765087: ext4_lookup:1045: inode 922772
Nov 4 08:39:07 mux kernel: [ 326.695623] EXT4-fs (sda6): last error at 1352014560: ext4_lookup:1045: inode 922286
 
Nov 5 09:37:30 mux kernel: bootsplash: status on console 0 changed to on
Nov 5 09:37:31 mux kernel: EXT4-fs (sda6): warning: mounting fs with errors, running e2fsck is recommended
Nov 5 09:37:31 mux kernel: EXT4-fs (sda6): re-mounted. Opts: acl,user_xattr
 
Nov 5 09:42:22 mux kernel: EXT4-fs (sda6): error count: 2368
Nov 5 09:42:22 mux kernel: EXT4-fs (sda6): initial error at 1351765087: ext4_lookup:1045: inode 922772
Nov 5 09:42:22 mux kernel: EXT4-fs (sda6): last error at 1352067644: ext4_lookup:1045: inode 922721

Hübsch, nicht? Seitdem lasse ich “/var/log/messages” nach jedem Bootvorgang auf entsprechende Schlüsselwörter scannen.

Systemd im aktuellen Zustand ist dem Admin jedenfalls nicht dabei behilflich, solche katastrophalen Entwicklungen mit korrumpierten Filesystemen zu vermeiden.

Aber: ich will mich ja nicht aufregen …..

Schadensbehebung – trotz Chaos mit dem Rescue Target

Nun versuche man mal, auf einem von “systemd” gesteuerten Opensuse-System, das Rescue-Target zu erreichen, um “fsck” – wie empfohlen – manuell ablaufen zu lassen. Ich habe das interessehalber auf verschiedenen Systemen in verschiedenem Upgrade-Zuständen getestet.

Ergebnis: Es war unter Opensuse 12.1 und zeitweise (!) auch unter Opensuse 12.2 (vor allem im Originalzustand) fast abenteuerlich, das “isolated rescue target” zu erreichen:

  • Das lt. SuSE angeblich noch funktionierende “init 1” führte auf mehreren Systemen zu einem Herunterfahren des Systems mit unmittelbar danach – und ohne oder gar trotz Userinteraktion – ablaufendem Restart in das “default target” – also den grafischen Modus.
  • “systemctl isolate rescue.target” zeigte – je nach Update-Zustand des Opensuse 12.1 oder 12.2-Systems das gleiche fehlerhafte Verhalten wie “init 1” oder aber ein unterschiedliches Verhalten – je nachdem, ob es von Konsole “tty2” oder “tty1” gestartet wurde.
  • Zwischenzeitlich funktionierte dann lediglich “systemctl rescue” halbwegs wie erwartet. Einen Wechsel der Konsole musste man dabei aber vermeiden. Das Verhalten von systemd war in jedem Fall schwierig – oft verlor man auch den Prompt auf der Konsole, von der der Shutdown gestartet wurde. Überhaupt mutet es merkwürdig an, dass im “Rescue Modus” mehrere Konsolen ansprechbar sind.
  • Ein mehrfaches Hintereinanderausführen des Herunterfahrens in den Rescue Modus mit anschließendem Hochfahren in den Default-Modus mit Konsol-Wechsel verhielt sich z.T. unberechenbar.

Wohlgemerkt: Ich spreche hier von Tests auf Systemen, die (außer systemd) keine Defekte beherbergen.

Inzwischen – also auf dem aktuellen Update-Niveau des Opensuse 12.2-Systems – haben sich die Dinge aber deutlich verbessert. Nun funktionieren

“systemctl isolate rescue.target”

und

“systemctl rescue”

im wesentlichen wie erwartet. Man habe Geduld – die Meldung zum Eingeben des Passwortes und der Prompt erscheinen manchmal zeitversetzt.

Bevor nun aber möglicherweise Ekstase bei den systemd-Anhängern aufkommt – es gibt immer noch gravierende Probleme mit der systemd-Logik:

  • Ein anschließendes “systemctl default” führt zwar zum Hochfahren in den graphischen Modus – auf der ursprünglichen Konsole mag sich unter Opensuse 12.2 aber der Prompt nicht mehr einstellen.
  • Ferner läuft der “agetty”-Prozess nach “systemctl rescue” und einem anschließenden “systemctl default” unter Opensuse 12.2 regelmäßig Amok und verbraucht 90% der CPU-Zeit eines Prozessor-Cores. Man muss “agetty” tatsächlich abschießen, um dem Herr zu werden.

So ist das halt, wenn ein einziges Super-Programm wie “systemd” alles und jedes im System unter Kontrolle behalten muss. Die Tatsache, dass es mit mehreren Konsolen umgehen muss, ist von der neuen Superlösung wohl noch nicht richtig verdaut worden.

Aber ich rege mich nicht auf ….. auch vor den letzten Systemupdates kam man (nach mehreren Konsole-Wechseln und unermüdlichem Probieren) meist doch irgendwie in einen Zustand, der dem früheren “init 1 ” irgendwie ähnelte.

Leider, leider hieß das aber noch lange nicht, dass dann unter “systemd” immer ein

“mount -o remount,ro /dev/rootdevice

für einen manuellen fsck-Lauf möglich gewesen wäre.

Das ging nur in 50 % der von mir untersuchten Fälle. Bei den Systemen mit bereits vorhandenem Filesystem-Fehler gar nicht. Vielleicht auch bedingt durch die sich inzwischen vergrößerten Probleme mit dem inkonsistenten Filesystem.

Ich musste
jedenfalls in zwei Fällen auf eine CD mit “Rescue-System” ausweichen und von dort meine Root-Partition auf der Platte reparieren.

Seitdem habe ich wieder Ruhe. Was immer die Ursache des defekten Filesystems war – der eigentliche Skandal ist der Umgang von systemd mit einem defekten Filesystem beim Booten !

Opensuse 12.2 – mysql, logrotate error

Vor einigen Tagen habe ich den Mysql-Community-Server über das entsprechende Opensuse “Database”-Repository upgedated. Seitdem erhalte ich beim Systemstart Meldungen der Art

Nov 15 18:30:04 myserver logrotate: ALERT exited abnormally with [1]
Nov 15 18:30:04 myserver logrotate: #007/usr/bin/mysqladmin: refresh failed; error: ‘Unknown error’
Nov 15 18:30:04 myserver logrotate: /logrotate.d/mysql failed, probably because
Nov 15 18:30:04 myserver logrotate: the root acount is protected by password.
Nov 15 18:30:04 myserver logrotate: See comments in /logrotate.d/mysql on how to fix this
Nov 15 18:30:04 myserver logrotate: error: error running non-shared postrotate script for /var/log/mysql/mysqld.log of ‘/var/log/mysql/mysqld.log ‘

Diese Meldung erhalte ich, obwohl es unter dem “/root”-Verzeichnis die notwendige “/root/.my.cnf”-Datei mit den Account-/Passwort-Daten für den MySQL-Admin (MySQL root-Account) gibt. Die Fehlermeldung führt einen daher in die Irre.

Der Fehler liegt wohl eher im Startup-Skript “/etc/init.d/mysql” für den MySQL-Server.

Das habe nicht ich herausgefunden sondern Archie Cobbs, der das bei Novell als Bug eingestellt hat.

Siehe :
http://lists.opensuse.org/opensuse-bugs/2012-11/msg01186.html
und
https://bugzilla.novell.com/show_bug.cgi?id=789263

Dort findet man auch den notwendigen Hinweis, wie man das Startup-Skript abändern muss, damit Logrotate wieder funktioniert:

The bug is in the line “chmod 660 $log_dir”.
That should be “chmod 770 $log_dir”.

Scheint rechtemäßig logisch zu sein und hat bei mir funktioniert.