Ini adalah perilaku yang saya miliki di sistem Lucid Ubuntu saya:
Saat saya mencolokkan USB flash/thumbdrive 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
; sementara disk dan partisi memiliki (berbeda) /dev/disk/by-id
.
Sekarang, jika saya mengklik kiri salah satu entri partisi di applet Disk Mounter di desktop Gnome2 di Lucid, saya hanya mendapatkan dua entri:"Buka" atau "Keluarkan" (seperti yang disebutkan dalam [SOLVED] Bagaimana Anda memasang kembali drive usb dengan nautilus di lynx?, dari jawaban @Thomas, mengacu pada 16_hide_unmount.patch). Juga, palimpsest
di sini menunjukkan dua partisi untuk disk.
Ketika saya mengklik Keluarkan di salah satu partisi - keduanya menghilang; pada titik ini, palimpsest
menunjukkan disk, tetapi tidak ada partisi, dan pesan "Tidak ditemukan media" 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 bukan partisi - meskipun, saya rasa saya memerlukan partisi sebagai perangkat , untuk mount
.
Juga, perilaku yang sama seperti klik kiri+"Keluarkan" di GUI desktop, saya bisa masuk ke terminal dengan sudo eject /dev/sdb
. Perhatikan bahwa seseorang juga dapat membuka palimpsest
, dari sana klik pada masing-masing dari dua partisi, dan klik "Unmount Volume" - pada saat itu, ikon untuk partisi akan tetap ditampilkan di applet Disk Mounter, tetapi akan dicatat sebagai tidak terpasang; dan kemudian seseorang dapat melakukan sudo udisks --detach /dev/sdb
:ini membuat ikon menghilang dari applet Disk Mounter - tetapi juga /dev/sdb
perangkat tidak akan ada lagi di sistem (namun, lsusb
masih akan menampilkan perangkat)!
Setelah mencari sedikit untuk jawabannya (mencoba hal-hal dari udevadm monitor --environment
selama pasang dan cabut, dengan mereplikasi semua tindakan melalui udevadm trigger
, untuk melihat apa itu BLKRRPART
ioctl melakukannya), tanpa hasil apa pun - 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 - kedua partisi muncul lagi di applet Disk Mounter - tanpa mencabut/memasang ulang 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 menyangka ini berlaku untuk USB Flash/Thumb drive! (Dan saya bahkan mencoba melihat ke sys-utils/eject.c, dan saya tidak dapat melihat sesuatu yang jelas :)
)
Tentu saja, jika sudo udisks --detach /dev/sdb
telah dijalankan sebelumnya, lalu /dev/sdb
tidak akan ada, jadi eject -t /dev/sdb
akan gagal dengan eject: unable to find or open device for: '/dev/sdb'
. Dalam hal ini, siklus daya USB seperti yang disebutkan di #7457 Bagaimana cara menyambungkan 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 muncul lagi di applet Disk Mounter, langsung saat dipasang; untuk menemukan alamat yang benar, coba saat disk terpasang:
$ 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
Dari pengalaman saya di Ubuntu, saat Anda "mengeluarkan" stik USB dari dalam Nautilus, perangkat tersebut benar-benar menghilang dari sistem. Saya tidak yakin mengapa demikian, tetapi baik Nautilus maupun baris perintah tidak dapat mengembalikannya. Saya kira logikanya adalah setelah Anda mengeluarkan stik USB, Anda tidak menginginkannya kembali, tetapi akan melepaskannya.
Cara saya mengatasinya (bila diperlukan), adalah dengan menggunakan umount
bukannya Nautilus. Anda juga bisa memanggil sync
untuk menyiram 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) Membangun kembali nautilus dari sumber tanpa tambalan itu (dan terus memperbaruinya saat Anda memperbarui sistem...) atau b) menggunakan pengelola file lain (setidaknya saat melepas ^^).
Pada sistem berbasis Debian, setidaknya, Anda harus dapat melakukan ini:
- cari tahu seperti apa huruf drivenya... Saya akan mengatakan /dev/sdb di sini sebagai contoh.
- Keluarkan dua kali huruf drive 'akan menjadi' untuk menghidupkan kembali perangkat secara efektif.
- Untung!
Ini berhasil karena... sihir.
# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb