mmcblk0p1 montajı Geçersiz argümanla başarısız oldu


9

Ben sd karttan linux çalıştırıyorum ve sd kart monte etmeye çalıştığınızda -no sorun, iyi çalışıyor. Ancak flash bellekten linux çalıştırdığımda SD kartımı takamıyorum:

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

Bu hatanın temel nedeni ne olabilir?

İlave bilgi

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

1
Lütfen girişin kullanılmaması için complete komutunu ( -t ...) deneyin fstab.
Hauke ​​Laging

1
Yararlı bir şey yazılıyor /var/log/messagesmu? Nasıl dmesg | tail?
Flup

@Flup yukarıdaki sorumu güncelledim
gpuguy

4
mount -t /dev/mmcblk0p1 /mnttam bir komut değildir. Filesytem türünü biliyorsanız, -t argümanından (örn. mount -t vfat /dev/mmcblk0p1 /mnt) Veya -t bağımsız değişkeninden sonra tamamen belirtmelisiniz .
James Hebden

Yanıtlar:


10

As Goldilocks tarafından yorumladı , mount -tdosya sistemi türü sonra gelmek beklediğini -t, bu yüzden iş olmaz. Aksi takdirde, sadece dosya sistemi türünü belirtmeniz gerekir. Dosya sistemi türünü bilmiyorsanız, bu cevapta öğrenilecek yöntemlerin bir listesi vardır . fileKomut varsa , bu muhtemelen en iyi yöntemdir. Kök olarak şunları yaparsınız:

file -s /dev/mmcblk0p1

Ayrıca, dosya sistemi türü listede yoksa /proc/filesystems, sürücünün çekirdeğe derlenmediğini ve bu nedenle harici bir modül olarak mevcut olması gerektiğini unutmayın. Doğru türe sahip olduktan sonra deneyebilirsiniz:

mount -t correct_type /dev/mmcblk0p1 /mnt

Son bir düşünce olarak, /mntdizinin var olduğundan da emin olun ! Değilse ile oluşturun mkdir /mnt.


mounts sudo gerektirir?
Ferroao

@Ferroao, evet montaj kök ayrıcalıkları gerektirir.
Graeme

değiştirmek gerekiyorsa, o sd sudo oluşturmak gerekir?
Ferroao

@Ferroao, bağlamaya çalıştığınız dosya sistemine bağlıdır. Linux dosya sistemleri için, her dosya / dizindeki izinler / sahip / grup kimlerin okuyabileceğini / yazabileceğini belirler.
Graeme

3

Temel nedenler: (güncellendi)

1) Sisteminiz flaştan önyükleme yaparken SD'yi başlatmıyor (düzgün?) Veya tanımıyor. Flaştan /dev/mmcblk0önyükleme yaptıktan sonra aygıt var mı ? Ne fdisk -l /dev/mmcblk0diyor?

2) / dev / mmcblk0p1 üzerinde dosya sistemi yoktur, önce bir dosya sistemi oluşturmanız gerekir ( mkfs ...). İle kontrol etfile -s /dev/mmcblk0p1

3) / dev / mmcblk0p1 dosya sistemi bozuk, kontrol etmeniz / onarmanız, denemeniz fsck /dev/mmcblk0p1veya yeni bir tane oluşturmanız gerekiyor

4) kernel'inizin (flaş gelen önyükleme), gerekli dosya sistemi sürücüsü var kontrol etmez zaman cat /proc/filesystemsve ls "/lib/modules/$(uname -r)/kernel/fs/"ve bu liste gerekli dosya sistemi türünü içerip içermediğini. Genellikle, eski çekirdekler ext4'ü desteklemezken, işletim sisteminizde zaten bir ext4 dosya sistemi oluşturmak için araçlar olabilir.

5) Donanım arızası - SD kart, kontrolör, kablolama olabilir ... ancak SD karttan önyükleme yaparken çalışırsa, bu büyük olasılıkla durum böyle değildir.


Listelenen dosya sistemlerinin /proc/filesystemsyalnızca çekirdeğe derlenen sistemler olduğunu unutmayın . Örneğin benim /proc/filesystemsiçermiyor vfat, ancak vfatbir modül olarak kullanılabilir olduğu için hala bir sistem monte edebilirim .
Graeme

OP sadece türü belirtmek zorunda olsa da iyi görünüyor. util-linuxAracılığıyla dosya sistemini tanımlamak için çalışır monte blkidardından girişimleri her şey /etc/filesystemsya /proc/filesystem. Bence bu busyboxbağ, bu yüzden muhtemelen daha az. Her ikisi de uzman bir flash dosya sistemini kaçırır.
Graeme

2

Önce çekirdeğin desteklediği dosya sistemlerini kontrol edin.

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

Sanırım Linux'u çalıştırdığınız SD kartı takmaya çalışıyorsunuz. Öyleyse, oldukça makul bir şekilde, Linux'ta yerel dosya sistemi desteğine sahip olduğunu varsayıyorum. SD kart sürücüsünü yüklediğinizden emin olmak için,

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

Şimdi, bölümlere okuma erişimini deneyin:

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

Alternatif:

$ sudo fdisk -l /dev/mmcblk

fdisk size bölüm türlerini de söyleyecektir.

Bu, SD kart sürücüsünün blok cihaza erişebilmesini sağlar. Artık parteddosya sistemlerini yazdırmak için çalıştırabilirsiniz :

$ 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

FS'yi öğrendikten sonra,

$ sudo mount -t <FS> /dev/mmcblkpX </target/dir>

Bundan emin misin? ayrılan imzayı hatırlayabildiğim kadarıyla analiz edebilir. fdisk sadece bölüm türünü döker.
Kevin

Tamam, hakkınız, parteddosya sistemi türünü belirlemeye çalışıyor. Yorum kaldırıldı.
Graeme

-1

Bu, bağlamaya çalıştığınız bölüm türü desteklenmediğinde aldığınız hata olduğunu hatırlıyorum.


Bölüm türünün ne olduğunu biliyorsanız, uygun fsck işlevinin / sbin içinde olduğunu ve uygun modüllerin çekirdekte (/ proc / modüller) olduğunu kontrol edin
sibaz

bölüm türünü bilmiyorum. bölüm türünü bulmak için herhangi bir komut var mı? Ama gördüğüm / proc / modüller - boş
gpuguy

Kökünüz varsa bu çok daha kolay olacaktır, ancak bence, Android'de bunu yapıyorsanız blkid, değilse , arıyorsanız ve daha geleneksel bir Linux ortamı lsblkmuhtemelen tercih edilir.
mikeserv

Yarın lsblk'i kontrol edeceğim ama neden / proc / modülleri boş.
gpuguy

Bunu nasıl bilebilirsiniz ve isteminize 5 harf yazmaktan bir gün uzak olabilirsiniz?
mikeserv

-1

Belki bölüm boyutu nedeniyle (parted komutu) kullanmanız gerekir:

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

Bölümün düzgün oluşturulduğundan emin olmak için şunu kullanın: /sbin/parted /dev/mmcblk0p1 print”

Sonra oluşturulan bölümü biçimlendirmelisiniz

/sbin/mkfs -t correct_type /dev/mmcblk0p1

2
partedOn kullanıldığında /dev/mmcblk0p1, zaten bölümlenmiş bir cihazın bir bölümünde bir bölüm tablosu oluşturulur. Ayrıca, bu talimatları izleyerek cihazdaki tüm verileri siler .
Graeme
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.