OpenSuse USB HDD 内部 HDD のデバイスノード名「/dev/sdb」を取得します。

OpenSuse USB HDD 内部 HDD のデバイスノード名「/dev/sdb」を取得します。

オペレーティングシステム:OpenSuse Leap 42.2、カーネル4.4.76-1 - デフォルト

次の質問があります。

実行時にUSBストレージデバイスを接続すると、割り当てられたデバイスノード名を取得するのに問題/dev/sdkありません。

外部 USB ドライブが接続された状態でコンピュータを再起動すると、オペレーティングシステムは、/dev/sdbUSB ストレージデバイスが内蔵ハードドライブである必要がある場合にそのデバイスに接続することを決定します。

外部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

関連情報