¿Cómo utilizar systemd-firstboot.service?

11

Estoy haciendo una imagen de Debian Jessie. En el arranque, el sistema no tiene /etc/machine-idarchivo. Esto causa algunos problemas con el journald que no se inicia.

He encontrado que en el repositorio 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

¿Dónde debe colocarse para que funcione?

En systemd 215, el ConditionFirstBoot no está disponible. ¿Cómo lidiar con eso?

Velkan
fuente

Respuestas:

1

Me sorprende un poco que no haya implementado este script simplemente instalando systemd, pero (en general) creo que la respuesta es que debería ponerlo /etc/systemd/system.

En esta situación (ya que está haciendo todo esto para tratar de conseguir una máquina-id, con el fin de hacer que el trabajo journald), supongo que podría reemplazar el ConditionFirstBoot con un cheque para el archivo que se preocupan por, /etc/machine-id.

Entonces, probablemente volvería a escribir la sección Unidad 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

Dicho esto, si fuera posible enviar un systemd más reciente con su imagen (no soy bueno en Debian, por lo que no pude encontrar ningún lugar para verificar cuál era la última versión compatible), podría valer la pena analizarlo - systemd 215 tiene algunos problemas que desde entonces se han solucionado ( https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=systemd ).

iwaseatenbyagrue
fuente
Solo una nota para verificar dos veces que la solución propuesta funcionaría. Cuando comencé a tomar imágenes del sistema operativo controlado por systemd (basado en Debian 10, IIRC, cuando todavía era Sid) hace un par de años, mi primer impulso fue eliminar el / etc / machine-id justo antes de la imagen, entre otras tareas de borrado de personalidad. El efecto fue bastante dramático: el sistema se negó rotundamente a arrancar y entró en modo de recuperación (un ladrillo si está implementando una nube vm). La solución fue truncada pero conserva el archivo ( : > /etc/machine-id). Tal vez esto ya no sea cierto, pero aprendí a tratar este archivo con gran respeto y asombro desde entonces.
kkm