OSX优化器
OSX优化器:优化MacOS - 使用Shell脚本加快Mac启动时间、加速加载,并防止不必要的节流。
可以使用defaults
命令对macOS进行大量修改。事实上,几乎所有选项都可以通过defaults
访问。
查看在设置应用中勾选或取消勾选某个选项的效果的好方法是:
defaults read > defaults.pre.txt
# *在设置中进行更改*
defaults read > defaults.post.txt
diff defaults.pre.txt defaults.post.txt
OSX优化
以下是一些非常有效的优化方法,特别适用于虚拟机。
有些命令从远程访问的角度来看可能存在风险,但它们会大大优化你的虚拟机。
跳过图形界面登录屏幕(风险自负!)
defaults write com.apple.loginwindow autoLoginUser -bool true
用户账户和root/管理员有不同的defaults
在macOS上禁用Spotlight索引以大幅加速虚拟实例。
# 通过禁用Spotlight大幅提高虚拟化macOS的性能。
sudo mdutil -i off -a
# 由于无法使用Spotlight查找应用程序,你可以使用以下命令重新启用
# sudo mdutil -i on -a
启用性能模式
打开性能模式以为服务器应用程序分配额外的系统资源。
详情:https://support.apple.com/en-us/HT202528
# 检查是否启用(应包含`serverperfmode=1`)
nvram boot-args
# 开启
sudo nvram boot-args="serverperfmode=1 $(nvram boot-args 2>/dev/null | cut -f 2-)"
# 关闭
sudo nvram boot-args="$(nvram boot-args 2>/dev/null | sed -e $'s/boot-args\t//;s/serverperfmode=1//')"
禁用重量级登录屏幕壁纸
sudo defaults write /Library/Preferences/com.apple.loginwindow DesktopPicture ""
减少动画和透明度
defaults write com.apple.Accessibility DifferentiateWithoutColor -int 1
defaults write com.apple.Accessibility ReduceMotionEnabled -int 1
defaults write com.apple.universalaccess reduceMotion -int 1
defaults write com.apple.universalaccess reduceTransparency -int 1
启用多会话
sudo /usr/bin/defaults write .GlobalPreferences MultipleSessionsEnabled -bool TRUE
defaults write "Apple Global Domain" MultipleSessionsEnabled -bool true
禁用更新(风险自负!)
这将阻止macOS下载大型更新,节省磁盘空间。
禁用更新可以大大加速虚拟化的macOS,因为qcow2镜像不会过度增长。
# 以root身份执行
sudo su
defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticDownload -bool false
defaults write com.apple.SoftwareUpdate AutomaticCheckEnabled -bool false
defaults write com.apple.commerce AutoUpdate -bool false
defaults write com.apple.commerce AutoUpdateRestartRequired -bool false
defaults write com.apple.SoftwareUpdate ConfigDataInstall -int 0
defaults write com.apple.SoftwareUpdate CriticalUpdateInstall -int 0
defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 0
defaults write com.apple.SoftwareUpdate AutomaticDownload -int 0
自动启用通过SSH使用osascript
,无需sshd-keygen警告和完全磁盘访问权限
defaults write com.apple.universalaccessAuthWarning /System/Applications/Utilities/Terminal.app -bool true
defaults write com.apple.universalaccessAuthWarning /usr/libexec -bool true
defaults write com.apple.universalaccessAuthWarning /usr/libexec/sshd-keygen-wrapper -bool true
defaults write com.apple.universalaccessAuthWarning com.apple.Messages -bool true
defaults write com.apple.universalaccessAuthWarning com.apple.Terminal -bool true
禁用屏幕锁定
defaults write com.apple.loginwindow DisableScreenLock -bool true
显示简单的用户名/密码提示,而不是所有用户的列表
defaults write /Library/Preferences/com.apple.loginwindow.plist SHOWFULLNAME -bool true
defaults write com.apple.loginwindow AllowList -string '*'
禁用在关机时保存应用程序状态
这可以加快启动速度,因为会话状态(当前打开的应用程序)在重启时不会运行。
根据你的使用情况,这可能会使启动变慢。
defaults write com.apple.loginwindow TALLogoutSavesState -bool false
自动启用AnyDesk
defaults write com.apple.universalaccessAuthWarning "/Applications/AnyDesk.app" -bool true
defaults write com.apple.universalaccessAuthWarning "/Applications/AnyDesk.app/Contents/MacOS/AnyDesk" -bool true
defaults write com.apple.universalaccessAuthWarning "3::/Applications" -bool true
defaults write com.apple.universalaccessAuthWarning "3::/Applications/AnyDesk.app" -bool true
defaults write com.apple.universalaccessAuthWarning "com.philandro.anydesk" -bool true
启用远程访问(风险自负!)
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \
-activate \
-configure \
-access \
-off \
-restart \
-agent \
-privs \
-all \
-allowAccessFor -allUsers
将WiFi连接到最强的接入点
使WiFi保持连接到可用的最强(通常是最近的)接入点。
MacOS默认没有指定这种行为。
sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport prefs JoinMode=Strongest
极度不安全的方法(风险自负!)
这些macOS优化应该只在CI/CD环境中使用,且需要在VPN后面,并且没有外部连接。
这不是一个警告,这是绝对必要的,否则任何人都可以通过SSH登录到远程Mac。
如果你在远程服务器上执行以下任何命令,你将
全局禁用密码
- 现在所有人都是root
- 无需输入密码
- SSH登录时只需按回车键即可跳过密码
以root身份:
sudo su
# 禁用pam
for PAM_FILE in /etc/pam.d/*; do
sed -i -e s/required/optional/g "${PAM_FILE}"
sed -i -e s/sufficient/optional/g "${PAM_FILE}"
done
sudo killall Finder || true sudo killall Dock || true sudo killall mds
让所有人成为sudoer
cd /Users
# 将所有人添加到sudoers并导入控制中心plist
for REAL_NAME in *; do
echo "${REAL_NAME}"
tee "/etc/sudoers.d/${REAL_NAME}" <<< "${REAL_NAME} ALL=(ALL) NOPASSWD: ALL"
sudo -u "${REAL_NAME}" sudo mdutil -i off -a
sudo -u "${REAL_NAME}" "whoami"
done
完全禁止应用程序进入睡眠状态
这个命令将阻止应用程序在后台进入睡眠状态。
你可以使用top
命令验证,应用程序应该永远不会进入sleeping
状态。
这会增加RAM的使用,但意味着你的应用程序,如Xcode,将立即响应。
sudo -u "${REAL_NAME}" sudo defaults write NSGlobalDomain NSAppSleepDisabled -bool YES