Como usar systemd-firstboot.service?

11

Estou fazendo uma imagem do Debian Jessie. Na inicialização, o sistema não possui /etc/machine-idarquivo. Isso causa alguns problemas com o diário que não inicia.

Eu descobri isso no repositório systemd:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=First Boot Wizard
Documentation=man:systemd-firstboot(1)
DefaultDependencies=no
Conflicts=shutdown.target
After=systemd-remount-fs.service
Before=systemd-sysusers.service sysinit.target shutdown.target
ConditionPathIsReadWrite=/etc
ConditionFirstBoot=yes

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=@rootbindir@/systemd-firstboot --prompt-locale --prompt-timezone --prompt-root-password
StandardOutput=tty
StandardInput=tty
StandardError=tty

Onde deve ser colocado para que funcione?

No systemd 215, o ConditionFirstBoot não está disponível. Como lidar com isso?

Velkan
fonte

Respostas:

1

Estou um pouco surpreso por você não ter esse script instalado simplesmente instalando o systemd, mas (em geral) acho que a resposta é que você deve colocá-lo /etc/systemd/system.

Nessa situação (como você está fazendo tudo isso para tentar obter um ID de máquina, a fim de fazer o diário funcionar), acho que posso substituir o ConditionFirstBoot por uma verificação do arquivo de que você gosta /etc/machine-id,.

Então eu provavelmente reescreveria a seção Unidade como:

[Unit]
Description=First Boot Wizard
Documentation=man:systemd-firstboot(1)
DefaultDependencies=no
Conflicts=shutdown.target
After=systemd-remount-fs.service
Before=systemd-sysusers.service sysinit.target shutdown.target
ConditionPathIsReadWrite=/etc
ConditionPathExists=!/etc/machine-id

Dito isto, se fosse possível enviar um systemd mais recente com sua imagem (eu não sou bom no Debian, então não encontrei nenhum lugar para verificar qual era a versão mais recente suportada), isso pode valer a pena investigar - systemd O 215 tem alguns problemas que foram corrigidos desde então ( https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=systemd ).

iwaseatenbyagrue
fonte
Apenas uma observação para verificar duas vezes se a solução proposta funcionaria. Quando eu comecei a criar um sistema operacional controlado por sistema de sistema de imagens (baseado no Debian 10, IIRC, quando ele ainda era Sid) alguns anos atrás, meu primeiro impulso foi excluir o / etc / machine-id logo antes da criação de imagens, entre outras tarefas de apagamento de personalidade. O efeito foi bastante dramático: o sistema recusou-se a inicializar e entrou no modo de recuperação (um bloco se você estiver implantando uma nuvem vm). A correção foi truncada, mas mantenha o arquivo ( : > /etc/machine-id). Talvez isso não seja mais verdade, mas aprendi a tratar esse arquivo com muito respeito e reverência desde então.
kkm 19/01