Monterey屏蔽更新

  • ~2.10K 字

最近系统更新到Ventura,各种用着用着转圈圈,必须重启才能恢复正常,于是一怒之下重新安装了Monterey,没有Time Machine备份,过程很难受。安装好后我们将系统升级屏蔽掉。

简单使用host屏蔽

Mac的host文件存在于/private/etc/hosts中,我们没有办法直接修改系统文件,可以将文件拷贝出来后修改,然后复制进去,当然也可以使用终端进行操作。

  1. 使用命令

    1
    sudo nano /private/etc/hosts

    使用nano编辑器单纯是比较习惯这个,当然我们也可以使用vim

    复制以下代码进去

    1
    2
    3
    4
    5
    6
    7
    ## Mac Software Update (sysin)
    127.0.0.1 swdist.apple.com
    127.0.0.1 swscan.apple.com
    127.0.0.1 swcdn.apple.com
    127.0.0.1 gdmf.apple.com
    127.0.0.1 mesu.apple.com
    127.0.0.1 xp.apple.com

    Ctrl + x保存后即可

  2. 使用软件SwitchHosts

    在GitHub的release界面下载对应自己设备的安装包,这里我们下载的是SwitchHosts_mac_arm64_4.1.2.6086.dmg

    安装完成后打开软件,左上角+新建一个

    最后打开右侧小开关即可

    通过host屏蔽更新会显示如下图

清除系统更新标记

  1. 临时清除系统更新标记

    如果已经检测到更新,可以使用如下方法临时去除更新通知标记。

    打开 “终端”,执行如下命令:

    1
    2
    defaults write com.apple.systempreferences AttentionPrefBundleIDs 0
    Killall Dock

    小红点就消失了

    但是在Monterey中,再次进入系统更新,虽然不会提示更新,但是小红点会重复出现

  2. 修改权限

    1. 确保 FileVault 已经禁用(默认禁用),在 ” >> 系统偏好设置… >> 安全性和隐私 >> 文件保险箱” 查看确认。

    2. 关机状态下,长按开机键,出现设置选项后松开,选中选项图标,点击继续,进入后选择当前账户,输入密码,解锁后点击左上角实用工具,选择终端。

    3. 首先查看csrutil状态

      1
      csrutil status

      这个是我已经关闭了的,没有关闭最后就是现实enabled

      1
      csrutil disable

      等待两三秒,就会提示关闭成功

      再将authenticated-root关闭

      1
      csrutil authenticated-root disable

      不关这个创建快照的时候会出现错误

    4. 正常重启到 macOS

    5. 通过执行 mount 命令查找要挂载的设备

      看到第一行的根目录对应的是/dev/disk3s31,那么应该挂载的设备名称是 /dev/disk3s3,s1 表示 “Snapshot 1”(APFS 快照)

    6. 创建一个新目录用于挂载,我们选择在用户目录下创建

      例如:~/mount

      l
      1
      mkdir -p -m777 ~/mount
    7. 执行挂载

      1
      sudo mount -o nobrowse -t apfs /dev/disk3s3 ~/mount

      后面两个参数分别是我们刚刚查到的挂载目录和创建的新目录

    8. 在新目录下修改文件

      1
      2
      cd ~/mount
      sudo chmod 644 System/Library/PrivateFrameworks/SoftwareUpdate.framework/Versions/A/Resources/SoftwareUpdateNotificationManager.app/Contents/MacOS/SoftwareUpdateNotificationManager
    9. 执行sudo bless --folder ~/mount/System/Library/CoreServices --bootefi --create-snapshot

      注意,这里要先挂载后再执行,直接执行会报错找不到节点

      在M芯片的Mac上,我们无法使用上述命令完成快照生成

      我们需要用到以下命令:

      1
      sudo bless --mount ~/mount/System/Library/CoreServices/ --setBoot --create-snapshot
    10. 重启电脑

    11. 验证

      1
      ls -l /System/Library/PrivateFrameworks/SoftwareUpdate.framework/Versions/A/Resources/SoftwareUpdateNotificationManager.app/Contents/MacOS/SoftwareUpdateNotificationManager

      此时,即使不做任何屏蔽操作,可以正常检测软件更新,但不会出现更新标记(红点数字1)

赞助喵
非常感谢您的喜欢!
赞助喵
分享这一刻
让朋友们也来瞅瞅!