Está tudo bem mudar / etc / machine-id?

30

Eu clonei um disco (SSD) e coloquei o disco clonado em outra máquina. Agora ambos os sistemas têm o mesmo valor em /etc/machine-id . Existe algum problema para simplesmente editar /etc/machine-id para alterar o valor? Posso fazer isso enquanto o sistema está em execução (ou preciso inicializar a partir de um Live USB)?

O systemd-machine-id-setup é uma alternativa melhor?

O uso ingênuo de systemd-machine-id-setup não funciona. Eu tentei estas etapas:

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

O novo valor é o mesmo que o valor antigo.

    
por MountainX 07.11.2017 / 09:13

2 respostas

20

Embora systemd-machine-id-setup e systemd-firstboot sejam ótimos para sistemas que usam systemd, /etc/machine-id não é um arquivo systemd, apesar da tag. Também é usado em sistemas que não usam o systemd. Então, como alternativa, você pode usar a ferramenta dbus-uuidgen :

rm -f /etc/machine-id

e depois

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

Como mencionado por Stephen Kitt, os sistemas Debian podem ter os arquivos /etc/machine-id e /var/lib/dbus/machine-id . Se ambos existirem como arquivos regulares, o conteúdo deles deve corresponder, portanto, também remova /var/lib/dbus/machine-id :

rm /var/lib/dbus/machine-id

e recrie-o:

dbus-uuidgen --ensure

Este último comando usa implicitamente /var/lib/dbus/machine-id como o nome do arquivo e copiará a ID da máquina do /etc/machine-id já gerado.

A invocação dbus-uuidgen pode ou não já fazer parte da seqüência de inicialização normal. Se for parte da seqüência de inicialização, a remoção do arquivo e a reinicialização devem ser suficientes. Se você precisar executar dbus-uuidgen , preste atenção ao aviso na página do manual:

If you try to change an existing machine-id on a running system, it will probably result in bad things happening. Don't try to change this file. Also, don't make it the same on two different systems; it needs to be different anytime there are two different kernels running.

Então, depois de fazer isso, definitivamente não continue usando o sistema sem reiniciar. Como uma precaução extra, você pode, em vez disso, reinicializar primeiro no modo de recuperação (ou, como você sugeriu, inicializar a partir de um pen drive USB), mas, da minha experiência, isso não é necessário. Coisas ruins podem acontecer, mas as coisas ruins que acontecem são corrigidas pela reinicialização de qualquer maneira.

    
por 07.11.2017 / 13:32
28

A opção mais fácil é excluir /etc/machine-id no disco clonado e reinicializar; systemd-machine-id-setup gerará um novo para você (você precisará executá-lo manualmente se isso não acontecer automaticamente). Talvez você também precise excluir /var/lib/dbus/machine-id (se não for um link simbólico para /etc/machine-id ); Nesse caso, certifique-se de que o novo machine-id seja realmente novo e copie os arquivos para que /etc/machine-id e /var/lib/dbus/machine-id contenham o mesmo valor.

Como você descobriu, executar systemd-machine-id-setup em um sistema que foi inicializado com um arquivo /etc/machine-id simplesmente restaurará o identificador com o qual ele foi inicializado (a partir do id da máquina D-Bus). Esta é a opção 1 na manpage à qual você está vinculado. A exclusão do (s) arquivo (s) e a reinicialização exercerão a opção 4.

Para o benefício dos leitores planejando clonar um disco dessa maneira, a abordagem recomendada com o systemd, pelo menos em sistemas onde systemd-firstboot está disponível, é usar isso em vez disso:

  1. clona o disco;
  2. monte a partição raiz clonada em algum lugar ( por exemplo, /mnt );
  3. inicialize o ID da máquina:

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

Você pode usar systemd-firstboot para definir outros parâmetros enquanto estiver participando (nome do host, senha raiz, etc.).

    
por 07.11.2017 / 09:17

Tags