gnome-disk
현재 수행 중인 작업, 명령줄에서 동일한 작업을 수행하는 방법, gnome-disk
수행한 모든 작업을 취소하는 방법을 알고 싶습니다 . (이미 수행한 작업은 취소할 수 없습니다.)
몇 가지 실험을 수행한 결과 다음과 같은 사실을 발견했습니다. 제가 사용하고 있는 USB 플래시 썸 드라이브("스틱")에는 전환할 수 있는 최소 3개의 '상태 수준'이 있으며, 그 중 2개는 gnome-drive
'꺼내기'를 사용하여 전환 할 수 있습니다. 버튼(켜기 및 끄기) 및 "전원 끄기"(끄기 전용).
가장 높은 수준에서 가장 낮은 수준까지 다음을 발견했습니다.
- 주입
gnome-drive
팝업 버튼- gnome-drive 또는 다른 곳에서 드라이브가 사라지지 않습니다.
- 명령줄:
eject /dev/sdb
- 취소할 수 없습니다.
gnome-drive
- 실행 취소:
eject --trayclose /dev/sdb
- 커널 메시지(
journalctl -k
)- 주입
sdb: detected capacity change from 30253056 to 0
- 팝업 취소
sd 4:0:0:0: [sdb] 30253056 512-byte logical blocks: (15.5 GB/14.4 GiB)
sdb: detected capacity change from 0 to 30253056
sdb: [partition details of my drive]
- 주입
- (해제)바인딩
- 상응하는 항목이 없습니다.
gnome-drive
- 명령줄:
echo 3-6 > /sys/bus/usb/drivers/usb/unbind
gnome-drive
장치가 완전히 사라짐- 커널 메시지 없음
lsusb -t
장치는 계속 표시되지만 클래스("대량 저장소") 또는 드라이버("usb-storage")는 더 이상 표시되지 않습니다./sys/bus/usb/drivers/usb/3-6
디렉토리가 사라졌습니다- 실행취소
echo 3-6 > /sys/bus/usb/drivers/usb/bind
- 그러면 커널 메시지가 표시됩니다.
usb-storage 3-6:1.0: USB Mass Storage device detected
scsi host4: usb-storage 3-6:1.0
scsi 4:0:0:0: Direct-Access TOSHIBA TransMemory PMAP PQ: 0 ANSI: 6
sd 4:0:0:0: Attached scsi generic sg2 type 0
sd 4:0:0:0: [sdb] 30253056 512-byte logical blocks: (15.5 GB/14.4 GiB)
sd 4:0:0:0: [sdb] Write Protect is off
sd 4:0:0:0: [sdb] Mode Sense: 45 00 00 00
sd 4:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
sdb: [partition details of my drive...]
sd 4:0:0:0: [sdb] Attached SCSI removable disk
- 그러면 커널 메시지가 표시됩니다.
- 상응하는 항목이 없습니다.
- 전원을 끄세요
gnome-drive
전원 끄기 버튼- 물리적으로 플러그를 뽑는 것처럼 장치가 모든 것에서 사라집니다.
- 실제 플러그를 뽑는 것과 구별할 수 없음
- 커널 메시지:
usb 3-6: USB disconnect, device number 10
- 명령줄을 통해 전원을 끄는 방법은 무엇입니까?
- 컴퓨터를 다시 연결하지 않고 어떻게 컴퓨터를 다시 켤 수 있나요?
완전성을 기하기 위해 스틱을 다시 삽입하면 새 장치 번호(11)가 할당되고 버스와 포트는 동일하게 유지되며(3-6) 다음 커널 메시지가 표시됩니다.
usb 3-6: new high-speed USB device number 11 using xhci_hcd
usb 3-6: New USB device found, idVendor=0930, idProduct=6545, bcdDevi>
usb 3-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-6: Product: TransMemory
usb 3-6: Manufacturer: TOSHIBA
usb 3-6: SerialNumber: C03FD5F7713EE2B1B000821E
[plus all kernel messages as quoted under (re-)bind above]
답변1
비슷한 질문(제목의 질문과 동일)이 수년에 걸쳐 제기되었습니다.[1],[2],[삼](시간을 내어 검색해 보면 아마도 십여 개가 넘을 것입니다...) 대부분의 답변은 코드 변경으로 인해 더 이상 유효하지 않습니다...
암튼 몇 년 동안 사용하지 않았지만 GNOME
집중적으로 첫 번째 우편 질문에 대해:
gnome-disk
현재 수행 중인 작업과 명령줄에서 동일한 작업을 수행하는 방법을 알고 싶습니다.
gnome-disk
가장 쉬운 방법은 예를 들어 소스 코드를 보는 것입니다 .gduwindow.c
두 가지 기능을 사용하십시오: udisks_drive_call_eject ()
및 udisks_drive_call_power_off ()
-여기에 녹음하세요전화한다고 하네요Eject()
그리고 각각PowerOff()
D-Bus 메서드. 이는 d-bus
를 호출하여 cli에서 이러한 메서드를 호출할 수 있음을 의미합니다.
예: 플래시 드라이브가 ADATA
식별되었으나 sda
마운트되지 않음
sda 8:0 1 14,9G 0 disk
├─sda1 8:1 1 14,6G 0 part
먼저 해당 드라이브 ID를 가져옵니다 sda
.
busctl get-property org.freedesktop.UDisks2 /org/freedesktop/UDisks2/block_devices/sda org.freedesktop.UDisks2.Block Drive
이것은 다음과 같이 인쇄됩니다
o "/org/freedesktop/UDisks2/drives/ADATA"
d-bus
그런 다음 드라이브를 꺼내거나 전원을 끄기 위해 호출되는 개체로 따옴표로 묶인 부분을 사용할 수 있습니다.
busctl call org.freedesktop.UDisks2 /org/freedesktop/UDisks2/drives/ADATA org.freedesktop.UDisks2.Drive Eject 'a{sv}' 0
busctl call org.freedesktop.UDisks2 /org/freedesktop/UDisks2/drives/ADATA org.freedesktop.UDisks2.Drive PowerOff 'a{sv}' 0
gdbus
콘크리트 와 동일 GNOME
:
gdbus call --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/drives/ADATA --method org.freedesktop.UDisks2.Drive.Eject {}
gdbus call --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/drives/ADATA --method org.freedesktop.UDisks2.Drive.PowerOff {}
파일 시스템이 마운트된 경우(드라이브가 사용 중인 경우) 이러한 명령에 오류가 발생한다는 점에 유의하십시오. 또한 문서에서 볼 수 있듯이 un-eject
or 메서드 가 없기 un-power-off
때문에 gnome-disk
이러한 작업을 취소할 수 없습니다.
왜 누군가가 위 명령을 사용하는지 잘 모르겠습니다. ( eject()
플래시 드라이브의 맥락에서 의미를 잘 이해하지 못하지만 이는 또 다른 논의입니다.)...
저는 (다른 많은 사람들과 마찬가지로) 파일 시스템을 마운트 해제했습니다.
udisksctl unmount -b /dev/sda1
그런 다음드라이브 전원 끄기그리고
udisksctl power-off -b /dev/sda
전원이 꺼진 드라이브를 다시 연결하려면 일종의 USB 포트 재설정/재검색/재구성을 실행해야 합니다(일반 사용자는 수행할 수 없음). 다른 게시물의 솔루션 중 커널 6.6.2를 사용하는 경우에는 효과가 없었으므로 지금은 어떤 제안도 드릴 수 없습니다...
답변2
명령줄에서 전원을 끄는 방법은 무엇입니까?
echo 1 > /sys/bus/usb/devices/3-2.1/port/disable
포트는 bus_nr-port.by.port.hub.chain.seperated.with.dots
, 즉 3-3
, 또는 입니다 3-2.4.6
. 두 예 모두에서 포트는 버스 3에 있습니다. 첫 번째 예는 포트 3이고, 두 번째 예는 버스 3의 포트 2에 첫 번째 허브가 있고 첫 번째 허브의 포트 4에 두 번째 허브가 있는 두 허브의 체인입니다. 이 장치는 두 번째 허브의 포트 6에 있습니다.
컴퓨터를 다시 연결하지 않고 어떻게 컴퓨터를 다시 켤 수 있나요?
echo 0 > '/sys/devices/pci0000:00/0000:00:14.0/usb3/3-0:1.0/usb3-port3/disable'
아니면 3-2.1
그럴 수도 있기 때문에
echo 0 > '/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/3-2-port1/disable'
포트가 활성화되면 pwd -P
이 파일이 있는 디렉터리에서 disable
해당 허브의 포트 관리 인터페이스의 실제 위치를 미리 볼 수 있습니다. ls -l /sys/bus/usb/devices/usb*
좋은 시작은 USB 버스용 호스트 컨트롤러 목록을 만드는 것 입니다.
당신은 또한 볼 수 있습니다설명하는 방법lsusb
더 많은 팁을 알아보세요. (또는커널 문서.)
답변3
명령줄에서 전원을 끄는 방법은 무엇입니까?
업데이트: 마침내 알아냈습니다. 다른 답변을 참조하세요.
컴퓨터를 다시 연결하지 않고 어떻게 컴퓨터를 다시 켤 수 있나요?
조잡한 방법(마우스와 키보드가 일시적으로 종료되었으므로 두 명령을 모두 실행할 수 있는지 확인하십시오...)은 USB 호스트 PCI 장치를 다시 바인딩하는 것입니다. 부팅이나 물리적 재삽입과 같은 모든 포트를 재부팅하는 것 같습니다. 적어도 나에게는:
echo 0000:00:14.0 > /sys/bus/pci/drivers/xhci_hcd/unbind
echo 0000:00:14.0 > /sys/bus/pci/drivers/xhci_hcd/bind
물론 이 숫자는 환경에 맞게 조정되어야 합니다. 보유한 제품을 확인하세요.
lspci -t
드러내다저것xhci_hcd
USB 버스는 다음에 의해 구동됩니다.
ls -la /sys/bus/pci/drivers/xhci_hcd/ | grep ^l
0000:00:14.0
장치로만 표시됩니다 .