macOS 13+ ARM版电脑零接触部署问题解决方法

暗香疏影 创作者

ARM版本电脑部署 macOS 13+问题:

  1. 因为ARM版(M1/M2等) 苹果在macOS 13+修改大多数策略和配置文件导致在使用URL注册的MDM可以被用户删除;
  2. 因为ARM版直接在第一次开机部署的脚本无法自动连接WiFi,且无法安装Rosetta,会导致其他依赖Rosetta的软件无法安装。
  3. 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”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# 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也就不会有问题。

  • 标题: macOS 13+ ARM版电脑零接触部署问题解决方法
  • 作者: 暗香疏影
  • 创建于 : 2023-04-14 00:00:00
  • 更新于 : 2023-04-24 00:00:00
  • 链接: https://blog.23ikr.com/2023/04/14/2023-04-14-macos-deploy-for-arm/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论