Trovo che per reinstallare una chiavetta USB, devo scollegarla fisicamente, quindi ricollegarla. Come posso farlo senza un'azione fisica così faticosa?
Trovo che per reinstallare una chiavetta USB, devo scollegarla fisicamente, quindi ricollegarla. Come posso farlo senza un'azione fisica così faticosa?
Risposte:
Dalla mia esperienza in Ubuntu, quando "espelli" una chiavetta USB da Nautilus, il dispositivo in realtà scompare dal sistema. Non sono sicuro del perché, ma né Nautilus né la riga di comando possono recuperarlo. Immagino che la logica sia che una volta espulsa una chiavetta USB non la rivuoi indietro, ma la scollegherai.
Il modo in cui lavoro intorno a questo (quando necessario) è usando al umountposto di Nautilus. Potresti anche chiamare syncper svuotare i buffer del filesystem sul disco.
Ho appena trovato una discussione che ha più informazioni: http://ubuntuforums.org/showthread.php?t=1477247
Quindi sostanzialmente a) Ricostruisci nautilus dal sorgente senza quella patch (e tienilo aggiornato quando aggiorni il tuo sistema ...) oppure b) usa un altro file manager (almeno quando smontalo ^^).
/dev/disk/by-ide vedi se il dispositivo è veramente sparito. Scommetto che non lo è, e può essere rimontato da lì con un mountcomando.
/dev/disk/by-idcontiene link simbolici ai file di dispositivo in /dev, per esempio /dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb. Quando il dispositivo non funziona più udisks --eject(cosa che presumo accade qui), il collegamento simbolico è obsoleto e non può essere utilizzato per il re-montaggio.
Questo è il comportamento che ho sul mio sistema Ubuntu Lucid:
Quando collego il mio flash USB / thumbdrive che ha due partizioni, il sistema segnala:
$ 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
$
Quindi, solo le partizioni hanno /dev/disk/by-uuid; mentre sia il disco che le partizioni hanno (diversi) /dev/disk/by-id.
Ora, se faccio clic con il pulsante sinistro del mouse su una delle voci della partizione nell'applet Disk Mounter nel desktop Gnome2 in Lucido, ottengo solo due voci: "Apri" o "Espelli" (come indicato in [RISOLTO] Come rimontare un'unità USB con nautilus in lynx?, dalla risposta di @Thomas , riferita a un 16_hide_unmount.patch ). Inoltre, palimpsestqui mostra due partizioni per il disco.
Quando clicco su Espelli su una delle partizioni, entrambe scompaiono; a questo punto, palimpsestmostra il disco, ma nessuna partizione e invece un messaggio "Nessun supporto trovato"; anche:
$ 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
Quindi, come menzionato nel commento di @ultrasawblade , il disco è davvero lì, ma non le partizioni - anche se, penso, avrei bisogno delle partizioni come dispositivi , al fine di mount.
Inoltre, lo stesso comportamento del clic sinistro + "Espelli" nella GUI desktop, posso accedere al terminale con sudo eject /dev/sdb. Si noti che si può anche aprire palimpsest, da lì fare clic su ciascuna delle due partizioni e fare clic su "Smonta volume" - a quel punto, le icone per le partizioni verranno comunque mostrate nell'applet Disk Mounter, ma verranno annotate come smontate; e quindi si può fare sudo udisks --detach /dev/sdb: questo fa scomparire le icone dall'applet di Disk Mounter - ma anche il /dev/sdbdispositivo non sarà più presente sul sistema (tuttavia, lsusbmostrerà comunque il dispositivo)!
Dopo aver cercato un po 'la risposta ( ho provato cose da udevadm monitor --environmentplug and scollegamento, replicando tutte le azioni tramite udevadm trigger, guardando cosa fa lo BLKRRPARTioctl), senza successo - Finalmente sono incappato in Come rimontare una chiavetta USB senza rimuovere e reinserire - Ubuntu / Debian , che ha la risposta:
sudo eject -t /dev/sdb
Dopo aver eseguito questo comando - le due partizioni vengono nuovamente visualizzate nell'applet Disk Mounter - senza scollegare / ricollegare la chiave USB !! Questo è tutto lo straniero, perché se leggi man eject:
-t With this option the drive is given a CD-ROM tray close command.
Not all devices support this command.
... non ti aspetteresti mai che sia applicabile all'unità Flash / Thumb USB! (E ho anche provato a guardare in sys-utils / eject.c , e non vedo nulla di ovvio :))
Naturalmente, se sudo udisks --detach /dev/sdbè stato eseguito in precedenza, quindi /dev/sdbnon esisterà, quindi eject -t /dev/sdbfallirà eject: unable to find or open device for: '/dev/sdb'. In tal caso, il ciclo di alimentazione USB come indicato in # 7457 Come riconnettere un dispositivo USB logicamente disconnesso? mi ha aiutato a recuperare:
$ 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'
Ciò ha reso le icone delle partizioni di nuovo visualizzate nell'applet Disk Mounter, direttamente come montate; per trovare l'indirizzo giusto, prova mentre il disco è montato:
$ 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>.
Sui sistemi basati su Debian, almeno, dovresti essere in grado di fare questo:
Questo funziona perché ... magia.
# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb
/devvoce, e IIRC non compariràlsusbneanche in. Non so se c'è un modo per ricollegarlo.