Eu tenho uma máquina Linux embutida que tem um sistema de arquivos raiz somente de leitura que é carregado a partir de um UBI / UBIFS.
Sempre que o dispositivo é inicializado, ele cria um novo ID de máquina systemd, que eu compreendo ao ler o documentação :
The machine ID is usually generated from a random source during system
installation and stays constant for all subsequent boots. Optionally,
for stateless systems, it is generated during runtime at early boot if
it is found to be empty.
A partir da leitura do systemd machine-id-setup.c , eu entendo como funciona no sentido de que, ele tentará gerar o ID da máquina em / etc / machine-id se ele não existir, se isso falhar e a partição for somente leitura , ele irá gerar em / run / machine-id e montá-lo em / etc / machine-id (não em um symlink).
Existe uma pergunta: eu posso ter um ID de máquina fixo para um dispositivo sem estado? As duas opções que tenho são:
1) Armazene o ID da máquina no armazenamento não volátil (externo / eMMC):
- Após a inicialização, verifique se o / etc / machine-id existe
- Se não existir, continue pelos serviços do systemd passando o serviço / montagem que gera o ID da máquina (como normal).
- Novo arquivo de serviço: uma vez gerado o ID da máquina, copie essa cadeia para uma partição que não esteja na memória / NAND, ou seja, eMMC (não volátil).
Portanto, agora que o dispositivo foi inicializado pelo menos uma vez e o ID da máquina é armazenado em um meio de armazenamento não volátil; a sequência de inicialização é a seguinte:
- O dispositivo inicializa e monta a partição não volátil.
- Verifica se existe um ID de máquina não volátil (igual ao primeiro passo acima)
- Este arquivo existe, portanto, montá-lo em / etc / machine-id
- O arquivo de serviço que manipula a população de / etc / machine-id agora não é executado porque isso já existe.
2) Modifique o systemd machine-id-setup.c arquivo e altere os diretórios codificados permanentemente onde o ID da máquina é gerado, armazenado e salvo. No entanto, eu gostaria de evitar essa solução, pois isso significa que eu teria que modificar os arquivos do sistema systemd.
Alguém poderia compartilhar algum insight sobre isso?
Obrigado