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?
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?
Jawaban:
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 umount
bukan Nautilus. Anda juga bisa memanggil sync
untuk 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 ^^).
/dev/disk/by-id
dan lihat apakah perangkat tersebut benar-benar hilang. Saya berani bertaruh itu tidak, dan dapat dipasang kembali dari sana dengan mount
perintah.
/dev/disk/by-id
berisi 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.
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 palimpsest
sini menunjukkan dua partisi untuk disk.
Ketika saya mengklik Eject di salah satu partisi - keduanya menghilang; pada titik ini, palimpsest
menunjukkan 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/sdb
perangkat tidak akan hadir pada sistem lagi (namun, lsusb
masih akan menampilkan perangkat)!
Setelah mencari sedikit jawaban (mencoba hal-hal dari udevadm monitor --environment
saat plug and cabut, dengan mereplikasi semua tindakan melalui udevadm trigger
, untuk melihat apa yang dilakukan BLKRRPART
ioctl), 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/sdb
telah dijalankan sebelumnya, maka /dev/sdb
tidak akan ada, maka eject -t /dev/sdb
akan 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
eject -t /dev/<DEVICE>
.
Pada sistem berbasis Debian, setidaknya, Anda harus dapat melakukan ini:
Ini bekerja karena ... sihir.
# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb
/dev
entri lagi, dan IIRC tidak akan muncul dilsusb
keduanya. Saya tidak tahu apakah ada cara untuk menghubungkannya kembali.