我发现为了重新安装USB记忆棒,必须先物理断开它,然后再重新连接它。如果没有如此累人的身体动作怎么办?
我发现为了重新安装USB记忆棒,必须先物理断开它,然后再重新连接它。如果没有如此累人的身体动作怎么办?
Answers:
根据我在Ubuntu中的经验,当您从Nautilus中“弹出” USB记忆棒时,该设备实际上从系统中消失了。我不确定为什么会这样,但是Nautilus和命令行都无法将其恢复。我猜想逻辑是,一旦弹出USB记忆棒,您就不希望它退回,而是要断开它的连接。
解决此问题的方式(必要时)是使用umount
Nautilus代替。您也可以调用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
(我假设发生在此处),符号链接将失效,无法用于重新安装。
这是我在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桌面上的Disk Mounter小程序中的任一分区条目上单击鼠标左键,则只会得到两个条目:“打开”或“弹出”(如[解决]中所述)来自@Thomas的答案的lynx?中带有nautilus的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
因此,正如@ultrasawblade在评论中所提到的,确实存在磁盘,但没有分区-尽管,我认为我需要将分区作为设备才能使用mount
。
另外,与桌面GUI中的左键单击+“弹出”相同,我可以通过进入终端sudo eject /dev/sdb
。请注意,也可以打开palimpsest
,然后单击两个分区中的每个分区,然后单击“卸载卷”-此时,分区的图标仍将显示在Disk Mounter小程序中,但将被标记为已卸载;然后可以做sudo udisks --detach /dev/sdb
:这使图标从Disk Mounter小程序中消失-但是该/dev/sdb
设备也将不再存在于系统中(但是lsusb
仍会显示该设备)!
在搜索了很多答案之后(尝试了从udevadm monitor --environment
插入和拔出,通过复制所有操作udevadm trigger
到查看BLKRRPART
ioctl所做的事情),但没有成功-我终于偶然发现了如何在不移除和重新插入的情况下重新安装USB记忆棒-Ubuntu / Debian,答案如下:
sudo eject -t /dev/sdb
运行该命令后-两个分区再次出现在Disk Mounter小程序中-无需拔出/重新插入USB密钥!这就是所有陌生人,因为如果您阅读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
其中。我不知道是否可以重新连接它。