Falta o / etc / machine-id no FreeBSD / TrueOS / FreeBSD BSD et al

1

Inspirado em " FeeBSD KDE. Não foi possível iniciar o d-bus. você pode chamar qdbus? ":

Estou usando o FreeBSD / TrueOS / DragonFly BSD e tenho algum software de Ports que, quando executado, reclama de um arquivo /etc/machine-id ausente. Eu não vejo nenhum arquivo em /etc .

O que é esse arquivo? Eu deveria ter isso? Como eu faço, se sim?

    
por JdeBP 04.10.2017 / 14:24

1 resposta

3

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 kernel kern.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) ou dbus-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
por 04.10.2017 / 14:24