staging.inyokaproject.org

Blockierendes Script beim Sysstart mit Eingabemöglichkeit

Status: Gelöst | Ubuntu-Version: Ubuntu MATE 21.04 (Hirsute Hippo)
Antworten |

MarccoOccram

Anmeldungsdatum:
15. Januar 2021

Beiträge: Zähle...

Mein Script soll automatisch beim Systemstart (möglichst früh) starten

um dann ein verschlüsseltes img zu mounten

in diesem wiederum weitere scripts liegen, die ausgeführt werden.

damit das Passwort für das verschlüsselte img eingegeben werden kann, bedarf es natürlich irgend ein gui, blockierend.

Ähnlich, wie wenn das komplette System verschlüsselt ist. Da muss ja auch ein PWD vor der GUI eingegeben werden ...

Wo trage ich mein Script ein, damit es (blockierend) startet und eben eine PWD-Eingabe ermöglicht?

Danke.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Ich denke, Du solltest das trennen:

  • Mounten

  • Skripte ausführen

Wenn das ein LUKS-Container ist, dann sollte es reichen, den in der /etc/fstab einzutragen, damit er gemountet wird. Für die Skripte würde ich eine Systemd-Unit aufsetzen.

MarccoOccram

(Themenstarter)

Anmeldungsdatum:
15. Januar 2021

Beiträge: Zähle...

Du hast recht, danke, der Gedanke ist schlau und möglich.

Wirft allerdings dann eine neue Frage auf (??neuer Beitrag??)

Nämlich, wie ich mein Script gesichert NACH dem (erfolgreichen?) mounten dieses img blockierend starten kann?

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

also grundsätzlich ist eine Interaktion mit einem Nutzer vor dem Bildschirm erst möglich, wenn der Nutzer sich eingeloggt hat. Alles, was bis zu Login läuft, wird bei den allermeisten Linux-Distro inkl. Ubuntu und Derivate im Hintergrund parallel (=nicht blockierend) von systemd ausgeführt.

Was aber theoretisch gehen sollte ist, dass du am Ende des Systemstarts via systemd einen Terminal inkl. Autologin startest und dann darin dann dein Skript ausführen lässt. Praktisch kann ich dir da aber auch keine Tipps geben, habe ich so noch nicht gemacht.

Gruß, noisefloor

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

noisefloor schrieb:

also grundsätzlich ist eine Interaktion mit einem Nutzer vor dem Bildschirm erst möglich, wenn der Nutzer sich eingeloggt hat. Alles, was bis zu Login läuft, wird bei den allermeisten Linux-Distro inkl. Ubuntu und Derivate im Hintergrund parallel (=nicht blockierend) von systemd ausgeführt.

Es geht hier ja darum ein Dateisystem in einem LUKS-Container zu mounten. Für das Root-Dateisystem wirft der Greeter ja ein Eingabefeld aus, also könnte das durchaus für andere Dateisysteme funktionieren, die gemountet werden. Ich habe den Teil aber noch nicht ausprobiert.

MarccoOccram schrieb:

Nämlich, wie ich mein Script gesichert NACH dem (erfolgreichen?) mounten dieses img blockierend starten kann?

Das machst Du über Systemd. Du schaust mal im laufenden System mittels systemctl list-units \*.mount nach, welche Mount-Unit das Dateisystem im LUKS-Container hat. Dann schreibst Du Dir eine Unit, die neben anderem z.B. dieses enthält:

[Unit]
Description=Irgendein sinnvoller Text hier

[Install]
Requires=dein.mount
After=dein.mount
WantedBy=multi-user.target

[Service]
Type=simple # oder oneshot, siehe "man systemd.service"
ExecStart=/pfad
ExecStop=/pfad

Damit wird dann Deine Unit, die das Script startet, automatisch gestartet. Durch das "WantedBy" stellst Du sicher, dass das System trotzdem ordentlich hochkommt, selbst wenn Dein Service scheitert.

MarccoOccram

(Themenstarter)

Anmeldungsdatum:
15. Januar 2021

Beiträge: 8

Danke, danke! Ich brauche jetzt ein paar Tage und melde mich dann wieder ...

MarccoOccram

(Themenstarter)

Anmeldungsdatum:
15. Januar 2021

Beiträge: 8

Wie versprochen melde ich mich wieder. Dank rklm Hinweis konnte ich meine ursprüngliche Intention lösen. Danke. Dein input hat mir geholfen! Meine Lösung habe ich hier dokumentiert: https://forum.ubuntuusers.de/topic/ubuntu-mate-20-04-auf-raspberry-pi-4b-mit-vers/#post-9288912

rklm schrieb:

Ich denke, Du solltest das trennen:

  • Mounten

  • Skripte ausführen

Wenn das ein LUKS-Container ist, dann sollte es reichen, den in der /etc/fstab einzutragen, damit er gemountet wird. Für die Skripte würde ich eine Systemd-Unit aufsetzen.

Antworten |