Bagaimana cara menggunakan systemd-firstboot.service?

11

Saya membuat gambar Debian Jessie. Saat boot sistem tidak memiliki /etc/machine-idfile. Ini menyebabkan beberapa masalah dengan jurnal yang tidak dimulai.

Saya telah menemukan bahwa di systemd repo:

#  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

Di mana itu harus ditempatkan sehingga akan berjalan?

Di systemd 215, ConditionFirstBoot tidak tersedia. Bagaimana cara menghadapinya?

Velkan
sumber

Jawaban:

1

Saya agak terkejut Anda tidak memiliki skrip ini di tempat dari hanya menginstal systemd, tetapi (secara umum) saya kira jawabannya adalah bahwa Anda harus memasukkannya ke dalam /etc/systemd/system.

Dalam situasi ini (karena Anda melakukan semua ini untuk mencoba dan mendapatkan mesin-id, untuk membuat journald bekerja), saya kira saya mungkin mengganti ConditionFirstBoot dengan cek untuk file yang Anda pedulikan /etc/machine-id,.

Jadi saya mungkin akan menulis ulang bagian Unit sebagai:

[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

Yang sedang berkata, jika mungkin untuk mengirimkan systemd yang lebih baru dengan gambar Anda (saya tidak pandai menggunakan Debian, jadi saya tidak dapat menemukan tempat untuk memeriksa versi terbaru yang didukung), yang mungkin layak untuk dilihat - systemd 215 memiliki beberapa masalah yang telah diperbaiki ( https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=systemd ).

iwaseatenbyagrue
sumber
Hanya sebuah catatan untuk memverifikasi dua kali bahwa solusi yang diusulkan akan berhasil. Ketika saya mulai pencitraan sistem-dikendalikan OS (berdasarkan Debian 10, IIRC, ketika dia masih Sid) beberapa tahun yang lalu, impuls pertama saya adalah menghapus / etc / machine-id tepat sebelum pencitraan, di antara tugas-tugas penghapusan kepribadian lainnya. Efeknya cukup dramatis: sistem dengan datar menolak untuk boot dan masuk ke mode pemulihan (batu bata jika Anda menggunakan cloud vm). Perbaikan terpotong tetapi menyimpan file ( : > /etc/machine-id). Mungkin ini bahkan tidak benar lagi, tetapi saya belajar untuk memperlakukan file ini dengan sangat hormat dan kagum sejak itu.
kkm