本帖最后由 syscl 于 2016-3-18 19:39 编辑
问题表现: 插有外部设备(例如U盘, 移动光驱,……)在睡眠唤醒后, 会提示”磁盘没有正确弹出”的问题, 严重的可能让磁盘损坏.
这个问题不仅在黑苹果上面有, 在白苹果上面也有. 这个bug有很长的历史遗留时间, 从10.9的时代一直延续至今, 感兴趣的朋友可以看看Apple Discussion.
目前比较有效的解决方案有安装sleepwatcher并自己写脚本在系统还没有进入S3的阶段卸载磁盘,
并在唤醒的时候挂载; 另一种方式是从Mac App Store安装付费的Jettision程序. 他们两者实现的方式都是类似的, 即先在睡眠之前卸载磁盘, 再在唤醒的瞬间重新挂载.
本来想偷懒借用别人的脚本, 无奈没有一个看的懂的, 并且用的思路很奇怪(要用AppleScript云云), 并且还要设置睡眠等待时间, 插入启动时执行的脚本等等…; 而Jettision是付费程序, 会在状态栏上面插入图标, 让我觉得解决方法很不干净, 很不放心, 当然最主要是因为穷(不想花钱). 因此, 花了一下午捣鼓了一个全自动化的脚本, 只要按照我的步骤进行操作即可, 如果觉得不放心的朋友, 可以自己修改我的脚本: https://github.com/syscl/Fix-usb-sleep
这个开源脚本最大的优势在于, 没有多余的启动脚本, 没有多余的命令, 卸载用的是Apple官方的命令, 至于挂载, 在系统唤醒的瞬间便会交给系统自己接管, 自动挂载, 再无多余脚本干预. 整个过程干净快速稳定, 不会有延迟感.
欢迎你们的任何意见和建议, 这个脚本的不重启版本即将更新发布, 因为要陪家人吃饭, 所以请大家耐心等待, 估计今晚就有哈~
最后, 感谢Bernhard Baehr ([email protected]), 没有他的sleepwatcher dameon, 这个项目也不会实现.
关于如何使用
在终端中下载修复脚本:
git clone https://github.com/syscl/Fix-usb-sleep复制代码
脚本下载完毕后, 为其增加执行权限:
chmod +x ~/Fix-usb-sleep/fixUSB.sh复制代码
执行脚本, 并按照提示输入密码(输入密码的过程不会显示输入多少位, 请各位注意):
cd ~/Fix-usb-sleep
./fixusb.sh复制代码
成功运行后应该出现这样的界面:
祝你们成功!