¿Cómo desactivo el botón de expulsión de la unidad óptica de la computadora portátil y asigno la expulsión a un atajo de teclado?

8

Nota: La respuesta ahora se actualizó para funcionar bajo 19.04

Estoy en 14.04 y accidentalmente abro mi unidad de cd / dvd / bluray aproximadamente 20 veces al día. He visto algunas preguntas aquí que no proporcionaron ninguna solución de trabajo.

Tanto esta pregunta como esta pregunta parecen estar desactualizadas: la solución ofrecida no funciona.

Cuando lo hago, eject -i onme encuentro coneject: unable to find or open device for: 'cdrom'

Cuando lo hago, eject -i on /dev/sr0obtengo una respuesta más favorable: CD-Drive may NOT be ejected with device buttonsin embargo, el botón todavía está habilitado.

La información de /proc/sys/dev/cdrom/infosugiere que el bloqueo es posible:

CD-ROM information, Id: cdrom.c 3.20 2003/12/17

drive name:             sr0
drive speed:            24
drive # of slots:       1
Can close tray:         1
Can open tray:          1
Can lock tray:          1
Can change speed:       1
Can select disk:        0
Can read multisession:  1
Can read MCN:           1
Reports media changed:  1
Can play audio:         1
Can write CD-R:         1
Can write CD-RW:        1

Esta respuesta tiene una solución de trabajo que corrige una regla UDEV para permitir el bloqueo de la unidad. He agregado información práctica a la solución, lo que permite:

  • Deshabilite el botón de expulsión del hardware de la unidad óptica al inicio
  • Agregue un atajo de teclado para expulsar la unidad óptica
  • Asegúrese de que la unidad permanezca bloqueada después de despertarse de la suspensión
Insperatus
fuente
1
Me está funcionando. ¿has recargado las reglas de udev con "control udevadm --reload-rules" ???
solSTiCe

Respuestas:

11

Habilitar el bloqueo de la unidad

(nota: si eject -i onya funciona, puede pasar a "Bloquear la unidad al iniciar")

Primero, copie /lib/udev/rules.d/60-cdrom_id.rulespara /etc/udev/rules.d/gustar así:

cp /lib/udev/rules.d/60-cdrom_id.rules /etc/udev/rules.d/

A continuación, edite /etc/udev/rules.d/60-cdrom_id.rules y comente la línea problemática:

sudoedit /etc/udev/rules.d/60-cdrom_id.rules

Localiza esta línea:

ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"

Ahora agregue un #(esto "comenta" la línea, anulando efectivamente sin eliminar) al frente para que se vea así:

# ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"

Ahora guarde y cierre presionando Ctrl+ X, luego Ypara confirmar, seguido de Enterpara aceptar el nombre del archivo actual. No se preocupe que aparezca como un nombre de archivo temporal extraño, así es como funciona sudoedit.

Ahora debería poder desactivar el botón de hardware de la unidad óptica (esencialmente estamos bloqueando la unidad) con esto:

eject -i on /dev/sr0~ o ~ eject -i 1 /dev/sr0Hacen lo mismo.


Bloquee la unidad al iniciar

Para que esto sea más útil, quería que este comando surta efecto al inicio. Utilicé el programa GUI "Aplicaciones de inicio" (preinstalado en Ubuntu, lo encuentro con Dash) para lograr esto.

Abra el programa y luego haga clic en el botón "Agregar", se abrirá un nuevo cuadro de diálogo.

Escriba un nombre (fui con el descriptivo "Bloquear unidad óptica") y dentro del campo "Comando:" ingrese bash -c 'eject -i on /dev/sr0'

Haga clic en "Agregar" para completar y luego cierre el programa.


Agregar un atajo de teclado

Ahora la unidad óptica está bloqueada al inicio. Pero, ¿cómo abriré el disco cuando necesito usarlo? Para simplificarlo, puse los comandos en un método abreviado de teclado de "expulsión" que desbloquea la unidad, la expulsa y luego la vuelve a bloquear. De esta manera, todavía puedo acceder fácilmente a la unidad, pero el botón de hardware nunca es un problema.

Aquí le mostramos cómo lograr este atajo de teclado:

  • Abra el programa "Teclado" que se encuentra dentro del Tablero.
  • Haga clic en la pestaña "Accesos directos"
  • Haga clic en "Accesos directos personalizados" al final de la lista
  • Haga clic en el signo "+", se abrirá un nuevo cuadro de diálogo
  • Asigne un nombre al acceso directo (utilicé "Desbloquear, Expulsar, Recargar CD")
  • Ingrese esto en el campo "Comando:":

    bash -c 'eject -i off /dev/sr0 && eject /dev/sr0 && eject -i on /dev/sr0'
    
  • Haga clic en "Aplicar"

  • Haga clic a la derecha del nombre de su acceso directo donde dice "Deshabilitado". Una vez que hace clic en él, "Desactivado" cambia a "Nuevo acelerador":

    Presione la combinación de teclas que desea usar. Yo usé Ctrl+ Alt+E

Luego puede probar el acceso directo de inmediato. ¡Si todo está bien cerca y listo!


Bloquear unidad al despertar desde la suspensión (método pre-systemd)

Me di cuenta de que mi unidad se desbloquea nuevamente al reanudar la suspensión, por lo que creé un script para garantizar que la unidad permanezca bloqueada en este caso.

Crea el archivo de script:

sudoedit /usr/lib/pm-utils/sleep.d/99lock-optical

Pegue lo siguiente en el nuevo archivo:

#!/bin/sh
# lock the optical drive upon resume from suspend

case "${1}" in
    resume|thaw)
        eject -i 1 /dev/sr0    
;;
esac

Bloquear unidad al despertar desde la suspensión (método systemd)

Estoy usando 19.04 ahora y noté que mi unidad se desbloqueaba al reanudar la suspensión. Este método funciona para que permanezca bloqueado:

Crea el archivo de script:

sudoedit /lib/systemd/system-sleep/00start_my_connection

Pegue lo siguiente en el nuevo archivo:

 #!/bin/sh
 if [ $1 = post ]
 then eject -i 1 /dev/sr0
 fi

¡Guarde y cierre y ya está todo listo!

Insperatus
fuente
Bueno uno! (¡Y no hay necesidad de trucos tontos! ¡ Excelente! ) ¿Quieres que elimine el que tiene el pin?
Fabby
1
¡Gracias! Está bien que lo deje para personas sin otra solución. Es otro significado completo de "piratear" :)
Insperatus
Aparentemente, la suspensión revierte y desbloquea el disco nuevamente.
Insperatus
hay algo llamado "script de suspensión / activación" que se llama cuando se suspende / despierta. Le sugiero que agregue su solución allí también (no tengo la ruta absoluta al guión a mano, solo sé que existe)
Fabby
1
Sí, supuse lo mismo también. Verificando aquí y aquí las soluciones.
Insperatus
1

Para mí, la información aquí ayuda: https://bugs.launchpad.net/ubuntu/+source/eject/+bug/885051/comments/6

Edité el archivo en el directorio / lib / , no en / etc / Ahora en mi comando Ubuntu 14.04 funciona: eject -i 1 / dev / sr0

Dima
fuente
Lamentablemente esto no funciona para mí.
Insperatus
funcionó para mí (Ubuntu 14.04 en un ThinkPad T420, editó el archivo lib, como gonzo sugirió en el launchpad)
mondjunge
En realidad estaba arruinando la estructura del directorio, ¡estabas en el camino correcto con esta respuesta!
Insperatus
1

Si todo lo demás falla:

Tome un alfiler (no una aguja, ya que se lastimará), empújelo firmemente detrás del botón de la unidad de DVD y úselo como palanca para extraer el botón. Luego tome un pequeño trozo de plástico 1 mm más ancho y más grande que el orificio resultante, coloque un poco de pegamento y péguelo en el orificio con cuidado de no colocarlo sobre el pequeño orificio al lado .

De ahora en adelante, use los siguientes 2 métodos para abrir la unidad de DVD:

  1. Usa Ubuntu "Eject" a través del tablero
  2. Mantenga ese pin de vida alrededor de su PC a partir de ahora y empújelo en el pequeño orificio al lado de su pieza de plástico para expulsar el DVD cuando su computadora portátil esté apagada. (Use un trozo de cinta adhesiva para sujetar el pasador de seguridad a la parte inferior de su computadora portátil)
Fabby
fuente
1
Pero destruir mi unidad cdrom no es realmente lo que esperaría como respuesta a cómo bloquear la bandeja con SOFTWARE. Antes de hacer esto, incluso tomaría un pequeño trozo de cartón, cortaría un agujero con forma de botón y lo pegaría con cinta adhesiva sobre el botón de expulsión para que tocarlo accidentalmente, por ejemplo, con la rodilla, no lo active.
Byte Commander
@ByteCommander: por eso está el enorme "si todo lo demás falla" como título. Además, el póster original ya se rió y ya votó. Sin embargo, ¡creo que tu truco de vida también merece una respuesta! Si lo publicas como respuesta, ¡creo que obtendrás 2 votos a favor!
Fabby
Buen pensamiento, pero no puedo convertirlo y no quiero volver a escribirlo. Si ayuda a alguien, está bien. Y también puedes votar los comentarios. Por cierto, ¿cómo quieres saber que obtuviste tu voto del cartel de preguntas?
Byte Commander
@ByteCommander: Sin embargo, los comentarios de votación no te dan ningún representante. Solo votaré un comentario si no dejo otro comentario. Es como una palmada en la espalda. ¡Y un comentario adicional es como un gran abrazo! > :)
Fabby
@ByteCommander: Normalmente no sabes quién votó a favor / en contra, pero vi que entraba el voto a favor, fui a la pregunta, fui a la página de usuario de OP y vi "última actividad: 1 min". Entonces deduje que era él / ella / eso y también me dio una sonrisa.
Fabby
0

Pruebe esto para que el botón no se expulse:

  1. Abrir: Configuración del sistema > Teclado > Accesos directos > Sonido y medios

  2. Seleccione "Expulsar" y borre el acceso directo (presionando "Retroceso").

Puede usar la configuración de acceso directo para que haga algo más útil, como abrir una aplicación de uso común, bloquear la pantalla o restablecer su wifi.


Fuente:

Tengo una MacBook Pro con 14.04 y el botón de expulsión está justo encima de Eliminar / Retroceso, lo que hace que se presione fácilmente accidentalmente (es peor para MacBooks sin unidades de disco donde ese botón es para Encendido). Usé la configuración de acceso directo para hacer que el botón de expulsión bloquee mi computadora portátil. He usado esta solución desde 12.04 y todo lo demás.

maki57
fuente
Esto no funcionó para mí, ya que estoy presionando el botón en la unidad real y no un botón del teclado.
Insperatus
0

En este sitio encontré esta sugerencia si eject -i 1no funciona:
sudo echo 1 > /proc/sys/dev/cdrom/lockbloquear (0 en lugar de 1 para desbloquear)
También hay otras opciones discutidas.

Aquí hay un código fuente c corto que realiza otra opción: enlace (¡observe la corrección de errores para las versiones más nuevas en los comentarios superiores!)

Pero leí en otros foros que todos estos comandos de expulsión solo cambian el estado de bloqueo de la unidad cuando se inserta y monta un disco. La única solución parece ser una herramienta llamada cdctl, pero no es muy compatible con muchos sistemas, como estudié los comentarios.

Byte Commander
fuente