web-dev-qa-db-ja.com

udevシンボリックリンク-/ dev / sdaはどこを指していますか

Udevは実際のデバイスを識別するシンボリックリンクを作成すると言われ、/ dev/disk/by-uuidがその一例です。

[root @ centos1 by-uuid] #pwd

/ dev/disk/by-uuid

[root @ centos1 by-uuid] #ls -l

合計0lrwxrwxrwx1ルートルート106月26日00:594cfc879d-1d4e-4289-856c-5f532a74bb2d-> ../../sda

上記は、a)/ dev/sdaがuuid4cfc879d-1d4e-4289-856c-5f532a74bb2dを指していることを意味しますか?

または

b)uuid4cfc879d-1d4e-4289-856c-5f532a74bb2dが/ dev/sdaを指していますか?

==================================================

答えがaの場合、リンクは左から右へのリンクであると常に考えていましたか?そして、誰かがuuidを参照して/ dev/sdaに移動するにはどうすればよいですか?また、/ dev/sdaはudevによって動的に追加されると想定されており、その命名はいくつかのルールに基づいています。

答えがbの場合、sdaはどこを指していますか?カーネルはデバイスを/ dev /フォルダーに動的に追加すると言われており、udevを使用すると、その中のデバイスの名前を永続化できます。

[root @ centos1 dev] #pwd

/ dev

[root @ centos1 dev] #ls -lt sda

brw-rw ---- 1ルートディスク8、0 Jun 26 00:59 sda

==================================================

/etc/udev/rules.d/でルールを見つけようとしましたが、役に立ちませんでした。私はCentOSを使用しています。

/lib/udev/rules.d/で試していますが、sdaを/ dev /に追加するルールが表示されません。

お知らせ下さい。

2
Noob

リンクはto/ dev/sda1です。 fileコマンドでそれを確立できます:私のシステムでは、例えば、

  # file *
  ff28e743-4409-41b3-99ea-f133cdcc86be: symbolic link to `../../sda1' 

したがって、あなたのオプションbは正しいです。/dev/sdaはnotリンクであるため、他のものをまったく指していません。これは単なる特別な(デバイス)ファイルです。インスタンス このウィキペディアの記事

CentOSを使用していませんが、Debian/Kubuntuシステムでは、ディスクルールは/ lib/udev/rules.dの下にあります。

   # ls -lh 60-per*
     -rw-r--r-- 1 root root  616 apr 15 22:33 60-persistent-alsa.rules
     -rw-r--r-- 1 root root 2,5K apr 15 22:33 60-persistent-input.rules
     -rw-r--r-- 1 root root  947 apr 15 22:33 60-persistent-serial.rules
     -rw-r--r-- 1 root root  929 mag  4  2012 60-persistent-storage-dm.rules
     -rw-r--r-- 1 root root 5,6K apr 15 22:33 60-persistent-storage.rules
     -rw-r--r-- 1 root root 1,4K apr 15 22:33 60-persistent-storage-tape.rules
     -rw-r--r-- 1 root root  769 apr 15 22:33 60-persistent-v4l.rules

もちろん、関連するファイルは60-persistent-storage.rulesです。システム内でここに見つからない場合は、次のことを試してみることをお勧めします。

    find / -type f -name '*persistent-storage*.rules'

編集:

/ sdaはudevによって/ devに追加されますか?

はい。

「sda」が常に「sda」のままであることをどのように保証しますか?

私たちはしない。ルールは、インストール時にudevによって自動的に生成されます。実際、上記のファイルには次のルールが含まれています。

   # scsi devices
   KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="scsi"

編集2

あなたが決心することができないことを考えると、最も簡単なことはあなた自身のルールを設定することです。 nowsddという名前のデバイスがありますが、次回の再起動時にsdaと呼びたいとします。

まず、いくつかのパラメータを見つける必要があります。

   udevadm info -a -p $(udevadm info -q path -n /dev/sdd)

これは多くの情報を吐き出します。このような行を検索します(もちろん、あなたの行は異なります):

  ATTRS{idVendor}=="18a5"
  ATTRS{idProduct}=="0302"
  ATTRS{serial}=="TT0E4E008XW3DT9H"

これらのパラメーターを使用して、/ etc/udev/rules.d/10-local.rulesに挿入する独自のルールを作成できるようになりました。

 ATTRS{idVendor}=="18a5", ATTRS{idProduct}=="0302", ATTRS{serial}=="TT0E4E008XW3DT9H", KERNEL=="sd?", NAME="sda", RUN+="/home/my_name/bin/my_program"

最後の部分RUN + = "/ home/my_name/bin/my_program"はオプションです。必要に応じてコマンドを実行できますが、省略してもかまいません。それは完全に。

4
MariusMatutiae