O arquivo /etc/machine-id
não é uma parte padrão de qualquer BSD. É um systemd-ism que começou a vazar para softwares que estão em Ports. Normalmente, a ausência desse arquivo é benigna, porque (até agora) ainda existem mecanismos específicos não-específicos do systemd que a maioria desses softwares recorre.
Os softwares procuram uma ID de máquina , um número de 128 bits que identifica exclusivamente esta instalação do sistema operacional, consistentemente nas reinicializações do sistema e (principalmente) independente das alterações de hardware.
Um desses softwares é o D-Bus. Também tem uma noção de ID de máquina . Historicamente, no FreeBSD / TrueOS / DragonFly BSD isso foi encontrado no arquivo /var/db/dbus/machine-id
. Enquanto o D-Bus tem sido alterado nos últimos anos para olhar para /etc/machine-id
para preferência, ele ainda deve voltar a olhar para o arquivo mais antigo.
O sistema operacional não vem com ou cria tal arquivo fora da caixa. Mas você pode, claro, fazer um.
- Obtenha e instale o conjunto de ferramentas e execute a ferramenta
setup-machine-id
como superusuário. Isso fará com/etc/machine-id
, lendo um ID existente dos arquivos do D-Bus, se puder. (Use a versão 1.36 do kit de ferramentas ou mais tarde para evitar um bug aqui.)Você não precisa executar este processo a cada bootstrap, pois uma vez criado, o arquivo
/etc/machine-id
fica lá durante a vida útil do sistema; mas se você conectá-lo ao bootstrap do seu sistema, ele também garantirá que você tenha um arquivo/run/machine-id
e uma variável de kernelkern.hostuuid
contendo todos o mesmo ID. Ele também usa / atualiza/etc/hostid
. - Mova o arquivo D-Bus para o local do systemd e então vincule simbolicamente o primeiro ao último:
mv -i /var/db/dbus/machine-id /etc/ && ln -s /etc/machine-id /var/db/dbus/
Observe que fazer o link simbólico na outra direção quebra qualquer software que espera que/etc/machine-id
seja utilizável antes de/var
está montado. Novamente, estas são semânticas do systemd para este arquivo que você pode achar rastejando em softwares que estão em Ports. - Basta fazer uma à mão com uma nova ID de máquina gerada por algo como
uuidgen
(cuja saída você terá que fazer massagens) oudbus-uuidgen
. Se você já tem D-Bus instalado e um arquivo de ID de máquina D-Bus presente, esta é uma abordagem inferior, pois resultará em softwares que (primeiro) procuram na localização do systemd uma ID de máquina diferente para softwares que (primeiro) olhar na localização do D-Bus.
Sim, estritamente falando, isso deve ser /usr/local/etc/machine-id
por convenções BSD, mas lembre-se de que estamos falando de softwares que estão olhando /etc/machine-id
em primeiro lugar porque eles são erroneamente específicos do sistema . Eles não terão sido corrigidos para ver uma localização não-systemd para este arquivo.
Leitura adicional
- Lennart Poettering e outros ..
machine-id
. páginas de manual do systemd. Freedesktop.org. - Jonathan de Boyne Pollard (2013).
setup-machine-id
. Guia nosh . Softwares JdeBP's. - Jonathan de Boyne Pollard (2017).
/etc/machine-id
. Dicionário geográfico. Guia nosh . Softwares JdeBP's. - link