Bir USB çubuğu Nautilus'tan çıkardıktan sonra bağlantısını kesmeden nasıl yeniden takılır?


25

Bir USB çubuğu tekrar monte etmek için fiziksel olarak bağlantısını kesmem ve sonra tekrar takmam gerektiğini buluyorum. Bu kadar yorucu bir fiziksel eylem olmadan bunu nasıl yapabilirim?


3
USB cihazının mantıksal olarak bağlantısı kesildi (çekirdeğinizin günlüklerini etkileyen bir mesaj olmalı). Artık bir /devgirişi olmayacak ve IIRC'de de görünmeyecek lsusb. Tekrar bağlantı kurmanın bir yolu olup olmadığını bilmiyorum.
Gilles 'SO- kötülük'

Bu soru
şuna

Yanıtlar:


8

Ubuntu'daki deneyimlerime göre, bir USB çubuğunu Nautilus'un içinden çıkardığınızda, cihaz sistemden kayboluyor. Bunun neden olduğundan emin değilim, ama ne Nautilus ne de komut satırı onu geri alamaz. Sanırım mantık, bir USB çubuğunu çıkardıktan sonra geri istemeyeceğinizi, ancak bağlantısını keseceğinizdir.

Bu konuda çalışma biçimim (gerektiğinde), umountNautilus yerine kullanmaktır . Ayrıca sync, dosya sistemi arabelleklerini diske temizlemek için de çağrı yapabilirsiniz .

Daha fazla bilgiye sahip bir konu buldum: http://ubuntuforums.org/showthread.php?t=1477247

Yani temelde a) Nautilus'u o yama olmadan kaynaktan yeniden oluşturun (ve sisteminizi güncellediğinizde güncel tutun ...) veya b) başka bir dosya yöneticisi kullanın (en azından ^^ unmounting yaparken).


2
/dev/disk/by-idAygıtın gerçekten gittiğini kontrol edin ve görün. Bahse girerim öyle değildir ve oradan bir mountemirle oraya tekrar bağlanabilir .
LawrenceC

1
@ @ultrasawblade /dev/disk/by-id, örneğin, aygıt dosyalarına sembolik bağlantılar içerir . Cihaz gittikten sonra (burada olduğunu varsayarım), bağlantı çubuğu eskidir ve yeniden montaj için kullanılamaz. /dev/dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdbudisks --eject
PointedEars

16

Ubuntu Lucid sistemimdeki davranışları bu:

İki bölmeli USB flaşımı / flaş sürücümü taktığımda, sistem şöyle bildirir:

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

Yani, sadece bölümler var /dev/disk/by-uuid; hem disk hem de bölümler (farklı) iken /dev/disk/by-id.

Şimdi, Lucid'deki Gnome2 masaüstündeki Disk Mounter uygulamasındaki bölüm girişlerinden herhangi birine sol tıklarsam, sadece iki giriş alırım: "Aç" veya "Çıkar" ( [ÇÖZÜLMİŞ] ' de belirtildiği gibi) ? vaşak nautilus ile usb sürücü , gelen @Thomas 'cevabı bir atıfta 16_hide_unmount.patch ). Ayrıca, palimpsestburada disk için iki bölüm gösterilmektedir.

Bölümlerden birinin üzerindeki Çıkar düğmesine tıkladığımda ikisi de kayboluyor; Bu noktada, palimpsestdiski gösterir, ancak bölüm yok ve bunun yerine "Orta bulunamadı" mesajı; Ayrıca:

$ 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

Tarafından açıklamada belirtildiği gibi Yani, @ultrasawblade gerçekten disk var mı, ama bölümleri - her ne kadar, ben bölümleri ihtiyacım olacağını düşünüyorum aygıtlar gibi amacıyla, mount.

Ayrıca, sol tuşla aynı davranışı + "Eject" masaüstünde GUI ile alabilirim sudo eject /dev/sdb. Birinin ayrıca açabileceğini palimpsest, oradan iki bölümün her birinin üzerine tıklayıp "Unmount Volume" seçeneğini tıklayabildiğini unutmayın - bu noktada, bölümlerin simgeleri Disk Mounter uygulamasında gösterilmeye devam edecek , ancak unmounted olarak belirtilecektir; ve sonra yapabilecekleriniz sudo udisks --detach /dev/sdb: bu, ikonların Disk Mounter uygulamasından kaybolmasını sağlar - fakat aynı zamanda /dev/sdbcihaz artık sistemde bulunmayacaktır ( lsusbyine de cihazı gösterecektir)!

Cevap için biraz arama yaptıktan sonra ( udevadm monitor --environmentfişi ve fişi çıkarırken denedim , tüm işlemleri kopyalayarak udevadm trigger, BLKRRPARTioctl'in ne yaptığına bakmaya çalıştım ), herhangi bir başarı olmadan - Sonunda Çıkarmadan ve Yeniden Takmadan Bir USB Stickin Nasıl Takılacağını üzerine tökezledim. - Cevabı olan Ubuntu / Debian :

sudo eject -t /dev/sdb

Bu komut çalıştırıldıktan sonra iki bölüm tekrar Disk Mounter uygulamasında belirir - USB anahtarını çıkarmadan / takmadan! Bunların hepsi yabancı, çünkü eğer okursanız man eject:

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

... USB Flash / Thumb sürücüye uygulanabileceğini asla beklemeyin! (Hatta sys-utils / eject.c'ye bakmayı bile denedim ve bariz bir şey göremiyorum :))

Elbette, sudo udisks --detach /dev/sdbdaha önce koştu, o zaman /dev/sdbolmayacak, bu yüzden eject -t /dev/sdbile başarısız olacak eject: unable to find or open device for: '/dev/sdb'. Bu durumda, # 7457'de belirtildiği gibi USB güç döngüsü Mantıksal olarak bağlantısı kesilmiş bir USB cihazının bağlantısı nasıl yapılır? kurtarmama yardım etti:

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

Bu, bölüm simgelerinin doğrudan Mount Mounter uygulamasında gösterilmesini sağladı; doğru adresi bulmak için, disk takılıyken deneyin:

$ 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: Çıkartılan bir USB sürücüsünü tekrar "takma" komutu eject -t /dev/<DEVICE>.
Dennis Benzinger

4

Debian tabanlı sistemlerde, en azından bunu yapabilmeniz gerekir:

  1. sürücü harfinin ne olduğunu bulmak ... Örnek olarak burada / dev / sdb söyleyeceğim.
  2. Aygıtı etkin bir şekilde açmak için 'çift olacaktır' harfini çıkarır.
  3. Kar!

Bu işe yarıyor çünkü ... büyü.

# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.