8.2. SCPM – System Configuration Profile Management

Es gibt Situationen, in denen eine veränderte Konfiguration des Computersystems benötigt wird. Am häufigsten trifft dies auf mobile Computer zu, die an verschiedenen Standorten betrieben werden. Es kann aber auch sein, dass man auf einem Desktopsystem zeitweilig andere Hardwarekomponenten verwendet. In jedem Fall sollte eine Rückkehr zum ursprünglichen System einfach sein. Noch besser ist es, wenn diese Umkonfiguration auch noch einfach reproduzierbar ist.

Eine Lösung für dieses Problem gab es bisher nur für PCMCIA-Hardware. Dort konnte man verschiedene Konfigurationen in bestimmten Schemata ablegen. Ausgehend davon haben wir SCPM (engl. System Configuration Profile Management) entwickelt, das die Beschränkung auf PCMCIA aufhebt. Mit SCPM lässt sich ein frei wählbarer Teil der Systemkonfiguration festlegen, von dem verschiedene Zustände in eigenen Konfigurationsprofilen festgehalten werden können. Etwas freier ausgedrückt ist das, als ob man Schnappschüsse von seiner Systemkonfiguration macht, die man jederzeit wiederherstellen kann.

Das Hauptanwendungsgebiet wird vermutlich bei der Netzwerkkonfiguration von Laptops liegen. Aber unterschiedliche Netzwerkeinstellungen beeinflussen meist auch noch andere Elemente, zum Beispiel die Einstellungen für e-Mail oder Proxies. Hierzu kommen unterschiedliche Drucker zu Hause und in der Firma oder die gesonderte XFree-Konfiguration für den Beamer bei Vorträgen, besonders sparsame Stromverbrauchseinstellungen für unterwegs oder eine andere Zeitzone in der Auslandsniederlassung.

Mit vermehrten Einsatz dieses Werkzeugs bilden sich immer wieder neue Anforderungen heraus. Wenn Sie selbst Anregungen und Kritik zu SCPM haben, dann nehmen Sie mit uns Kontakt auf. Wir sind sehr an Rückmeldungen interessiert. Wir haben SCPM auf ein flexibles Grundgerüst gestellt, sodass zum Beispiel auch ein serverbasiertes Profil Management möglich ist. Bitte teilen Sie uns Ihre Wünsche, Anregungen und Fehlerbeschreibungen über unser Webfrontend http://www.suse.de/feedback mit.

8.2.1. Grundbegriffe und Grundlagen

Vorab sollen einige Grundbegriffe festgelegt werden, die auch in der restlichen Dokumentation zu SCPM und im YaST-Modul so verwendet werden.

  • Unter Systemkonfiguration verstehen wir die gesamte Konfiguration des Computers. Alle grundlegenden Einstellungen, wie die zum Beispiel Verwendung von Festplattenpartitionen oder Netzwerkeinstellungen, Zeitzonenauswahl oder Tastatureinstellungen.

  • Ein Profil oder auch Konfigurationsprofil ist ein Zustand der Systemkonfiguration, der festgehalten wurde und der bei Bedarf einfach wiederhergestellt werden kann.

  • Als aktives Profil wird immer das Profil bezeichnet, in das zuletzt geschaltet wurde. Das heißt nicht, dass die aktuelle Systemkonfiguration exakt diesem Profil entspricht, denn die Konfiguration kann jederzeit individuell verändert werden.

  • Resource im Sinne von SCPM sind alle Elemente, die zur Systemkonfiguration beitragen. Das kann eine Datei oder ein Softlink einschließlich ihrer Metadaten, wie Benutzer, Rechte oder Zugriffszeit sein. Das kann aber auch ein Systemdienst sein, der einmal läuft und in einem anderen Profil ausgeschaltet ist.

  • Die Ressourcen sind in sogenannten Resource Groups organisiert. Diese Gruppen enthalten jeweils Ressourcen, die logisch zusammenpassen. Für die meisten Gruppen bedeutet das, dass sie einen Dienst und die dazugehörigen Konfigurationsdateien enthalten. Dieser Mechanismus erlaubt das einfache Zusammenstellen der Ressourcen, die von SCPM behandelt werden, ohne wissen zu müssen, welche Konfigurationsdateien für welche Dienste notwendig wären. SCPM beinhaltet bereits eine Vorauswahl an aktivierten Resource Groups, die für die meisten Benutzer ausreichend sein sollte.

8.2.2. Der YaST Profil-Manager und weiterführende Dokumentation

Als grafisches Frontend zu SCPM (Paket scpm) gibt es ein YaST-Modul (Paket yast2-profile-manager) als Alternative zu dem Kommandozeilen-Frontend. Da die Funktionalität beider Frontends im Wesentlichen dieselbe ist und die Kenntnis des Kommandozeilen-Frontends für viele Zwecke interessant ist, wird hier nur das letztere beschrieben. Die Bedienung des SCPM YaST-Moduls ist danach zusammen mit den dort angebotenen Hilfetexten sehr leicht. Die wenigen Besonderheiten des YaST-Moduls werden an passender Stelle erwähnt.

Die aktuellste Dokumentation ist in den Infoseiten zu SCPM zu finden. Diese kann mit Werkzeugen wie Konqueror oder Emacs eingesehen werden (konqueror info:scpm). In der Konsole verwendet man info oder pinfo. Technische Dokumentation für Benutzer, die selbst Hand an SCPM legen möchten, gibt es unter /usr/share/doc/packages/scpm. Der Aufruf von scpm ohne weitere Argumente gibt eine Kommandoübersicht aus.

8.2.3. SCPM einrichten

Bevor mit SCPM gearbeitet werden kann, muss es erst einmal eingeschaltet werden. Standardmäßig behandelt SCPM Netzwerk- und Druckereinstellungen, sowie die XFree86 Konfiguration und einige Netzwerkdienste. Falls Sie darüber hinaus Dienste oder Konfigurationsdateien verwaltet haben möchten, sollten Sie noch die entsprechenden Resource Groups aktivieren. Die bereits definierten Resource Groups können Sie mit dem Befehl scpm list_groups anzeigen lassen, wenn Sie nur die bereits aktiven Gruppen sehen möchten, geben Sie scpm list_groups -a ein. Die Kommandozeilenbefehle müssen als Benutzer root ausgeführt werden. Aktivieren bzw. Deaktivieren können Sie die Gruppen mit scpm activate_group NAME bzw. scpm deactivate_group NAME, wobei NAME durch den enstprechenden Gruppennamen zu ersetzen ist. Sie können die Resource Groups auch bequem mit Hilfe des YaST Profil-Managers konfigurieren.

Mit dem Aufruf von scpm enable wird SCPM eingeschaltet. Beim ersten Einschalten wird SCPM initialisiert, was einige Sekunden in Anspruch nimmt. SCPM kann mit scpm disable jederzeit ausgeschaltet werden, um unbeabsichtigte Profilumschaltungen zu vermeiden. Beim anschließenden Wiedereinschalten wird der Betrieb einfach fortgesetzt.

8.2.4. Profile anlegen und verwalten

Nachdem SCPM eingeschaltet wurde, gibt es bereits ein Profil namens default. Eine Liste aller verfügbaren Profile gibt das Kommando scpm list aus. Dieses bisher einzige Profil ist zwangsläufig auch das aktive Profil. Das erfährt man mit scpm active. Das Profil default ist als Grundkonfiguration gedacht, von der die anderen Profile abgeleitet werden. Deshalb sollten zuerst alle Einstellungen, die in allen Profilen einheitlich sein sollen, vorgenommen werden. Mit scpm reload werden diese Änderungen dann im aktiven Profil gespeichert. Das Profil default kann dennoch beliebig verwendet, umbenannt oder gelöscht werden.

Es gibt zwei Möglichkeiten, ein neues Profil hinzuzufügen. Wenn das neue Profil (hier mit Namen work) zum Beispiel auf dem Profil default basieren soll, geschieht dies mit scpm copy default work. Danach kann man mit scpm switch work in das neue Profil umschalten und es dann konfigurieren. Manchmal hat man aber auch die Systemkonfiguration schon für bestimmte Zwecke verändert und möchte diese danach in einem neuen Profil festhalten. Das erledigt der Aufruf von scpm add work. Jetzt ist die aktuelle Systemkonfiguration im Profil work gesichert und das neue Profil als aktiv markiert; das heisst ein scpm reload sichert Änderungen jetzt im Profil work.

Selbstverständlich können Profile auch umbenannt oder gelöscht werden. Dafür gibt es die Kommandos scpm rename x y und scpm delete x. Um zum Beispiel work nach arbeit umzubenennen und es hinterher zu löschen, gibt man scpm rename work arbeit und dann scpm delete arbeit ein. Nur das aktive Profil kann nicht gelöscht werden.

Nochmal die einzelnen Kommandos:

scpm list

gibt alle verfügbaren Profile aus

scpm active

gibt das aktive Profil aus

scpm add <name>

speichert die gegenwärtige Systemkonfiguration in einem neuen Profil und macht dieses zum aktiven

scpm copy <quellname> <zielname>

kopiert ein Profil

scpm rename <quellname> <zielname>

benennt ein Profil um

scpm delete <name>

löscht ein Profil

Hinweis zum YaST-Modul: Hier gibt es nur den Knopf Hinzufügen. Es erscheint dann aber die Frage, ob man ein existierendes Profil kopieren oder die gegenwärtige Systemkonfiguration sichern möchte. Zum Umbenennen verwendet man dort den Knopf Ändern.

8.2.5. Zwischen Konfigurationsprofilen umschalten

Das Umschalten zu einem anderen Profil (hier work) wird mit dem Kommando scpm switch work ausgelöst. Es ist zulässig, zum gerade aktiven Profil umzuschalten um geänderte Einstellungen an der Systemkonfiguration zu sichern. Alternativ kann dafür aber auch das Kommando scpm reload verwendet werden.

Um den Umschaltvorgang und die dabei eventuell auftretenden Fragen besser zu verstehen, soll dieser hier näher erläutert werden. Zuerst prüft SCPM, welche Ressourcen des aktiven Profils seit dem letzten Umschalten verändert wurden. Aus der Liste der veränderten Ressourcen wird die Liste der geänderten Resource Groups erzeugt. Für jede dieser Gruppen wird anschließend nachgefragt, ob die Änderungen in das noch aktive Profil übernommen werden sollen. Falls Sie – wie es bei früheren Versionen von SCPM der Fall war – lieber die einzelnen Ressourcen angezeigt bekommen möchten, dann rufen Sie den Switch-Befehl mit dem Parameter -r auf, etwa so: scpm switch -r work.

Danach vergleicht SCPM die aktuelle Systemkonfiguration mit dem neuen Profil, in das umgeschaltet werden soll. Dabei wird ermittelt, welche Systemdienste aufgrund von Konfigurationsänderungen oder wegen gegenseitiger Abhängigkeiten angehalten bzw. (wieder) gestartet werden müssen. Das kann man sich wie einen teilweisen Systemreboot vorstellen, nur dass eben nur ein kleiner Teil des Systems betroffen ist und der Rest unverändert weiterarbeitet.

Erst jetzt laufen folgende Aktionen ab:

  1. Die Systemdienste werden angehalten.

  2. Alle veränderten Ressourcen (zum Beispiel Konfigurationsdateien) werden geschrieben.

  3. Die Systemdienste werden (wieder) gestartet.

8.2.6. Erweiterte Profileinstellungen

Sie können für jedes Profil eine Beschreibung eingeben, die dann bei scpm list mit ausgegeben wird. Eingeben kann man diese Beschreibung für das gerade aktive Profil mit dem Kommando scpm set description "text". Für nicht aktive Profile muss noch das Profil angegeben werden, also scpm set description "text" work

Manchmal kommt es vor, dass beim Umschalten in ein anderes Profil zusätzliche Aktionen ausgeführt werden sollen, die in SCPM (noch) nicht vorgesehen sind. Dafür können für jedes Profil vier ausführbare Programme oder Skripte eingehängt werden, die zu verschiedenen Zeitpunkten während das Umschaltens ausgeführt werden. Diese Zeitpunkte sind:

prestop

vor dem Anhalten von Diensten beim Verlassen des Profils

poststop

nach dem Anhalten von Diensten beim Verlassen des Profils

prestart

vor dem Starten von Diensten beim Aktivieren des Profils

poststart

nach dem Starten von Diensten beim Aktivieren des Profils

Das Umschalten von Profil work zu Profil home läuft dann folgendermaßen ab:

  1. Prestop-Aktion des Profils work wird ausgeführt.

  2. Anhalten von Diensten

  3. Poststop-Aktion des Profils work wird ausgeführt.

  4. Verändern der Systemkonfiguration

  5. Prestart-Aktion des Profils home wird ausgeführt.

  6. Starten von Diensten

  7. Poststart-Aktion des Profils home wird ausgeführt.

Diese Aktionen werden auch mit dem set Kommando eingehängt, nämlich mit scpm set prestop <dateiname>, scpm set poststop <dateiname>, scpm set prestart <dateiname> oder scpm set poststart <dateiname>. Es muss sich dabei um ein ausführbares Programm handeln, das heisst Skripte müssen den richtigen Interpreter beinhalten und zumindest für den Superuser (root) ausführbar sein.

[Warning]Warnung

Da diese Skripte oder Programme mit den Rechten des Superusers ausgeführt werden sollten sie nicht von beliebigen Anwendern änderbar sein. Da in Skripten durchaus vertrauliche Informationen enthalten sein können, ist es sogar angeraten, dass diese nur vom Superuser lesbar sind. Am besten versieht man diese Programme mit den Rechten -rwx------ root root.

  
chmod 700 <dateiname>
chown root.root <dateiname>
   

Alle Zusatzeinstellungen, die mit set eingegeben wurden, lassen sich mit get abfragen. Zum Beispiel liefert scpm get poststart den Namen des Poststartprogramms oder einfach keine Information, wenn nichts eingehängt wurde. Gelöscht werden solche Einstellungen durch Überschreiben mit ""; das heisst der Aufruf von scpm set prestop "" hängt das Poststop-Programm wieder aus.

Genau wie beim Anlegen der Beschreibung können alle set und get Kommandos für ein beliebiges Profil angewandt werden. Dazu wird zuletzt noch der Name des Profils angegeben. Zum Beispiel scpm get prestop <dateiname> work oder scpm get prestop work.

8.2.7. Profilauswahl beim Booten

Es ist möglich, schon vor dem Booten ein Profil auszuwählen. Dazu muss lediglich der Bootparameter PROFILE=<Name des Profils> am Bootprompt eingegeben werden.

In der Bootloaderkonfiguration (/boot/grub/menu.lst) wird für die Option title ebenfalls der Name des Profils verwendet. Standardmäßig wird GRUB als Bootloader verwendet. Eine ausführlichere Beschreibung finden Sie Abschnitt 7.4. “Booten mit GRUB”; alternativ geben Sie info grub ein. Die Konfiguration von GRUB sieht dann zum Beispiel wie folgt aus:

Beispiel 8.1. Die Datei /boot/grub/menu.lst

gfxmenu (hd0,5)/boot/message
color white/green black/light-gray
default 0
timeout 8

title work
   kernel (hd0,5)/boot/vmlinuz root=/dev/hda6 PROFILE=work
   initrd (hd0,5)/boot/initrd

title home
   kernel (hd0,5)/boot/vmlinuz root=/dev/hda6 PROFILE=home
   initrd (hd0,5)/boot/initrd

title road
   kernel (hd0,5)/boot/vmlinuz root=/dev/hda6 PROFILE=road
   initrd (hd0,5)/boot/initrd
   

Für Systeme, die noch den Bootloader LILO verwenden, kann das Beispiel 8.2. “Die Datei /etc/lilo.conf” benutzt werden.

Beispiel 8.2. Die Datei /etc/lilo.conf

boot    = /dev/hda
change-rules
reset
read-only
menu-scheme = Wg:kw:Wg:Wg
prompt
timeout = 80
message = /boot/message

  image  = /boot/vmlinuz
  label  = home
  root   = /dev/hda6
  initrd = /boot/initrd
  append = "vga=0x317 hde=ide-scsi PROFILE=home"

  image  = /boot/vmlinuz
  label  = work
  root   = /dev/hda6
  initrd = /boot/initrd
  append = "vga=0x317 hde=ide-scsi PROFILE=work"

  image  = /boot/vmlinuz
  label  = road
  root   = /dev/hda6
  initrd = /boot/initrd
  append = "vga=0x317 hde=ide-scsi PROFILE=road"
   

Jetzt kann beim Booten sehr einfach das gewünschte Profil ausgewählt werden.

8.2.8. Probleme und deren Lösung

Normalerweise sollte der Betrieb von SCPM reibungslos funktionieren. Es gibt aber einige Fallstricke, die hier beschrieben werden.

SCPM ist zum jetzigen Zeitpunkt noch nicht in der Lage, ein Systemupdate zu verwalten. Die Schwierigkeit liegt darin, dass bei einem Systemupdate die Daten, die in den Profilen gespeichert sind, von den verschiedenen Updatemechanismen nicht aktualisiert werden können. SCPM erkennt daher, falls ein Systemupdate gemacht wurde, und verweigert seinen Dienst. Sie sollten in dieser Sitation eine Fehlermeldung von SCPM erhalten, die Ihre Betriebsysteminstallation hat sich geändert oder ist unbekannt enthält. In diesem Fall reinitialisieren Sie SCPM einfach mit scpm -f enbale neu. Die Profile sind dann allerdings verloren, d.h. Sie müssen sie neu einrichten.

Unter Umständen kann es auch vorkommen, dass SCPM während eines Switch-Vorgangs unvermittelt abbricht. Das kann entweder aufgrund äußerer Einwirkung eintreten – zum Beispiel Abbruch durch den Benutzer, Leerlaufen des Notebookakkus o.ä. – oder es kann ein Fehler in SCPM selbst sein. Dann werden Sie beim nächsten SCPM Aufruf die Meldung erhalten, dass SCPM gesperrt ist. Dies dient zum Schutz Ihres Systems, da die Daten, die SCPM in seiner Datenbank gespeichert hat, eventuell nicht zu dem Zustand Ihres System passen. Löschen Sie in diesem Fall die Lock-Datei mit rm /var/lib/scpm/#LOCK und stellen Sie mit scpm -s reload wieder einen konsistenten Status her. Anschließend können Sie wie gewohnt weiterarbeiten.

Noch ein Hinweis: Wenn Sie bei bereits initialisiertem SCPM die Resource Group Konfiguration ändern möchten, ist das prinzipiell kein Problem. Sie müssen nur darauf achten, daß Sie, nachdem Sie mit dem Hinzufügen oder Entfernen von Gruppen fertig sind, scpm rebuild aufrufen. Dies fügt neue Ressourcen zu allen Profilen hinzu und löscht die entfernten. Letztere sind dann allerdings endgültig gelöscht, wenn Sie diese in den verschiedenen Profilen verschieden konfiguriert haben, verlieren Sie diese Konfigurationsdaten – bis auf die aktuelle Version in Ihrem System natürlich, diese wird von SCPM nicht angefasst. Falls Sie die Konfiguration mit YaST verändern, ist kein Rebuild-Aufruf nötig, dies erledigt dann YaST für Sie.