আমি কীভাবে আমার সিডি / ডিভিডি ড্রাইভের বোতামটি অক্ষম করতে পারি?


13

ফেডোরা 14 অবধি আমি cdctlআমার ল্যাপটপে সিডি / ডিভিডি ইজেক্ট বোতামটি সক্রিয় / অক্ষম করতে সফলভাবে ব্যবহার করছি (থিংকপ্যাড টি 410)। দুঃখের বিষয় এটি এখন কাজ বন্ধ করে দিয়েছে।

আমি এই 2 টি প্রশ্নে আলোচিত পদ্ধতিগুলি নিয়ে পরামর্শ করেছি:

যার কোনটিই আমার পক্ষে কাজ করেনি। সুতরাং আমি এটি cdctlদেখতে ফিরে ফিরে দেখছি যে এটির সাথে কী ভেঙে গেছে তা আমরা ঠিক করতে পারি না, কারণ এটি এত দিন ধরে কাজ করেছে worked

ইস্যুটি ডিবাগ করা হচ্ছে

তাই cdctlসুইচগুলি দিয়ে শুরু করে আমি লক্ষ্য করেছি যে বেশিরভাগ জিনিস ঠিক ঠিক কাজ করে।

উদাহরণ

এই জিনিস কাজ।

ড্রাইভ ইজেক্ট

$ cdctl -e

তালিকা ক্ষমতা

$ cdctl -k
Tray close             : 1
Tray open              : 1
Can disable eject      : 1
Selectable spin speed  : 1
Is a jukebox           : 0
Is multisession capable: 1
Can read the MCN (UPC) : 1
Can report media change: 1
Can play audio discs   : 1
Can do a hard reset    : 1
Can report drive status: 1

সেই তালিকা অনুসারে cdctlএমনকি মনে করে যে এটি নিষ্কাশন বোতামটি সক্ষম / অক্ষম করতে পারে।

Can disable eject      : 1

সুতরাং আমি সমস্যাটি ডিবাগ করেই চালিয়ে যাচ্ছি।

ডিবাগিং সিডিটিটিএল

তাই আমি চিত্রে একটি করতে দেয় straceউপর cdctlদেখতে হলে কি হচ্ছে কিছু হালকা চালা পারবেন না।

$ strace cdctl -o1
...
brk(0)                                  = 0x1371000
open("/dev/cdrom", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/dev/cd", O_RDONLY|O_NONBLOCK)    = -1 ENOENT (No such file or directory)
open("/dev/scd0", O_RDONLY|O_NONBLOCK)  = -1 ENOENT (No such file or directory)
open("/dev/sr0", O_RDONLY|O_NONBLOCK)   = 3
ioctl(3, CDROM_LOCKDOOR, 0x1)           = 0
close(3)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++

কৌতূহলীভাবে মনে হচ্ছে এটি মনে হচ্ছে cdctlএটি বোতামটি অক্ষম করছে।

$ strace cdctl -o1
ioctl(3, CDROM_LOCKDOOR, 0x1)           = 0

$ strace cdctl -o0
ioctl(3, CDROM_LOCKDOOR, 0)             = 0

দ্রষ্টব্য: আমি যদি এই অধিকারটি বুঝতে পারি তবে 0 এর ফিরে আসার অর্থ এটি সফল হয়েছিল।

একটি জিনিস যা এখানে আমার চোখে পড়েছিল সেটি হল সেই ডিভাইসের তালিকার cdctlসাথে যোগাযোগের চেষ্টা করা। তাই আমি ভেবেছিলাম "যদি আমি এই ডিভাইসগুলি দিয়ে চেষ্টা করি eject"?

আদেশ বহির্গমন

বছর কয়েক আগে আমি যে অন্যান্য কমান্ড ব্যবহার করেছিলাম তার মধ্যে একটি হ'ল ejectসিডি / ডিভিডি ডিভাইসের সাথে ইন্টারঅ্যাক্ট করার কমান্ড। আমি লক্ষ্য করেছি যে এই কমান্ডেরও এখন একই নামযুক্ত সুইচ রয়েছে:

$ eject --help
 -i, --manualeject <on|off>  toggle manual eject protection on/off

উদাহরণ

$ eject -i 1 /dev/sr0
eject: CD-Drive may NOT be ejected with device button

$ eject -i 0 /dev/sr0
eject: CD-Drive may be ejected with device button

তাই ejectখুব মনে হয় যে এটি বোতামটি অক্ষম করছে, তবুও তা হয় না। straceএখানে ব্যবহার করে আমি একই সিস্টেম কলগুলি দেখতে পাচ্ছি:

$ strace eject -i 1 /dev/sr0 |& grep ioctl
ioctl(3, CDROM_LOCKDOOR, 0x1)           = 0

$ strace eject -i 0 /dev/sr0 |& grep ioctl
ioctl(3, CDROM_LOCKDOOR, 0)             = 0

সুতরাং এখন আমি ভাবছি যে ইউডিইভি বা অন্য কোনও কিছুর সম্ভাব্যতা অবরুদ্ধ বা ডিভাইসের মালিকানা নিচ্ছে?

থটস?


1
আমার কাছে একটি টি 410 রয়েছে এবং আমি যখন সিডি ড্রাইভ ইজেক্ট বোতামটি টিপতে চাইছি তখন আমি নিজেকে প্রায় আঘাত করতে চাইছি। এটি সমাধান হয়ে যায় কিনা তা দেখার আগ্রহী আমি।
হোয়াইটহোটলভটাইগার

সেই ড্রাইভের ডিস্কটি মাউন্ট করা অবস্থায় কী এখনও বোতামটি কাজ করছে?
বনসী স্কট

1
আমি আপনার ব্যথা অনুভব করছি, আমারও একই সমস্যা ছিল: সিডি / ডিভিডি ড্রাইভ লক করুন (উত্সাহিত হওয়া রোধ করুন) । আমি কোনও সমাধান খুঁজে পেলাম না এবং শারীরিকভাবে ড্রাইভটি সরিয়ে ফেললাম, যেহেতু প্রতিদিন এক ডজন বার ড্রাইভটি পপ আউট করা খুব বিরক্তিকর ছিল। শুভ কামনা…
মার্কো

@ মার্কো - উত্তর দেখুন!
slm

@ হোয়াইট হটলভটাইজার - উত্তরটি দেখুন!
slm

উত্তর:


9

@ আফিক্সের উত্তরের জন্য ধন্যবাদ যা আমাকে সঠিক দিকনির্দেশনা দিয়েছে, আমি সমস্যার সমাধান খুঁজে পেয়েছি।

আপনার অনুমান হিসাবে সমস্যাটি অবশ্যই ইউডিইভি দ্বারা তৈরি হয়েছে। সমস্যাটি হল এই লাইনটি যা বেশিরভাগ ইউডিইভি ফাইলগুলিতে সিড্রোম ড্রাইভ সম্পর্কিত।

উদাহরণ

ফেডোরা ১৯-তে নিম্নলিখিত ফাইল রয়েছে /usr/lib/udev/rules.d/60-cdrom_id.rules,। এই ফাইলে নিম্নলিখিত লাইনটি সিডি / ডিভিডি ডিভাইসগুলির জন্য ইজেক্ট বোতামটি সহ-অপ্ট করছে।

ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"

আপনি ইস্যুটি নিয়ে কাজ করতে পারেন এবং নিম্নলিখিতটি করে ইউডিডিভির উত্স বোতামটি সহ-অপ্ট করার ক্ষমতাটি অক্ষম করতে পারেন:

  1. ফাইলটির একটি অনুলিপি তৈরি করুন 60-cdrom_id.rules

    $ sudo cp /usr/lib/udev/rules.d/60-cdrom_id.rules /etc/udev/rules.d/.
    
  2. ফাইলটির এই অনুলিপি করা সংস্করণটি সম্পাদনা করুন এবং স্ট্রিং DISK_EJECT_REQUEST,।

    $ sudoedit /etc/udev/rules.d/60-cdrom_id.rules
    
  3. ফাইলটি সংরক্ষণ করুন এবং তাত্ক্ষণিকভাবে পরিবর্তনটি লক্ষণীয় হওয়া উচিত!

উপরে সমাধান উভয়ের জন্য সমস্যা সমাধান করা হয়েছে ejectএবং cdctl। সুতরাং এখন নিম্নলিখিত কমান্ডগুলি প্রত্যাশার মতো কাজ করে:

ড্রাইভ লক করুন

$ eject -i on /dev/sr0
eject: CD-Drive may NOT be ejected with device button

-or-

$ cdctl -o1

ড্রাইভ আনলক করুন

$ eject -i off /dev/sr0
eject: CD-Drive may be ejected with device button

-or-

$ cdctl -o0

@ মার্কো - আপনি আমাকে যা জিজ্ঞাসা করছেন আমি তা বিভ্রান্ত করছি, আমি /lib/নিয়মটি পরিবর্তন করিনি । আমি এটিকে অনুলিপি করেছি /etc/udev/rules.d/এবং আমার নিজের ওভাররাইড সংস্করণ তৈরি করেছি।
slm

@ মার্কো - এনপি, বিভ্রান্ত হওয়ার এবং ভুল করার জন্য যথেষ্ট জায়গা রয়েছে 8-)
স্ল্যাম

এর জন্য ধন্যবাদ. বর্তমান দেবিয়ান স্থিতিশীল (8 / জেসি) এ নিশ্চিত এই লাইনটি মন্তব্য করার সাথে সাথে আমার ক্ষমতা তাত্ক্ষণিকভাবে সরিয়ে ফেলা হয়েছে, উদাহরণস্বরূপ, ঘটনাক্রমে কোনও ব্লুরে চাপানো হয়েছে যখন এটি মাউন্ট করা বা এমনকি খেলার সময়। udevলিনাক্সে অন্য কোথাও প্রত্যাশিত আচরণকে কীভাবে ওভাররাইড করে তা ভালো লাগবে ... তবে এখন আমি কে-কে-ই ইচ্ছাকৃত ইজেকশন পরিচালনা করতে পারি এবং দুর্ঘটনার বিষয়ে উদ্বেগ বন্ধ করতে পারি।
আন্ডারস্কোর_

2

লাইন যুক্ত করুন:

DISC_EJECT_REQUEST

সিডি রম ইউদেব বিধিগুলিতে। এটি আপনাকে লক করতে সক্ষম করবে:

eject -i

1
কমপক্ষে আমার ফেডোরার 19
slm

একই অবস্থা. Even so: এটিকে কোন ফাইলে যুক্ত করবেন? কোন অন্যান্য লাইনের মধ্যে? এটাই কি পুরো লাইন? অবশ্যই এটি সিন্টেক্সিকভাবে বৈধ নয় udev? ইত্যাদি - খারাপ উত্তর।
আন্ডারস্কোর_
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.