
Nota: Resposta agora atualizada para funcionar em 19.04
Estou no 14.04 e acidentalmente abro minha unidade de CD/DVD/Bluray cerca de 20 vezes por dia. Analisei algumas perguntas aqui que não forneceram nenhuma solução funcional.
Ambosessa questãoeessa questãoparecem estar desatualizados – a solução oferecida não funciona.
Quando eu faço isso, eject -i on
me deparo comeject: unable to find or open device for: 'cdrom'
Quando faço isso, eject -i on /dev/sr0
recebo uma resposta mais favorável: CD-Drive may NOT be ejected with device button
porém, infelizmente, o botão ainda está ativado.
As informações de /proc/sys/dev/cdrom/info
sugerem que o bloqueio é possível:
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 respostatem uma solução funcional que corrige uma regra UDEV para permitir o bloqueio da unidade. Adicionei algumas informações práticas à solução, permitindo:
- Desative o botão de ejeção de hardware da unidade óptica na inicialização
- Adicione um atalho de teclado para ejetar a unidade óptica
- Certifique-se de que a unidade permaneça bloqueada após sair da suspensão
Responder1
Habilite o bloqueio da unidade
(nota: se eject -i on
já funcionar, você pode pular para "Bloquear a unidade na inicialização")
Primeiro, copie /lib/udev/rules.d/60-cdrom_id.rules
para /etc/udev/rules.d/
assim:
cp /lib/udev/rules.d/60-cdrom_id.rules /etc/udev/rules.d/
Em seguida, edite /etc/udev/rules.d/60-cdrom_id.rules
e comente a linha problemática:
sudoedit /etc/udev/rules.d/60-cdrom_id.rules
Localize esta linha:
ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"
Agora adicione um #
(isso "comenta" a linha, anulando-a efetivamente sem excluí-la) na frente para que fique assim:
# ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"
Agora salve e feche pressionando Ctrl+ X, depois Ypara confirmar, seguido de Enterpara aceitar o nome do arquivo atual. Não se preocupe se ele aparecer como um nome de arquivo temporário estranho, é assim que o sudoedit funciona.
Agora você deve conseguir desabilitar o botão de hardware da unidade óptica (essencialmente estamos bloqueando a unidade) com isto:
eject -i on /dev/sr0
ou eject -i 1 /dev/sr0
Eles fazem o mesmo.
Bloqueie a unidade na inicialização
Para tornar isso mais útil, eu queria que este comando entrasse em vigor na inicialização. Eu usei a GUIAplicativos de inicializaçãoprograma (pré-instalado no Ubuntu, encontre-o com Dash) para fazer isso.
Abra o programa e clique no botãoAdicionarbotão, uma nova caixa de diálogo é aberta.
Digite um nome (usei a descrição "Bloquear unidade óptica") e dentro doComando:campo entrarbash -c 'eject -i on /dev/sr0'
CliqueAdicionarpara concluir e feche o programa.
Adicionar um atalho de teclado
Agora a unidade óptica está bloqueada na inicialização. Mas como vou abrir o drive quando precisar utilizá-lo?! Para simplificar, coloquei os comandos em um atalho de teclado "ejetar" que desbloqueia a unidade, ejeta a unidade e trava novamente a unidade. Dessa forma, ainda posso acessar facilmente a unidade, mas o botão de hardware nunca é um problema.
Veja como realizar este atalho de teclado:
Abra oTecladoprograma encontrado no Dash.
Clique noAtalhosaba
Clique emAtalhos personalizadosno final da lista
Clique no+assinar, uma nova caixa de diálogo será aberta
Nomeie o atalho (usei "Desbloquear, Ejetar, Rebloquear CD")
Insira isso noComando:campo:
bash -c 'eject -i off /dev/sr0 && eject /dev/sr0 && eject -i on /dev/sr0'
CliqueAplicar
Clique à direita do nome do seu atalho, onde dizDesabilitado. Depois de clicar nele,Desabilitadomuda paraNovo acelerador:
Pressione a combinação de teclas que deseja usar. Eu usei Ctrl+ Alt+E
Você pode então testar o atalho imediatamente. Se tudo estiver bem perto e pronto!
Bloquear unidade ao acordar da suspensão (método pré-systemd)
Percebi que minha unidade é desbloqueada novamente ao retomar da suspensão, então criei um script para garantir que a unidade permaneça bloqueada nesse caso.
Crie o arquivo de script:
sudoedit /usr/lib/pm-utils/sleep.d/99lock-optical
Cole o seguinte no novo arquivo:
#!/bin/sh
# lock the optical drive upon resume from suspend
case "${1}" in
resume|thaw)
eject -i 1 /dev/sr0
;;
esac
Bloquear unidade ao acordar da suspensão (método systemd)
Estou usando o 19.04 agora e percebi que minha unidade estava sendo desbloqueada ao retomar da suspensão. Este método funciona para mantê-lo bloqueado:
Crie o arquivo de script:
sudoedit /usr/lib/systemd/system-sleep/00start_my_connection
Cole o seguinte no novo arquivo:
#!/bin/sh
if [ $1 = post ]
then eject -i 1 /dev/sr0
fi
Salve e feche o arquivo, torne-o executável e pronto!
Responder2
Para mim, as informações aqui ajudam: https://bugs.launchpad.net/ubuntu/+source/eject/+bug/885051/comments/6
Eu editei o arquivo em/lib/diretório, não em/etc/ Agora no meu Ubuntu 14.04 o comando funciona: eject -i 1 /dev/sr0
Responder3
Tente isto para que o botão não seja ejetado:
Abrir:Configurações de sistema>Teclado>Atalhos>Som e mídia
Selecione “Ejetar” e limpe o atalho (pressionando “Backspace”).
Você pode usar as configurações de atalho para fazer algo mais útil, como abrir um aplicativo comumente usado, bloquear a tela ou redefinir o wifi.
Fonte:
Eu tenho um MacBook Pro rodando 14.04 e o botão de ejetar está bem em cima de Delete/Backspace, o que o torna facilmente pressionado acidentalmente (é pior para MacBooks sem unidades de disco, onde esse botão é para Power). Usei as configurações de atalho para fazer com que o botão de ejeção bloqueasse meu laptop. Usei esta solução desde 12.04 e tudo mais.
Responder4
NistositeEncontrei esta sugestão se eject -i 1
não funcionar:
sudo echo 1 > /proc/sys/dev/cdrom/lock
para bloquear (0 em vez de 1 para desbloquear).
Existem algumas outras opções discutidas também.
Aqui está um pequeno código-fonte c executando outra opção:link(observe a correção de bug para versões mais recentes nos comentários superiores!)
Mas li em alguns outros fóruns que todos esses comandos de ejeção apenas alteram o status de bloqueio da unidade quando um disco é inserido e montado. A única solução parece ser uma ferramenta chamada cdctl
, mas não é muito compatível com muitos sistemas, conforme estudei os comentários.