ファイルを確認してみる/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.rst
Linuxカーネルソースコードに文書化されており、Documentation/cdrom/cdrom-standard.rst
サンプルプログラムで使用されていますDocumentation/cdrom/ide-cd.rst
。これは、インストールされているのか、再生しているのか、それ以外のものがあるのかを知らせず、何かがあるかどうかだけを伝えるものではありません。
これを行うプログラムが見つからなかったので、自分で書いた。この経験に基づいて、/sys/dev/block/をチェックしてみることもできます。基本:未成年者/inflight ドライブが「使用中」かどうかを決定します。最初から読み取るのに数秒かかることがあり、プロセス中にデバイスの電源を入れることもできないため、このチェックは実行する価値があります。