আমি দেখতে পেলাম যে একটি ইউএসবি স্টিকটি পুনরায় মাউন্ট করার জন্য, আমাকে এটি শারীরিকভাবে সংযোগ বিচ্ছিন্ন করতে হবে, এবং তারপরে এটি আবার সংযুক্ত করতে হবে। এইরকম ক্লান্তিকর শারীরিক ক্রিয়া ছাড়াই আমি কীভাবে এটি করতে পারি?
আমি দেখতে পেলাম যে একটি ইউএসবি স্টিকটি পুনরায় মাউন্ট করার জন্য, আমাকে এটি শারীরিকভাবে সংযোগ বিচ্ছিন্ন করতে হবে, এবং তারপরে এটি আবার সংযুক্ত করতে হবে। এইরকম ক্লান্তিকর শারীরিক ক্রিয়া ছাড়াই আমি কীভাবে এটি করতে পারি?
উত্তর:
উবুন্টুতে আমার অভিজ্ঞতা থেকে আপনি যখন নটিলাসের মধ্যে থেকে একটি ইউএসবি স্টিকটি "বের করে" আনবেন, ডিভাইসটি আসলে সিস্টেম থেকে অদৃশ্য হয়ে যায়। আমি কেন নিশ্চিত তা নিশ্চিত নই, তবে নটিলাস বা কমান্ড লাইনও এটিকে ফিরে পেতে পারে না। আমার ধারণা যুক্তিটি হ'ল একবার আপনি যখন ইউএসবি স্টিকটি বের করেন তখন আপনি এটি আর চান না, তবে এটি সংযোগ বিচ্ছিন্ন করতে চলেছেন।
আমি এটির চারপাশে যেভাবে কাজ করব (যখন প্রয়োজন হবে), তা umount
নটিলাসের পরিবর্তে ব্যবহার করে। আপনি কেবল sync
ডিস্কে ফাইল সিস্টেম বাফারগুলি ফ্লাশ করার জন্য কল করতে পারেন।
সবেমাত্র একটি থ্রেড পাওয়া গেছে যার আরও তথ্য রয়েছে: http://ubuntuforums.org/showthread.php?t=1477247
সুতরাং মূলত হয় ক) সেই প্যাচ ছাড়াই উত্স থেকে নটিলাস পুনর্নির্মাণ করুন (এবং আপনার সিস্টেম আপডেট করার সময় এটি আপডেট রাখুন ...) বা খ) অন্য কোনও ফাইল ম্যানেজার ব্যবহার করুন (কমপক্ষে m আনমাউন্ট করার সময়) use
/dev/disk/by-id
ডিভাইসটি সত্যই গেছে কিনা তা পরীক্ষা করে দেখুন। আমি বাজি ধরব এটি না, এবং mount
কমান্ডের সাহায্যে সেখান থেকে পুনরায় তৈরি করা যেতে পারে ।
/dev/disk/by-id
রয়েছে symlinks ডিভাইস ফাইলের /dev
উদাহরণস্বরূপ, /dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb
। ডিভাইসটি চলে যাওয়ার পরে udisks --eject
(যা আমি এখানে অনুমান করি ধরে নিয়েছি), সিমিলিংকটি বাসি এবং পুনরায় মাউন্ট করার জন্য ব্যবহার করা যায় না।
আমার উবুন্টু লুসিড সিস্টেমে আমার এই আচরণ:
যখন আমি আমার ইউএসবি ফ্ল্যাশ / থাম্বড্রাইভ প্লাগ করি যেখানে দুটি পার্টিশন রয়েছে, সিস্টেমটি রিপোর্ট করে:
$ ls /dev/sdb*
/dev/sdb /dev/sdb1 /dev/sdb2
$ udisks --show-info /dev/sdb | grep -A2 'partition table\|by-id'
by-id: /dev/disk/by-id/usb-takeMS_USB_Mini_AA07013000010057-0:0
by-path: /dev/disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0
detected at: Mon 29 Apr 2013 02:16:50 PM CEST
--
partition table:
scheme: mbr
count: 2
$ udisks --show-info /dev/sdb1 | grep -A2 'partition table\|by-id'
by-id: /dev/disk/by-id/usb-takeMS_USB_Mini_AA07013000010057-0:0-part1
by-id: /dev/disk/by-uuid/581E-EE0B
by-path: /dev/disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0-part1
detected at: Mon 29 Apr 2013 04:24:25 PM CEST
$ udisks --show-info /dev/sdb2 | grep -A2 'partition table\|by-id'
by-id: /dev/disk/by-id/usb-takeMS_USB_Mini_AA07013000010057-0:0-part2
by-id: /dev/disk/by-uuid/4A0E-A166
by-path: /dev/disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0-part2
detected at: Mon 29 Apr 2013 04:24:25 PM CEST
$ udevadm info --query=all --name=/dev/sdb | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0/host13/target13:0:0/13:0:0:0/block/sdb
$ udevadm info --query=all --name=/dev/sdb1 | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0/host13/target13:0:0/13:0:0:0/block/sdb/sdb1
$ udevadm info --query=all --name=/dev/sdb2 | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0/host13/target13:0:0/13:0:0:0/block/sdb/sdb2
$ sudo partprobe /dev/sdb
$
সুতরাং, শুধুমাত্র পার্টিশন আছে /dev/disk/by-uuid
; যখন ডিস্ক এবং পার্টিশন উভয়েরই পৃথক রয়েছে /dev/disk/by-id
।
এখন, যদি আমি লুসিডের জিনোম 2 ডেস্কটপে ডিস্ক মাউন্টারের অ্যাপলেটের যে কোনও পার্টিশন এন্ট্রিগুলিতে বাম-ক্লিক করি, আমি কেবলমাত্র দুটি প্রবেশিকা পেয়েছি: "খুলুন" বা "বের করুন" ( [সলভড] তে উল্লিখিত হিসাবে আপনি কীভাবে পুনঃনির্মাণ করবেন) Lynx মধ্যে নটিলাস? সঙ্গে একটি USB ড্রাইভ থেকে @Thomas 'উত্তর, একটি উল্লেখ 16_hide_unmount.patch )। এছাড়াও, palimpsest
এখানে ডিস্কের জন্য দুটি পার্টিশন দেখানো হয়।
আমি যখন পার্টিশনের কোনও একটিতে ইজেক্টে ক্লিক করি - তখন তারা উভয়ই অদৃশ্য হয়ে যায়; এই মুহুর্তে, palimpsest
ডিস্কটি দেখায়, তবে কোনও পার্টিশন নেই এবং পরিবর্তে "কোনও মাধ্যম পাওয়া যায় না" বার্তাটি প্রদর্শন করে; এছাড়াও:
$ ls /dev/sdb*
/dev/sdb
$ udisks --show-info /dev/sdb | grep -A2 'partition table\|by-id'
by-id: /dev/disk/by-id/usb-takeMS_USB_Mini_AA07013000010057-0:0
by-path: /dev/disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0
detected at: Mon 29 Apr 2013 02:16:50 PM CEST
$ udisks --show-info /dev/sdb1 | grep -A2 'partition table\|by-id'
$
$ udevadm info --query=all --name=/dev/sdb | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0/host13/target13:0:0/13:0:0:0/block/sdb
$ udevadm info --query=all --name=/dev/sdb1 | grep DEVPATH
device node not found
$ sudo partprobe /dev/sdb
Error: Error opening /dev/sdb: No medium found
সুতরাং, @ultrasawblade দ্বারা মন্তব্যে উল্লিখিত হিসাবে , প্রকৃতপক্ষে ডিস্কটি রয়েছে, তবে পার্টিশনগুলি নেই - যদিও, আমি মনে করি ডিভাইসগুলির জন্য আমার পার্টিশনগুলির প্রয়োজন হবে mount
।
এছাড়াও, ডেস্কটপ জিইউআই-তে বাম-ক্লিক + "ইজেক্ট" এর মতো একই আচরণ, আমি টার্মিনালে যেতে পারি sudo eject /dev/sdb
। নোট যে এক খুলতে পারেন palimpsest
দুটি পার্টিশন প্রতিটি উপর ক্লিক থেকে, এবং ক্লিক করুন "আনমাউন্ট ভলিউম", - এই মুহুর্তে, পার্টিশন জন্য আইকন হবে এখনও ডিস্ক অধিরোহী অ্যাপলেট প্রদর্শন করা কিন্তু আনমাউন্ট যেমন উল্লেখ করা হবে; এবং তারপরে একটি করতে পারেন sudo udisks --detach /dev/sdb
: এটি ডিস্ক মাউন্টারের অ্যাপলেট থেকে আইকনগুলি অদৃশ্য করে তোলে - তবে /dev/sdb
ডিভাইসটি আর সিস্টেমে উপস্থিত হবে না (তবে, lsusb
এখনও ডিভাইসটি দেখানো হবে)!
উত্তরের জন্য বেশ কিছুটা অনুসন্ধানের পরে ( udevadm monitor --environment
প্লাগ করার সময় এবং প্লাগ চলাকালীন সময়ে সমস্ত পদক্ষেপের অনুলিপি সহ udevadm trigger
, BLKRRPART
আইওএসটিএল কী করবে তা অনুসন্ধান করার জন্য ) কোনও সাফল্য ছাড়াই - অবশেষে আমি হোঁচট খেয়েছি কীভাবে একটি ইউএসবি স্টিকটিকে অপসারণ এবং পুনরায় স্থাপন না করে পুনঃস্থাপন করতে হবে - উবুন্টু / দেবিয়ান , যার উত্তর রয়েছে:
sudo eject -t /dev/sdb
এই কমান্ডটি সঞ্চালনের পরে - দুটি পার্টিশন আবার ডিস্ক মাউন্টার অ্যাপলেটে উপস্থিত হবে - ইউএসবি কীটি প্লাগিং / পুনরায় প্লাগ না করে !! এটি সমস্ত অপরিচিত, কারণ যদি আপনি পড়েন man eject
:
-t With this option the drive is given a CD-ROM tray close command.
Not all devices support this command.
... আপনি কখনই এটি ইউএসবি ফ্ল্যাশ / থাম্ব ড্রাইভে প্রযোজ্য তা প্রত্যাশা করবেন না! (এবং এমনকি সিস-ইউটিস / ইজেক্ট.সি.ও সন্ধান করার চেষ্টা করেছি এবং আমি স্পষ্ট কিছু দেখতে পাচ্ছি না :)
)
অবশ্যই, যদি sudo udisks --detach /dev/sdb
আগে চালানো হয়, তবে এর /dev/sdb
অস্তিত্ব থাকবে না, তাই eject -t /dev/sdb
এতে ব্যর্থ হবে eject: unable to find or open device for: '/dev/sdb'
। সেক্ষেত্রে, # 7457 হিসাবে উল্লিখিত ইউএসবি পাওয়ার চক্রটি যুক্তিযুক্তভাবে সংযোগ বিচ্ছিন্ন ইউএসবি ডিভাইসটি কীভাবে পুনরায় সংযুক্ত করবেন? আমাকে পুনরুদ্ধার করতে সহায়তা করেছে:
$ sudo sh -c 'echo suspend > /sys/bus/usb/devices/1-2/power/level'
$ sudo sh -c 'echo auto > /sys/bus/usb/devices/1-2/power/level'
এটি পার্টিশনের আইকনগুলি ডিস্ক মাউন্টারের অ্যাপলেটে আবার মাউন্ট হিসাবে দেখিয়েছে; সঠিক ঠিকানাটি খুঁজতে, ডিস্কটি মাউন্ট করার সময় চেষ্টা করুন:
$ udevadm info --attribute-walk --name=/dev/sdb | grep "looking\|busnum\|devnum" | grep -B1 'busnum\|devnum'
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-2':
ATTRS{busnum}=="1"
ATTRS{devnum}=="13"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1':
ATTRS{busnum}=="1"
ATTRS{devnum}=="1"
# the first (.../usb1/1-2) should be the right one, check bus/devnum:
$ lsusb -s 1:13
Bus 001 Device 013: ID 090c:1000 Feiya Technology Corp. Flash Drive
# looks good; check for symlinks in `sys/bus/usb/devices` as per "parent device" .../usb1/1-2
$ ls -la /sys/bus/usb/devices/ | grep "usb1/1-2"
lrwxrwxrwx 1 root root 0 2013-04-29 17:17 1-2 -> ../../../devices/pci0000:00/0000:00:1d.7/usb1/1-2
lrwxrwxrwx 1 root root 0 2013-04-29 17:21 1-2:1.0 -> ../../../devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0
# so it should be /sys/bus/usb/devices/1-2; check if it has power/level:
$ ls /sys/bus/usb/devices/1-2/power/level
/sys/bus/usb/devices/1-2/power/level
eject -t /dev/<DEVICE>
।
ডেবিয়ান ভিত্তিক সিস্টেমে, কমপক্ষে, আপনি এটি করতে সক্ষম হবেন:
এটি কাজ করে কারণ ... যাদু।
# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb
/dev
কোনও প্রবেশ থাকবে না এবং আইআইআরসি কোনওটিতেই দেখাবে নাlsusb
। এটি পুনরায় সংযোগ করার কোনও উপায় আছে কিনা আমি জানি না।