it-swarm.com.de

Ist es in Ordnung, / etc / machine-id zu ändern?

Ich habe eine Festplatte (SSD) geklont und die geklonte Festplatte in einen anderen Computer eingelegt. Jetzt haben beide Systeme in /etc/machine-id Den gleichen Wert. Ist es ein Problem, einfach /etc/machine-id Zu bearbeiten, um den Wert zu ändern? Kann ich dies tun, während das System läuft (oder muss ich von einem Live-USB booten)?

Ist systemd-machine-id-setup eine bessere Alternative?

Die naive Verwendung von systemd-machine-id-setup Funktioniert nicht. Ich habe folgende Schritte versucht:

nano /etc/machine-id (to remove the existing value)
systemd-machine-id-setup
> Initializing machine ID from D-Bus machine ID.
cat /etc/machine-id

Der neue Wert ist der gleiche wie der alte Wert.

35
MountainX

Obwohl systemd-machine-id-setup Und systemd-firstboot Für Systeme mit systemd hervorragend geeignet sind, ist /etc/machine-id Trotz des Tags keine systemd-Datei. Es wird auch auf Systemen verwendet, die systemd nicht verwenden. Alternativ können Sie das Tool dbus-uuidgen Verwenden:

rm -f /etc/machine-id

und dann

dbus-uuidgen --ensure=/etc/machine-id

Wie von Stephen Kitt erwähnt, können Debian-Systeme sowohl eine /etc/machine-id Als auch eine /var/lib/dbus/machine-id Datei haben. Wenn beide als reguläre Dateien vorhanden sind, sollte ihr Inhalt übereinstimmen. Entfernen Sie dort auch /var/lib/dbus/machine-id:

rm /var/lib/dbus/machine-id

und neu erstellen:

dbus-uuidgen --ensure

Dieser letzte Befehl verwendet implizit /var/lib/dbus/machine-id Als Dateinamen und kopiert die Maschinen-ID aus dem bereits neu generierten /etc/machine-id.

Der Aufruf von dbus-uuidgen Kann bereits Teil der regulären Startsequenz sein oder nicht. Wenn es Teil der Startsequenz ist, sollte es ausreichen, die Datei zu entfernen und neu zu starten. Wenn Sie dbus-uuidgen Selbst ausführen müssen, beachten Sie die Warnung in der Manpage:

Wenn Sie versuchen, eine vorhandene Computer-ID auf einem laufenden System zu ändern, führt dies wahrscheinlich dazu, dass schlimme Dinge passieren. Versuchen Sie nicht, diese Datei zu ändern. Machen Sie es auch auf zwei verschiedenen Systemen nicht gleich. Es muss immer anders sein, wenn zwei verschiedene Kernel ausgeführt werden.

Verwenden Sie das System danach auf keinen Fall weiter, ohne neu zu starten. Als zusätzliche Vorsichtsmaßnahme können Sie stattdessen zuerst im Rettungsmodus neu starten (oder, wie Sie vorgeschlagen haben, von einem Live-USB-Stick booten), aber meiner Erfahrung nach ist dies nicht erforderlich. Es können schlimme Dinge passieren, aber die schlimmen Dinge, die passieren, werden trotzdem durch den Neustart behoben.

31
hvd

Am einfachsten ist es, /etc/machine-id Auf der geklonten Festplatte zu löschen und neu zu starten. systemd-machine-id-setup Erzeugt einen neuen für Sie (Sie müssen ihn manuell ausführen, wenn dies nicht automatisch geschieht). Möglicherweise müssen Sie auch /var/lib/dbus/machine-id Löschen (wenn es sich nicht um einen Symlink zu /etc/machine-id Handelt). Stellen Sie in diesem Fall sicher, dass das neue machine-id wirklich neu ist, und kopieren Sie die Dateien so, dass /etc/machine-id und /var/lib/dbus/machine-id denselben Wert enthalten.

Wie Sie herausgefunden haben, wird durch Ausführen von systemd-machine-id-setup Auf einem System, das mit einer /etc/machine-id - Datei gestartet wurde, einfach die Kennung wiederhergestellt, mit der es gestartet wurde (von der D-Bus-Maschinen-ID). Dies ist Option 1 in der Manpage, auf die Sie verlinkt haben. Durch Löschen der Datei (en) und Neustarten wird Option 4 ausgeführt.

Für Leser , die planen , eine Festplatte auf diese Weise zu klonen, wird der empfohlene Ansatz mit systemd empfohlen, zumindest auf Systemen, auf denen systemd-firstboot ist verfügbar, ist das stattdessen zu verwenden:

  1. klonen Sie die Festplatte.
  2. hängen Sie die geklonte Root-Partition irgendwo ein (, z. B. /mnt);
  3. initialisieren Sie die Maschinen-ID:

    systemd-firstboot --root=/mnt --setup-machine-id
    

Mit systemd-firstboot Können Sie andere Parameter einrichten (Hostname, Root-Passwort usw.).

30
Stephen Kitt