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.