オペレーティングシステム:OpenSuse Leap 42.2、カーネル4.4.76-1 - デフォルト
次の質問があります。
実行時にUSBストレージデバイスを接続すると、割り当てられたデバイスノード名を取得するのに問題/dev/sdk
ありません。
外部 USB ドライブが接続された状態でコンピュータを再起動すると、オペレーティングシステムは、/dev/sdb
USB ストレージデバイスが内蔵ハードドライブである必要がある場合にそのデバイスに接続することを決定します。
外部USBドライブが次のようなデバイスノード名を持つように強制する方法が必要です。/dev/sdk
~からこのトピックこれまでに学んだこと:
udevのマニュアルによると、/ dev /ディレクトリのファイル名は変更できません。 NAME ネットワークインターフェイスに使用される名前です。 udevはデバイスノードの名前を変更できず、追加のシンボリックリンクのみを生成できます。
これが私に意味するのは、udev
カーネル/ドライバがUSBデバイスに特定のデバイスノード名を割り当てるように強制するルールを使用できないことです/dev/sdk
。
私は以下を使用してシンボリックリンクを作成しました。このトピックそしてシンボリックリンクが機能します。これで、usbDevice -> sdb1 / usbDevice -> sdk1
外部USBドライブが取り付けられているかどうかに関係なく、外部USBドライブを参照する/dev/sdk
静的エイリアスが作成されました/dev/sdb
。
しかし、これは私のUSBデバイスの実際のノード名を変更しないので、私の問題は解決しません。
どうすればいいのか知っている人はいますか?
- この特定のUSBデバイスが次のより高いか等しい割り当てられたノード名を持つように強制します。
/dev/sdk
/dev
他のすべてのデバイスがそのフォルダに接続された後にUSBデバイスを見つける必要があることをOSに指示することもできます。
すでに使用しているデバイスノードの1つを置き換えない限り、外部USBデバイスにどのデバイスノード名が割り当てられているかは気にしません。
どこから始めるべきかをヒントできる人はいますか?システムサービス?
答え1
私にとって効果的なデバイスシーケンスを強制する1つの方法(少なくともサウンドカードドライバの場合)は、SATAドライバがカーネルにコンパイルされ、後で起動プロセスでUSB大容量記憶装置モジュールをロードすることを確認することです。これにより、内部ドライブが/dev/sdb
答え2
いいえハードドライブを特定の/dev/sd*
デバイスに強制的に接続してみてください。カーネルはこれらのデバイスを列挙し、起動するたびに異なる順序で初期化できます。邪魔しようとすると仕事が壊れるだけです。
代わりに、提供されたシンボリックリンクを使用して永続名を指定してください。これらの内容は/dev/disk/by-*
カタログにあります。ハードウェアを選択できます。道(例:一部のUSBデバイスの一部のUSBポート)普遍的に一意の識別子ボリュームに割り当てられ、ハードドライブがどこに接続されていても動作します。商標ボリュームに割り当ててtune2fs
簡単に覚えておくことができます。IDsはハードドライブのメーカーとモデルで構成されています。
ご希望の場所に使用してください/dev/sdk
。