マウント:特別なデバイスsda / sda1が存在しません

マウント:特別なデバイスsda / sda1が存在しません

Linux Yocto(arm_v7)に基づいてIoT Edgeデバイスを開発しており、USBドライブをインストールする必要があります。

Linuxバージョン:

root@7426a4ffc838:/# uname -a
Linux 7426a4ffc838 4.9.80-rt62 #1 SMP PREEMPT RT Thu May 14 17:11:08 UTC 2020 armv7l GNU/Linux

デバイスにはシェル(Webページのみ)がないため、Dockerコンテナを使用してUSBドライブをマウントしてみました。

私のコンテナは、ハードウェアにアクセスするために特権モードで実行されています。

"lsblk"コマンドを実行すると、次の結果が表示されます。

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0         7:0    0 363.6M  1 loop 
sda           8:0    1  14.8G  0 disk 
`-sda1        8:1    1  14.8G  0 part 
mmcblk0     179:0    0   7.4G  0 disk 
|-mmcblk0p1 179:1       61.1M  0 part 
|-mmcblk0p2 179:2    0  61.1M  0 part 
`-mmcblk0p3 179:3    0   7.3G  0 part 

私のUSBドライブ名は「sda」です。

したがって、コマンドを使用してUSBドライブをマウントしようとすると、mount /sda/sda1 /mnt/usb/次のエラーが発生します。

mount: special device /sda/sda1 does not exist

このドライブをマウントする方法はありますか?

助けてくれてありがとう。

BR、フェデリコ

答え1

lsblkデバイスが検索(通過/sys/)されても、mountマウントするには有効なブロックデバイスがまだ必要です。組み込みデバイスが同様のツールを実行していない場合、またはudevコンテナ環境が/dev/ホストなどの完全に埋め込まれたディレクトリを提供していないため、作成されていない場合でも手動で作成できます。

メイン/マイナーブロックを確認するために使用する必要がある出力は、関連する部分がlsblk -o NAME,MAJ:MIN次のとおりであるとします。

# lsblk -o NAME,MAJ:MIN
NAME                MAJ:MIN
[...]
sda                   8:0  
`-sda1                8:1  
[...]

その後、前の情報を使用して必要なブロックデバイスを作成できます。

mknod /dev/sda1 b 8 1

今すぐインストールする必要があります。

mount /dev/sda1 /mnt

組み込まれているため、そのパーティションのファイルシステム用のドライバがカーネルに組み込まれておらず、何らかの理由で自動的にロードされないと、追加の問題が発生する可能性があります。したがって、最初の試みがうまくいかない場合は、モジュールを明示的にロードするか(たとえば、組み込みモジュールをロードしますmodprobe vfat(カーネルを再コンパイル...)。一部のファイルシステムは使用するのが簡単ではありません(たとえば、exfatLinux 4.9では直接カーネルサポートがなく、FUSEが必要です)。

答え2

そのディレクトリはありません/sda

あなたが本当にやりたいことはマウントすることです/dev/sda1

mount /dev/sda1 /mnt/usb/

関連情報