Bagaimana cara memasang kembali stik USB setelah melepas dari Nautilus tanpa mencabutnya?

25

Saya menemukan bahwa untuk memasang kembali USB stick, saya harus mencabutnya secara fisik, dan kemudian menghubungkan kembali. Bagaimana saya bisa melakukan ini tanpa tindakan fisik yang melelahkan seperti itu?

tepang
sumber
3
Perangkat USB terputus secara logis (harus ada pesan yang mempengaruhi log kernel Anda). Itu tidak akan memiliki /deventri lagi, dan IIRC tidak akan muncul di lsusbkeduanya. Saya tidak tahu apakah ada cara untuk menghubungkannya kembali.
Gilles 'SO- stop being evil'
Pertanyaan ini sangat mirip dengan: superuser.com/questions/1163375/…
Dennis Benzinger

Jawaban:

8

Dari pengalaman saya di Ubuntu, ketika Anda "mengeluarkan" stik USB dari dalam Nautilus, perangkat tersebut sebenarnya menghilang dari sistem. Saya tidak yakin mengapa ini terjadi, tetapi Nautilus maupun baris perintah tidak dapat mendapatkannya kembali. Saya kira logikanya adalah bahwa sekali Anda mengeluarkan USB stick Anda tidak ingin kembali, tetapi akan memutuskannya.

Cara saya mengatasi ini (bila perlu), adalah dengan menggunakan umountbukan Nautilus. Anda juga bisa memanggil syncuntuk menyirami buffer sistem file ke disk.

Baru saja menemukan utas yang memiliki info lebih lanjut: http://ubuntuforums.org/showthread.php?t=1477247

Jadi, pada dasarnya a) Bangun kembali nautilus dari sumber tanpa tambalan itu (dan pertahankan pembaruan saat Anda memperbarui sistem Anda ...) atau b) gunakan pengelola file lain (setidaknya saat unmount ^^).

Thomas
sumber
2
Periksa /dev/disk/by-iddan lihat apakah perangkat tersebut benar-benar hilang. Saya berani bertaruh itu tidak, dan dapat dipasang kembali dari sana dengan mountperintah.
LawrenceC
1
@ultrasawblade /dev/disk/by-idberisi symlink ke file perangkat /dev, misalnya /dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb. Ketika perangkat hilang setelah udisks --eject(yang saya asumsikan terjadi di sini), symlink basi dan tidak dapat digunakan untuk memasang kembali.
PointedEars
16

Ini adalah perilaku yang saya miliki di sistem Ubuntu Lucid saya:

Ketika saya mencolokkan USB flash / thumbdrive saya yang memiliki dua partisi, sistem melaporkan:

$ 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
$

Jadi, hanya partisi yang memiliki /dev/disk/by-uuid; sedangkan kedua disk dan partisi memiliki (berbeda) /dev/disk/by-id.

Sekarang, jika saya klik kiri pada salah satu entri partisi dalam applet Disk Mounter di desktop Gnome2 di Lucid, saya hanya mendapatkan dua entri: "Buka" atau "Keluarkan" (sebagaimana disebutkan dalam [ASK] Bagaimana cara Anda remount usb drive dengan nautilus di lynx? , dari @Thomas 'jawaban, mengacu pada 16_hide_unmount.patch ). Juga, di palimpsestsini menunjukkan dua partisi untuk disk.

Ketika saya mengklik Eject di salah satu partisi - keduanya menghilang; pada titik ini, palimpsestmenunjukkan disk, tetapi tidak ada partisi, dan pesan "No medium found" sebagai gantinya; juga:

$ 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

Jadi, seperti yang disebutkan dalam komentar oleh @ultrasawblade , memang disk ada di sana, tetapi tidak partisi - meskipun, saya pikir saya perlu partisi sebagai perangkat , untuk itu mount.

Juga, perilaku yang sama seperti klik kiri + "Keluarkan" di GUI desktop, saya bisa masuk dengan terminal sudo eject /dev/sdb. Perhatikan bahwa seseorang juga dapat membuka palimpsest, dari sana klik pada masing-masing dua partisi, dan klik "Unmount Volume" - pada saat itu, ikon untuk partisi masih akan ditampilkan di applet Disk Mounter, tetapi akan dicatat sebagai tidak terpasang; dan kemudian orang dapat melakukannya sudo udisks --detach /dev/sdb: ini membuat ikon menghilang dari applet Disk Mounter - tetapi juga /dev/sdbperangkat tidak akan hadir pada sistem lagi (namun, lsusbmasih akan menampilkan perangkat)!

Setelah mencari sedikit jawaban (mencoba hal-hal dari udevadm monitor --environmentsaat plug and cabut, dengan mereplikasi semua tindakan melalui udevadm trigger, untuk melihat apa yang dilakukan BLKRRPARTioctl), tanpa hasil - saya akhirnya menemukan Cara Memasang Kembali Stik USB Tanpa Melepas Dan Memasukkan Kembali - Ubuntu / Debian , yang memiliki jawabannya:

sudo eject -t /dev/sdb

Setelah perintah ini dijalankan - dua partisi muncul lagi di applet Disk Mounter - tanpa mencabut / memasang kembali kunci USB !! Ini semua orang asing, karena jika Anda membaca man eject:

   -t   With  this  option the drive is given a CD-ROM tray close command.
        Not all devices support this command.

... Anda tidak akan pernah berharap itu berlaku untuk USB Flash / Thumb drive! (Dan saya bahkan mencoba melihat ke sys-utils / eject.c , dan saya tidak dapat melihat sesuatu dengan jelas :))

Tentu saja, jika sudo udisks --detach /dev/sdbtelah dijalankan sebelumnya, maka /dev/sdbtidak akan ada, maka eject -t /dev/sdbakan gagal juga eject: unable to find or open device for: '/dev/sdb'. Dalam hal itu, siklus daya USB seperti tercantum dalam # 7457 Bagaimana cara menghubungkan kembali perangkat USB yang terputus secara logis? membantu saya pulih:

$ 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'

Ini membuat ikon partisi ditampilkan lagi di applet Disk Mounter, langsung seperti yang dipasang; untuk menemukan alamat yang tepat, coba saat disk dipasang:

$ 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
sdaau
sumber
1
tl; dr: Perintah untuk "memasukkan" drive USB yang dikeluarkan lagi adalah eject -t /dev/<DEVICE>.
Dennis Benzinger
4

Pada sistem berbasis Debian, setidaknya, Anda harus dapat melakukan ini:

  1. mencari tahu apa huruf drive seharusnya ... Saya gong untuk mengatakan / dev / sdb di sini sebagai contoh.
  2. Keluarkan dua kali huruf drive 'would be' untuk menyalakan kembali perangkat secara efektif.
  3. Keuntungan!

Ini bekerja karena ... sihir.

# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb
Karl N. Redman
sumber