Fedora 14까지 cdctl
랩톱에서 CD / DVD 꺼내기 단추를 활성화 / 비활성화하는 데 성공적으로 사용 하고 있었습니다 (Thinkpad T410). 슬프게도 지금은 작동이 멈췄습니다.
이 두 가지 질문에서 논의 된 방법을 참고했습니다.
어느 것도 나를 위해 일한 적이 없습니다. 그래서 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을 반환하면 성공한 것입니다.
내 눈을 사로 잡은 것 중 하나 cdctl
는 상호 작용을 시도하는 장치 목록이었습니다 . 그래서 나는 "이 장치를 사용 eject
해보면 어떨까요?"
꺼내기 명령
몇 년 전에 사용했던 다른 명령 중 하나는 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 또는 다른 장치가 잠재적으로 장치의 소유권을 차단하거나 소유하고 있는지 궁금합니다.
생각?