当我使用 UbuntuGNOME 16.04 恢复我的 Lenovo Yoga 3 Pro 时,读卡器中的 SD 卡不见了,并且没有重新安装。事实上,整个内置读卡器都不见了,根本没有显示在“sudo lsusb”中。我必须重新启动笔记本电脑才能恢复读卡器并安装卡。有趣的是,如果使用“sudo acpitool --suspend”暂停笔记本电脑,它会起作用。当我在暂停时使用 acpitool 恢复后,读卡器还在,卡也挂载了。我真的很想知道为什么 acpitool 可以正确执行此操作,而 Ubuntu 本身却“丢失”了 SD 卡读卡器和卡。也许我可以在恢复时运行某种命令来重新找到读卡器和卡?
答案1
我找到了一个解决方案,或者说是解决这个问题的变通方法。这台笔记本电脑上的读卡器是 USB3 设备,因此在 Linux 下容易出现一些问题。但是,我还发现,如果我连续移除并启动读卡器 USB3 设备,它会被正常检测和安装。我的发现基于此处的信息:
http://www.zedt.eu/tech/linux/restarting-usb-subsystem-centos/
因此,如果我运行包含以下内容的脚本:
#!/bin/sh
cd /sys/bus/pci/drivers/xhci_hcd
echo -n "0000:00:14.0" > unbind
echo -n "0000:00:14.0" > bind
读卡器被检测到,卡安装正常。我使用“sudo lsusb -v”找到了设备 ID“0000:00:14.0”。
我无法做到的是让这个程序在笔记本电脑每次从挂起状态恢复时运行。我假设它必须从 /etc/pm/sleep.d 运行,但我无法编写一个有效的脚本。如果有人能向我展示如何编写一个包含三行代码的脚本,该脚本在笔记本电脑每次恢复时运行,那将非常有帮助。现在我只需在恢复时运行该脚本即可取回 SD 卡。