Hingga Fedora 14 saya berhasil menggunakan cdctl
untuk mengaktifkan / menonaktifkan tombol eject CD / DVD di laptop saya (Thinkpad T410). Sayangnya sudah berhenti bekerja sekarang.
Saya telah berkonsultasi dengan metode yang dibahas dalam 2 pertanyaan ini:
- nonaktifkan tombol cd / dvd di laptop linux (ubuntu)
- Nonaktifkan tombol DVD eject pada Thinkpad yang menjalankan Linux
Tidak ada yang berhasil untuk saya. Jadi saya kembali untuk cdctl
melihat apakah kita tidak bisa memperbaiki apa yang rusak dengannya, karena sudah lama bekerja.
Men-debug masalah
Jadi, mulai dengan cdctl
sakelar, saya perhatikan bahwa sebagian besar hal tampaknya berfungsi dengan baik.
Contohnya
Hal-hal ini berhasil.
mengeluarkan drive
$ cdctl -e
daftar kemampuan
$ 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
Menurut daftar itu cdctl
bahkan berpikir bahwa itu dapat mengaktifkan / menonaktifkan tombol eject.
Can disable eject : 1
Jadi saya melanjutkan dengan men-debug masalah.
Debugging cdctl
Jadi saya pikir mari kita lakukan strace
on cdctl
untuk melihat apakah itu dapat menjelaskan apa yang terjadi.
$ 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 +++
Anehnya sepertinya cdctl
berpikir itu menonaktifkan tombol.
$ strace cdctl -o1
ioctl(3, CDROM_LOCKDOOR, 0x1) = 0
$ strace cdctl -o0
ioctl(3, CDROM_LOCKDOOR, 0) = 0
CATATAN: Jika saya memahami hak ini, kembalinya 0 berarti berhasil.
Satu hal yang menarik perhatian saya di sini adalah daftar perangkat yang cdctl
berusaha berinteraksi. Jadi saya berpikir "bagaimana jika saya mencoba perangkat ini dengan eject
"?
perintah eject
Salah satu perintah lain yang saya gunakan bertahun-tahun yang lalu adalah eject
perintah untuk berinteraksi dengan perangkat CD / DVD. Saya perhatikan bahwa perintah ini juga sekarang memiliki saklar bernama serupa:
$ eject --help
-i, --manualeject <on|off> toggle manual eject protection on/off
Contoh
$ 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
Jadi eject
juga berpikir bahwa itu menonaktifkan tombol, namun itu juga tidak. Menggunakan di strace
sini saya melihat panggilan sistem yang sama:
$ 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
Jadi sekarang saya bertanya-tanya apakah UDEV atau sesuatu yang berpotensi memblokir atau mengambil kepemilikan perangkat?
Pikiran?
Jawaban:
Berkat jawaban @ Affix yang memberi saya arah yang tepat untuk menuju, saya telah menemukan solusi untuk masalah ini.
Masalahnya jelas disebabkan oleh UDEV seperti yang sudah Anda duga. Masalahnya adalah baris ini yang ada di sebagian besar file UDEV yang terkait dengan drive cdrom.
Contoh
Pada Fedora 19 ada file berikut
/usr/lib/udev/rules.d/60-cdrom_id.rules
,. Dalam file ini adalah baris berikut yang mengkooptasi tombol eject untuk perangkat CD / DVD.Anda dapat mengatasi masalah ini dan menonaktifkan kemampuan UDEV untuk mengkooptasi tombol eject dengan melakukan hal berikut:
Buat salinan file
60-cdrom_id.rules
Edit versi file yang disalin ini dan komentari baris yang berisi string
DISK_EJECT_REQUEST
,.Simpan file dan perubahannya akan segera terlihat!
Solusi di atas memperbaiki masalah untuk keduanya
eject
dancdctl
. Jadi sekarang perintah berikut berfungsi seperti yang diharapkan:kunci drive
buka kunci drive
sumber
/lib/
aturan. Saya menyalinnya ke/etc/udev/rules.d/
dan membuat versi override saya sendiri.udev
mengesampingkan perilaku yang diharapkan di tempat lain di Linux ... Tapi sekarang saya dapat membiarkan KDE menangani pengusiran yang disengaja dan berhenti mengkhawatirkan kecelakaan.Tambahkan baris:
ke aturan udev CD ROM. Ini akan memungkinkan Anda untuk mengunci dengan:
sumber
udev
? dll - jawaban yang buruk.