Fedora 14までcdctl
、ラップトップ(Thinkpad T410)でCD / DVDイジェクトボタンを有効/無効にするのに成功していました。悲しいことに、今は機能しなくなっています。
次の2つの質問で説明されている方法を参照しました。
どれも私のために働いていません。それで、私cdctl
はそれが長い間働いているので、私たちがそれで壊れているものを修正できないかどうかを確認するために振り返ります。
問題のデバッグ
それで、cdctl
スイッチから始めて、私はほとんどのものがうまく働くように見えることに気付きます。
例
これらのことは機能します。
ドライブを取り出します
$ cdctl -e
リスト機能
$ cdctl -k
Tray close : 1
Tray open : 1
Can disable eject : 1
Selectable spin speed : 1
Is a jukebox : 0
Is multisession capable: 1
Can read the MCN (UPC) : 1
Can report media change: 1
Can play audio discs : 1
Can do a hard reset : 1
Can report drive status: 1
そのリストによればcdctl
、イジェクトボタンを有効/無効にできるとさえ考えています。
Can disable eject : 1
そこで、問題のデバッグを続けます。
cdctlのデバッグ
それで、私はそれが何が起こっているかについていくらかの光を当てることができるかどうかを確認するためにstrace
オンcdctl
にすることができると思います。
$ strace cdctl -o1
...
brk(0) = 0x1371000
open("/dev/cdrom", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/dev/cd", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/dev/scd0", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/dev/sr0", O_RDONLY|O_NONBLOCK) = 3
ioctl(3, CDROM_LOCKDOOR, 0x1) = 0
close(3) = 0
exit_group(0) = ?
+++ exited with 0 +++
奇妙なことにcdctl
、ボタンを無効にしているように思えます。
$ strace cdctl -o1
ioctl(3, CDROM_LOCKDOOR, 0x1) = 0
$ strace cdctl -o0
ioctl(3, CDROM_LOCKDOOR, 0) = 0
注:この権利を理解している場合、0が返されたことは成功したことを意味します。
ここで私の目を引いたものの1つは、cdctl
対話しようとしているデバイスのリストです。だから私は「これらのデバイスを試してみるとどうなる」と思ったのeject
ですか?
排出コマンド
私が何年も前に使用していた他のコマンドの1つは、eject
CD / DVDデバイスと対話するコマンドでした。このコマンドにも同様の名前のスイッチがあることに気付きました。
$ eject --help
-i, --manualeject <on|off> toggle manual eject protection on/off
例
$ eject -i 1 /dev/sr0
eject: CD-Drive may NOT be ejected with device button
$ eject -i 0 /dev/sr0
eject: CD-Drive may be ejected with device button
だから、eject
あまりにも、それはボタンを無効だと思って、まだそれはどちらかではありません。strace
ここを使用すると、同じシステムコールが表示されます。
$ strace eject -i 1 /dev/sr0 |& grep ioctl
ioctl(3, CDROM_LOCKDOOR, 0x1) = 0
$ strace eject -i 0 /dev/sr0 |& grep ioctl
ioctl(3, CDROM_LOCKDOOR, 0) = 0
だから今、私はUDEVまたは他の何かが潜在的にデバイスのブロックまたは所有権を奪っているのだろうかと思っていますか?
考え?