注意:答案现已更新,可在 19.04 下使用
我使用的是 14.04 版本,每天会意外打开我的 cd/dvd/bluray 驱动器约 20 次。我查看了这里的几个问题,但没有提供可行的解决方案。
两个都这个问题和这个问题似乎已经过时了——提供的解决方案不起作用。
当我这样做的时候,eject -i on
我遇到了eject: unable to find or open device for: 'cdrom'
当我这样做时,eject -i on /dev/sr0
我得到了更有利的回应:CD-Drive may NOT be ejected with device button
但不幸的是该按钮仍然处于启用状态。
来自的信息/proc/sys/dev/cdrom/info
表明锁定是可能的:
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
这个答案有一个可行的解决方案,它修复了 UDEV 规则以启用锁定驱动器。我在解决方案中添加了一些实用信息,允许人们:
- 在启动时禁用光驱硬件弹出按钮
- 添加用于弹出光驱的键盘快捷键
- 确保驱动器从挂起状态唤醒后保持锁定状态
答案1
启用驱动器锁定
(注意:如果eject -i on
已经有效,您可以跳至“启动时锁定驱动器”)
首先,复制/lib/udev/rules.d/60-cdrom_id.rules
如下/etc/udev/rules.d/
:
cp /lib/udev/rules.d/60-cdrom_id.rules /etc/udev/rules.d/
接下来,编辑/etc/udev/rules.d/60-cdrom_id.rules
并注释掉有问题的行:
sudoedit /etc/udev/rules.d/60-cdrom_id.rules
找到这一行:
ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"
现在在前面添加一个#
(这会“注释掉”该行,实际上是使其无效而不是删除),使其看起来像这样:
# ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"
现在按Ctrl+保存并关闭X,然后Y按 确认,最后按Enter接受当前文件名。不用担心它会显示为一个奇怪的临时文件名,这就是 sudoedit 的工作方式。
现在您应该能够使用以下命令禁用光驱硬件按钮(本质上我们正在锁定驱动器):
eject -i on /dev/sr0
或者eject -i 1 /dev/sr0
他们做同样的事情。
启动时锁定驱动器
为了使其更有用,我希望此命令在启动时生效。我使用了 GUI启动应用程序程序(Ubuntu 预装,使用 Dash 找到它)来完成此操作。
打开程序,然后单击添加按钮,将打开一个新的对话框。
输入名称(我选择了描述性的“锁定光驱”),然后在命令:输入字段bash -c 'eject -i on /dev/sr0'
点击添加完成然后关闭程序。
添加键盘快捷键
现在光驱在启动时被锁定了。但是当我需要使用光驱时,我该如何打开它呢?!为了简单起见,我将命令放入“弹出”键盘快捷键中,该快捷键可解锁光驱,弹出光驱,然后重新锁定光驱。这样,我仍然可以轻松访问光驱,但硬件按钮永远不会成为问题。
以下是如何完成此键盘快捷键的方法:
打开键盘在 Dash 中找到的程序。
点击快捷方式标签
点击自定义快捷方式在列表底部
点击+签名后,将会打开一个新的对话框
命名快捷方式(我使用“解锁、弹出、重新锁定 CD”)
将其输入到命令:场地:
bash -c 'eject -i off /dev/sr0 && eject /dev/sr0 && eject -i on /dev/sr0'
点击申请
点击快捷方式名称右侧的已禁用。点击后,已禁用更改为新加速器:
按下要使用的组合键。我使用了Ctrl++AltE
然后您可以立即测试快捷方式。如果一切顺利,您就大功告成了!
挂起唤醒时锁定驱动器(预系统方法)
我注意到我的驱动器在从挂起状态恢复后再次被解锁,因此我创建了一个脚本来确保驱动器在这种情况下保持锁定状态。
创建脚本文件:
sudoedit /usr/lib/pm-utils/sleep.d/99lock-optical
将以下内容粘贴到新文件中:
#!/bin/sh
# lock the optical drive upon resume from suspend
case "${1}" in
resume|thaw)
eject -i 1 /dev/sr0
;;
esac
挂起唤醒时锁定驱动器(systemd 方法)
我现在正在使用 19.04,并注意到我的驱动器在从挂起状态恢复时被解锁。此方法可以使其保持锁定状态:
创建脚本文件:
sudoedit /usr/lib/systemd/system-sleep/00start_my_connection
将以下内容粘贴到新文件中:
#!/bin/sh
if [ $1 = post ]
then eject -i 1 /dev/sr0
fi
保存并关闭文件,使其可执行,一切就绪!
答案2
对我来说,这里的信息有帮助: https://bugs.launchpad.net/ubuntu/+source/eject/+bug/885051/comments/6
我编辑了文件/lib/目录中,不在/ETC/ 现在在我的 Ubuntu 14.04 中命令有效:eject -i 1 /dev/sr0
答案3
尝试以下方法让按钮不弹出:
打开:系统设置>键盘>快捷方式>声音和媒体
选择“弹出”并清除快捷方式(按“Backspace”键)。
您可以使用快捷方式设置使其执行更有用的操作,例如打开常用应用程序、锁定屏幕或重置 wifi。
来源:
我有一台运行 14.04 版的 MacBook Pro,弹出按钮就在 Delete/Backspace 键的正上方,因此很容易被意外按下(对于没有光驱的 MacBook 来说,情况更糟,因为那个按钮是电源键)。使用快捷方式设置让弹出按钮锁定我的笔记本电脑。从 12.04 版开始,以及其间的所有版本,我都使用过这个解决方案。