syscl 发表于 2016-3-18 19:37

解决唤醒后磁盘没有正确推出问题

本帖最后由 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 (bernhard.baehr@gmx.de), 没有他的sleepwatcher dameon, 这个项目也不会实现.
关于如何使用
在终端中下载修复脚本:git clone https://github.com/syscl/Fix-usb-sleep
脚本下载完毕后, 为其增加执行权限:chmod +x ~/Fix-usb-sleep/fixUSB.sh
执行脚本, 并按照提示输入密码(输入密码的过程不会显示输入多少位, 请各位注意):cd ~/Fix-usb-sleep
./fixusb.sh

成功运行后应该出现这样的界面:祝你们成功!////

syscl 发表于 2016-3-18 19:37

本帖最后由 syscl 于 2016-12-9 11:41 编辑

更新日志
2016-12-8
[*]增加Protocol判断以此来替代external判断带来的PCI卡上USB睡眠无法正常弹出的问题(感谢ralexx提供的详细信息让我获得了灵感)


2016-9-16
[*]修复可能挂在外置硬盘EFI分区的问题
[*]更合理的挂载方式只挂载在睡眠之前挂载的分区
[*]修复MacBook上挂载失效问题
[*]无需使用github命令下载
[*]修复一处下载错误问题
2016-4-13


[*]无需重启遍可以完成整个修复.
[*]修复执行文件权限.
[*]如果不喜欢可以通过"-u"参数卸载所有安装.
./fixusb.sh -u

2016-3-19


[*]采用eject命令推出磁盘.
[*]为推出脚本自动增加读写权限, 以彻底解决无法推出的bug.
[*]修复遗漏的复制命令.


2016-3-18

[*]第一版发布.


////




syscl 发表于 2016-3-18 19:38

再占一楼, 望管理员, 版主谅解.

////

口袋妖怪heart 发表于 2016-3-18 19:50

三连咯= =
我的地板~
哦 对 你重装系统了 我就说Terminal又回到默认的了

13407075 发表于 2016-3-18 20:05

支持下
备用吧

biggreat 发表于 2016-3-18 21:53

仰慕大神的杰作,好样的

andything 发表于 2016-3-18 22:36

syscl 发表于 2016-3-18 23:21

andything 发表于 2016-3-18 22:36 https://www.pcbeta.com/static/image/common/back.gif
论坛很少有这个达人再现,都是灌水的多,来点技术贴我比较感兴趣,否则上论坛都是求助和灌水的,影响心情

来来来, 赶紧试一下看看效果怎样! 我在M3800上测试成功, 希望对你有用:)

biggreat 发表于 2016-3-18 23:34

syscl 发表于 2016-3-18 23:21 https://www.pcbeta.com/static/image/common/back.gif
来来来, 赶紧试一下看看效果怎样! 我在M3800上测试成功, 希望对你有用:)

奇怪,我的磁盘(u盘和移动硬盘)睡眠醒来正常,是不是与睡眠模式有关的,我的是s0

syscl 发表于 2016-3-18 23:46

biggreat 发表于 2016-3-18 23:34 https://www.pcbeta.com/static/image/common/back.gif
奇怪,我的磁盘(u盘和移动硬盘)睡眠醒来正常,是不是与睡眠模式有关的,我的是s0

这个脚本只是为那些从睡眠状态唤醒移动硬盘, U盘非正常弹出而设计的。

////

请叫我官人 发表于 2016-3-18 23:47

大神真是厉害!高产啊!暂时没这个问题

syscl 发表于 2016-3-19 00:12

更新了几处拼写错误.

////

Louisa_fan 发表于 2016-3-19 00:20

rMBP late 2015 15" 安装了这个脚本解决了!!

注意白苹果要暂时先关闭SIP(System Integration Protect)才可以进行修复.

开机按下Command+R, 选择Recovery HD, 打开终端机输入:
csrutil disable
然后进入系统按照这个教程执行脚本.

然后关机, 再次按下Command+R开机, 选择Recovery HD, 打开终端输入(恢复SIP):
csrutil enable
你会惊奇的发现U盘睡眠后不正常弹出的问题解决啦!!

Thx!

syscl 发表于 2016-3-19 00:48

Louisa_fan 发表于 2016-3-19 00:20 https://www.pcbeta.com/static/image/common/back.gif
rMBP late 2015 15" 安装了这个脚本解决了!!

注意白苹果要暂时先关闭SIP(System Integration Protect)才 ...

感谢白果反馈!

好开心还能帮到白果们~

////

口袋妖怪heart 发表于 2016-3-19 07:09

Louisa_fan 发表于 2016-3-19 00:20
rMBP late 2015 15" 安装了这个脚本解决了!!

注意白苹果要暂时先关闭SIP(System Integration Protect)才 ...

求问这什么机型。。
我的MF840 没这问题啊
ME665好像也没有

ic005k 发表于 2016-3-19 08:36

支持原创!

jqqqqqqqqqq 发表于 2016-3-19 08:57

这个好!!!谢谢楼主,一直以为出现未正确推出是正常现象。。。

syscl 发表于 2016-3-19 09:22

jqqqqqqqqqq 发表于 2016-3-19 08:57 https://www.pcbeta.com/static/image/common/back.gif
这个好!!!谢谢楼主,一直以为出现未正确推出是正常现象。。。

我以前也以为是正常的, 后来才发现原来是Apple的问题.

syscl 发表于 2016-3-19 09:24

口袋妖怪heart 发表于 2016-3-19 07:09 https://www.pcbeta.com/static/image/common/back.gif
求问这什么机型。。
我的MF840 没这问题啊
ME665好像也没有

好像是15年中或者14年的版本. 要不就是15年末买的。。

a1b2c3123 发表于 2016-3-19 10:19

技术帖,好赞
页: [1] 2 3 4 5 6
查看完整版本: 解决唤醒后磁盘没有正确推出问题