Grazie alla risposta di @Affix che mi ha dato la giusta direzione da seguire, ho trovato la soluzione al problema.
Il problema è sicuramente causato da UDEV come hai indovinato. Il problema è questa riga che si trova nella maggior parte dei file UDEV relativi all'unità cdrom.
Esempio
Su Fedora 19 c'è il seguente file, /usr/lib/udev/rules.d/60-cdrom_id.rules
. In questo file c'è la riga seguente che sta cooptando il pulsante di espulsione per i dispositivi CD/DVD.
ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"
Puoi aggirare il problema e disabilitare la capacità di UDEV di cooptare il pulsante di espulsione procedendo come segue:
-
Crea una copia del file
60-cdrom_id.rules
$ sudo cp /usr/lib/udev/rules.d/60-cdrom_id.rules /etc/udev/rules.d/.
-
Modifica questa versione copiata del file e commenta la riga contenente la stringa
DISK_EJECT_REQUEST
.$ sudoedit /etc/udev/rules.d/60-cdrom_id.rules
-
Salva il file e la modifica dovrebbe essere immediatamente visibile!
La soluzione precedente risolve il problema per entrambi eject
e cdctl
. Quindi ora i seguenti comandi funzionano come previsto:
blocca l'unità
$ eject -i on /dev/sr0
eject: CD-Drive may NOT be ejected with device button
-or-
$ cdctl -o1
sblocca l'unità
$ eject -i off /dev/sr0
eject: CD-Drive may be ejected with device button
-or-
$ cdctl -o0
Aggiungi la riga:
DISC_EJECT_REQUEST
alle regole udev del CD ROM. Questo ti permetterà di bloccare con:
eject -i