2008-09-16 03:51:40 +0000 2008-09-16 03:51:40 +0000
161
161

どの/devがUSBフラッシュドライブであるかを見分けるにはどうすればいいのでしょうか?

USBドライブをマウントしたいのですが、そのうちの2つで、2つの異なるマウントポイントが必要です。残念ながら、Linuxカーネルは名前が変更されたため、/devの場所がどれなのかわかりません。どのデバイスノードがUSBドライブなのか、dmesgかどこかで調べる方法はありますか?

(私はArchLinuxを使っているので、それが何かの役に立つなら…/procは最初のハードドライブ、/dev/sdaはDVDドライブなど)

_edit: USBドライブはUSBハブに接続されています。/dev/sr0を見てみると、ハブが接続されていると書いてあり、そこに接続されている3つのデバイスをスキャンしてくれました。しかし、USBドライブがどこにあるのかはまだわかりません。

回答 (11)

83
83
83
2008-09-16 03:53:52 +0000

一番簡単な方法。USBデバイスを接続した後、dmesgの出力を見てください。それは、どのような/devノードに割り当てられたかを示しているはずです。

54
54
54
2012-09-04 18:51:43 +0000

これらのすべては良い提案ですが、最も速く、最も冗長な方法は、単にターミナルで次のように入力することです:

mount

これはすべてのマウントされたデバイスのリストを提供します(これは、USBドライブがマウントされていると仮定しています、これは、通常、最新のLinuxディストロの場合です)。

25
25
25
2008-09-16 03:59:28 +0000

ここで、udevinfo -q all -n /dev/sda はディスクへのパスです。これにより、見ているディスクに関する情報がたくさん得られます - 接続されているバスについてのエントリがあります。

更新

udevadm info --query=all -n /dev/sda

少なくとも 2010 年 7 月 [ 1] からは、Debian (とその派生) では /dev/sda が、シンボリックリンクがあってすぐに非推奨になり削除された少し過渡的なものである udevinfo に置き換えられています (古い更新されていないマシンではまだ見つけることができます)。常に [ 1] から次のように読むことができます:

udev 117 で udevadm info が導入され、udevadm と他のプログラムは互換性のあるシンボリックリンクに変わりました。このシンボリックリンクは udev 128 で非推奨となり、 udev 147 で永久に削除されました。

23
23
23
2013-01-02 08:37:01 +0000

何が起こっているのかを確認する最も簡単な方法は、(もちろんルートとして)

blkid -c /dev/null

と入力するだけです。

11
11
11
2009-09-24 22:36:40 +0000

何らかの理由で人生をもっと面白くしたい場合は、/dev/disk/by-*がこの場合の最も簡単な方法です。

あなたが使用するすべてのデバイスをリストアップするには:

hal-device

あなたが使用する特定のプロパティを取得するには(これはUSBストレージデバイス上の/dev/sd*を返します):

hal-get-property --udi $UDI --key block.device

もあります:

hal-find-by-capability
hal-find-by-property

あなたがそれをさらに複雑にしたい場合は、比較的簡単に自分でHALベースのオートマウンターを書くことができます、あなたが物事を完全に自動化したい場合は非常に便利です。

そしてちょうど完全性のためにまたあります:

lsusb -v
lshw

どの USB および一般にあなたのハードウェアについてのいくつかの一般的な情報を提供します。

10
10
10
2015-11-10 02:47:28 +0000
sudo fdisk -l

そして結果を分析するだけ。

8
8
8
2008-09-16 04:18:39 +0000

使用

ls -l /dev/disk/by-id/usb*

デフォルトの udev ルールの下では、ほとんどの usb デバイスが表示され、システム上のブロックデバイス名へのシンボリックリンクが表示されます。

7
7
7
2012-08-24 17:37:56 +0000

USB デバイスの場合は

REMOVABLE_DRIVES=""
for _device in /sys/block/*/device; do
    if echo $(readlink -f "$_device")|egrep -q "usb"; then
        _disk=$(echo "$_device" | cut -f4 -d/)
        REMOVABLE_DRIVES="$REMOVABLE_DRIVES $_disk"
    fi
done
echo Removable drives found: "$REMOVABLE_DRIVES"
``` を実行してください。
2
2
2
2008-09-16 03:55:24 +0000

007 の下のツリーを見てください。様々な方式でディスクとそのパーティション(ファイルシステム)がリストアップされています。

0
0
0
2008-09-16 03:53:27 +0000

USB ドライブを抜いてプラグインすると、カーネルから初期化されるのがわかるはずです (dmesg)

0
0
0
2018-11-29 19:02:45 +0000

stormlash の素晴らしい回答と、"/dev/disk/by-id/usb" デバイスツリーを生成するための udev への依存関係に基づいて、次のように述語を定義することができます (Bash)。

関連する質問

6
10
5
37
5