मुझे लगता है कि यूएसबी स्टिक को फिर से माउंट करने के लिए, मुझे इसे भौतिक रूप से डिस्कनेक्ट करना होगा, और फिर इसे फिर से कनेक्ट करना होगा। इस तरह की थकाऊ शारीरिक कार्रवाई के बिना मैं कैसे कर सकता हूं?
मुझे लगता है कि यूएसबी स्टिक को फिर से माउंट करने के लिए, मुझे इसे भौतिक रूप से डिस्कनेक्ट करना होगा, और फिर इसे फिर से कनेक्ट करना होगा। इस तरह की थकाऊ शारीरिक कार्रवाई के बिना मैं कैसे कर सकता हूं?
जवाबों:
उबंटू में मेरे अनुभव से, जब आप नॉटिलस के भीतर से एक यूएसबी स्टिक को "बेदखल" करते हैं, तो डिवाइस वास्तव में सिस्टम से गायब हो जाता है। मुझे यकीन नहीं है कि यह क्यों है, लेकिन न तो नॉटिलस और न ही कमांड लाइन इसे वापस पा सकती है। मुझे लगता है कि तर्क यह है कि एक बार जब आप एक यूएसबी स्टिक को हटा देते हैं, तो आप इसे वापस नहीं चाहते हैं, लेकिन इसे डिस्कनेक्ट करने जा रहे हैं।
जिस तरह से मैं इस के आसपास काम करता हूं (जब ज़रूरत होती है), umount
Nautilus के बजाय उपयोग करके । आप sync
डिस्क पर फ़ाइल सिस्टम बफ़र्स को फ्लश करने के लिए भी कॉल कर सकते हैं ।
बस एक धागा मिला है जिसमें अधिक जानकारी है: http://ubuntuforums.org/showthread.php?t=1477247
तो मूल रूप से या तो एक) उस पैच के बिना स्रोत से नॉटिलस को फिर से बनाएं (और इसे अपडेट रखें जब आप अपने सिस्टम को अपडेट करते हैं ...) या बी) किसी अन्य फ़ाइल प्रबंधक का उपयोग करें (कम से कम जब ^ ^ मिला)।
/dev/disk/by-id
और देखें कि क्या उपकरण वास्तव में चला गया है। मुझे यकीन है कि यह नहीं है, और वहाँ से एक mount
आदेश के साथ प्राप्त किया जा सकता है ।
/dev/disk/by-id
शामिल सिमलिंक में डिवाइस फ़ाइलों के लिए /dev
उदाहरण के लिए, /dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb
। जब डिवाइस चला जाता है udisks --eject
(जो मुझे लगता है कि यहां होता है), सिम्लिंक बासी होता है और इसे पुन: माउंट करने के लिए उपयोग नहीं किया जा सकता है।
यह मेरा उबंटू ल्यूसिड सिस्टम पर किया गया व्यवहार है:
जब मैं अपने USB फ्लैश / थंबड्राइव में प्लग करता हूं जिसमें दो विभाजन होते हैं, सिस्टम रिपोर्ट करता है:
$ 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
।
अब, अगर मैं ल्यूसिड में Gnome2 डेस्कटॉप में डिस्क एनकाउंटर एप्लेट में विभाजन प्रविष्टियों में से किसी पर भी छोड़ देता हूं, तो मुझे केवल दो प्रविष्टियां मिलती हैं: "ओपन" या "इजेक्ट" (जैसा कि [SOLVED] में उल्लेख किया गया है कि आप कैसे रिमाउंट करते हैं) usb ड्राइव में lynx के साथ nautilus ? , @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
।
इसके अलावा, डेस्कटॉप GUI में बाएं-क्लिक + "इजेक्ट" के समान व्यवहार, मैं टर्मिनल के साथ प्राप्त कर सकता हूं sudo eject /dev/sdb
। ध्यान दें कि कोई भी खोल सकता है palimpsest
, वहां से प्रत्येक दो विभाजन पर क्लिक करें, और "अनमाउंट वॉल्यूम" पर क्लिक करें - उस बिंदु पर, विभाजन के लिए आइकन अभी भी डिस्क माउन्टेन एप्लेट में दिखाए जाएंगे, लेकिन अनमाउंट के रूप में नोट किया जाएगा; और फिर एक कर सकते हैं sudo udisks --detach /dev/sdb
: यह डिस्क को डिस्क माउन्ट एप्लेट से गायब कर देता है - लेकिन यह भी /dev/sdb
डिवाइस सिस्टम पर मौजूद नहीं होगा (हालांकि, lsusb
अभी भी डिवाइस दिखाएगा)!
उत्तर के लिए काफी खोज करने के बाद ( udevadm monitor --environment
प्लग और अनप्लग के दौरान सामान की कोशिश की गई , सभी कार्यों की प्रतिकृति के साथ udevadm trigger
, BLKRRPART
ioctl क्या करता है, यह देखने के साथ), बिना किसी सफलता के - आखिरकार मैं कैसे ठोकर खाए बिना एक यूएसबी स्टिक रिमूव करने के लिए ठोकर खाई और Reinserting - उबंटू / डेबियन , जिसका उत्तर है:
sudo eject -t /dev/sdb
इस कमांड के चलने के बाद - डिस्क विभाजन एप्लेट में दो विभाजन फिर से दिखाई देते हैं - बिना USB प्लग को अनप्लग / री-प्लग किए !! यह सब अजनबी है, क्योंकि यदि आप पढ़ते हैं man eject
:
-t With this option the drive is given a CD-ROM tray close command.
Not all devices support this command.
... आपको कभी उम्मीद नहीं होगी कि यह USB फ्लैश / थम्ब ड्राइव पर लागू होगा! (और मैंने sys-utils / eject.c पर भी देखने की कोशिश की , और मुझे कुछ भी स्पष्ट नहीं दिखाई दे रहा है :)
)
बेशक, अगर sudo udisks --detach /dev/sdb
पहले से चला गया /dev/sdb
है, तो अस्तित्व में नहीं होगा, इसलिए eject -t /dev/sdb
इसके साथ विफल हो जाएगा eject: unable to find or open device for: '/dev/sdb'
। उस स्थिति में, # 7457 में उल्लिखित USB पॉवर साइकिल कैसे तार्किक रूप से डिस्कनेक्ट किए गए USB डिवाइस को फिर से कनेक्ट करने के लिए है? मुझे ठीक होने में मदद की:
$ 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
किसी भी अधिक प्रविष्टि नहीं होगी , और IIRClsusb
दोनों में दिखाई नहीं देगा । मुझे नहीं पता कि इसे फिर से जोड़ने का कोई तरीका है या नहीं।