最近系统更新到Ventura,各种用着用着转圈圈,必须重启才能恢复正常,于是一怒之下重新安装了Monterey,没有Time Machine备份,过程很难受。安装好后我们将系统升级屏蔽掉。
简单使用host屏蔽
Mac的host文件存在于/private/etc/hosts中,我们没有办法直接修改系统文件,可以将文件拷贝出来后修改,然后复制进去,当然也可以使用终端进行操作。
使用命令
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保存后即可
使用软件SwitchHosts
在GitHub的release界面下载对应自己设备的安装包,这里我们下载的是SwitchHosts_mac_arm64_4.1.2.6086.dmg
安装完成后打开软件,左上角+新建一个

最后打开右侧小开关即可
通过host屏蔽更新会显示如下图

清除系统更新标记
临时清除系统更新标记
如果已经检测到更新,可以使用如下方法临时去除更新通知标记。
打开 “终端”,执行如下命令:
1
2defaults write com.apple.systempreferences AttentionPrefBundleIDs 0
Killall Dock小红点就消失了
但是在Monterey中,再次进入系统更新,虽然不会提示更新,但是小红点会重复出现
修改权限
确保 FileVault 已经禁用(默认禁用),在 ” >> 系统偏好设置… >> 安全性和隐私 >> 文件保险箱” 查看确认。
关机状态下,长按开机键,出现设置选项后松开,选中选项图标,点击继续,进入后选择当前账户,输入密码,解锁后点击左上角实用工具,选择终端。
首先查看
csrutil状态1
csrutil status

这个是我已经关闭了的,没有关闭最后就是现实enabled
1
csrutil disable
等待两三秒,就会提示关闭成功
再将
authenticated-root关闭1
csrutil authenticated-root disable
不关这个创建快照的时候会出现错误

正常重启到 macOS
通过执行
mount命令查找要挂载的设备
看到第一行的根目录对应的是
/dev/disk3s31,那么应该挂载的设备名称是/dev/disk3s3,s1 表示 “Snapshot 1”(APFS 快照)创建一个新目录用于挂载,我们选择在用户目录下创建
例如:~/mount
l 1
mkdir -p -m777 ~/mount
执行挂载
1
sudo mount -o nobrowse -t apfs /dev/disk3s3 ~/mount
后面两个参数分别是我们刚刚查到的挂载目录和创建的新目录
在新目录下修改文件
1
2cd ~/mount
sudo chmod 644 System/Library/PrivateFrameworks/SoftwareUpdate.framework/Versions/A/Resources/SoftwareUpdateNotificationManager.app/Contents/MacOS/SoftwareUpdateNotificationManager执行
sudo bless --folder ~/mount/System/Library/CoreServices --bootefi --create-snapshot注意,这里要先挂载后再执行,直接执行会报错找不到节点

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

我们需要用到以下命令:
1
sudo bless --mount ~/mount/System/Library/CoreServices/ --setBoot --create-snapshot
重启电脑
验证
1
ls -l /System/Library/PrivateFrameworks/SoftwareUpdate.framework/Versions/A/Resources/SoftwareUpdateNotificationManager.app/Contents/MacOS/SoftwareUpdateNotificationManager

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