GNU/Linux >> Linux の 問題 >  >> Linux

Linux – Udevルール:デバイス#26の後にカーネルデバイス(パーティションではなく)のみを一致させる方法は?

一部のシステムには、26を超える(ブロック)デバイス(ハードディスクドライブなど)があり、カーネル名は次のとおりです。

/dev/sda
...
/dev/sdz
/dev/sdaa
/dev/sdab
/dev/sdac
...

ほとんどのudevルールの例は非常に単純で、たとえば次のように最初の26個のデバイスにのみ一致します。

ACTION=="add|change", KERNEL=="sd[a-z]|sr[0-9]", SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"

しかし、26番目のデバイスの後でどのように一致させるのですか?
sd*を書くことはできません sda1のようなパーティションがあるため 一致させないでください。

別の「または」(パイプ記号:|)を書くことを想像できます。 )次のように一致させます:

KERNEL=="sd[a-z]|sd[a-z][a-z]|sr[0-9]"

または、次のように、一致を正と負の部分に分割します。

..., KERNEL=="sd[a-z]*|sr[0-9]", KERNEL!="sd[a-z]*[0-9]", ...

読み取り可能で、デバイス#27以降と一致するが、パーティションとは一致しないudevルールを作成するためのより良い方法はありますか?

承認された回答:

KERNEL=="sd*[!0-9]|sr*"

udevルール自体が提供するオペレーティングシステムで見つけることができます。

このArchLinuxの場合、ファイルを見てください:

/usr/lib/udev/rules.d/60-persistent-storage.rules

セクションATA:

$ grep /usr/lib/udev/rules.d/60-persistent-storage.rules -e \"ATA\"
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", IMPORT{program}="ata_id --export $devnode"

Linux
  1. Linux – Linuxカーネルはどのようにしてデバイスのメジャー番号とマイナー番号を認識しますか?

  2. USBデバイスが削除されたときにシェルスクリプトでイベントをトリガーする方法は?

  3. Linux – UdevはUsbイーサネットデバイスの名前を変更しませんか?

  1. Linux で Chroot SFTP をセットアップする方法 (SSH ではなく SFTP のみを許可する)

  2. ネットワークにないデバイスの MAC アドレスを取得する方法

  3. Linux でデバイスをマウントするには?

  1. たった4MB?ライブLinuxUSBを作成した後にEtcherとRufusによって「破壊された」USBを修正する方法

  2. Linuxデスクトップでカーネルをアップグレードする方法

  3. Udev :ネットワーク インターフェイスの名前を変更する