
Примечание: ответ теперь обновлен для работы в версии 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+ Alt+E
Затем вы можете немедленно проверить ярлык. Если все хорошо, закройте и все готово!
Блокировка диска при выходе из спящего режима (метод, реализованный до 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
Я отредактировал файл в/lib/каталог, не в/и т. д/ Теперь в моем Ubuntu 14.04 работает команда: eject -i 1 /dev/sr0
решение3
Попробуйте сделать так, чтобы кнопка не выдвигалась:
Открыть:Настройки системы>Клавиатура>Ярлыки>Звук и Медиа
Выберите «Извлечь» и удалите ярлык (нажав «Backspace»).
Вы можете использовать настройки сочетания клавиш, чтобы сделать что-то более полезное, например, открыть часто используемое приложение, заблокировать экран или сбросить настройки Wi-Fi.
Источник:
У меня MacBook Pro с 14.04, и кнопка извлечения находится прямо над Delete/Backspace, из-за чего ее легко нажать случайно (хуже с MacBook без дисководов, где эта кнопка используется для питания). Использовал настройки сочетания клавиш, чтобы кнопка извлечения блокировала мой ноутбук. Использовал это решение с 12.04 и со всех версий между ними.
решение4
На этомсайтЯ нашел это предложение, если eject -i 1
оно не работает:
sudo echo 1 > /proc/sys/dev/cdrom/lock
заблокировать (0 вместо 1 для разблокировки).
Также обсуждаются некоторые другие варианты.
Вот краткий исходный код на языке C, реализующий другой вариант:связь(обратите внимание на исправление ошибок для новых версий в верхних комментариях!)
Но я читал на некоторых других форумах, что все эти команды eject-commands только изменяют статус блокировки привода, когда диск вставлен и смонтирован. Похоже, единственным решением является инструмент под названием cdctl
, но он не очень совместим со многими системами, как я изучил комментарии.