Wenn ich Linux von der SD-Karte aus starte und versuche, die SD-Karte zu mounten - kein Problem, funktioniert das einwandfrei. Aber wenn ich Linux aus dem Flash-Speicher laufen lasse, kann ich meine SD-Karte nicht mounten:
# mount /dev/mmcblk0p1 /mnt/
mount: mounting /dev/mmcblk0p1 on /mnt/ failed: Invalid argument
Was könnte der Hauptgrund für diesen Fehler sein?
Zusätzliche Information
root@Xilinx-ZC702-14_7:/# mount -t /dev/mmcblk0p1 /mnt
mount: can't find /mnt in /etc/fstab
root@Xilinx-ZC702-14_7:/var/volatile/log# ls
wtmp
root@Xilinx-ZC702-14_7:/var/volatile/log# dmesg
dmesg: klogctl: Function not implemented
-t ...
), damit derfstab
Eintrag nicht verwendet wird./var/log/messages
? Wie wäre esdmesg | tail
?mount -t /dev/mmcblk0p1 /mnt
ist kein vollständiger Befehl. Wenn Sie den Dateisystemtyp kennen, sollten Sie ihn nach dem Argument -t (z. B.mount -t vfat /dev/mmcblk0p1 /mnt
) angeben oder -t vollständig weglassen.Antworten:
Wie von goldilocks kommentiert , wird
mount -t
erwartet , dass der Dateisystemtyp nachkommt-t
, sodass er nicht funktioniert. Andernfalls müssen Sie lediglich den Dateisystemtyp angeben. Wenn Sie den Dateisystemtyp nicht kennen, finden Sie in dieser Antwort eine Liste von Methoden, die Sie herausfinden können . Wenn derfile
Befehl verfügbar ist, ist dies wahrscheinlich die beste Methode. Als Wurzel würden Sie tun:Beachten Sie auch, dass
/proc/filesystems
der Treiber nicht in den Kernel kompiliert wird und daher als externes Modul verfügbar sein muss , wenn der Dateisystemtyp nicht in aufgeführt ist. Sobald Sie den richtigen Typ haben, können Sie versuchen:Stellen Sie abschließend auch sicher, dass das
/mnt
Verzeichnis vorhanden ist! Wenn nicht, erstellen Sie es mitmkdir /mnt
.quelle
Grundlegende Gründe: (aktualisiert)
1) Ihr System initialisiert die SD nicht (richtig?) Oder erkennt sie beim Booten von Flash nicht. Gibt es das
/dev/mmcblk0
Gerät nach dem Booten von Flash? Wasfdisk -l /dev/mmcblk0
sagt das aus?2) Unter / dev / mmcblk0p1 befindet sich kein Dateisystem. Sie müssen zuerst ein Dateisystem erstellen (
mkfs ...
). Überprüfen Sie mitfile -s /dev/mmcblk0p1
3) Das Dateisystem unter / dev / mmcblk0p1 ist beschädigt. Sie müssen es überprüfen / reparieren, versuchen
fsck /dev/mmcblk0p1
oder ein neues erstellen4) Ihr Kernel (wenn das Booten von Flash) nicht die benötigten Dateisystemtreiber haben, prüfen
cat /proc/filesystems
undls "/lib/modules/$(uname -r)/kernel/fs/"
sehen , ob die Liste der benötigten Dateisystemtyp enthält. In der Regel unterstützen ältere Kernel ext4 nicht, während Ihr Betriebssystem möglicherweise bereits über Tools zum Erstellen eines ext4-Dateisystems verfügt.5) Hardwarefehler - könnte die SD-Karte, der Controller, die Verkabelung sein ... aber wenn es beim Booten von der SD-Karte funktioniert, ist dies höchstwahrscheinlich nicht der Fall.
quelle
/proc/filesystems
nur diejenigen sind, die in den Kernel kompiliert wurden. Zum Beispiel enthält mein/proc/filesystems
nichtvfat
, aber ich kann trotzdem einvfat
System mounten , da es als Modul verfügbar ist.util-linux
Mount versucht, das Dateisystem zu identifizieren, indem erblkid
dann alles in/etc/filesystems
oder versucht/proc/filesystem
. Ich denke, das ist dasbusybox
Reittier, also macht es wahrscheinlich weniger. Beides würde wahrscheinlich ein spezielles Flash-Dateisystem vermissen.Überprüfen Sie zunächst die im Kernel unterstützten Dateisysteme.
Ich gehe davon aus, dass Sie versuchen, dieselbe SD-Karte zu mounten, auf der Sie Linux ausführen. Wenn ja, gehe ich davon aus, dass es unter Linux native Dateisystemunterstützung bietet. Um sicherzustellen, dass Sie den SD-Kartentreiber geladen haben, können Sie Folgendes versuchen:
Versuchen Sie nun, den Lesezugriff auf Partitionen zu lesen:
Alternative:
fdisk
Hier erfahren Sie auch die Partitionstypen.Dies stellt sicher, dass der SD-Kartentreiber auf das Blockgerät zugreifen kann. Jetzt können Sie
parted
die Dateisysteme drucken:Wenn Sie den FS kennen, montieren Sie ihn mit
quelle
parted
versucht den Dateisystemtyp zu bestimmen. Kommentar entfernt.Ich scheine mich zu erinnern, dass dies der Fehler ist, den Sie erhalten, wenn der Partitionstyp, den Sie bereitstellen möchten, nicht unterstützt wird.
quelle
blkid
, wenn nicht, und eslsblk
ist wahrscheinlich eine konventionellere Linux-Umgebung, die vorzuziehen ist.Möglicherweise müssen Sie (Teilbefehl) aufgrund der Partitionsgröße verwenden:
Um sicherzustellen, dass die Partition ordnungsgemäß erstellt wurde, verwenden Sie
/sbin/parted /dev/mmcblk0p1 print”
Dann müssen Sie die erstellte Partition formatieren
quelle
parted
on/dev/mmcblk0p1
wird eine Partitionstabelle auf einer Partition eines Geräts erstellt, das bereits partitioniert wurde. Wenn Sie diese Anweisungen befolgen, werden auch alle Daten auf dem Gerät gelöscht .