
注意:答案現已更新,可在 19.04 下運行
我現在是 14.04,每天不小心打開我的 CD/DVD/藍光光碟機大約 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
他們也做同樣的事情。
啟動時鎖定驅動器
為了使其更有用,我希望該命令在啟動時生效。我使用了圖形使用者介面啟動應用程式程式(預先安裝在 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
然後您可以立即測試快捷方式。如果一切順利,那麼你就完成了!
從掛起狀態喚醒時鎖定驅動器(預 systemd 方法)
我注意到我的驅動器在從掛起狀態恢復後再次解鎖,因此我創建了一個腳本來確保驅動器在這種情況下保持鎖定狀態。
建立腳本檔案:
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
我編輯了文件/庫/目錄,不在/ETC/ 現在在我的 Ubuntu 14.04 命令中有效:彈出 -i 1 /dev/sr0
答案3
嘗試以下方法使按鈕不彈出:
打開:系統設定>鍵盤>快速方式>聲音與媒體
選擇“彈出”並清除快捷方式(按“退格鍵”)。
您可以使用快捷方式設定來讓它執行一些更有用的操作,例如打開常用的應用程式、鎖定螢幕或重置 wifi。
來源:
我有一台運行 14.04 的 MacBook Pro,彈出按鈕位於刪除/退格鍵的正上方,這使得它很容易被意外按下(對於沒有光碟機的 MacBook 來說情況更糟,因為該按鈕用於電源)。使用快捷方式設定使彈出按鈕鎖定我的筆記型電腦。從 12.04 開始以及其間的所有版本都使用此解決方案。