Debian 12 Initramfs-tools

Registriert
Juli 2019
Beiträge
183
Hi,

ich versuche zu erlernen, wie ich im Initramfs eine statische IP vergeben, mit SSHFS einen remote Ordner
mounten und anschließend den Inhalt dieses Ordners in das Root Verzeichnis kopieren kann. Automatisch mit Skripten.

Da alle Versuche bisher gescheitert sind, habe ich Tests versucht, die ebenfalls gescheitert sind. 😂

Zum Beispiel:
Bash:
nano /etc/initramfs-tools/hooks/mount-usb.hook

Bash:
#!/bin/sh

PREREQ=""
prereqs()
{
    echo "$PREREQ"
}

case "$1" in
    prereqs)
        prereqs
        exit 0
        ;;
esac

. /usr/share/initramfs-tools/hook-functions

copy_exec /bin/mount /bin
copy_exec /bin/umount /bin
copy_exec /bin/echo /bin
copy_exec /bin/sh /bin
copy_exec /sbin/blkid /sbin
copy_exec /sbin/findfs /sbin

exit 0

chmod +x ...

Bash:
nano /etc/initramfs-tools/scripts/init-bottom/mount-usb.sh

Bash:
#!/bin/sh

PREREQ=""
prereqs()
{
    echo "$PREREQ"
}

case "$1" in
    prereqs)
        prereqs
        exit 0
        ;;
esac

# USB-Stick mounten und Testdatei erstellen
UUID="1234-5678"
mkdir -p /mnt/usb
mount -o rw $(findfs UUID=$UUID) /mnt/usb
echo "Testdatei" > /mnt/usb/testdatei.txt
umount /mnt/usb

exit 0

wieder chmod +x ....
und update-initramfs -u

Ich bin der Meinung, dass es funktionieren müsste.
Immerhin konnte ich mit dmesg nachvollziehen, dass das Script beim Bootvorgang gestartet wird, mehr passiert nicht.

Woran liegt das?
 
An der Stelle hab ich noch nie herumgebastelt, aber wenn ich was gelernt habe mit solchen Skripten, dann auf PATH aufpassen bzw. executables via absoluter Pfade aufrufen. Ob das in dem Fall das Problem ist... keine Ahnung ^^
 
Ist dir bekannt, dass du hier nur eine handvoll Befehle ausführen kannst? Man ist extrem eingeschränkt, du kannst ein paar Befehle nachinstallieren, kann aber nicht sagen ob das bei dir reichen wird.
 
KillerCow schrieb:
An der Stelle hab ich noch nie herumgebastelt, aber wenn ich was gelernt habe mit solchen Skripten, dann auf PATH aufpassen bzw. executables via absoluter Pfade aufrufen. Ob das in dem Fall das Problem ist... keine Ahnung ^^
ne, leider nicht.

aluis schrieb:
Ist dir bekannt, dass du hier nur eine handvoll Befehle ausführen kannst? Man ist extrem eingeschränkt, du kannst ein paar Befehle nachinstallieren, kann aber nicht sagen ob das bei dir reichen wird.
nö, ist mir nicht bekannt
Ergänzung ()

@clmns danke, guter Vorschlag. Keine Ahnung, ich habe mich noch nicht mit Ansible auseinandergesetzt.
Der Punkt ist, ich möchte zukünftig Luks und ZFS Verschlüsselte Datenträger mit einem Keyfile automatisch entschlüsseln der jedes mal temporär beim booten in ein Verzeichnis geladen werden soll.

Das klappt mit Systemd Service Units bedingt, weil ZFS mount und Import viel früher als Netzwerk initialisiert wird.

Ob Ansible mein Problem lösen kann, kp.
 
Anonymous User schrieb:
weil ZFS mount und Import viel früher als Netzwerk initialisiert wird.
Glaube das hatte ich mal mit nem cron mit @ReBoot oder sowas gemacht, als das nicht zuverlässig funktioniert hatte bei mir...
 
Im initramfs, hast du nur busybox, sonst nichts. Im Gentoo Wiki, gibts den Artikel Custom Initramfs, der das Funktions Prinzip ein wenig erklärt. Da steht auch wie man von Hand Netzwerk einrichten könnte wenn man wollte

Dann ist Gentoo nicht Arch ist nicht Ubuntu ist nicht Redhat ... fast jede hat ein n andere Lösung fürs Initramfs mit anderen Umständen und Hooks.

Du kannst also auf Github oder falls es ubuntu ist auf launchpad oder sonst wo suchen ob schon jemand so was als Hook speziell für deine Distro implementiert hat und dann das übernehmen oder abkupfern.

SSH, SSHFS (FUSE) im Initramfs ist schon kompliziert meist wird nur Dropbear (dbclient) als OpenSSH Ersatz verwendet. Zum Kopieren von Dateien brauchst du SSHFS zu dem gar nicht da könntest du auch "einfach" tar über SSH ausführen oder sowas.

Zum USB Stick. Das Klappt nur wenn im Initramfs, USB Treiber geladen sind, zudem Treiber fürs Dateisystem auf dem Stick (falls du hier ntfs-3g erwartest hast du schlechte karten) Zudem brauchen USB Geräte etwas bis sie erkannt sind man muss also ggf. "warten"

shell script allgemein, das ist kein bash man kann also bash spezifische sachen nicht nutzen

am besten man lässt sich mal auf die initramfs shell droppen. und probiert es "zu fuss" aus dann weiss man, wie man es im script machen muss. oder was noch fehlt damit es überhaupt möglich ist
 
Zurück
Oben