我正在尝试从 macOS High Sierra 完全卸载 Parallels。我从磁盘中删除了所有内容,除了存储在 /Library/StagedExtensions/Parallel Desktop.app 下的一些 Parallels 扩展
我认为该位置与用户批准的扩展程序有关,但我也想找到一种方法来删除/卸载这些扩展程序。如果我尝试删除扩展,它会说尽管有 root 权限,但不允许操作。
任何想法?
我正在尝试从 macOS High Sierra 完全卸载 Parallels。我从磁盘中删除了所有内容,除了存储在 /Library/StagedExtensions/Parallel Desktop.app 下的一些 Parallels 扩展
我认为该位置与用户批准的扩展程序有关,但我也想找到一种方法来删除/卸载这些扩展程序。如果我尝试删除扩展,它会说尽管有 root 权限,但不允许操作。
任何想法?
有一种清除 StageExtensions 文件夹的新方法,如下所示
sudo kextcache --clear-staging
此命令将清除 /Library/StageExtensions 文件夹。我们不需要进入恢复模式并手动删除此文件夹,以防安装软件时出现一些权限错误。
就我而言,当您使 kext 缓存无效时,已删除的 kext 将从 StagedExtensions 中消失。
sudo rm -rf /Library/Extensions/Parallel\ Desktop.app # check if the name is correct so you don't delete some other kext
sudo kextcache -invalidate /
# now you should not see your deleted kext here
ls /Library/StagedExtensions/
2019 年更新:
有关完整详细信息,请参见手册页:man kextcache
。相关的摘录-invalidate
,-i
简称:
-i os_volume, -invalidate os_volume
Rebuild out-of-date caches and update any helper partitions
associated with os_volume.
This option mimics sudo touch /System/Library/Extensions on
os_volume. If kextcache cannot find or make sense of
os_volume/usr/standalone/bootcaches.plist, the volume is treated
as if no caches need updating: success is returned.
还有新的选择:
-clear-staging
Clears the kernel extension staging area by removing all staged content.
-prune-staging
Prunes the kernel extension staging area by removing all kernel extensions
no longer present in their original location.
看起来 -prune-staging
只删除了已删除的扩展,从下一次 kext 缓存重建中节省了一点时间。
有关Mojave 手册页,请参阅https://www.unix.com/man-page/mojave/8/KEXTCACHE/ ,其中包含这些新选项。
sudo kextcache --clear-staging
在文件夹中HD/Library/
干杯
编辑:格式化
Edit2:我相信 Parallels 将一些文件直接写入引导加载程序/内核。从 CMD+R hold restart Disk Utility Terminal 运行命令后,扩展名已从 /Library 中删除。
我希望这是有道理的。
我在尝试卸载 ScreenFlow 的 TelestreamAudio.kext 时遇到了类似的问题。可能发生的情况是 StagedExtensions 中的 kext 在您处于常规模式时当前正在使用或受保护。进入恢复模式后,您可以在不禁用系统完整性保护的情况下将其删除。以下步骤对我有用,但请谨慎使用。
.
cd /Volumes/Macintosh\ HD/Library/StagedExtensions/Library/Extensions/
rm -rf NAME_OF_EXTENSION.kext
从那里开始,我能够重新安装 ScreenFlow 的音频 kext 并且它工作正常。它还可以帮助您完全删除 Parallels kext。
If you've already deleted the extensions from /Library/Extensions
, open the Terminal app from Launchpad, copy/paste the command below and press Enter to run it:
sudo kextcache -prune-staging
As mentioned in another comment, this will only remove the kernel extensions that are no longer present in their original location, i.e., /Library/Extensions
.
The extensions you deleted from /Library/Extensions
will then disappear from /Library/StagedExtensions/
. It won't affect your other kernel staged extensions.
/Library/StagedExtensions/
is an intermediate area where your extensions live after you start your session (like a cache). The staging area won't be immediately affected if changes are made to /Library/Extensions
, which I believe is meant to improve stability and security.
这是因为系统完整性保护 (SIP)。您可以禁用它(不推荐)并手动删除 kext。
(来自https://www.imore.com/el-capitan-system-integrity-protection-helps-keep-malware-away)
csrutil disable
并按回车键。如果您稍后决定要重新使用 SIP(我真诚地希望您这样做),请重复这些步骤,然后使用csrutil enable
。