Eigene Initrd: Schreiben auf ro-System

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
Tintom
Moderator
Beiträge: 3070
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Eigene Initrd: Schreiben auf ro-System

Beitrag von Tintom » 29.10.2008 18:48:19

Hallo,
ich bastel gerade in einer virtuellen Maschine herum und komm nicht weiter. Folgendes Szenario:
Rechner bootet von CD auf der nur Kernel und Initrd sind. Root-LW soll die virtuelle Festplatte sein, die aber nur readonly gemountet ist. Auf einem Ordner der Festplatte soll ein tmpfs mit Schreibrechten gemountet werden, dann mit aufs (http://de.wikipedia.org/wiki/Aufs) das Root-FS und das schreibbare FS zusammengebracht werden. Danach soll ganz normal weiter gebootet werden mit aufs als Root-FS.
So schön simpel die Theorie, aber ich komm in der Praxis nicht weiter, das sind die letzten Ausgaben:

Code: Alles auswählen

[...] tmpfs on /write mounten
mount: mounting tmpfs on /write failed: No such file or directory
mount ro
Usage: /bin/mount [-r] [-w] [-o options] [-t type] [-f] [-i] [-n] device directory
[...]
create directory /read
mount: mounting /write/read on /root/read failed: No such file or directory
[...]
run-init: nuking initramfs contents: Directory not empty
Kernel panic - not syncing: Attempted to kill init!
Das eigentliche Script liegt in der initrd im Ordner local-premount und sieht so aus:

Code: Alles auswählen

 #!/bin/sh
              PREREQ=""
              prereqs()
              {
                   echo "$PREREQ"
              }

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

 #             . /usr/share/initramfs-tools/hook-functions
              # Begin real processing below this line

export PATH=/bin:/sbin
CMDLINE=`cat /proc/cmdline`
echo "initrd wird gestartet!"

# / mounten
echo "AuFS-Modul einfügen"
/sbin/modprobe aufs
echo "tmpfs on /write mounten"
# Needs an existing directory "/write"
mount -t tmpfs -o size=32m tmpfs /write #> /dev/null 2>&1
union=/write/union
changes=/write/changes
read=/write/read
/bin/mkdir -p $changes $read $union
echo "mount ro"
/bin/mount -o ro ${ROOT} /write/read # -t ${FSTYPE}
echo "mount aufs darüber"
/bin/mount -t aufs -o dirs=$changes=rw:$read=ro none /write/union #${rootmnt} #$union #> /dev/null 2>&1
echo "create directory ${rootfs}/read"
mount /write/read -o move ${rootmnt}/read
Ich habe an einigen Stellen echos eingebaut um zu sehen, bis wohin das Skript läuft bzw. wo der Fehler ist. Aber ich stehe irgendwie auf dem Schlauch.

Kann mal bitte jemand drübergucken und mir mitteilen, an was es haken könnte ?
Zusammengetragen hab ich das Skript übrigens aus Schnipseln hier aus dem Forum und Wiki.

Danke :D

Gruß

Tintom

Benutzeravatar
goeb
Beiträge: 348
Registriert: 26.08.2006 18:12:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Eigene Initrd: Schreiben auf ro-System

Beitrag von goeb » 29.10.2008 21:58:22

Tintom hat geschrieben:

Code: Alles auswählen

[...] tmpfs on /write mounten
mount: mounting tmpfs on /write failed: No such file or directory
Existiert /write in der initrd überhaupt? Probier mal ein mkdir -p /write vor dem mount-Kommando (also da, wo # Needs an existing directory "/write" steht :) )

MfG, gœb

Benutzeravatar
Tintom
Moderator
Beiträge: 3070
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Eigene Initrd: Schreiben auf ro-System

Beitrag von Tintom » 02.11.2008 16:34:35


Antworten