Gracias a la respuesta de @Affix, que me dio la dirección correcta, encontré la solución al problema.
El problema definitivamente es causado por UDEV como habrás adivinado. El problema es esta línea que está en la mayoría de los archivos UDEV relacionados con la unidad de cdrom.
Ejemplo
En Fedora 19 existe el siguiente archivo, /usr/lib/udev/rules.d/60-cdrom_id.rules
. En este archivo se encuentra la siguiente línea que está cooptando el botón de expulsión para dispositivos de CD/DVD.
ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"
Puede solucionar el problema y deshabilitar la capacidad de UDEV para cooptar el botón de expulsión haciendo lo siguiente:
-
Haz una copia del archivo
60-cdrom_id.rules
$ sudo cp /usr/lib/udev/rules.d/60-cdrom_id.rules /etc/udev/rules.d/.
-
Edite esta versión copiada del archivo y comente la línea que contiene la cadena,
DISK_EJECT_REQUEST
.$ sudoedit /etc/udev/rules.d/60-cdrom_id.rules
-
¡Guarde el archivo y el cambio debería notarse inmediatamente!
La solución anterior soluciona el problema tanto para eject
y cdctl
. Así que ahora los siguientes comandos funcionan como se esperaba:
bloquear la unidad
$ eject -i on /dev/sr0
eject: CD-Drive may NOT be ejected with device button
-or-
$ cdctl -o1
desbloquear la unidad
$ eject -i off /dev/sr0
eject: CD-Drive may be ejected with device button
-or-
$ cdctl -o0
Agregue la línea:
DISC_EJECT_REQUEST
a las reglas de CD ROM udev. Esto le permitirá bloquear con:
eject -i