4

hal-get-propertyまたはhal-find-by-capabilityudevなどの非推奨の HAL ツールを使用する bash スクリプトを移植する必要があります。HALは、HAL が udev にマージされたと述べていますが、このスクリプトを udev に適切に移植する方法に関する有用な情報を見つけることができませんでした。

例: すべてのストレージ ハードウェア (HAL を使用) のリストが必要な場合は、実行できます。

hal-find-by-capability --capability storage

次のような UDI (Unique Device Identifier) のリストが表示されます。

/org/freedesktop/Hal/devices/storage_model_Virtual_disk
/org/freedesktop/Hal/devices/storage_serial_00000000000000000001
/org/freedesktop/Hal/devices/platform_floppy_0_storage

/org/freedesktop/Hal/devices/storage_model_Virtual_diskリムーバブル かどうかを知りたい場合は、次のクエリを発行できます

hal-get-property --udi /org/freedesktop/Hal/devices/storage_model_Virtual_disk --key storage.removable

そしてそれは答えるでしょうtrueor false.

私の質問は、
HAL なしでこれらのことを行うにはどうすればよいですか?
sysfsutils ( systool) は機能する可能性がありますが、適切な代替品ではないようです。
これは動作しudevadm infoますか?

4

1 に答える 1

1

編集後、あなたがやろうとしていることはずっと明確です。まず、クエリしようとしているデバイスを見つける必要があります。これを行う最も簡単な方法は、実際にsysfsをスキャンすることです。特定のデバイスにクエリを実行する場合は、デバイスが記述されているsysfs内の場所をudevにポイントするだけです。したがって、を探しているsdb場合は、たとえば、経由する/block/sdbか、正しいノードを選択するか、/dev/blockまたはそのようなものを選択できます。デバイスパスがある場合、たとえば$DEVPATH、次のようなことができます。

udevadm info --attribute-walk --name=$DEVPATH

これにより、取り外し可能性など、多くの情報が流出します。に置き換えるattribute-walkquery=property、別の情報セットが表示されますが、削除可能性の情報は見つかりませんでした。

複数のデバイスでこれを実行したい場合は、sysfsで正しいフォルダーを見つける必要があるため、基本的には代わりの友達になりますfindxargshal-find-by-capability


何をしようとしているのかによっては、udevルールを読み込むこともできます。これにより、デバイスが接続されたときにスクリプトの実行をトリガーできます(で指定された値と照合することにより--attribute-walk)。また、所有権や権限などを簡単に設定できます。

于 2012-11-08T16:23:26.720 に答える