노틸러스에서 분리하지 않고 USB 스틱을 마운트 해제 한 후 다시 마운트하는 방법은 무엇입니까?


25

USB 스틱을 다시 장착하려면 물리적으로 연결을 끊었다가 다시 연결해야합니다. 피곤한 신체적 행동없이 어떻게 할 수 있습니까?


3
USB 장치가 논리적으로 연결 해제되었습니다 (커널 로그에 영향을주는 메시지가 있어야 함). 그것은 필요가 없습니다 /dev더 이상 항목을, 그리고 IIRC는에 표시되지 않습니다 lsusb중 하나. 다시 연결할 방법이 있는지 모르겠습니다.
Gilles 'SO- 악마 그만두 다'

이 질문은 매우 유사합니다 : superuser.com/questions/1163375/…
Dennis Benzinger

답변:


8

Ubuntu에서 경험 한 바에 따르면, 노틸러스 내에서 USB 스틱을 "꺼내기"하면 장치가 실제로 시스템에서 사라집니다. 이것이 왜 그런지 잘 모르겠지만 노틸러스 나 명령 줄에서 다시 가져올 수는 없습니다. 논리는 USB 스틱을 꺼내면 다시 원하지 않지만 USB 연결을 끊을 것이라는 것입니다.

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

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

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


2
/dev/disk/by-id장치가 실제로 사라 졌는지 확인 하십시오. 나는 그것을하지 않을 것이며, mount명령 으로 다시 마운트 할 수 있습니다 .
LawrenceC

1
@ultrasawblade /dev/disk/by-id는 예를 들어 장치 파일에 대한 심볼릭 링크 를 포함 합니다 . 장치가 사라지면 (여기서는 여기에서 발생한다고 가정) 심볼릭 링크가 오래되어 다시 마운트하는 데 사용할 수 없습니다. /dev/dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdbudisks --eject
PointedEars

16

이것은 내 우분투 루시드 시스템에 대한 행동입니다.

두 개의 파티션이있는 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 데스크탑에있는 Disk Mounter 애플릿의 파티션 항목 중 하나를 마우스 왼쪽 단추로 클릭하면 "Open"또는 "Eject"라는 두 항목 만 표시됩니다 ( [SOLVED]에 설명 된대로 다시 마운트하는 방법 @ Thomas 의 답변 에서 lynx?에 노틸러스가있는 USB 드라이브16_hide_unmount.patch 를 참조 하십시오 ). 또한 palimpsest여기에는 디스크에 대한 두 개의 파티션이 표시됩니다.

파티션 중 하나에서 꺼내기를 클릭하면 둘 다 사라집니다. 이 시점 palimpsest에서 디스크는 표시되지만 파티션은없고 "No medium found"메시지가 표시됩니다. 또한:

$ 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

따라서 @ultrasawblade의 의견에서 언급했듯이 실제로 디스크는 있지만 파티션은 없습니다.하지만 파티션 을 장치로 사용해야한다고 생각 합니다 mount.

또한 데스크탑 GUI에서 왼쪽 클릭 + "꺼내기"와 동일한 동작을 사용하여 터미널로 이동할 수 있습니다 sudo eject /dev/sdb. 참고 하나가 열려도 할 수있는 palimpsest이 두 각 파티션을 클릭하고 "마운트 해제 볼륨"버튼을 클릭에서 - 그 시점에서, 파티션에 대한 아이콘이됩니다 여전히 디스크 마운터 애플릿에 표시를하지만, 마운트 해제로 기록 될 것이다; 그러면 sudo udisks --detach /dev/sdb아이콘이 Disk Mounter 애플릿에서 사라지지만 /dev/sdb장치는 더 이상 시스템에 나타나지 않습니다 (그러나 lsusb여전히 장치를 표시합니다)!

성공을 거두지 않고 답변을 검색 한 후 ( udevadm monitor --environment플러그 앤 언 플러그 중 모든 작업을 복제 udevadm trigger하고 BLKRRPARTioctl의 기능 을 살펴보면서 시도한 것들 ) 성공하지 못했습니다. 마침내 USB 스틱을 제거하고 다시 삽입하지 않고 다시 마운트하는 방법 -우분투 / 데비안 .

sudo eject -t /dev/sdb

이 명령이 실행되면 USB 마운트를 뽑거나 다시 꽂지 않고도 Disk Mounter 애플릿에 두 개의 파티션이 다시 나타납니다 !! 당신이 읽는다면 이것은 모두 낯선 사람입니다 man eject.

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

... USB 플래시 / 썸 드라이브에 적용 할 수 있다고 기대할 수 없습니다! (그리고 나는 심지어 sys-utils / eject.c 를 보려고 시도했지만 분명한 것을 볼 수 없습니다 :))

물론 sudo udisks --detach /dev/sdb이전에 실행 한 경우 /dev/sdb존재하지 않으므로 eject -t /dev/sdb로 실패합니다 eject: unable to find or open device for: '/dev/sdb'. 이 경우 # 7457에 설명 된 대로 USB 전원주기 가 논리적으로 분리 된 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'

이로 인해 파티션 아이콘이 Disk Mounter 애플릿에 다시 마운트되어 표시됩니다. 올바른 주소를 찾으려면 디스크가 마운트 된 상태에서 시도하십시오.

$ 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

1
tl; dr : 꺼낸 USB 드라이브를 다시 "삽입"하는 명령은 eject -t /dev/<DEVICE>입니다.
Dennis Benzinger

4

데비안 기반 시스템에서는 최소한 다음을 수행 할 수 있어야합니다.

  1. 드라이브 문자가 무엇인지 알아 내야합니다. 예를 들어 / dev / sdb라고 말하겠습니다.
  2. 장치 전원을 효과적으로 다시 켜려면 'Would be'드라이브 문자를 두 번 꺼내십시오.
  3. 이익!

이것은 마법 때문에 작동합니다.

# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.