initrd kann squashfs nicht mounten
initrd kann squashfs nicht mounten
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.
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.
Re: initrd kann squashfs nicht mounten
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
haben eben herausgefunden das ich auch kein cramfs mounten kann.
Es kommt die gleiche fehlermeldung.
Muss ich eventuel bei udev was machen ?
mfg
targ
Re: initrd kann squashfs nicht mounten
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.
(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")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: initrd kann squashfs nicht mounten
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.
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.
Re: initrd kann squashfs nicht mounten
Warum nicht einfach
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
mount -o loop -t ext3 /123/test /root
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")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: initrd kann squashfs nicht mounten
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.
- 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.
Re: initrd kann squashfs nicht mounten
War /test da angelegt?mount -o loop -t ext3 /123/test /test führt zu:
War da das Dateisystem des Images angegeben?mount: mounting /dev/loop0 on /root failed: invalid argument
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.
Du meinst hier /dev/loop0?losetup -f zeigt /dev/losetup1
Wieder, es fehlt die Angabe des Dateisystems.dann: mount /dev/loop0 /root
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")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: initrd kann squashfs nicht mounten
rendegast hat geschrieben:War /test da angelegt?mount -o loop -t ext3 /123/test /test führt zu:
Ja
War da das Dateisystem des Images angegeben?mount: mounting /dev/loop0 on /root failed: invalid argument
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
Du meinst hier /dev/loop0?losetup -f zeigt /dev/losetup1
Nein. Ist ja das Busybox mount. Das zeigt mit -f das nächste freie an. also im meinen Fall /dev/loop1. soory nicht losetup1.
Wieder, es fehlt die Angabe des Dateisystems.dann: mount /dev/loop0 /root
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
Re: initrd kann squashfs nicht mounten
Ich habe das zwar mit einem 2.6.35.4 unter squeeze probiert,Neuste busybox mal probieren ?
aber es geht um loop und ext3, kann mir von da aus kein Änderung des Verhaltens denken.
Die Meldung kommt, wenn mit /dev/loop0 oder /root etwas nicht stimmt.Code: Alles auswählen
mount: mounting /dev/loop0 on /root failed: invalid argument
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?)
Ich auch nichtIch hab keine Idee mehr. .....
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: initrd kann squashfs nicht mounten
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.
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.
Re: initrd kann squashfs nicht mounten
Nein, in der initrd bist Du chef.Kann das noch was mit Rechten sein ?
?Es geht ja wenn ich zum Bleistift /dev/sda3 auf /root mit -o loop mounte.
-----------------------------------------------------------------
EDIT
Jahast du das auch in der initramfs probiert ? also boot mit break=premount ?
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")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: initrd kann squashfs nicht mounten
ich meinte wenn ich ein sda3 auf root mounte.rendegast hat geschrieben:Nein, in der initrd bist Du chef.Kann das noch was mit Rechten sein ?
?Es geht ja wenn ich zum Bleistift /dev/sda3 auf /root mit -o loop 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 ?
Re: initrd kann squashfs nicht mounten
So, jetzt der Hammer.
Aus puren Frust habe ich mir ein aktuelles testing image geholt.
Ausprobiert und festhalten. Geht natürlich !!!
Aus puren Frust habe ich mir ein aktuelles testing image geholt.
Ausprobiert und festhalten. Geht natürlich !!!