Am Donnerstag, dem 28.10.2021 um 12:38 +0200 schrieb Luca Bertoncello:
> Am 28.10.2021 12:33, schrieb Daniel Leidert:

[..]
> > IMHO würdest du sehr viel schneller sein, einfach ein komplettes System
> > via
> > preseed zu installieren und nach dem Neustart die openvpn-Verbindung
> > nach
> > network-online.target automatisch zu starten (das System kann man mit
> > late_command in der preseed-Datei entsprechend präparieren, und so z.B.
> > Dateien
> > erstellen oder kopieren). Wir können uns das gerne mal in einer VM
> > anschauen.
>
> Ich verstehe nicht ganz was du meinst...
> Kannst du mir bitte das erklären?

Klar. Mit der preseed-Datei kannst du den Installer so vorkonfigurieren, dass
er ohne jegliche Rückfrage das System partitioniert, installiert und
einrichtet. Dazu werden debconf-Fragen durch die Preseed-Datei im Voraus
beantwortet. Korrekt? Es gibt allerdings auch noch zwei Debconf-Schlüssel, die
das Ausführen von Befehlen (durch Semikolon getrennt) zulassen. Diese beiden
Schlüssel heißen:

d-i preseed/early_command string <string>
d-i preseed/late_command string <string>

Ersteres wird i. d. R. verwendet, um anna-install aufzurufen. Letzteres wird
sehr spät im Installationsvorgang aufgerufen. Da ist das Zielsystem dann
bereits installiert. Mann kann dann Befehle in der Init Ramdisk des Installers
ausführen oder im Zielsystem, das unter /target installiert wurde. Für letzeres
stellst du dem Befehl einfach ein 'in-target' voran (das ist ein Befehl in der
Ramdisk, der im Prinzip einfach ein 'chroot /target' macht, bevor der Befehl
ausgeführt wird).

Sagen wir mal, du hast das Installer-Medium so angepasst, dass du deine .ovpn-
Datei und eine systemd-Service-Datei, um die openvpn-Verbindung nach dem
Systemstart automatisch zu starten, auf die Installer-CD gepackt hast (mit
simple-cdd ist das ganz einfach). Dann könnte das ganze mit late_command so
aussehen:

d-i pkgsel/include string openvpn [..]
[..]
d-i tasksel/first multiselect ssh-server [..]
tasksel tasksel/first multiselect ssh-server [..]
[..]
d-i preseed/late_command string \
        cp /path/to/luca.ovpn /target/root/ ; \
        cp /path/to/lucavpn.service /target/lib/systemd/system/ ;
        in-target systemctl enable lucavpn.service ; \
        in-target adduser <ssh_user> ssh

Wenn der Installer fertig ist und das fertige System neu gestartet wird, dann
sollte automatisch, nachdem das Netzwerk online ist, eine OpenVPN-Verbindung
gestartet werden, wenn die installierte Service-Datei in etwa so aussieht:

[Unit]
Requires=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/sbin/openvpn --config /root/luca.ovpn
[Install]
WantedBy=multi-user.target

Mit dem eingerichteten <ssh_user> kannst du dich dann einloggen und die
Konfiguration vervollständigen.

Antwort per Email an