ARM版本电脑部署 macOS 13+问题:
- 因为ARM版(M1/M2等) 苹果在macOS 13+修改大多数策略和配置文件导致在使用URL注册的MDM可以被用户删除;
- 因为ARM版直接在第一次开机部署的脚本无法自动连接WiFi,且无法安装Rosetta,会导致其他依赖Rosetta的软件无法安装。
- Recovery Lock无法下发问题。
最佳实践:
解决macOS 13 URL注册可以被用户删除的问题
针对第一个问题,且电脑来源无法直接ASM的情况下(例如串货,特殊优惠渠道),只能通过手机版Apple Configurator进行注册来避免。所以MDS部署需要去除掉Skip Setup Assistant勾选,然后通过手机版Apple Configurator扫码从而使得电脑获得配置文件。如果已在ASM/ABM中则联网后自动下载配置文件。
提示:即使是DEP(ASM/ABM)设备如果跳过了Setup Assistant后,通过URL注册的方式,用户依然可以删除MDM。
所以我们必须保留Setup Assistant,之后步骤可以在MDM中设置跳过。
macOS 使用Apple Configurator第一次注册到ASM/ABM - SimpleMDM
macOS 使用Apple Configurator第一次注册到ASM/ABM - Hexnode
解决使用MDS 无法安装Intel App的问题
由于MDS部署后,不知道为什么WiFi无法连上,也就导致Intel App无法安装了。
在参考了hexnode的脚本后发现,安装Rosetta依然显示连不上网,于是稍微修改了脚本。
需要注意的是,当同一个Workflow有packages以及script的时候,需要将脚本的顺序修改为"After macOS Install, but before packages install"
# Determine WiFi is Connected
wifi_status=$(ifconfig en0 |grep "status: active")
wifi_network=$(networksetup -getairportnetwork en0 | awk -F': ' '/Current Wi-Fi Network/{print $2}')
if [ -z "$wifi_status" ]; then
echo "WiFi is not Connected. Setting to AppleWiFi..."
# Set Wi-Fi
networksetup -setairportnetwork en0 AppleWiFi
sleep 5
else
echo "WiFi is already connected to $wifi_network"
fi
# Determine the architecture of the macOS device
processorBrand=$(/usr/sbin/sysctl -n machdep.cpu.brand_string)
if [[ "${processorBrand}" = *"Apple"* ]]; then
echo "Apple Processor is present."
else
echo "Apple Processor is not present. Rosetta not required."
exit 0
fi
# Check if Rosetta is installed
checkRosettaStatus=$(/bin/launchctl list | /usr/bin/grep "com.apple.oahd-root-helper")
RosettaFolder="/Library/Apple/usr/share/rosetta"
if [[ -e "${RosettaFolder}" && "${checkRosettaStatus}" != "" ]]; then
echo "Rosetta Folder exists and Rosetta Service is running. Exiting..."
exit 0
else
echo "Rosetta Folder does not exist or Rosetta service is not running. Installing Rosetta..."
fi
# Install Rosetta with WIFI check
if [ -z "$wifi_status" ]; then
echo "Rosetta - WiFi is not Connected. Setting to AppleWiFi..."
# Set Wi-Fi
networksetup -setairportnetwork en0 AppleWiFi
sleep 5
echo "Starting to Install Rosetta - Setting WiFi Done"
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
else
echo "Rosetta - WiFi is already connected to $wifi_network"
echo "Starting to Install Rosetta - Detected WiFi"
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
fi
# /usr/sbin/softwareupdate --install-rosetta --agree-to-license
# Check the result of Rosetta install command
if [[ $? -eq 0 ]]; then
echo "Rosetta installed successfully."
exit 0
else
echo "Rosetta installation failed."
exit 1
fi
exit 0
解决Recovery Lock下发不成功的问题
因为我们需要Bootstrap Token 在escrowed状态,以及该账号下Secure Token为Yes。Secure Token是在第一次登录账号或者Setup Assistant完成后建立的,而早期部署中,由于忽略Setup Assistant以及第一次账号使用的是隐藏账号,然后跳到新建的用户账号导致Secure Token无法下发到新建用户下面,导致Rocovery Lock无法下发部署。
第一,通过MDM设置Bootstrap Token,使得电脑获得MDM后会自动获得Bootstrap Token。
第二,由于我们MDS部署步骤已经修改为含Setup Assistant, Secure Token也就不会有问题。