無効な引数でmmcblk0p1のマウントに失敗しました


9

LinuxをSDカードから実行していて、SDカードをマウントしようとすると、問題なく動作します。しかし、フラッシュメモリからLinuxを実行しているとき、SDカードをマウントできません。

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

このエラーの基本的な理由は何ですか?

追加情報

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
エントリが使用されない-t ...ように、完全なコマンド()を試してくださいfstab
Hauke Laging 2014年

1
何か有用なものが書き込まれ/var/log/messagesますか?いかがdmesg | tailですか?
Flup 2014年

@Flup私は上記の質問を更新しました
gpuguy 2014年

4
mount -t /dev/mmcblk0p1 /mnt完全なコマンドではありません。ファイルシステムのタイプがわかっている場合は、-t引数の後に指定するか(例:mount -t vfat /dev/mmcblk0p1 /mnt)、-tを完全に省略してください。
James Hebden、2014年

上記を見るとわかるように、省略は機能しませんでした
gpuguy 2014年

回答:


10

以下のようゴルディロックスでコメントしmount -tファイルシステムタイプは後に来ることを期待し-t、それは動作しません。それ以外の場合は、ファイルシステムのタイプを指定する必要があるようです。ファイルシステムのタイプがわからない場合は、この回答で調べる方法のリストがあります。場合はfile、コマンドが利用可能であり、これはおそらく最良の方法です。rootとして、次のようにします。

file -s /dev/mmcblk0p1

また、ファイルシステムタイプがにリストされていない/proc/filesystems場合、ドライバーはカーネルにコンパイルされないため、外部モジュールとして使用できる必要があります。正しいタイプを取得したら、次のことを試すことができます。

mount -t correct_type /dev/mmcblk0p1 /mnt

最後に、/mntディレクトリが存在することも確認してください!そうでない場合は、で作成してくださいmkdir /mnt


マウントにはsudoが必要ですか?
Ferroao 2017

@Ferroao、はい、マウントにはroot権限が必要です。
Graeme

を変更する必要がある場合は、そのsdにファイルを作成します。sudoが必要ですか?
Ferroao 2017

@Ferroao、それはマウントしようとしているファイルシステムに依存します。Linuxファイルシステムの場合、各ファイル/ディレクトリの権限/所有者/グループによって、読み取り/書き込みができるユーザーが決まります。
Graeme

3

基本的な理由:(更新)

1)システムがフラッシュから起動したときに、SDを初期化しないか、SDを認識しません。/dev/mmcblk0フラッシュから起動した後にデバイスはありますか?何てfdisk -l /dev/mmcblk0言うの?

2)/ dev / mmcblk0p1にファイルシステムがありませんmkfs ...。最初にファイルシステムを作成する必要があります()。確認するfile -s /dev/mmcblk0p1

3)/ dev / mmcblk0p1のファイルシステムが破損しています。確認/修復するか、試すfsck /dev/mmcblk0p1か、新しいファイルシステムを作成する必要があります

4)カーネル(フラッシュからの起動時)に必要なファイルシステムドライバーがない場合は、そのリストに必要なファイルシステムタイプが含まれているかどうかを確認cat /proc/filesystemsls "/lib/modules/$(uname -r)/kernel/fs/"ます。通常、古いカーネルはext4をサポートしていませんが、OSにはext4ファイルシステムを作成するためのツールがすでにある場合があります。

5)ハードウェアの欠陥-SDカード、コントローラー、配線などである可能性がありますが、SDカードからの起動時に機能する場合は、おそらくそうではありません。


にリストされているファイルシステム/proc/filesystemsは、カーネルにコンパイルされたものだけであることに注意してください。たとえば、私に/proc/filesystemsはは含まれていませんがvfatvfatモジュールとして利用できるため、システムをマウントできます。
Graeme

OPはタイプを指定する必要があるだけかもしれませんが、よさそうです。util-linux経由してファイルシステムを特定しようとするのマウントblkid、その後のすべて試みる/etc/filesystemsかを/proc/filesystem。これはbusyboxマウントだと思うので、おそらくそれより少ないでしょう。どちらかはおそらく専門のフラッシュファイルシステムを見逃すでしょう。
Graeme 2014

2

まず、カーネルでサポートされているファイルシステムを確認します。

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

Linuxを実行しているのと同じSDカードをマウントしようとしていると思います。もしそうなら、私はかなり合理的に、Linuxでネイティブファイルシステムをサポートしていると思います。SDカードドライバーが読み込まれていることを確認するには、

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

次に、パーティションへの読み取りアクセスを試します。

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

または:

$ sudo fdisk -l /dev/mmcblk

fdisk パーティションの種類もわかります。

これにより、SDカードドライバーがブロックデバイスにアクセスできることが保証されます。これでparted、ファイルシステムを印刷するために実行できます。

$ 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がわかったら、次のコマンドでマウントします。

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

よろしいですか?partedは、私が覚えている限り、署名を分析できます。fdiskは、パーティションタイプをダンプするだけです。
ケビン

わかりました、あなたの権利partedは、ファイルシステムのタイプを決定しようとします。コメントを削除しました。
Graeme 14

-1

これは、マウントしようとしているパーティションのタイプがサポートされていないときに発生するエラーであることを覚えているようです。


パーティションの種類がわかっている場合は、適切なfsck関数が/ sbinにあり、適切なモジュールがカーネル(/ proc / modules)にあることを確認してください
sibaz

パーティションの種類がわかりません。パーティションタイプを見つけるコマンドはありますか?しかし、私は/ proc / modulesを見ました-その空
gpuguy 14年

rootを持っている場合、これははるかに簡単ですが、私が思うに、Androidでこれを実行している場合blkidそうでない場合はを探しておりより一般的なLinux環境であることlsblkがおそらく望ましいでしょう。
mikeserv 2014年

明日はlsblkを確認しますが、なぜ/ proc / modulesが空なのですか?
gpuguy 2014年

どうすればそれを確認でき、プロンプトで5文字入力するのを丸一日休むことができますか?
mikeserv 2014年

-1

多分あなたはパーティションサイズのために(partedコマンド)を使用する必要があります:

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

パーティションが正しく作成されていることを確認するには、 /sbin/parted /dev/mmcblk0p1 print”

次に、作成したパーティションをフォーマットする必要があります

/sbin/mkfs -t correct_type /dev/mmcblk0p1

2
partedon /dev/mmcblk0p1を使用すると、すでにパーティション分割されているデバイスのパーティションにパーティションテーブルが作成されます。また、これらの手順に従うと、デバイス上のすべてのデータ消去されます
Graeme 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.