22

我正在尝试从 macOS High Sierra 完全卸载 Parallels。我从磁盘中删除了所有内容,除了存储在 /Library/StagedExtensions/Parallel Desktop.app 下的一些 Parallels 扩展

我认为该位置与用户批准的扩展程序有关,但我也想找到一种方法来删除/卸载这些扩展程序。如果我尝试删除扩展,它会说尽管有 root 权限,但不允许操作。

任何想法?

4

6 回答 6

37

有一种清除 StageExtensions 文件夹的新方法,如下所示

sudo kextcache --clear-staging

此命令将清除 /Library/StageExtensions 文件夹。我们不需要进入恢复模式并手动删除此文件夹,以防安装软件时出现一些权限错误。

于 2018-11-20T06:33:09.250 回答
20

就我而言,当您使 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/ ,其中包含这些新选项。

于 2018-07-12T11:05:30.143 回答
4

sudo kextcache --clear-staging

在文件夹中HD/Library/

干杯

编辑:格式化

Edit2:我相信 Parallels 将一些文件直接写入引导加载程序/内核。从 CMD+R hold restart Disk Utility Terminal 运行命令后,扩展名已从 /Library 中删除。

我希望这是有道理的。

于 2019-12-06T06:15:15.017 回答
3

我在尝试卸载 ScreenFlow 的 TelestreamAudio.kext 时遇到了类似的问题。可能发生的情况是 StagedExtensions 中的 kext 在您处于常规模式时当前正在使用或受保护。进入恢复模式后,您可以在不禁用系统完整性保护的情况下将其删除。以下步骤对我有用,但请谨慎使用。

  • 单击 菜单。选择重启
  • 按住 command-R 启动进入恢复系统
  • 从恢复菜单中选择磁盘工具
  • 在磁盘工具中单击您的主硬盘驱动器(例如 Macintosh HD),然后单击安装
  • 退出磁盘工具
  • 单击菜单栏中的实用程序,然后选择终端
  • 使用以下命令:

.

cd /Volumes/Macintosh\ HD/Library/StagedExtensions/Library/Extensions/
rm -rf NAME_OF_EXTENSION.kext
  • 关闭终端应用程序
  • 单击 菜单并选择重新启动

从那里开始,我能够重新安装 ScreenFlow 的音频 kext 并且它工作正常。它还可以帮助您完全删除 Parallels kext。

于 2017-11-24T23:41:32.983 回答
0

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.

于 2020-08-04T11:14:44.733 回答
-1

这是因为系统完整性保护 (SIP)。您可以禁用它(不推荐)并手动删除 kext。

(来自https://www.imore.com/el-capitan-system-integrity-protection-helps-keep-malware-away

  • 单击 菜单。选择重新启动...
  • 按住 command-R 启动进入恢复系统。
  • 单击实用程序菜单并选择终端。
  • 键入csrutil disable并按回车键。
  • 关闭终端应用程序。单击 菜单并选择重新启动...。

如果您稍后决定要重新使用 SIP(​​我真诚地希望您这样做),请重复这些步骤,然后使用csrutil enable

于 2017-10-05T09:51:45.863 回答