我想知道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]、[2]、[3](如果您花时间搜索,可能会超过一打......)现在大多数答案不再有效由于代码的更改......无论如何,我已经好几年
没有使用了,但要重点关注您帖子中的第一个问题:
GNOME
最简单的方法是查看源代码,例如
gnome-disk
使用gduwindow.c
两个函数:udisks_drive_call_eject ()
和udisks_drive_call_power_off ()
-记录在此处Eject()
,其中表示它们分别调用和PowerOff()
d-Bus 方法,这意味着您可以通过调用在 cli 上调用这些方法d-bus
。示例:闪存驱动器
ADATA
被标识为sda
但未安装首先,获取对应的驱动器ID
sda
:这将打印类似的内容
然后,您可以使用引号中的部分作为调用
d-bus
弹出或关闭驱动器电源的对象:与
gdbus
具体相同GNOME
:请注意,如果安装了文件系统(驱动器正在使用),这些命令将出错。另外,正如您在文档中看到的,没有
un-eject
orun-power-off
方法,这就是为什么gnome-disk
无法撤消任何这些操作的原因。我不确定为什么有人会使用上面的命令(我不太明白
eject()
在闪存驱动器的上下文中的意义,但这是另一个讨论)...我(像许多其他人一样)卸载文件系统
然后关闭驱动器电源
为了重新连接已关闭电源的驱动器,您必须运行某种 USB 端口重置/重新扫描/重新配置(普通用户无法完成)。其他帖子中的解决方案都不适合我使用内核 6.6.2,所以我现在无法提出任何建议......
如何在命令行下关闭电源?
端口是
bus_nr-port.by.port.hub.chain.seperated.with.dots
,即3-3
或3-2.4.6
。在这两个示例中,端口位于总线 3 上。第一个示例只是端口 3,第二个示例是两个集线器链,其中第一个集线器位于总线 3 的端口 2 中,第二个集线器位于第一个集线器的端口 4 中。该设备位于第二个集线器的端口 6 上。如何在不重新插入电源的情况下重新开机?
或者因为
3-2.1
它可能是当端口启用时,您可以
pwd -P
在该disable
文件所在的目录中预先查看相应集线器的端口管理界面的真实位置。对于建立 USB 总线的主机控制器列表来说,ls -l /sys/bus/usb/devices/usb*
是一个好的开始。另请参阅如何解释
lsusb
以获取更多提示。(或者内核文档。)如何在命令行下关闭电源?
更新:我终于发现了——请参阅我的其他答案。
如何在不重新插入电源的情况下重新开机?
一个粗暴的方法(它暂时杀死了我的鼠标和键盘,所以确保你可以启动这两个命令...)是重新绑定 USB 主机 PCI 设备。这似乎会像启动或物理重新插入一样重新启动所有端口。至少对于我来说:
当然,该数字需要根据您的环境进行调整。看看你有什么:
据透露,USB总线是由
xhci_hcd
和驱动的仅显示
0000:00:14.0
为设备。