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
. É algum problema 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)?
É 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.
machine-id
?Respostas:
Embora
systemd-machine-id-setup
esystemd-firstboot
seja ótimo 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. Portanto, como alternativa, você pode usar adbus-uuidgen
ferramenta:e depois
Como mencionado por Stephen Kitt, os sistemas Debian podem ter um
/etc/machine-id
e um/var/lib/dbus/machine-id
arquivo. Se ambos existirem como arquivos regulares, seu conteúdo deve corresponder, então remova também/var/lib/dbus/machine-id
:e recrie-o:
Esse último comando usa implicitamente
/var/lib/dbus/machine-id
como o nome do arquivo e copiará o ID da máquina do já gerado recentemente/etc/machine-id
.A
dbus-uuidgen
chamada pode ou já não faz parte da sequência de inicialização regular. Se fizer parte da sequência de inicialização, remover o arquivo e reinicializar deve ser suficiente. Se você precisar executardbus-uuidgen
, preste atenção ao aviso na página de manual:Então, depois de fazer isso, definitivamente não continue usando o sistema sem reiniciar. Como precaução extra, você pode reiniciar primeiro no modo de recuperação (ou, como sugeriu, inicializar a partir de um stick USB ativo), mas, pela 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.
fonte
/var/lib/dbus/machine-id
e/etc/machine-id
é um systemd-ism (compatível com o D-Bus)./etc
diretamente hoje em dia (não é necessário um link simbólico), ele pode ser colocado lá apenas por simplicidade: há mais código por aí que verifica apenas/etc
do que apenas verifica/var/lib/dbus
.systemd-machine-id-setup
uma cópia do valor original. Esse é basicamente o comportamento padrão, a menos que uma distro crie o link simbólico especialmente.A opção mais fácil é excluir
/etc/machine-id
no disco clonado e reiniciar;systemd-machine-id-setup
irá gerar um novo para você (você precisará executá-lo manualmente se isso não acontecer automaticamente). Você também pode precisar excluir/var/lib/dbus/machine-id
(se não for um link simbólico para/etc/machine-id
); Nesse caso, certifique-se que o novomachine-id
realmente é novo, e copiar os arquivos para que/etc/machine-id
e/var/lib/dbus/machine-id
contêm o mesmo valor.Como você descobriu, a execução
systemd-machine-id-setup
em um sistema que foi inicializado com um/etc/machine-id
arquivo simplesmente restaurará o identificador com o qual foi inicializado (a partir da identificação da máquina D-Bus). Esta é a opção 1 na página de manual à qual você vinculou. A exclusão do (s) arquivo (s) e a reinicialização exercitarão a opção 4.Para o benefício dos leitores que planejam clonar um disco dessa maneira, a abordagem recomendada com systemd, pelo menos nos sistemas onde
systemd-firstboot
estiver disponível, é usá-lo:/mnt
);inicialize o ID da máquina:
Você pode usar
systemd-firstboot
para configurar outros parâmetros enquanto estiver trabalhando (nome do host, senha root etc.).fonte
/etc/machine-id
não é recriado automaticamente se removido, nemsystemd-firstboot
está disponível. Portanto, depois de remover esse arquivo, você deve recriá-lo manualmente usandosystemd-machine-id-setup
(e talvez reiniciar também)./var/lib/dbus/machine-id
é apenas um link simbólico/etc/machine-id
, portanto, não há necessidade de copiar o conteúdo de um arquivo para o outro.machine-id
D-Bus exclusivo, já que o D-Bus é apenas um mecanismo IPC intra-sistema?