USBデバイスがLinuxに接続されると、カーネルはそのデバイスにマイナーデバイス番号(Linuxでは0 /dev/ttyUSB0
)を割り当てます。デバイスがある場合は、その/dev/ttyUSB0
デバイスを取り外して新しいUSBデバイスを接続すると、新しいデバイスに別のデバイス番号が割り当てられているようです。ただし、十分に長く待つか、デバイスを十分に追加すると、デバイス番号は0になります。カーネルは、デバイス番号0を再利用するタイミングをどのように決定しますか?
詳細:サーバーに多数のUSBデバイスが接続されており、セカンダリデバイス番号を使用してそれらを追跡します。新しいデバイスが追加された時期と古いデバイスが削除される時期を検出したいと思います。新しいデバイスに削除された既存のデバイスと同じデバイス番号が割り当てられていると、デバイスが交換されたかどうかがわからないかどうか心配されます。
ベストアンサー1
私の質問に半分答えます。デバイス番号を再利用する方法については明確な文書が見つかりませんでしたが、デバイスに一意の番号を割り当てる方法を見つけました。
秘密は、次の規則のようなステートメントを使用して乱数を生成することudev
です。IMPORT
KERNEL=="ttyUSB*", IMPORT{program}="/bin/bash -c 'echo FOORAND=$RANDOM'", SYMLINK+="my-device-%n-%E{FOORAND}"
たとえば、ttyUSBデバイスへのシンボリックリンクが作成されます/dev/my-device-0-3853
。新しいデバイスが追加されると、新しいランダム番号が付与されます。
%n
いつでもカーネル番号()と乱数を含め、存在するシンボリックリンクがアクティブになります。いつもユニーク。