Nautilus से डिस्कनेक्ट किए बिना इसे हटाने के बाद एक यूएसबी स्टिक को फिर से कैसे माउंट किया जाए?


25

मुझे लगता है कि यूएसबी स्टिक को फिर से माउंट करने के लिए, मुझे इसे भौतिक रूप से डिस्कनेक्ट करना होगा, और फिर इसे फिर से कनेक्ट करना होगा। इस तरह की थकाऊ शारीरिक कार्रवाई के बिना मैं कैसे कर सकता हूं?


3
USB डिवाइस तार्किक रूप से डिस्कनेक्ट हो गया है (आपके कर्नेल लॉग पर उस प्रभाव का संदेश होना चाहिए)। यह /devकिसी भी अधिक प्रविष्टि नहीं होगी , और IIRC lsusbदोनों में दिखाई नहीं देगा । मुझे नहीं पता कि इसे फिर से जोड़ने का कोई तरीका है या नहीं।
गिल्स एसओ- बुराई को रोकना '

यह प्रश्न बहुत हद तक समान है: superuser.com/questions/1163375/…
डेनिस बेंजिंगर

जवाबों:


8

उबंटू में मेरे अनुभव से, जब आप नॉटिलस के भीतर से एक यूएसबी स्टिक को "बेदखल" करते हैं, तो डिवाइस वास्तव में सिस्टम से गायब हो जाता है। मुझे यकीन नहीं है कि यह क्यों है, लेकिन न तो नॉटिलस और न ही कमांड लाइन इसे वापस पा सकती है। मुझे लगता है कि तर्क यह है कि एक बार जब आप एक यूएसबी स्टिक को हटा देते हैं, तो आप इसे वापस नहीं चाहते हैं, लेकिन इसे डिस्कनेक्ट करने जा रहे हैं।

जिस तरह से मैं इस के आसपास काम करता हूं (जब ज़रूरत होती है), umountNautilus के बजाय उपयोग करके । आप syncडिस्क पर फ़ाइल सिस्टम बफ़र्स को फ्लश करने के लिए भी कॉल कर सकते हैं ।

बस एक धागा मिला है जिसमें अधिक जानकारी है: http://ubuntuforums.org/showthread.php?t=1477247

तो मूल रूप से या तो एक) उस पैच के बिना स्रोत से नॉटिलस को फिर से बनाएं (और इसे अपडेट रखें जब आप अपने सिस्टम को अपडेट करते हैं ...) या बी) किसी अन्य फ़ाइल प्रबंधक का उपयोग करें (कम से कम जब ^ ^ मिला)।


2
जांचें /dev/disk/by-idऔर देखें कि क्या उपकरण वास्तव में चला गया है। मुझे यकीन है कि यह नहीं है, और वहाँ से एक mountआदेश के साथ प्राप्त किया जा सकता है ।
लॉरेंस

1
@ultrasawblade /dev/disk/by-idशामिल सिमलिंक में डिवाइस फ़ाइलों के लिए /devउदाहरण के लिए, /dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb। जब डिवाइस चला जाता है udisks --eject(जो मुझे लगता है कि यहां होता है), सिम्लिंक बासी होता है और इसे पुन: माउंट करने के लिए उपयोग नहीं किया जा सकता है।
प्वाइंटएडर्स

16

यह मेरा उबंटू ल्यूसिड सिस्टम पर किया गया व्यवहार है:

जब मैं अपने 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, BLKRRPARTioctl क्या करता है, यह देखने के साथ), बिना किसी सफलता के - आखिरकार मैं कैसे ठोकर खाए बिना एक यूएसबी स्टिक रिमूव करने के लिए ठोकर खाई और 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

1
tl; dr: कमांड को फिर से एक इंसर्टेड USB ड्राइव "इन्सर्ट" करने के लिए है eject -t /dev/<DEVICE>
डेनिस बेंजिंगर

4

डेबियन आधारित प्रणालियों पर, कम से कम, आपको ऐसा करने में सक्षम होना चाहिए:

  1. पता लगाएँ कि ड्राइव अक्षर क्या होना चाहिए ... मैं उदाहरण के लिए यहाँ / देव / sdb कहने के लिए गोंग हूँ।
  2. डिवाइस को प्रभावी ढंग से वापस करने के लिए डबल बेदखलदार 'ड्राइव' अक्षर होगा।
  3. फायदा!

यह काम करता है क्योंकि ... जादू।

# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.