USB 스틱을 다시 장착하려면 물리적으로 연결을 끊었다가 다시 연결해야합니다. 피곤한 신체적 행동없이 어떻게 할 수 있습니까?
USB 스틱을 다시 장착하려면 물리적으로 연결을 끊었다가 다시 연결해야합니다. 피곤한 신체적 행동없이 어떻게 할 수 있습니까?
답변:
Ubuntu에서 경험 한 바에 따르면, 노틸러스 내에서 USB 스틱을 "꺼내기"하면 장치가 실제로 시스템에서 사라집니다. 이것이 왜 그런지 잘 모르겠지만 노틸러스 나 명령 줄에서 다시 가져올 수는 없습니다. 논리는 USB 스틱을 꺼내면 다시 원하지 않지만 USB 연결을 끊을 것이라는 것입니다.
이 문제를 해결하는 방법 (필요한 경우) umount
은 노틸러스 대신 사용하는 것입니다. sync
파일 시스템 버퍼를 디스크로 플러시하기 위해 호출 할 수도 있습니다 .
더 많은 정보가있는 스레드를 찾았습니다 : http://ubuntuforums.org/showthread.php?t=1477247
따라서 기본적으로 a) 해당 패치없이 소스에서 노틸러스를 다시 빌드하고 (시스템을 업데이트 할 때 최신 상태로 유지하십시오 ...) b) 다른 파일 관리자를 사용하십시오 (적어도 마운트 해제 할 때 ^).
/dev/disk/by-id
장치가 실제로 사라 졌는지 확인 하십시오. 나는 그것을하지 않을 것이며, mount
명령 으로 다시 마운트 할 수 있습니다 .
/dev/disk/by-id
는 예를 들어 장치 파일에 대한 심볼릭 링크 를 포함 합니다 . 장치가 사라지면 (여기서는 여기에서 발생한다고 가정) 심볼릭 링크가 오래되어 다시 마운트하는 데 사용할 수 없습니다. /dev
/dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb
udisks --eject
이것은 내 우분투 루시드 시스템에 대한 행동입니다.
두 개의 파티션이있는 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
하고 BLKRRPART
ioctl의 기능 을 살펴보면서 시도한 것들 ) 성공하지 못했습니다. 마침내 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
eject -t /dev/<DEVICE>
입니다.
/dev
더 이상 항목을, 그리고 IIRC는에 표시되지 않습니다lsusb
중 하나. 다시 연결할 방법이 있는지 모르겠습니다.