ฉันจะสร้าง / dev / dvd อย่างถูกต้องได้อย่างไร?


10

บางโปรแกรมจะค้นหา/dev/dvdตามค่าเริ่มต้นเพื่อค้นหาดีวีดี เมื่อฉันบูตคอมพิวเตอร์ครั้งแรกโดยไม่ใส่แผ่นดีวีดี/dev/dvdมีอยู่และชี้ไปยังตำแหน่งที่ถูกต้อง ( /dev/sr0) อย่างไรก็ตามเมื่อฉันใส่แผ่นดีวีดี/dev/dvdหายไป ฉันต้องการให้มันติดอยู่รอบ ๆ ดังนั้นฉันไม่จำเป็นต้องไปที่/dev/sr0โปรแกรมที่กำลังมองหาดีวีดี ฉันจะมั่นใจได้อย่างไรว่า/dev/dvdsymlink มีอยู่และชี้ไปยังที่ที่ถูกต้อง

ดูเหมือนว่าฉันสามารถเพิ่มบางสิ่ง/etc/udev/rules.d/70-persistent-cd.rulesได้ ไซต์นี้มีตัวอย่างสองสามตัวอย่าง แต่70-persistent-cd.rulesไฟล์แจ้งว่า "เพิ่มการตั้งค่าสถานะ ENV {GENERATED} = 1 ให้กับกฎของคุณ" ซึ่งไม่ได้เป็นส่วนหนึ่งของตัวอย่าง man 7 udevหน้าไม่ยอมรับให้ฉันและฉันไม่เชื่อว่าหน้าที่เชื่อมโยงให้ 100% ของข้อมูลที่ฉันต้องการ

ดังนั้นฉันจะทำอะไรได้บ้างในระบบ Ubuntu 12.04 (หรือใหม่กว่า) ที่ทันสมัยเพื่อให้/dev/dvdมีอยู่เสมอและชี้ไปที่อุปกรณ์ที่เหมาะสม

แก้ไข: มันง่ายเหมือนการเพิ่มENV{GENERATED}=1กฎในหน้าเชื่อมโยงอะไรเช่นนี้:

SUBSYSTEM=="block", KERNEL=="sr0", SYMLINK+="dvd", GROUP="cdrom", ENV{GENERATED}=1

นั่นเป็นข้อมูลที่ถูกต้องสำหรับ Ubuntu ที่ทันสมัยใช่ไหม อะไรคือสิ่งที่ENV{GENERATED}ทำที่นั่นเมื่อมันไม่ได้สร้าง แต่ที่เขียนด้วยมือ?


ฉันพบปัญหาเดียวกันกับ Dell Inspiron 660 หวังว่าจะมีคำตอบที่ดีกว่าสำหรับปัญหานี้
Cerin

คำตอบ:


8

บทช่วยสอนนี้อธิบายวิธีการทำสิ่งที่คุณต้องการได้ดีมาก:

มีสองวิธีในการสร้าง symlink คนแรกคือการใช้ชื่อรุ่นและหมายเลขซีเรียล:

SUBSYSTEM=="block", ENV{ID_MODEL}=="...", ENV{ID_SERIAL}=="...", ENV{GENERATED}="1", SYMLINK+="dvd"

ด้วยวิธีนี้ symlink จะยังคงถูกต้องแม้ว่าคุณจะย้ายไดรฟ์ไปยังตำแหน่งอื่นบนบัส IDE แต่/dev/dvdจะไม่สร้าง symlink หากคุณเปลี่ยนไดรฟ์

อันที่สองขึ้นอยู่กับตำแหน่งของอุปกรณ์บนรถบัส:

SUBSYSTEM=="block", ENV{ID_TYPE}=="...", ENV{ID_PATH}=="pci-...", ENV{GENERATED}="1", SYMLINK+="dvd"

ด้วยวิธีนี้ symlink จะยังคงถูกต้องแม้ว่าคุณจะเปลี่ยนไดรฟ์ด้วยรุ่นที่แตกต่างกัน แต่วางไว้ในตำแหน่งเดียวกันบน IDE บัส ENV{ID_TYPE}สำคัญทำให้แน่ใจว่า symlink จะหายไปถ้าคุณใส่สิ่งอื่นนอกเหนือจากดีวีดีในตำแหน่งที่อยู่บนรถบัส

คุณสามารถค้นหาค่าสำหรับID_MODEL, ID_SERIAL, ID_TYPEและID_PATHการใช้คำสั่งดังต่อไปนี้ ( udevtestคำสั่งในขณะที่การกวดวิชาไม่ทำงาน - อีกต่อไป - ในอูบุนตู?):

udevadm info --query=all --name=sr0

SUBSYSTEM=="block"ที่สำคัญเป็นสิ่งจำเป็นในการสั่งซื้อเพื่อหลีกเลี่ยงการจับคู่อุปกรณ์ SCSI ทั่วไป ถ้าไม่มีมันในกรณีที่มี SCSI DVD บางครั้ง symlink จะชี้ไปที่/dev/sr0อุปกรณ์ที่ถูกต้องและบางครั้งก็ไป/dev/sg0ซึ่งผิด

ENV{GENERATED}="1"ที่สำคัญเป็นสิ่งจำเป็นเพื่อป้องกันไม่ให้ udev 75-cd-aliases-generator.rulesไฟล์เอาชนะกฎที่กำหนดเองของคุณ


ขอบคุณสำหรับข้อมูลทั้งหมด. ฉันไปลองใช้กฎเหล่านี้ แต่พบว่า/dev/dvdsymlink ของฉันแก้ไขตัวเองอย่างน่าอัศจรรย์ในช่วงไม่กี่เดือนที่ผ่านมา ฉันยังอ่านข้อผิดพลาดนี้ที่/dev/dvdมีการนับวันด้วย โอ้ดี ในตอนนี้คำตอบของคุณดูเหมือนจะให้ข้อมูลทั้งหมดที่จำเป็นในการแก้ไขปัญหานี้
chazomaticus

0

ฉันพบสิ่งนี้บนฟอรัม fedora อาจช่วย:

สร้างไฟล์เชลล์สคริปต์ในไฟล์นั้นให้ใส่:

#!/bin/bash
ln -s /dev/sr0 /dev/dvd

ตรวจสอบให้แน่ใจว่าไฟล์นั้นประมวลผลได้:

sudo chmod +x /etc/rc.d/rc.local

หากคุณจะใช้เส้นทาง rc.local คุณต้องทำเช่นนี้ในฐานะ root:

systemctl enable rc-local.service

เพราะมันไม่ได้เปิดใช้งานโดยค่าเริ่มต้น

แหล่งที่มา: http://forums.fedoraforum.org/showthread.php?t=295048

--------- วิธีที่ต้องการในวันนี้จะเป็นกฎ UDev --------------

จาก /lib/udev/rules.d/60-cdrom_id.rules ซึ่งสร้างลิงค์สัญลักษณ์ / dev / cdrom ลองเพิ่มไฟล์ /etc/udev/rules.d/60-dvd.rules ที่มี:

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