web-dev-qa-db-fra.com

Est-ce OK de changer / etc / machine-id?

J'ai cloné un disque (SSD) et mis le disque cloné dans une autre machine. Maintenant, les deux systèmes ont la même valeur dans /etc/machine-id. Est-ce un problème de simplement éditer /etc/machine-id pour changer la valeur? Puis-je le faire pendant que le système fonctionne (ou dois-je démarrer à partir d'un Live USB)?

Est systemd-machine-id-setup une meilleure alternative?

L'utilisation naïve de systemd-machine-id-setup ne fonctionne pas. J'ai essayé ces étapes:

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

La nouvelle valeur est la même que l'ancienne valeur.

35
MountainX

Bien que systemd-machine-id-setup et systemd-firstboot sont parfaits pour les systèmes utilisant systemd, /etc/machine-id n'est pas un fichier systemd, malgré la balise. Il est également utilisé sur les systèmes qui n'utilisent pas systemd. Donc, comme alternative, vous pouvez utiliser le dbus-uuidgen outil:

rm -f /etc/machine-id

et alors

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

Comme mentionné par Stephen Kitt, les systèmes Debian peuvent avoir à la fois un /etc/machine-id et un /var/lib/dbus/machine-id fichier. Si les deux existent en tant que fichiers normaux, leur contenu doit correspondre, donc supprimez également /var/lib/dbus/machine-id:

rm /var/lib/dbus/machine-id

et le recréer:

dbus-uuidgen --ensure

Cette dernière commande utilise implicitement /var/lib/dbus/machine-id comme nom de fichier et copiera l'ID de l'ordinateur à partir du _ déjà nouvellement généré /etc/machine-id.

Le dbus-uuidgen l'invocation peut ou peut ne pas déjà faire partie de la séquence de démarrage normale. S'il fait partie de la séquence de démarrage, la suppression du fichier et le redémarrage devraient suffire. Si vous devez exécuter dbus-uuidgen vous-même, faites attention à l'avertissement dans la page de manuel:

Si vous essayez de modifier un ID d'ordinateur existant sur un système en cours d'exécution, cela entraînera probablement de mauvaises choses. N'essayez pas de modifier ce fichier. Aussi, ne faites pas la même chose sur deux systèmes différents; il doit être différent chaque fois qu'il y a deux noyaux différents en cours d'exécution.

Donc, après avoir fait cela, ne continuez certainement pas à utiliser le système sans redémarrer. Par mesure de précaution supplémentaire, vous pouvez plutôt redémarrer en premier en mode de secours (ou comme vous l'avez suggéré, démarrer à partir d'une clé USB en direct), mais d'après mon expérience, ce n'est pas nécessaire. De mauvaises choses peuvent arriver, mais les mauvaises choses qui se produisent sont quand même résolues par le redémarrage.

31
hvd

L'option la plus simple consiste à supprimer /etc/machine-id sur le disque cloné et redémarrez; systemd-machine-id-setup en générera un nouveau pour vous (vous devrez l'exécuter manuellement si cela ne se produit pas automatiquement). Vous devrez peut-être également supprimer /var/lib/dbus/machine-id (s'il ne s'agit pas d'un lien symbolique vers /etc/machine-id); dans ce cas, assurez-vous que le nouveau machine-id est vraiment nouveau et copiez les fichiers pour que /etc/machine-id et /var/lib/dbus/machine-id contient la même valeur.

Comme vous l'avez découvert, exécuter systemd-machine-id-setup sur un système qui a été démarré avec un /etc/machine-id le fichier restaurera simplement l'identifiant avec lequel il a été démarré (à partir de l'ID de la machine D-Bus). Il s'agit de l'option 1 de la page de manuel à laquelle vous avez lié. La suppression du ou des fichiers et le redémarrage exercent l'option 4.

Pour le bénéfice des lecteurs prévoyant de cloner un disque de cette manière, l'approche recommandée avec systemd, au moins sur les systèmes où systemd-firstboot est disponible, c'est de l'utiliser à la place:

  1. cloner le disque;
  2. montez la partition racine clonée quelque part ( par exemple /mnt);
  3. initialiser l'ID de la machine:

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

Vous pouvez utiliser systemd-firstboot pour configurer d'autres paramètres pendant que vous y êtes (nom d'hôte, mot de passe root, etc.).

30
Stephen Kitt