GNU/Linux >> Znalost Linux >  >> Linux

Jak znovu připojit USB flash disk po odpojení od Nautilus bez odpojení?

Toto je chování, které mám na svém systému Ubuntu Lucid:

Když připojím svůj USB flash/thumbdrive, který má dva oddíly, systém hlásí:

$ 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
$

Takže pouze oddíly mají /dev/disk/by-uuid; zatímco disk i oddíly mají (různé) /dev/disk/by-id .

Nyní, když kliknu levým tlačítkem myši na některou z položek oddílu v apletu Disk Mounter na ploše Gnome2 v Lucid, dostanu pouze dvě položky:„Otevřít“ nebo „Vysunout“ (jak je uvedeno v [ŘEŠENÉ] Jak znovu připojit usb disk s nautilem v lynx?, z odpovědi @Thomas s odkazem na 16_hide_unmount.patch). Také palimpsest zde jsou zobrazeny dva oddíly disku.

Když kliknu na Vysunout na jednom z oddílů - oba zmizí; v tomto okamžiku palimpsest zobrazí disk, ale žádné diskové oddíly, a místo toho zprávu "Nenalezeno žádné médium"; také:

$ 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

Takže, jak je zmíněno v komentáři @ultrasawblade, disk tam skutečně je, ale oddíly ne - i když si myslím, že bych oddíly potřeboval jako zařízení , aby bylo mount .

Také stejné chování jako levé kliknutí + "Vysunout" v grafickém uživatelském rozhraní pro stolní počítače, mohu se dostat do terminálu pomocí sudo eject /dev/sdb . Všimněte si, že lze také otevřít palimpsest , odtud klikněte na každý ze dvou oddílů a klikněte na „Odpojit svazek“ – v tomto okamžiku budou ikony oddílů stále zobrazí se v apletu Disk Mounter, ale bude označeno jako nepřipojené; a pak lze udělat sudo udisks --detach /dev/sdb :tím zmizí ikony z apletu Disk Mounter - ale také /dev/sdb zařízení již nebude v systému přítomno (nicméně lsusb stále zobrazí zařízení)!

Po dlouhém hledání odpovědi (vyzkoušeno věci z udevadm monitor --environment během připojení a odpojení s replikací všech akcí pomocí udevadm trigger , abychom se podívali na to, co je BLKRRPART ioctl ano), bez jakéhokoli úspěchu - konečně jsem narazil na Jak znovu připojit USB klíč bez vyjmutí a opětovného vložení - Ubuntu/Debian, který má odpověď:

sudo eject -t /dev/sdb

Po spuštění tohoto příkazu se oba oddíly znovu objeví v apletu Disk Mounter - bez odpojení/znovu zasunutí USB klíče!! To je ještě podivnější, protože pokud čtete man eject :

   -t   With  this  option the drive is given a CD-ROM tray close command.
        Not all devices support this command.

... nikdy byste nečekali, že je použitelný pro USB Flash/Thumb disk! (A dokonce jsem se pokusil podívat do sys-utils/eject.c a nevidím nic zřejmého :) )

Samozřejmě, pokud sudo udisks --detach /dev/sdb byl spuštěn dříve, pak /dev/sdb nebude existovat, takže eject -t /dev/sdb selže s eject: unable to find or open device for: '/dev/sdb' . V takovém případě dojde k vypnutí napájení USB, jak je uvedeno v #7457 Jak znovu připojit logicky odpojené zařízení USB? pomohl mi zotavit se:

$ 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'

To způsobilo, že se ikony oddílů znovu zobrazí v apletu Disk Mounter, přímo jako připojené; pro nalezení správné adresy zkuste, když je disk připojený:

$ 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

Z mé zkušenosti v Ubuntu, když „vysunete“ USB klíčenku z Nautilus, zařízení skutečně zmizí ze systému. Nejsem si jistý, proč tomu tak je, ale ani Nautilus, ani příkazový řádek to nemohou vrátit. Myslím, že logika je taková, že jakmile vysunete USB flash disk, nechcete jej zpět, ale chystáte se ho odpojit.

Způsob, jak to obejít (v případě potřeby), je pomocí umount místo Nautila. Můžete také zavolat sync k vyprázdnění vyrovnávacích pamětí souborového systému na disk.

Právě jsem našel vlákno, které má více informací:http://ubuntuforums.org/showthread.php?t=1477247

Takže v zásadě buď a) Znovu sestavte nautilus ze zdroje bez této opravy (a udržujte jej aktuální, když aktualizujete svůj systém...) nebo b) použijte jiného správce souborů (alespoň při odpojování ^^).


Na systémech založených na Debianu byste měli být schopni udělat alespoň toto:

  1. zjistit, jaké by mělo být písmeno jednotky... Jako příklad zde řeknu /dev/sdb.
  2. Dvojitým vysunutím písmene „would be“ zařízení efektivně znovu zapněte.
  3. Zisk!

Funguje to, protože... magie.

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

Linux
  1. Jak přejít zpět na 14.04 z 14.10 bez Live Cd nebo USB disku?

  2. Jak odstranit iso 9660 z USB?

  3. MySql databáze z usb klíče

  1. Jak mohu zapisovat soubory na USB, aniž bych byl root?

  2. Nelze zavést systém z USB flash disku Yumi multiboot

  3. Jak zapsat obraz ISO na paměťovou kartu USB z příkazového řádku linuxu?

  1. Jak bootovat z USB disku ve VirtualBoxu na Linuxu

  2. Jak vytvořit Linux bootovatelné USB z Linux Command-Line

  3. Jak si vybavím konkrétní příkaz z historie příkazů, aniž bych jej provedl