Ich habe eine Festplatte (SSD) geklont und die geklonte Festplatte in einen anderen Computer eingelegt. Jetzt haben beide Systeme den gleichen Wert in /etc/machine-id
. Ist es ein Problem, einfach zu bearbeiten /etc/machine-id
, um den Wert zu ändern? Kann ich dies tun, während das System ausgeführt wird (oder muss ich von einem Live-USB-Gerät booten)?
Ist systemd-machine-id-setup
eine bessere Alternative?
Die naive Verwendung von systemd-machine-id-setup
funktioniert nicht. Ich habe diese Schritte ausprobiert:
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.
machine-id
?Antworten:
Obwohl
systemd-machine-id-setup
undsystemd-firstboot
für Systeme mit systemd großartig sind,/etc/machine-id
handelt es sich trotz des Tags nicht um eine systemd-Datei. Es wird auch auf Systemen verwendet, die systemd nicht verwenden. Als Alternative können Sie dasdbus-uuidgen
Tool verwenden:und dann
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 Dateien als reguläre Dateien vorhanden sind, sollte ihr Inhalt übereinstimmen. Entfernen Sie dort auch/var/lib/dbus/machine-id
:und erstelle es neu:
Dieser letzte Befehl wird implizit
/var/lib/dbus/machine-id
als Dateiname verwendet und kopiert die Rechner-ID von der bereits neu generierten/etc/machine-id
.Der
dbus-uuidgen
Aufruf kann Teil der regulären Startsequenz sein oder nicht. Wenn es Teil der Startsequenz ist, sollten das Entfernen der Datei und der Neustart ausreichen. Wenn Sie sichdbus-uuidgen
selbst ausführen müssen, beachten Sie die Warnung in der Manpage:Verwenden Sie das System nach diesem Vorgang auf keinen Fall mehr, ohne einen Neustart durchzuführen. Als zusätzliche Vorsichtsmaßnahme können Sie stattdessen zuerst einen Neustart in den Rettungsmodus durchführen (oder, wie Sie vorgeschlagen haben, von einem aktiven USB-Stick starten), 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.
quelle
/var/lib/dbus/machine-id
und/etc/machine-id
ist ein System-Ismus (der mit D-Bus kompatibel ist)./etc
heutzutage direkt akzeptiert (kein Symlink erforderlich), kann es der Einfachheit halber dort eingefügt werden: Es gibt mehr Code, der nur prüft,/etc
als nur prüft/var/lib/dbus
.systemd-machine-id-setup
, dass eine Kopie des ursprünglichen Werts darin gefunden wurde. Dies ist im Grunde das Standardverhalten, es sei denn, eine Distribution erstellt speziell den Symlink.Am einfachsten ist es,
/etc/machine-id
auf der geklonten Festplatte zu löschen und einen Neustart durchzuführen.systemd-machine-id-setup
generiert ein neues für Sie (Sie müssen es manuell ausführen, wenn dies nicht automatisch geschieht). Möglicherweise müssen Sie auch löschen/var/lib/dbus/machine-id
(wenn es sich nicht um einen Symlink handelt/etc/machine-id
). in diesem Fall, stellen Sie sicher , dass die neuemachine-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 beim Ausführen
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-Rechner-ID). Dies ist Option 1 in der Manpage, mit der Sie verlinkt haben. Wenn Sie die Datei (en) löschen und neu starten, wird Option 4 ausgeführt.Für Leser , die das Klonen einer Festplatte auf diese Weise planen , wird empfohlen, bei systemd zumindest auf Systemen, auf denen dies
systemd-firstboot
verfügbar ist, Folgendes zu verwenden:/mnt
);Initialisieren Sie die Rechner-ID:
Sie können
systemd-firstboot
andere Parameter einstellen, während Sie gerade dabei sind (Hostname, Root-Passwort usw.).quelle
/etc/machine-id
nicht automatisch neu erstellt wird, wenn es entfernt wird, und auch nichtsystemd-firstboot
verfügbar ist. Sobald Sie diese Datei entfernt haben, sollten Sie sie manuell mithilfe von neu erstellensystemd-machine-id-setup
(und möglicherweise auch neu starten)./var/lib/dbus/machine-id
handelt es sich nur um einen Symlink zu/etc/machine-id
, sodass keine Inhalte von einer Datei in die andere kopiert werden müssen.machine-id
für D-Bus überhaupt ein eindeutiger Wert benötigt, da D-Bus nur ein systeminterner IPC-Mechanismus ist?