GNU/Linux >> Belajar Linux >  >> Linux

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

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:

  1. cari tahu seperti apa huruf drivenya... Saya akan mengatakan /dev/sdb di sini sebagai contoh.
  2. Keluarkan dua kali huruf drive 'akan menjadi' untuk menghidupkan kembali perangkat secara efektif.
  3. Untung!

Ini berhasil karena... sihir.

# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb

Linux
  1. Cara Boot dari Drive USB di VirtualBox di Linux

  2. Cara Membuat USB Bootable Linux dari Baris Perintah Linux

  3. Cara membuat stik USB bootable Linux di Windows

  1. Bagaimana Cara Downgrade Kembali Ke 14.04 Dari 14.10 Tanpa Live Cd Atau Usb Drive?

  2. Bagaimana cara menyalin teks dari xterm saya tanpa mouse?

  3. Bagaimana cara menulis file ke USB tanpa menjadi root?

  1. Tidak dapat mem-boot dari stik USB multiboot Yumi

  2. Bagaimana saya bisa mengkloning seluruh OS saya ke stik USB yang dapat di-boot?

  3. Bagaimana cara menulis image ISO ke memory stick usb dari baris perintah linux?