Yanıtlar:
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), umount
Nautilus 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).
/dev/disk/by-id
Aygıtın gerçekten gittiğini kontrol edin ve görün. Bahse girerim öyle değildir ve oradan bir mount
emirle oraya tekrar bağlanabilir .
/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 -> ../../sdb
udisks --eject
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, palimpsest
burada 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, palimpsest
diski 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/sdb
cihaz artık sistemde bulunmayacaktır ( lsusb
yine de cihazı gösterecektir)!
Cevap için biraz arama yaptıktan sonra ( udevadm monitor --environment
fişi ve fişi çıkarırken denedim , tüm işlemleri kopyalayarak udevadm trigger
, BLKRRPART
ioctl'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/sdb
daha önce koştu, o zaman /dev/sdb
olmayacak, bu yüzden eject -t /dev/sdb
ile 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
eject -t /dev/<DEVICE>
.
Debian tabanlı sistemlerde, en azından bunu yapabilmeniz gerekir:
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
/dev
girişi olmayacak ve IIRC'de de görünmeyeceklsusb
. Tekrar bağlantı kurmanın bir yolu olup olmadığını bilmiyorum.