ইউএসবি স্টিকটি সংযোগ বিযুক্ত না করে নটিলাস থেকে আনমাউন্ট করার পরে কীভাবে পুনরায় মাউন্ট করবেন?


25

আমি দেখতে পেলাম যে একটি ইউএসবি স্টিকটি পুনরায় মাউন্ট করার জন্য, আমাকে এটি শারীরিকভাবে সংযোগ বিচ্ছিন্ন করতে হবে, এবং তারপরে এটি আবার সংযুক্ত করতে হবে। এইরকম ক্লান্তিকর শারীরিক ক্রিয়া ছাড়াই আমি কীভাবে এটি করতে পারি?


3
ইউএসবি ডিভাইসটি যৌক্তিকভাবে সংযোগ বিচ্ছিন্ন হয়েছে (আপনার কার্নেলের লগগুলিতে সেটার কোনও বার্তা থাকা উচিত)। এটির আর /devকোনও প্রবেশ থাকবে না এবং আইআইআরসি কোনওটিতেই দেখাবে না lsusb। এটি পুনরায় সংযোগ করার কোনও উপায় আছে কিনা আমি জানি না।
গিলস 'অশুভ হওয়া বন্ধ করুন'

এই প্রশ্নটি খুব অনুরূপ: superuser.com
1163375/…

উত্তর:


8

উবুন্টুতে আমার অভিজ্ঞতা থেকে আপনি যখন নটিলাসের মধ্যে থেকে একটি ইউএসবি স্টিকটি "বের করে" আনবেন, ডিভাইসটি আসলে সিস্টেম থেকে অদৃশ্য হয়ে যায়। আমি কেন নিশ্চিত তা নিশ্চিত নই, তবে নটিলাস বা কমান্ড লাইনও এটিকে ফিরে পেতে পারে না। আমার ধারণা যুক্তিটি হ'ল একবার আপনি যখন ইউএসবি স্টিকটি বের করেন তখন আপনি এটি আর চান না, তবে এটি সংযোগ বিচ্ছিন্ন করতে চলেছেন।

আমি এটির চারপাশে যেভাবে কাজ করব (যখন প্রয়োজন হবে), তা umountনটিলাসের পরিবর্তে ব্যবহার করে। আপনি কেবল syncডিস্কে ফাইল সিস্টেম বাফারগুলি ফ্লাশ করার জন্য কল করতে পারেন।

সবেমাত্র একটি থ্রেড পাওয়া গেছে যার আরও তথ্য রয়েছে: http://ubuntuforums.org/showthread.php?t=1477247

সুতরাং মূলত হয় ক) সেই প্যাচ ছাড়াই উত্স থেকে নটিলাস পুনর্নির্মাণ করুন (এবং আপনার সিস্টেম আপডেট করার সময় এটি আপডেট রাখুন ...) বা খ) অন্য কোনও ফাইল ম্যানেজার ব্যবহার করুন (কমপক্ষে m আনমাউন্ট করার সময়) use


2
/dev/disk/by-idডিভাইসটি সত্যই গেছে কিনা তা পরীক্ষা করে দেখুন। আমি বাজি ধরব এটি না, এবং mountকমান্ডের সাহায্যে সেখান থেকে পুনরায় তৈরি করা যেতে পারে ।
লরেন্স

1
@ultrasawblade /dev/disk/by-idরয়েছে symlinks ডিভাইস ফাইলের /devউদাহরণস্বরূপ, /dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb। ডিভাইসটি চলে যাওয়ার পরে udisks --eject(যা আমি এখানে অনুমান করি ধরে নিয়েছি), সিমিলিংকটি বাসি এবং পুনরায় মাউন্ট করার জন্য ব্যবহার করা যায় না।
তারিখ

16

আমার উবুন্টু লুসিড সিস্টেমে আমার এই আচরণ:

যখন আমি আমার ইউএসবি ফ্ল্যাশ / থাম্বড্রাইভ প্লাগ করি যেখানে দুটি পার্টিশন রয়েছে, সিস্টেমটি রিপোর্ট করে:

$ 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

1
tl; dr: আবার একটি বের করা ইউএসবি ড্রাইভ "সন্নিবেশ" করার আদেশটি eject -t /dev/<DEVICE>
ডেনিস বেনজিংগার

4

ডেবিয়ান ভিত্তিক সিস্টেমে, কমপক্ষে, আপনি এটি করতে সক্ষম হবেন:

  1. ড্রাইভ লেটারটি কী হওয়া উচিত তা নির্ধারণ করুন ... উদাহরণস্বরূপ আমি এখানে / dev / sdb বলার মতো নন।
  2. কার্যকরভাবে ডিভাইসটি আবার চালু করতে 'হবে' ড্রাইভ লেটারটি ডাবল বের করে দিন।
  3. লাভ!

এটি কাজ করে কারণ ... যাদু।

# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.