sr0にアクセスするとトレイが閉じますが、CD / DVD / Blu-Rayがドライブとして選択された場合にエラーが返されるのはなぜですか?

sr0にアクセスするとトレイが閉じますが、CD / DVD / Blu-Rayがドライブとして選択された場合にエラーが返されるのはなぜですか?

ディストリビューション(オペレーティングシステム全体)と光学メディアドライブの製造元/モデル全体でこれらの動作を見たことがあります。 CD、DVD、および/またはBlu-rayドライブと同様に、トレイが開いている間にこれを試みると、トレイが閉じてopen() /dev/sr0終了が完了するまで通話がopen()ブロックされます。トレイが完全に閉じると、ドライブは「認識中」状態になり、ドライブがその中にあるメディアの種類(CD、DVD、Blu-rayなどがあるかどうか、どのレーザーを含めるべきか)を確認しようとします。使用)、これは通常数秒かかります。この間、open()デバイスへのすべての呼び出し(最初にトレイを閉じた呼び出しを含む)は、メディアなしエラーで失敗します。

別の方法:

  1. ユーザーはCDトレイを開き、ディスクを挿入します。

  2. 一部のコマンドを実行すると、読み取りまたは書き込み用に/ dev / sr0が開きます(たとえばmountddなどdvdbackup)。

  3. CDトレイが自動的に閉じ、トレイが完全に閉じるまでコマンドがブロックされます。

  4. トレイが完全に閉じると、コマンドはメディアがないことを報告して終了します。ドライブが新しくロードされたメディアを認識し始めます。
  5. ユーザーは、識別ステップが完了する前にコマンドを再実行しようとします(一部の「メディア付き」フラグはこの間設定されていないようです)。同じ「メディアなし」エラーのため、コマンドはすぐに失敗します。
  6. 数秒後、ドライブはメディアを読む準備ができます。
  7. ユーザーがコマンドを 3 番目に実行します。今回はコマンドが成功しました。

何が起こっているのかについての私の理論(これは単なる理論です):

  1. 上記の手順2では、Linuxはドライブに要求します。ドライブはトレイが開いていることを確認して閉じます。
  2. トレイが閉じられ、ドライブは認識フェーズに入ったことをオペレーティングシステムに報告します。おそらく「使用中」フラグを設定し、「メディアあり」をクリアするか、何をすべきかを知ることができます。
  3. Linuxは、「Media Present」フラグがクリアされたことを確認し、すぐにアプリケーションには関係がないことを報告します。

私の最初の質問はなぜこれが起こるのですか? Linuxが忙しいフラグをチェックしないのはなぜですか? Windowsではこれを行います(または少なくともそうです。一部のバージョンでは、この認識フェーズではカーソルの横にCDアイコンが表示されます)。 2番目の質問は、この問題を解決する方法はありますか?カーネルを完全に迂回せずにDVDドライブが認識段階であるか、実際にメディアがないかを知る方法はありますか?

ベストアンサー1

おすすめ記事