échec du montage de mmcblk0p1 avec un argument non valide

9

Lorsque j'exécute linux à partir d'une carte SD et que j'essaie de monter une carte SD - pas de problème, cela fonctionne bien. Mais lorsque j'utilise Linux à partir de la mémoire flash, je ne parviens pas à monter ma carte SD:

# mount /dev/mmcblk0p1 /mnt/ 
mount: mounting /dev/mmcblk0p1 on /mnt/ failed: Invalid argument

Quelle pourrait être la raison principale de cette erreur?

Information additionnelle

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
gpuguy
la source
1
Veuillez essayer la commande complète ( -t ...) pour que l' fstabentrée ne soit pas utilisée.
Hauke ​​Laging
1
Est-ce que quelque chose d'utile est écrit /var/log/messages? Et alors dmesg | tail?
Flup
@Flup j'ai mis à jour ma question ci
gpuguy
4
mount -t /dev/mmcblk0p1 /mntn'est pas une commande complète. Si vous connaissez le type de système de fichiers, vous devez le spécifier après l'argument -t (par exemple mount -t vfat /dev/mmcblk0p1 /mnt) ou omettre complètement -t.
James Hebden
omettre n'a pas fonctionné comme vous pouvez le voir ci
gpuguy

Réponses:

10

Comme l'a commenté goldilocks , mount -tattend le type de système de fichiers après -t, donc ça ne marchera pas. Sinon, il semble que vous ayez juste besoin de spécifier le type de système de fichiers. Si vous ne connaissez pas le type de système de fichiers, il existe une liste de méthodes à découvrir dans cette réponse . Si la filecommande est disponible, c'est probablement la meilleure méthode. En tant que root, vous feriez:

file -s /dev/mmcblk0p1

Notez également que si le type de système de fichiers n'est pas répertorié dans /proc/filesystems, le pilote n'est pas compilé dans le noyau et doit donc être disponible en tant que module externe. Une fois que vous avez le bon type, vous pouvez essayer:

mount -t correct_type /dev/mmcblk0p1 /mnt

Enfin, assurez-vous également que le /mntrépertoire existe! Sinon, créez-le avec mkdir /mnt.

Graeme
la source
supports nécessite sudo?
Ferroao
@Ferroao, oui le montage nécessite des privilèges root.
Graeme
si je dois modifier, créer des fichiers dans ce sd ai-je besoin de sudo?
Ferroao
@Ferroao, cela dépend du système de fichiers que vous essayez de monter. Pour les systèmes de fichiers Linux, les autorisations / propriétaire / groupe sur chaque fichier / répertoire déterminent qui peut lire / écrire.
Graeme
3

Raisons fondamentales: (mise à jour)

1) Votre système n'initialise pas (correctement?) Ou ne reconnaît pas la SD lors du démarrage à partir du flash. Existe-t-il l' /dev/mmcblk0appareil après le démarrage à partir du flash? Que fdisk -l /dev/mmcblk0dit-on?

2) Il n'y a pas de système de fichiers sur / dev / mmcblk0p1, vous devez d'abord créer un système de fichiers ( mkfs ...). Vérifier avecfile -s /dev/mmcblk0p1

3) Le système de fichiers sur / dev / mmcblk0p1 est corrompu, vous devez le vérifier / le réparer, essayer fsck /dev/mmcblk0p1ou en créer un nouveau

4) Votre noyau (lors du démarrage du flash) n'a pas le pilote de système de fichiers nécessaire, vérifier cat /proc/filesystemset ls "/lib/modules/$(uname -r)/kernel/fs/"voir si cette liste contient le type de système de fichiers nécessaire. En règle générale, les noyaux plus anciens ne prennent pas en charge ext4, tandis que votre système d'exploitation peut déjà avoir des outils pour créer un système de fichiers ext4.

5) Défaut matériel - pourrait être la carte SD, le contrôleur, le câblage ... mais si cela fonctionne lors du démarrage à partir de la carte SD, ce n'est probablement pas le cas.

Zrin
la source
Notez que les systèmes de fichiers répertoriés dans /proc/filesystemssont uniquement ceux qui sont compilés dans le noyau. Par exemple, my /proc/filesystemsne contient pas vfat, mais je peux toujours monter un vfatsystème car il est disponible en tant que module.
Graeme
Semble bon, bien que l'OP puisse simplement avoir à spécifier le type. Le util-linuxmontage essaie d'identifier le système de fichiers via blkidpuis tente tout dans /etc/filesystemsou /proc/filesystem. Je pense que c'est la busyboxmonture, donc ça fait probablement moins. L'un ou l'autre manquerait probablement un système de fichiers flash spécialisé.
Graeme
2

Vérifiez d'abord les systèmes de fichiers pris en charge dans le noyau.

[kevin@hexcore ~]
$ cat /proc/filesystems 
....
    ext3
    ext2
    ext4
....

Je suppose que vous essayez de monter la même carte SD à partir de laquelle vous exécutez Linux. Si c'est le cas, je suppose, tout à fait raisonnablement, qu'il prend en charge le système de fichiers natif sous Linux. Pour vous assurer que vous avez chargé le pilote de la carte SD, vous pouvez essayer,

$ sudo modprobe sdhci
$ dmesg | tail -n 10
sdhci: Secure Digital Host Controller Interface driver

Maintenant, essayez d'accéder en lecture aux partitions:

$ sudo dd if=/dev/mmcblk of=/dev/null bs=4k count=0  # note: count = 0

Alternativement:

$ sudo fdisk -l /dev/mmcblk

fdisk vous indiquera également les types de partition.

Cela vous assure que le pilote de la carte SD peut accéder au périphérique de blocage. Vous pouvez maintenant exécuter partedpour imprimer les systèmes de fichiers:

$ sudo parted /dev/mmcblk
(parted) p
Number  Start   End     Size    Type     File system     Flags
 1      1049kB  8000MB  7999MB  primary  linux-swap(v1)
 2      8000MB  500GB   492GB   primary  ext4

Une fois que vous connaissez le FS, montez-le avec

$ sudo mount -t <FS> /dev/mmcblkpX </target/dir>
Kevin
la source
Êtes-vous sûr de cela? parted peut analyser la signature aussi loin que je me souvienne. fdisk vide simplement le type de partition.
Kevin
Ok, votre droite partedessaie de déterminer le type de système de fichiers. Commentaire supprimé.
Graeme
-1

Il me semble que c'est l'erreur que vous obtenez lorsque le type de partition que vous essayez de monter n'est pas pris en charge.

sibaz
la source
Si vous savez quel est le type de partition, vérifiez que la fonction fsck appropriée est dans / sbin et que les modules appropriés sont dans le noyau (/ proc / modules)
sibaz
je ne connais pas le type de partition. existe-t-il une commande pour trouver le type de partition? Mais j'ai vu / proc / modules - son vide
gpuguy
Si vous avez root, ce sera beaucoup plus facile, mais si, comme je le pense, vous le faites sur Android, vous le recherchez blkid, sinon, et c'est un environnement Linux plus conventionnel, lsblkest probablement préférable.
mikeserv
Je vérifierai lsblk demain, mais pourquoi / proc / modules est-il vide.
gpuguy
Comment pouvez-vous savoir cela et être encore une journée entière à taper 5 lettres à votre demande?
mikeserv
-1

Vous devrez peut-être utiliser (commande séparée) en raison de la taille de la partition:

# /sbin/parted /dev/mmcblk0p1
(parted) mklabel gpt
this disk will be lost. Do you want to continue?
Yes/No? yes
....
(parted) quit

Pour vous assurer que la partition est correctement créée, utilisez /sbin/parted /dev/mmcblk0p1 print”

Ensuite, vous devez formater la partition créée

/sbin/mkfs -t correct_type /dev/mmcblk0p1
Charles nakhel
la source
2
L'utilisation de partedon /dev/mmcblk0p1créera une table de partition sur une partition d'un périphérique qui a déjà été partitionné. De plus, le fait de suivre ces instructions effacera toutes les données sur l'appareil .
Graeme