USBドライブをマウントしたいのですが、2つの異なるマウントポイントが必要です。残念ながら、Linuxカーネルは名前の変更が行われたため、どの/dev
の場所が正しいのかがわかりません。どのデバイスノードがUSBドライブなのか、dmesg
か/proc
かどこかで調べる方法はありますか?
(私は ArchLinux を使っています。/dev/sda
は最初のハードドライブ、/dev/sr0
は DVD ドライブなど)
編集:USBドライブはUSBハブに接続されています。dmesg
を見てみると、ハブが接続されていると書いてあり、接続されている3つのデバイスをスキャンしてくれました。しかし、USBドライブがどこにあるのかはまだわかりません
168 Old account 2008-09-16
一番簡単な方法です。USBデバイスを接続した後のdmesg
の出力を見てください。どのような/dev
ノードに割り当てられたかがわかるはずです
85 zigdon 2008-09-16
udev を実行している限り、/dev/disk/by-id/usb-manufacturername_serialnumber を参照することで簡単にこれを行うことができます。これらはシンボリックリンクとして表示され、fstab 内で直接参照することも、readlink -e を使って関連するブロックデバイスを決定するために参照を解除することもできます
ここに実例があります。私のマシンでは、3台のUSBハードドライブが接続されています。これらはそれぞれ /dev/disk/by-id にユニークなシリアル番号で表示されます (共通の製造元の文字列を共有していますが)。これら 3 つのユニークなエントリそれぞれへのシンボリックリンクを作成し、readlink -e linkname を実行することで、どのドライブがどのドライブなのか (そしてどのデバイスが各ドライブに関連付けられているのか) を素早く判断できるようになりました。例えば、私のマシンで readlink -e /root/disk2 を実行すると、現在は “/dev/sde” と表示されますが、readlink -e /root/disk3 を実行すると何も出力されません
58 None 2008-09-16
これらはすべて良い提案ですが、最も手っ取り早く、かつ冗長にならない方法は、ターミナルに以下のように入力するだけです
mount
これはマウントされているすべてのデバイスのリストを表示します (これは USB ドライブがマウントされていると仮定したもので、最近の Linux ディストリビューションでは通常そうです)
57 AnotherLongUsername 2012-09-04
udevinfo -q all -n /dev/sda
コマンドを試してみてください。/dev/sda
はディスクへのパスです。これにより、見ているディスクに関する情報がたくさん得られます – 接続されているバスについてのエントリがあります
もちろん、これにより、dmesg やログから grep する手間が省けます
Update
udevadm info --query=all -n /dev/sda
少なくとも 2010 年 7 月頃から [1] udevinfo
は Debian (とその派生) では udevadm info
に置き換えられ、シンボリックリンクはすぐに非推奨となり削除されました (古い更新されていないマシンではまだ見つけることができます)。常に [1] から読むことができます
udev 117 では、
udevadm
が導入され、udevinfo
や他のプログラムは互換性のあるシンボリックリンクに変わりました。シンボリックリンクは udev 128 で非推奨となり、 udev 147 で永久に削除されました
26 Eltariel 2008-09-16
一番簡単な様子を見る方法は、(もちろんルートとして)入力するだけです
blkid -c /dev/null
これにより、マウントされていない場合でも、すべてのブロックデバイスの概要を知ることができます
23 toh 2013-01-02
/dev/disk/by-*
がこの場合の一番簡単な方法ですが、何らかの理由で人生をもっと面白くしたい場合はHALを使うことができます
使用しているすべてのデバイスを一覧表示します
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とハードウェアの一般的な情報を提供しています
11 Grumbel 2009-09-24
sudo fdisk -l
そして結果を分析するだけ
11 Felipe 2015-11-10
Use
ls -l /dev/disk/by-id/usb*
デフォルトの udev ルールでは、ほとんどの usb デバイスが表示され、システム上のブロックデバイス名へのシンボリックリンクが表示されます
それでもダメなら、/dev/disk/by-id/
を直接見てください
8 DJ Capelis 2008-09-16
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"
7 lemsx1 2012-08-24
/dev/disk
の下のツリーを見てください。様々な方式でディスクとそのパーティション(ファイルシステム)がリストアップされています
2 Ted Percival 2008-09-16
/var/log/message dmesg が情報を持たなくなった場合
2 None 2008-09-16
USBドライブのプラグを抜いて挿し直すと、カーネル(dmesg)から初期化されているのがわかるはずです
0 Howler 2008-09-16
stormlash の素晴らしい回答と、”/dev/disk/by-id/usb” デバイスツリーを生成するための udev への依存関係に基づいて、以下のように述語 (Bash) を定義することができます
is_usb_device() {
local device_path=$1 # such as /dev/sdc
for devlink in /dev/disk/by-id/usb*; do
if [ "$(readlink -f "$devlink")" = "$device_path" ]; then
return 0
fi
done
return 1
}
そして、それを使う
if is_usb_device "/dev/sdg"; then
echo "/dev/sdg is a usb device"
else
echo "/dev/sdg is not a usb device"
fi
0 user30747 2018-11-29