Nautilus에서 제거한 후 USB 스틱을 분리하지 않고 다시 설치하려면 어떻게 해야 합니까?

Nautilus에서 제거한 후 USB 스틱을 분리하지 않고 다시 설치하려면 어떻게 해야 합니까?

USB 스틱을 다시 설치하려면 물리적으로 연결을 끊었다가 다시 연결해야 한다는 것을 알았습니다. 그렇게 격렬한 신체 활동 없이 어떻게 이것을 할 수 있습니까?

답변1

내 Ubuntu Lucid 시스템의 동작은 다음과 같습니다.

두 개의 파티션이 있는 USB 플래시/썸 드라이브를 삽입하면 시스템에서 다음을 보고합니다.

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

따라서 파티션에만 해당 항목이 있고 /dev/disk/by-uuid디스크와 파티션 모두에 해당 항목이 있습니다(다르게) /dev/disk/by-id.

이제 Lucid에서 Gnome2 데스크톱의 디스크 마운터 애플릿에 있는 파티션 항목을 마우스 왼쪽 버튼으로 클릭하면 "열기" 또는 "꺼내기"라는 두 가지 항목만 표시됩니다(예:[해결됨] Lynx에서 노틸러스를 사용하여 USB 드라이브를 다시 설치하는 방법은 무엇입니까?, 에서@도마'에 대한 답변은 다음과 같습니다.16_hide_unmount.patch). 또한 palimpsest여기에는 디스크의 두 파티션이 표시됩니다.

두 파티션 중 하나에서 "꺼내기"를 클릭하면 이 시점에서 palimpsest디스크가 모두 사라지고 파티션이 표시되지 않으며 "미디어를 찾을 수 없습니다"라는 메시지도 나타납니다.

$ 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

그래서 댓글에서도 언급했듯이@울트라소블레이드, 실제로 디스크가 있지만 파티션이 나누어져 있지 않습니다. 하지만 파티션을 나누어야 할 것 같습니다.장치로, 을 위한 mount.

또한 데스크탑 GUI에서 왼쪽 클릭 + "꺼내기"와 동일한 동작을 사용할 수도 있습니다 sudo eject /dev/sdb. 을 열고 palimpsest거기에서 두 파티션을 각각 클릭한 다음 "볼륨 마운트 해제"를 클릭합니다. 파티션 아이콘이 나타납니다아직디스크 마운터 애플릿에 표시되지만 마운트되지 않은 것으로 표시됩니다. 이렇게 하면 sudo udisks --detach /dev/sdb디스크 마운터 애플릿에서 아이콘이 사라지고 장치가 /dev/sdb더 이상 시스템에 표시되지 않습니다(그러나 lsusb여전히 표시됩니다). 장치)!

답변을 꽤 많이 검색한 후( udevadm monitor --environment연결 및 분리 중에 모든 작업을 복사하고 ioctl이 수행하는 작업을 udevadm trigger조사하여 BLKRRPART) 성공하지 못한 채 마침내 이것을 발견했습니다.USB 스틱을 제거했다가 다시 삽입하지 않고 다시 설치하는 방법 - Ubuntu/Debian, 여기에는 답변이 포함되어 있습니다.

sudo eject -t /dev/sdb

이 명령을 실행한 후 - 두 파티션이 모두 디스크 마운터 애플릿에 다시 나타납니다. USB 플래시 드라이브를 분리했다가 다시 삽입할 필요가 없습니다! 다음과 같이 읽으면 이상합니다 man eject.

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

...USB 플래시/엄지 드라이브에서도 작동할 것이라고는 상상도 못하실 겁니다! (심지어 조사도 해봤지만시스템 유틸리티/eject.c, 나는 아무것도 보이지 않습니다 :))

물론 sudo udisks --detach /dev/sdb이전에 실행한 적이 있으면 /dev/sdb존재하지 않으므로 eject -t /dev/sdb실패하고 가 표시됩니다 eject: unable to find or open device for: '/dev/sdb'. 이 경우 USB 전원주기는 에서 설명한 것과 같습니다.#7457 논리적으로 연결이 끊긴 USB 장치를 어떻게 다시 연결하나요?회복할 수 있도록 도와주세요:

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

이로 인해 파티션 아이콘이 디스크 마운터 애플릿에 다시 나타나며, 올바른 주소를 찾으려면 다음을 시도하십시오.

$ 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

답변2

Ubuntu를 사용한 경험에 따르면 Nautilus에서 USB 스틱을 "꺼내면" 장치가 실제로 시스템에서 사라집니다. 왜 이런 일이 발생하는지 모르겠지만 노틸러스나 명령줄 모두 복원할 수 없습니다. USB 스틱을 꺼내면 더 이상 원하지 않고 연결을 끊는 논리가 있는 것 같습니다.

(필요할 때) 이 문제를 해결한 방법은 umount대신 Nautilus를 사용하는 것이었습니다. sync플러시 파일 시스템 버퍼를 디스크로 호출할 수도 있습니다 .

더 많은 정보가 포함된 스레드를 찾았습니다.http://ubuntuforums.org/showthread.php?t=1477247

따라서 기본적으로 a) 패치 없이 소스에서 노틸러스를 다시 빌드하거나(시스템을 업데이트할 때 최신 상태로 유지...) 또는 b) 다른 파일 관리자를 사용합니다(적어도 제거할 때는 ^^).

답변3

최소한 Debian 기반 시스템에서는 다음을 수행할 수 있어야 합니다:

  1. 드라이브 문자가 무엇인지 파악하십시오. 여기서는 예를 들어 /dev/sdb를 말하겠습니다.
  2. 장치의 전원을 효과적으로 다시 켜려면 "될" 드라이브 문자를 두 번 클릭합니다.
  3. 이익!

이것이 작동하는 이유는... 마법 때문입니다.

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

관련 정보