ฉันจะปิดการใช้งานปุ่มนำไดรฟ์ออปติคัลไดรฟ์แล็ปท็อปและกำหนด eject ไปยังแป้นพิมพ์ลัดได้อย่างไร


8

หมายเหตุ: คำตอบตอนนี้ปรับปรุงการทำงานภายใต้ 19.04

ฉันใช้เวลา 14.04 และเปิดไดรฟ์ซีดี / ดีวีดี / เบลอโดยไม่ได้ตั้งใจประมาณวันละ 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
มันใช้งานได้สำหรับฉัน คุณได้รีโหลดกฎ udev ด้วย "udevadm control --reload-rules" ???
solsTiCe

คำตอบ:


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/

ถัดไปแก้ไข /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 "Startup Applications" (ติดตั้งไว้ใน Ubuntu แล้วพบกับ Dash) เพื่อทำสิ่งนี้ให้สำเร็จ

เปิดโปรแกรมแล้วคลิกปุ่ม "เพิ่ม" กล่องโต้ตอบใหม่จะเปิดขึ้น

พิมพ์ชื่อ (ฉันไปพร้อมกับคำอธิบาย "ล็อคออปติคัลไดรฟ์") และภายในช่อง "Command:" bash -c 'eject -i on /dev/sr0'

คลิก "เพิ่ม" เพื่อเสร็จสิ้นแล้วปิดโปรแกรม


เพิ่มแป้นพิมพ์ลัด

ตอนนี้ออปติคัลไดรฟ์ถูกล็อคเมื่อเริ่มต้น แต่ฉันจะเปิดไดรฟ์เมื่อฉันจำเป็นต้องใช้มันได้อย่างไร! เพื่อให้ง่ายฉันใส่คำสั่งลงในแป้นพิมพ์ลัด "eject" ซึ่งปลดล็อกไดรฟ์เลื่อนไดรฟ์ออกจากนั้นใส่ไดรฟ์อีกครั้ง วิธีนี้ฉันยังคงสามารถเข้าถึงไดรฟ์ได้อย่างง่ายดาย แต่ปุ่มฮาร์ดแวร์ไม่เคยมีปัญหา

นี่คือวิธีการใช้แป้นพิมพ์ลัดนี้:

  • เปิดโปรแกรม "Keyboard" ที่พบใน Dash
  • คลิกแท็บ "ทางลัด"
  • คลิกที่ "ทางลัดที่กำหนดเอง" ที่ด้านล่างของรายการ
  • คลิกที่เครื่องหมาย "+" กล่องข้อความใหม่จะเปิดขึ้น
  • ตั้งชื่อทางลัด (ฉันใช้ "Unlock, Eject, Relock CD")
  • ป้อนสิ่งนี้ลงในฟิลด์ "Command:":

    bash -c 'eject -i off /dev/sr0 && eject /dev/sr0 && eject -i on /dev/sr0'
    
  • คลิก "สมัคร"

  • คลิกทางด้านขวาของชื่อทางลัดของคุณที่มีข้อความว่า "Disabled" เมื่อคุณคลิกแล้ว "ปิดการใช้งาน" จะเปลี่ยนเป็น "เครื่องมือเร่งความเร็วใหม่":

    กดคีย์ผสมที่คุณต้องการใช้ ฉันใช้Ctrl+ Alt+E

จากนั้นคุณสามารถทดสอบทางลัดได้ทันที หากทั้งหมดอยู่ใกล้และคุณทำเสร็จแล้ว!


ล็อคไดรฟ์เมื่อตื่นจากการระงับ (วิธี pre-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 method)

ฉันใช้ 19.04 ในตอนนี้และสังเกตเห็นว่าไดรฟ์ของฉันถูกปลดล็อคเมื่อกลับมาทำงานจากการหยุดชั่วคราว วิธีนี้ใช้เพื่อทำให้ล็อคอยู่:

สร้างไฟล์สคริปต์:

sudoedit /lib/systemd/system-sleep/00start_my_connection

วางสิ่งต่อไปนี้ลงในไฟล์ใหม่:

 #!/bin/sh
 if [ $1 = post ]
 then eject -i 1 /dev/sr0
 fi

บันทึกและปิดและคุณพร้อมแล้ว!


สิ่งที่ดี! (และไม่จำเป็นต้องแฮ็กชีวิตโง่! ยอดเยี่ยม! ) คุณต้องการให้ฉันลบหนึ่งด้วยหมุด?
Fabby

1
ขอบคุณ! มันโอเคกับฉันที่จะทิ้งไว้ให้คนที่ไม่มีวิธีอื่น เป็นอีกความหมายทั้งหมดของ "แฮ็ค" :)
Insperatus

เห็นได้ชัดว่าการระงับเป็นการยกเลิกและปลดล็อคไดรฟ์อีกครั้ง
Insperatus

มีบางสิ่งที่เรียกว่า "สคริปต์หยุดชั่วคราว / ปลุก" ที่ถูกเรียกเมื่อหยุดชั่วคราว / ตื่นขึ้นมา ฉันขอแนะนำให้คุณเพิ่มวิธีแก้ไขปัญหาของคุณที่นั่นเช่นกัน (ฉันไม่มีเส้นทางที่แน่นอนไปยังสคริปต์สะดวกเพียงแค่รู้ว่ามันมีอยู่จริง)
Fabby

1
ใช่ฉันคิดว่ามากเช่นกัน ตรวจสอบที่นี่และที่นี่สำหรับการแก้ปัญหา
Insperatus

1

สำหรับฉันข้อมูลที่นี่ช่วย: https://bugs.launchpad.net/ubuntu/+source/eject/+bug/885051/comments/6

ฉันแก้ไขไฟล์ในไดเรกทอรี/ lib /ไม่ได้อยู่ใน/ etc / ตอนนี้ในคำสั่ง Ubuntu 14.04 ของฉันทำงาน: eject -i 1 / dev / sr0


น่าเสียดายที่นี่ไม่ได้ผลสำหรับฉัน
Insperatus

ทำงานได้สำหรับฉัน (Ubuntu 14.04 บน ThinkPad T420, แก้ไขไฟล์ lib, เช่น gonzo แนะนำบน launchpad)
mondjunge

จริงๆแล้วฉันกำลังไขโครงสร้างไดเรกทอรีคุณกำลังติดตามด้วยคำตอบนี้!
Insperatus

1

หากทั้งหมดล้มเหลว:

ใช้ขา (ไม่ใช่เข็มในขณะที่คุณจะทำร้ายตัวเอง) ดันมันไว้ด้านหลังปุ่มบนไดรฟ์ DVD และใช้เป็นคันโยกเพื่อดึงปุ่มออก จากนั้นนำชิ้นเล็ก ๆ ของ 1mm พลาสติกที่กว้างขึ้นและมีขนาดใหญ่แล้วหลุมที่เกิดใส่กาวซุปเปอร์บางอย่างเกี่ยวกับมันและกาวมันในหลุมที่ดูแลไม่ใส่มันมากกว่าขนาดเล็กหลุมถัดไป

จากนี้ไปใช้วิธีการ 2 วิธีต่อไปนี้เพื่อเปิดไดรฟ์ดีวีดี:

  1. ใช้ Ubuntu "Eject" ผ่านทางเส้นประ
  2. เก็บหมุดแฮ็กที่มีชีวิตไว้รอบพีซีของคุณต่อจากนี้ไปแล้วดันเข้าไปในรูเล็ก ๆถัดจากชิ้นส่วนพลาสติกของคุณเพื่อขับ DVD ออกเมื่อแล็ปท็อปของคุณถูกปิด (ใช้เทปกาวหนึ่งชิ้นเพื่อตรึงเข็มแฮ็คที่ติดกับด้านล่างของแล็ปท็อปของคุณ)

1
แต่การทำลายไดรฟ์ซีดีรอมของฉันไม่ใช่สิ่งที่ฉันคาดหวังว่าจะเป็นคำตอบสำหรับวิธีการล็อคถาดซอฟต์แวร์! ก่อนที่จะทำสิ่งนี้ฉันจะเอากระดาษแข็งชิ้นเล็ก ๆ มาตัดเป็นรูปรูเหมือนปุ่มที่มันแล้วแปะมันไว้เหนือปุ่มดีดแผ่นเพื่อให้มันสัมผัสโดยไม่ตั้งใจเช่นที่เข่าของคุณไม่ทำให้มันเกิดขึ้น
ผู้บัญชาการไบต์

@ ByteCommander: นั่นเป็นเหตุผลที่มีขนาดใหญ่ "ถ้าทุกคนอื่นล้มเหลว" เป็นชื่อ นอกจากนี้โปสเตอร์ต้นฉบับได้หัวเราะออกมาแล้วและได้รับการสนับสนุนแล้ว อย่างไรก็ตามฉันคิดว่าการแฮ็คชีวิตของคุณก็คุ้มค่ากับคำตอบเช่นกัน! หากคุณโพสต์ไว้เป็นคำตอบฉันคิดว่าคุณจะได้รับ 2 upvotes!
Fabby

เป็นความคิดที่ดี แต่ฉันไม่สามารถแปลงได้และฉันไม่ต้องการที่จะเขียนอีกครั้ง ถ้ามันช่วยใครก็โอเค และคุณสามารถโหวตความคิดเห็นได้เช่นกัน โดยวิธีการที่คุณต้องการที่จะรู้ว่าคุณได้รับการโหวตจากโปสเตอร์คำถามของคุณ?
ผู้บัญชาการ Byte

@ByteCommander: การแสดงความคิดเห็นการลงคะแนนไม่ได้รับตัวแทนใด ๆ ฉันโหวตความคิดเห็นเท่านั้นหากฉันไม่ได้แสดงความคิดเห็นอีก มันเหมือนตบหลัง และความคิดเห็นเพิ่มเติมก็เหมือนกอดใหญ่! > :)
Fabby

@ByteCommander: โดยปกติแล้วคุณไม่ทราบว่าใครขึ้น / ลงโหวต แต่ฉันเห็น upvote เข้ามาไปคำถามไปที่หน้าผู้ใช้ OP และเห็น "กิจกรรมล่าสุด: 1 นาที" ดังนั้นฉันจึงอนุมานได้ว่าเขา / เธอ / มันและมันก็ทำให้ฉันยิ้มได้เช่นกัน
Fabby

0

ลองใช้วิธีนี้เพื่อทำให้ปุ่มไม่เลื่อนออก:

  1. เปิด: การตั้งค่าระบบ > คีย์บอร์ด > ทางลัด > เสียงและสื่อ

  2. เลือก "Eject" และล้างทางลัด (โดยการกด "Backspace")

คุณสามารถใช้การตั้งค่าทางลัดเพื่อทำสิ่งที่มีประโยชน์มากกว่าแทนเช่นเปิดแอปพลิเคชันที่ใช้กันทั่วไปล็อคหน้าจอหรือรีเซ็ต wifi


ที่มา:

ฉันมี MacBook Pro ที่ทำงาน 14.04 และปุ่มนำออกอยู่ด้านบนของ Delete / Backspace ซึ่งทำให้กดได้ง่ายโดยไม่ตั้งใจ (แย่กว่าสำหรับ MacBooks โดยไม่มีดิสก์ไดรฟ์ที่ปุ่มนั้นมีไว้สำหรับ Power แทน) ใช้การตั้งค่าทางลัดเพื่อทำให้ปุ่มนำแผ่นออกล็อคแล็ปท็อปของฉันแทน ได้ใช้วิธีแก้ปัญหานี้ตั้งแต่ 12.04 และทุกสิ่งในระหว่าง


สิ่งนี้ไม่ได้ผลสำหรับฉันเนื่องจากฉันกดปุ่มบนไดรฟ์จริงไม่ใช่ปุ่มแป้นพิมพ์
Insperatus

0

ในเว็บไซต์นี้ฉันพบข้อเสนอแนะนี้หากeject -i 1ไม่ได้ผล:
sudo echo 1 > /proc/sys/dev/cdrom/lockเพื่อล็อค (0 แทนที่จะเป็น 1 เพื่อปลดล็อค)
มีตัวเลือกอื่น ๆ ให้เลือกเช่นกัน

นี่คือซอร์สโค้ดสั้น ๆ ที่มีตัวเลือกอื่น: ลิงค์ (สังเกตการแก้ไขข้อผิดพลาดสำหรับเวอร์ชั่นที่ใหม่กว่าในความคิดเห็นส่วนบน!)

แต่ฉันอ่านในฟอรั่มอื่น ๆ ว่าคำสั่งนำออกทั้งหมดเหล่านี้จะเปลี่ยนสถานะการล็อคของไดรฟ์เมื่อใส่ดิสก์และติดตั้งแล้วเท่านั้น ทางออกเดียวที่ดูเหมือนจะเป็นเครื่องมือที่เรียกว่าcdctlแต่มันเข้ากันไม่ได้กับหลาย ๆ ระบบในขณะที่ฉันศึกษาความคิดเห็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.