Ich versuche, nfs-utils (und damit alle seine Abhängigkeiten) in einer zustandslosen RHEL6.5 KVM VM zu installieren. Die VM ist so konfiguriert, dass sie über die /etc/sysconfig/readonly-root
Datei ein schreibgeschütztes Root-Verzeichnis hat, Linux-Magie, die ich nicht implementiert habe, und die Option „Schreibgeschützt“ in der GUI der VM-Einstellungen. Die Installation erfolgt mit virt-customize -a image.img --run install_script.sh
. Das Skript verwendet ein Here-Dokument, um die .repo-Datei zu erstellen (die für 6.5 in den CentOS-Tresor geht), die ich dann yum install -y nfs-utils
für die eigentliche Installation verwende. Ich habe diesen Ansatz gewählt, weil er einfacher, sauberer und weniger fehleranfällig erscheint, als die VM im Lese-/Schreibmodus zu booten, zu installieren, zu bereinigen und dann herunterzufahren. Außerdem kann ich nicht herausfinden, wie ich sie im Lese-/Schreibmodus booten kann.
Die Ausgabe virt-customize
zeigte, dass die Pakete erfolgreich installiert wurden. Der einzige Fehler war die Entfernung der .repo-Datei aufgrund eines Tippfehlers.
Nach dieser Installation habe ich die VM hochgefahren und wie üblich versucht, mich anzumelden. Meine Versuche werden jetzt abgelehnt, weil Login incorrect
.
Ich habe überprüft virt-cat
, ob die Anmelde-Shell für den Benutzer richtig eingerichtet ist und das verschlüsselte Kennwort /etc/shadow
mit dem Original übereinstimmt.
Mein ursprünglicher Ansatz bestand darin, ein ISO-Image mit allen Abhängigkeiten und NFS-Utilities zu erstellen, dieses an die VM anzuhängen und die Installation von einem Skript durchführen zu lassen. Damals trat das gleiche Problem auf. Ich konnte die Ursache des Problems auf die Installation eines der NFS-Pakete eingrenzen: entweder nfs-utils
oder nfs-utils-lib
(eines von beiden, ich kann mich nicht erinnern) und das rpcbind
Paket. Wenn eines dieser Pakete installiert und dann die VM gebootet wird, bricht die Anmeldung ab. Ich vermute, dass das gleiche Problem jetzt auftritt.
Das Image, das ich für die VM verwende, ist cp
vom Image der Original-VM abgeleitet, da dies ein Test ist, um herauszufinden, wie die Installation korrekt durchgeführt wird.
Ja, ich gebe das Passwort richtig ein. Ich habe versucht, das Passwort des Benutzers zu ändern (über libguestfs
Tools), kann mich aber immer noch nicht anmelden. Ich bin mir also nicht sicher, ob die Änderung fehlgeschlagen ist (der Rückgabecode für die Befehle zeigt Erfolg an) oder ob das gleiche Problem vorliegt.
Frage:
- Kann das Anmeldeproblem debuggt und behoben werden? Und wenn ja, wie?
- Wie führe ich die Installation richtig durch, damit der Login nicht abstürzt? Dieser Weg funktioniert offensichtlich nicht.
Antwort1
Das Hauptproblem war hier SELinux. Es gibt mehrere Möglichkeiten, Software in einer VM zu installieren, aber sie laufen darauf hinaus, dass die VM entweder gebootet wird oder nicht. Letzteres ist es, was alles durcheinander bringt, und so habe ich die Installation in diesem Beitrag durchgeführt.
So gut ich es mir vorstellen kann, erkennt SELinux, dass sich etwas geändert hat, wenn die VM heruntergefahren und Software installiert wird, z. B. über den Befehl in der Frage, und weiß nicht, was passiert ist, wenn die VM nach der Installation gebootet wird, und sperrt alles. Indem ich SELinux die Umbenennung erlaube, behebt das das Problem, hat aber bei mir viele andere Dinge kaputt gemacht. Es gibt praktisch keine Möglichkeit, eine Installation per Skript auszuführen, wenn das System offline ist, weil Sie wahrscheinlich auf dieses Problem stoßen werden. Beachten Sie, dass dieses Problem nur bei RHEL6.5-VMs und ihrer Version von SELinux auftreten kann (wir sind auf RHEL6.5 versioniert).
Die richtige Vorgehensweise bei der Installation einer VM wie dieser besteht darin, sie im Lese-/Schreibmodus zu starten und die Installation entweder durch Mounten eines ISO mit den erforderlichen RPMs oder mithilfe eines Paketmanagers durchzuführen. Während des Startvorgangs erkennt SELinux die Installation und alles läuft reibungslos.