openSUSE 12.1 – systemd soll endlich SysVinit ablösen

Eigentlich wollte man systemd (Init-Prozess) bereits in openSUSE 11.4 standardmäßig installieren, musste aber aus Zeitgründen und wegen Inkompatibilität aufgeschoben werden. Frederic Crozat (Novell/Attachmate) will die Integration von systemd voranbringen und zwischen der openSUSE-Community, Entwickler, Paketbauer und dem Upstream-Projekt systemd vermitteln. Er ist auch der Ansprechpartner für jede erdenkliche Hilfe zu systemd.

Der Plan sieht wie folgt aus:

  • Phase 1: Probleme mit systemd aufspüren. systemd-Paket installieren und per Kernel-Boot-Kommandozeile „init=/bin/systemd“ manuell booten. Um alle Konfigurationsprobleme zu finden, sollte man die systemd-Statusseite konsultieren, um ein Bugreport an die systemd-Betreuer zu senden. Damit wollen die systemd-Betreuer des openSUSE-Projektes sicher gehen, dass es keine Regressionen zwischen der noch SysVinit und systemd gibt.
  • Phase 2: Das systemd-Paket wird standardmäßig installiert und ersetzt dadurch SysVinit.
  • Phase 3: Bereitstellung von systemd-Unit-Dateien, um SysVinit-Skripte auszutauschen. Das ist eine gewaltige Aufgabe und wird womöglich nicht vor openSUSE 12.1 abgeschlossen sein, was aber mit Hilfe von den jeweiligen Paketbauern doch gelingen sollte (Im Idealfall sollte jeder Paketbauer in der Lage sein eine systemd-Unit-Datei zu erstellen). Es wird auch in weitere Meilensteine aufgeteilt:
    • Phase 3.1: GNOME und KDE Live-CDs sollen nur systemd (ohne SysVinit) verwenden
    • Phase 3.2: Von einem GNOME und KDE Live-CD via Live-Installer installiertes System. (Zusätzliche Pfade im Live-Installer soll getestet werden)
    • Phase 3.3: Von einer Installations-DVD sollte nur systemd installiert werden

Mehr Informationen zu systemd und wie man die Konvertierung von SysVinit durchführt:
Teil 1: http://0pointer.de/blog/projects/systemd-for-admins-1.html
Teil 2: http://0pointer.de/blog/projects/systemd-for-admins-2.html
Teil 3: http://0pointer.de/blog/projects/systemd-for-admins-3.html
Teil 4: http://0pointer.de/blog/projects/systemd-for-admins-4.html
Teil 5: http://0pointer.de/blog/projects/three-levels-of-off
Teil 6: http://0pointer.de/blog/projects/changing-roots.html
Teil 7: http://0pointer.de/blog/projects/blame-game.html
Teil 8: http://0pointer.de/blog/projects/the-new-configuration-files

Tipp: Bei Teil 3 handelt es sich ausschließlich um die Konvertierung von SysVinit-Skripte zu systemd-Unit-Dateien.

Wer denoch Hilfe sucht oder auch mithelfen möchte, kann über die openSUSE-Factory-Mailingliste oder im IRC-Kanal #opensuse-factory konsultieren.

Quelle: http://blog.crozat.net/2011/06/road-to-systemd-for-opensuse-121.html

Als Maintainer der Packaging-Skripte in der ATI-Catalyst-Reihe für openSUSE muss ich mich in nächster Zeit mit systemd beschäftigen, um das Init-Rebuild-Skript wie auch das ATI-External-Events-Daemon von SysVinit nach systemd zu konvertieren, um weiterhin von der automatischen Kompilierung bzw. dem Neuladen des fglrx-Kernelmodules beim Systemstart zu nutzen.

Linux – Dateinamen und/oder Verzeichnisse in Groß- oder Kleinschreibung umbenennen

Es gibt ein Kommandozeilen-Tool das Groß- oder Kleinschreibung wie auch in bestimmte Zeichensätze umbenennen bzw. konvertieren kann. Das Tool heißt convmv.

Unter openSUSE 11.x lässt sich das Tool sehr einfach in der Konsole installieren:

zypper in convmv

Wenn man alle Dateien und Verzeichnisse im aktuellen Verzeichnis in Kleinschreibung haben möchte, dann reicht dieser Befehl:

convmv --lower *

Wenn man aber alles in Großschreibung haben möchte, dann nimmt man die Option –upper anstatt –lower. Zur Vereinfachung bleibe ich in diesem kleinen HowTo bei der Kleinschreibung und gehe auf verschiedene Lösungswege ein.

Jedoch wird hier eine Liste mit den Änderungen ausgegeben. Somit kann man wunderbar verfolgen, wie das Tool bei der Umbenennung vorgeht.

Um die Umbenennung auch wirklich auszuführen, gibt man noch die Option –notest an:

convmv --lower --notest *

Wenn das Tool rekursiv durch alle Unterverzeichnisse arbeiten soll, dann fügen wir noch eine Option -r ein:

convmv -r --lower --notest *

Jetzt kommen wir mal zu einem Spezialfall. Wenn wir aber nur Dateinamen rekursiv durch alle Unterverzeichnisse umbenennen möchten, dann hilft uns in diesem Fall weitere Tools wie find und xargs:

find ./ -type f -print0 | xargs -r -0 convmv --lower

Erläuterung für find:
./ = In welchem Verzeichnis soll durchsucht werden (hier nur aktuelles)
-type f = Nur Dateien sollen berücksichtigt werden
-print0 = Jede Datei wird ein NULL-Zeichen als Trennzeichen angehängt, somit lassen sich die Dateiennamen bei der Übergabe an xargs besser auseinander halten

Erläuterung für xargs:
-r = nicht ausführen, wenn keine weiteren Argumente übergeben werden können (= leer)
-0 = NULL-Zeichen als Trennzeichen berücksichtigen.

Was ist mit dem schwierigsten Fall wie z.B. die Umbenennung von Verzeichnisnamen und das auch noch rekursiv durch alle Unterverzeichnisse? Nun man denkt einfach, dass man den o.g. Befehl -type f in -type d austauschen und ausführen kann. Spätestens bei der Umbenennung eines Unterverzeichnis dessen oberen Verzeichnisname sich geändert hat, würde das Vorhaben nur auf eine einzige Verzeichnistiefe beschränken. Alle darunterliegenden Verzeichnisse können somit nicht umbenannt werden.

Also verwenden wir ein etwas modifizierten Einzeiler und geben dem find die Option -depth mit, somit sollten die Verzeichnisse in korrekter Reihenfolge an convmv übergeben werden:

find ./ -depth -type d -print0 | xargs -r -0 convmv --lower --notest

Hinweis zum Tool find und der Option -exec:
Einige Linux-User verwenden statt xargs eher die Option -exec in find. Wobei ich vom Gebrauch der Option -exec expizit abraten würde. Ich verdeutliche es mal an einem Beispiel. Wenn find z.B. 5.000 Dateien findet, werden bei -exec auch 5.000 Prozesse hintereinander gestartet und das geht zu Lasten der System-Performance. Bei der Verwendung von xargs werden 5.000 Dateien als Argumente an das jeweilige Programm übergeben und benötigt nur 1 Prozess anstatt 5.000 Prozesse. ;-)