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
(カーネルを再コンパイル...)。一部のファイルシステムは使用するのが簡単ではありません(たとえば、exfat
Linux 4.9では直接カーネルサポートがなく、FUSEが必要です)。
答え2
そのディレクトリはありません/sda
。
あなたが本当にやりたいことはマウントすることです/dev/sda1
:
mount /dev/sda1 /mnt/usb/