注意:答案现已更新,可在 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
Run Code Online (Sandbox Code Playgroud)
这个答案有一个可行的解决方案,它修复了 UDEV 规则以启用锁定驱动器。我在解决方案中添加了一些实用信息,允许人们:
Ins*_*tus 11
(注意:如果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/
Run Code Online (Sandbox Code Playgroud)
接下来,编辑 /etc/udev/rules.d/60-cdrom_id.rules 并注释掉有问题的行:
sudoedit /etc/udev/rules.d/60-cdrom_id.rules
Run Code Online (Sandbox Code Playgroud)
找到这一行:
ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"
Run Code Online (Sandbox Code Playgroud)
现在#在前面添加一个(这个“注释掉”该行,有效地使其无效而不删除)使其看起来像这样:
# ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"
Run Code Online (Sandbox Code Playgroud)
现在按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'
单击“添加”完成,然后关闭程序。
现在光驱在启动时被锁定。但是当我需要使用它时,我将如何打开它?!为简单起见,我将命令放入“弹出”键盘快捷键中,该快捷键可解锁驱动器、弹出驱动器,然后重新锁定驱动器。这样我仍然可以轻松访问驱动器,但硬件按钮从来都不是问题。
以下是完成此键盘快捷键的方法:
在“命令:”字段中输入:
bash -c 'eject -i off /dev/sr0 && eject /dev/sr0 && eject -i on /dev/sr0'
Run Code Online (Sandbox Code Playgroud)点击“申请”
单击快捷方式名称右侧的“已禁用”。单击它后,“禁用”将更改为“新加速器”:
按您要使用的组合键。我用Ctrl+ Alt+E
然后您可以立即测试快捷方式。如果一切顺利,你就大功告成了!
我注意到我的驱动器在从挂起恢复时再次解锁,因此我创建了一个脚本以确保在这种情况下驱动器保持锁定状态。
创建脚本文件:
sudoedit /usr/lib/pm-utils/sleep.d/99lock-optical
Run Code Online (Sandbox Code Playgroud)
将以下内容粘贴到新文件中:
cp /lib/udev/rules.d/60-cdrom_id.rules /etc/udev/rules.d/
Run Code Online (Sandbox Code Playgroud)
我现在使用的是 19.04,并注意到我的驱动器在从挂起状态恢复时被解锁。此方法可使其保持锁定状态:
创建脚本文件:
sudoedit /lib/systemd/system-sleep/00start_my_connection
Run Code Online (Sandbox Code Playgroud)
将以下内容粘贴到新文件中:
#!/bin/sh
if [ $1 = post ]
then eject -i 1 /dev/sr0
fi
Run Code Online (Sandbox Code Playgroud)
保存并关闭,一切就绪!