CD-ROMがロードされていることを確認する必要があります。

CD-ROMがロードされていることを確認する必要があります。

ファイルを確認してみる/proc/sys/dev/cdrom/info

$ cat /proc/sys/dev/cdrom/info

CD-ROM information, Id: cdrom.c 3.20 2003/12/17

drive name:             sr0
drive speed:            1
drive # of slots:       1
Can close tray:         1
Can open tray:          1
Can lock tray:          1
Can change speed:       1
Can select disk:        0
Can read multisession:  1
Can read MCN:           1
Reports media changed:  1
Can play audio:         1
Can write CD-R:         1
Can write CD-RW:        1
Can read DVD:           1
Can write DVD-R:        1
Can write DVD-RAM:      1
Can read MRW:           1
Can write MRW:          1
Can write RAM:          1

CD-ROMがロードされていることを確認するために考慮する必要がある列が見つかりません。

私はインターネット検索でもファイルの値を確認するように言いましたが、/proc/sys/dev/cdrom/lock私の場合は1でした。これをどのように説明しますか?

それともこの情報を取得する他の方法はありますか?

答え1

私のテストによると、最良の方法は次のとおりです。

blockdev --getsize64 /dev/sr0

インストールは不要で、メディアが空であるかオーディオがあるかは関係ありません。

このエラーが発生した場合:

blockdev: cannot open /dev/sr0: No medium found

これは、CD-ROMがロードされていないことを意味します。出力がゼロ以上の数値(数字はバイトサイズを示す)の場合、CD-ROMがロードされます。

もちろん、ヘッド、ファイル、cd-info、その他のツール(cat、grep、sedを使用できますが、ディスク/メディアが空でない場合はあまり役に立ちません)を使用できますが、本質的に次のものが見つかります。エラー/「メディアが見つかりません」行を出力します(ファイルツールを除く)。

私が言ったように、最善の方法はblockdevです(私の考えでは)。しかし、必要に応じて、次のような他の方法を使用することもできます。

head -1 /dev/sr0

ターミナル出力なし - CD-ROMがロードされたがディスクが空であることを示します。
エラー行「メディアが見つかりません」 - CD-ROMがロードされていないことを意味します。
他のすべての端末出力(エラーを除く) - CD-ROMがロードされたことを示します。

cd-info

最短タイプライター。 「メディアが見つかりません」行を探します。メディアがロードされていないと思われる場合は、実際にはメディアがロードされたことを意味します。また、CD-ROMに関するその他の有用な情報も入手できます。

file -s /dev/sr0

ターミナル出力「/dev/sr0:書き込み可能、​​読み取り権限なし」はメディアがロードされていないことを示し、ターミナル出力「/dev/sr0:空」はメディアがロードされたが空であることを示します。

答え2

lockドライブからイジェクトボタン(存在する場合)が有効になっているかどうかを通知します。通常、Linuxでは、ディスクのインストール時にイジェクトボタンが無効になります。

何かを確認するためにはいオプティカルドライブに取り付けられたら、内容を確認し、マウント/etc/mtabポイント(たとえば/mnt/cdrom)またはオプティカルドライブデバイス(たとえば/dev/cdrom)を見つけることができます。

答え3

で「ID_CDROM_MEDIA」を確認してくださいudevadm info -q property /dev/cdrom。もちろん、これは、新しくインポートされたCDのドライブの初期化がしばらくして完了した場合にのみ機能します。

答え4

ドライブがロードされているか、空であるか、開いているか、準備ができていないかをテストするには、ioctl()呼び出しCDROM_DRIVE_STATUS(0x5326)を使用できます。これはDocumentation/userspace-api/ioctl/cdrom.rstLinuxカーネルソースコードに文書化されており、Documentation/cdrom/cdrom-standard.rstサンプルプログラムで使用されていますDocumentation/cdrom/ide-cd.rst。これは、インストールされているのか、再生しているのか、それ以外のものがあるのか​​を知らせず、何かがあるかどうかだけを伝えるものではありません。

これを行うプログラムが見つからなかったので、自分で書いた。この経験に基づいて、/sys/dev/block/をチェックしてみることもできます。基本:未成年者/inflight ドライブが「使用中」かどうかを決定します。最初から読み取るのに数秒かかることがあり、プロセス中にデバイスの電源を入れることもできないため、このチェックは実行する価値があります。

関連情報