initrd kann squashfs nicht mounten

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
targit
Beiträge: 8
Registriert: 11.09.2010 13:17:45

initrd kann squashfs nicht mounten

Beitrag von targit » 11.09.2010 13:33:55

Hallo Zusammen,

ich stehe vor einen grossen Problem hier !
Was habe ich gemacht?
- Debian Grundsystem installiert (von 506-standard-cd)
- squashfs-modules und squashfs-tools installiert
- initrd.img mit update-initramfs neu gemacht.
- rootfs.squashfs erstellt. kann auch von einer live-cd gemountet werden.

Dann wollte ich das rootfs.squashfs in meine distro einbauen. Dabei stellte ich fest das meine initrd kein loopback-device hat und auch kein code zum mounten von squashfs hat.
Also habe ich im /usr/share/initramfs-tools/scripts/local folgendes eingebaut:

[ -e /dev/loop0] ||mknod -m660 /dev/loop0 b 7 0
mkdir /rootfs
mount ${ROOT} /rootfs
mount ${roflag} -t squashfs -o loop /root/rootfs ${rootmnt}

Alles schön geupdatet. also update-initramfs -u
Nun beim Booten:

Loop-Device wird im initrd erstellt. Es wird auch /rootfs gemountet. Dort liegt das rootfs-File.
Aber beim mounten vom Squashfs kommt immer:

mounting /dev/loop0 on /root failed: no such device.

Komischerweise kann ich andere Verzeichnisse auf das Loop0 mounten. nur mit fs die auf squashfs basieren kommt er nicht klar.
Hat da einer ne idee was das sein könnte ?

Noch ne Info: squashfs hab ich mit apt-get install squashfs-modules installiert. Am Kernel habe ich nichts gemacht. Also nicht den beschriebenen Patch im Squashfs-HOWTO eingespeilt. Muss ich das ?

DANKE für etwaige Hilfe.

targit
Beiträge: 8
Registriert: 11.09.2010 13:17:45

Re: initrd kann squashfs nicht mounten

Beitrag von targit » 11.09.2010 19:29:07

Hallo,

haben eben herausgefunden das ich auch kein cramfs mounten kann.
Es kommt die gleiche fehlermeldung.

Muss ich eventuel bei udev was machen ?

mfg
targ

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: initrd kann squashfs nicht mounten

Beitrag von rendegast » 11.09.2010 20:58:30

Da ein loop-device erstellt wird, wurde die initrd wohl mit MODULES=most erzeugt
(zBsp. in /etc/initramfs-tools/conf.d/whatmodules),
denn dann ist auch loop.ko darin.

squashfs und cramfs sind noch in /etc/initramfs-tools/modules einzutragen,
da sie bei MODULES=most nicht eingeschlossen sind.
Und linux-image-2.6.26-2 hat noch kein squashfs, Du brauchst den backports-kernel.


Tip:
Verlinke initrd nach ->initrd.cpio oder ->initrd.cpio.gz,
dann ist sie mit einem Dateimanager einfach zu durchsuchen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

targit
Beiträge: 8
Registriert: 11.09.2010 13:17:45

Re: initrd kann squashfs nicht mounten

Beitrag von targit » 12.09.2010 16:08:45

danke für die tipps.
Aber den weg mit squashfs und/oder crams habe ich verworfen.

Mein neuer Weg ist über ein VFS mit loopback device. Geht aber auch nicht. Ich verstehe das nicht !!!
Was habe ich gemacht:

Im laufenden Linux:
- VFS erstellt mit dd if=/dev/zero of=test bs=1M count=100
- loop0 erstellt mir losetup /dev/loop0 test (test liegt auf /dev/sda3)
- fs erstellen mkfs.ext3 /dev/loop0
Kann dann auch alles brav gemountet werden und beschrieben werden.

so nun im initramfs (in der Eingabeaufforderung).
ls /dev/lo* liefert nichts. Also loop erstellen mit:
mknod /dev/loop0 b 7 0
dann mit busybox
busybox losetup /dev/loop0 /123/test (123 habe ich vorher über mount /dev/sda3 /123 gemounet)
bis hierhin geht alles ohne porbleme.
Jetzt will ich /dev/loop0 auf /root mounten:
mount /dev/loop0 /root
oder
mount -o loop -t ext3 /dev/loop /root

ich bekomme aber immer die fehlermeldung "invalid argument"

Was mache ich falsch ? ich bin völlig am verzweifeln.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: initrd kann squashfs nicht mounten

Beitrag von rendegast » 12.09.2010 16:41:41

Warum nicht einfach

Code: Alles auswählen

mount -o loop -t ext3 /123/test /root
Ist loop.ko auch in der initrd, und wird es geladen?
Eventuell einfach "loop" in /etc/initramfs-tools/modules einfügen, dann initrd neu erstellen.

Code: Alles auswählen

# modprobe -v loop
insmod /lib/modules/2.6.35.4/kernel/drivers/block/loop.ko max_loop=32 max_loop=32
# losetup -f  /tmp/NULL
# losetup -a
/dev/loop0: [0013]:2062312 (/tmp/NULL)
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

targit
Beiträge: 8
Registriert: 11.09.2010 13:17:45

Re: initrd kann squashfs nicht mounten

Beitrag von targit » 12.09.2010 18:55:28

Also, ich habe mal ausprobiert:
- loop.ko vorhanden.
- In modules loop eingetragen. update-initramfs -u
- reboot mit break=mount in bootloader
so:
- ls /dev/lo* zeigt dann 8 loop-device an !!! Schon mal nen Unterschied zu vorher ! sehr gut.
- mount -o loop -t ext3 /123/test /test führt zu:
mount: mounting /dev/loop0 on /root failed: invalid argument

Was ist bloss falsch `?

Dann noch mal testweise:
- losetup /dev/loop0 /123/test geht durch
- losetup -f zeigt /dev/losetup1 Hat also geklappt. ER zeigt loop1 als nächstes freies an.
- dann: mount /dev/loop0 /root ->
mount: mounting /dev/loop0 on /root failed: Invalid argument

Wenn ich was "normales als Loop-Device mounte" gehts natürlich.
Also : mount -o loop /dev/sda3 /root
Geht durch.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: initrd kann squashfs nicht mounten

Beitrag von rendegast » 13.09.2010 01:58:40

mount -o loop -t ext3 /123/test /test führt zu:
War /test da angelegt?
mount: mounting /dev/loop0 on /root failed: invalid argument
War da das Dateisystem des Images angegeben?
Ist in der initrd nötig, das abgespeckte mount hat scheinbar keine Autoerkennung,
Oder es gibt (noch) kein /proc/filesystems, an dem es sich entlanghangelt?
Auch '-t auto' funktionierte da nicht.
losetup -f zeigt /dev/losetup1
Du meinst hier /dev/loop0?
dann: mount /dev/loop0 /root
Wieder, es fehlt die Angabe des Dateisystems.


Nach einem Mounten der Partition (/mnt muß auch erst angelegt werden) und 'modprobe loop' klappt bei mir:

Code: Alles auswählen

mount -o loop /mnt/ext3.img /root -text3
oder
mount -o loop /mnt/ext4.img /root -text4
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

targit
Beiträge: 8
Registriert: 11.09.2010 13:17:45

Re: initrd kann squashfs nicht mounten

Beitrag von targit » 13.09.2010 19:05:22

rendegast hat geschrieben:
mount -o loop -t ext3 /123/test /test führt zu:
War /test da angelegt?

Ja
mount: mounting /dev/loop0 on /root failed: invalid argument
War da das Dateisystem des Images angegeben?
Ist in der initrd nötig, das abgespeckte mount hat scheinbar keine Autoerkennung,
Oder es gibt (noch) kein /proc/filesystems, an dem es sich entlanghangelt?
Auch '-t auto' funktionierte da nicht.

Ja. cat /proc/filesystems enthält auch ext3

losetup -f zeigt /dev/losetup1
Du meinst hier /dev/loop0?

Nein. Ist ja das Busybox mount. Das zeigt mit -f das nächste freie an. also im meinen Fall /dev/loop1. soory nicht losetup1.
dann: mount /dev/loop0 /root
Wieder, es fehlt die Angabe des Dateisystems.

Auch mit -t ext3 probiert geht auch nicht.
Ich hab keine Idee mehr. .....
Neuste busybox mal probieren ?


Nach einem Mounten der Partition (/mnt muß auch erst angelegt werden) und 'modprobe loop' klappt bei mir:

Code: Alles auswählen

mount -o loop /mnt/ext3.img /root -text3
oder
mount -o loop /mnt/ext4.img /root -text4

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: initrd kann squashfs nicht mounten

Beitrag von rendegast » 13.09.2010 19:33:53

Neuste busybox mal probieren ?
Ich habe das zwar mit einem 2.6.35.4 unter squeeze probiert,
aber es geht um loop und ext3, kann mir von da aus kein Änderung des Verhaltens denken.

Code: Alles auswählen

mount: mounting /dev/loop0 on /root failed: invalid argument
Die Meldung kommt, wenn mit /dev/loop0 oder /root etwas nicht stimmt.

Code: Alles auswählen

losetup -a

file -s /dev/loop0
(in der initrd eigentlich nicht vorhanden, aber was ist mit der image-Datei?
 Vielleicht doch kein ext3-fs?)
mensch kann zwar mit losetup verbinden, 'mount -oloop' sollte das aber automatisch machen.

Ich hab keine Idee mehr. .....
Ich auch nicht :(
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

targit
Beiträge: 8
Registriert: 11.09.2010 13:17:45

Re: initrd kann squashfs nicht mounten

Beitrag von targit » 13.09.2010 19:55:13

Kann das noch was mit Rechten sein ?

hast du das auch in der initramfs probiert ? also boot mit break=premount ?

Es geht ja wenn ich zum Bleistift /dev/sda3 auf /root mit -o loop mounte.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: initrd kann squashfs nicht mounten

Beitrag von rendegast » 13.09.2010 20:28:07

Kann das noch was mit Rechten sein ?
Nein, in der initrd bist Du chef.

Es geht ja wenn ich zum Bleistift /dev/sda3 auf /root mit -o loop mounte.
?







-----------------------------------------------------------------
EDIT
hast du das auch in der initramfs probiert ? also boot mit break=premount ?
Ja
Zuletzt geändert von rendegast am 15.09.2010 02:38:40, insgesamt 1-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

targit
Beiträge: 8
Registriert: 11.09.2010 13:17:45

Re: initrd kann squashfs nicht mounten

Beitrag von targit » 13.09.2010 20:34:11

rendegast hat geschrieben:
Kann das noch was mit Rechten sein ?
Nein, in der initrd bist Du chef.

Es geht ja wenn ich zum Bleistift /dev/sda3 auf /root mit -o loop mounte.
?
ich meinte wenn ich ein sda3 auf root mounte.
Blos mein single file mit ext3-fs geht nicht.

Noch was. Nach dem fehlerhaften Mount liefert echo $? den Wert 255. Gibts da irgendwo ne Doku mit den Errorcodes ?

targit
Beiträge: 8
Registriert: 11.09.2010 13:17:45

Re: initrd kann squashfs nicht mounten

Beitrag von targit » 13.09.2010 22:32:28

So, jetzt der Hammer.

Aus puren Frust habe ich mir ein aktuelles testing image geholt.
Ausprobiert und festhalten. Geht natürlich !!!

Antworten