Díky odpovědi @Affix, která mi dala správný směr, jak se vydat, jsem přišel na řešení problému.
Problém je určitě způsoben UDEV, jak jste uhodli. Problémem je tento řádek, který je ve většině souborů UDEV souvisejících s jednotkou cdrom.
Příklad
Na Fedoře 19 je následující soubor /usr/lib/udev/rules.d/60-cdrom_id.rules
. V tomto souboru je následující řádek, který kooptuje tlačítko pro vysunutí pro zařízení CD/DVD.
ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"
Tento problém můžete obejít a deaktivovat možnost UDEV kooptovat tlačítko pro vysunutí takto:
-
Vytvořte kopii souboru
60-cdrom_id.rules
$ sudo cp /usr/lib/udev/rules.d/60-cdrom_id.rules /etc/udev/rules.d/.
-
Upravte tuto zkopírovanou verzi souboru a zakomentujte řádek obsahující řetězec
DISK_EJECT_REQUEST
.$ sudoedit /etc/udev/rules.d/60-cdrom_id.rules
-
Uložte soubor a změna by měla být patrná okamžitě!
Výše uvedené řešení řeší problém pro oba eject
a cdctl
. Nyní tedy následující příkazy fungují podle očekávání:
uzamkněte disk
$ eject -i on /dev/sr0
eject: CD-Drive may NOT be ejected with device button
-or-
$ cdctl -o1
odemkněte disk
$ eject -i off /dev/sr0
eject: CD-Drive may be ejected with device button
-or-
$ cdctl -o0
Přidejte řádek:
DISC_EJECT_REQUEST
na CD ROM pravidla udev. To vám umožní uzamknout pomocí:
eject -i