更新 Mac 实例上的操作系统和软件 - Amazon Elastic Compute Cloud

更新 Mac 实例上的操作系统和软件

警告

测试版或预览版 macOS 只能在 Amazon EC2 M1 Mac 实例上安装。Amazon EC2 不限定 macOS 的测试版或预览版,也不保证实例在更新到预生产版本 macOS 后仍能正常运行。

在停止或终止实例后,试图在 Amazon EC2 x86 Mac 实例上安装测试版或预览版 macOS 将导致 Amazon EC2 Mac 专属主机性能下降,并且会阻止您开启该主机或在该主机上启动新实例。

在 x86 Mac 实例和 Apple silicon Mac 实例上进行软件更新的步骤。

在 x86 Mac 实例上更新软件

在 x86 Mac 实例上,您可以使用 softwareupdate 命令从 Apple 安装操作系统更新。

要在 x86 Mac 实例上从 Apple 安装操作系统更新
  1. 使用以下命令列出包含可用更新的软件包。

    [ec2-user ~]$ softwareupdate --list
  2. 安装所有更新或仅安装特定更新。要安装特定更新,请使用以下命令。

    [ec2-user ~]$ sudo softwareupdate --install label

    要改为安装所有更新,请使用以下命令。

    [ec2-user ~]$ sudo softwareupdate --install --all --restart

系统管理员可以使用 AWS Systems Manager 在 x86 Mac 实例上推出预先批准的操作系统更新。有关更多信息,请参阅 AWS Systems Manager《用户指南》

您可以使用 Homebrew 在 EC2 macOS AMI 中安装软件包的更新,以便在实例上拥有这些软件包的最新版本。您还可以使用 Homebrew 在 Amazon EC2 macOS 上安装和运行常见 macOS 应用程序。有关详细信息,请参阅 Homebrew 文档

使用 Homebrew 安装更新
  1. 使用以下命令更新 Homebrew。

    [ec2-user ~]$ brew update
  2. 使用以下命令列出包含可用更新的软件包。

    [ec2-user ~]$ brew outdated
  3. 安装所有更新或仅安装特定更新。要安装特定更新,请使用以下命令。

    [ec2-user ~]$ brew upgrade package name

    要改为安装所有更新,请使用以下命令。

    [ec2-user ~]$ brew upgrade

在 Apple silicon Mac 实例上更新软件

注意事项

弹性网络适配器(ENA)驱动程序

由于网络驱动程序配置更新的原因,ENA 驱动程序版本 1.0.2 与 macOS 13.3 或更高版本不兼容。如果要安装任何测试版、预览版或正式版 macOS 13.3 或更高版本,并且尚未安装最新的 ENA 驱动程序,请按照以下步骤安装新版本的驱动程序。

安装新版本的 ENA 驱动程序
  1. 在终端窗口中,使用 SSH 连接到 Apple silicon Mac 实例。

  2. 使用下面的命令将 ENA 应用程序下载到 Applications 文件中。

    [ec2-user ~]$ brew install amazon-ena-ethernet-dext
    故障排除技巧

    如果您收到 No available formula with the name amazon-ena-ethernet-dext 警告,请运行以下命令。

    [ec2-user ~]$ brew update
  3. 键入 exit,然后按下回车键,从而将实例断开连接。

  4. 使用 VNC 客户端激活 ENA 应用程序。

    1. 使用 连接到您实例的图形用户界面(GUI) 设置 VNC 客户端。

    2. 使用屏幕共享应用程序连接到实例后,转到 Applications 文件夹并打开 ENA 应用程序。

    3. 选择激活

    4. 要确认已正确激活驱动程序,请在终端窗口中运行以下命令。命令的输出将显示旧驱动程序处于正在终止状态,而新驱动程序处于已激活状态。

      systemextensionsctl list;
    5. 重启实例后,将仅出现新驱动程序。

Apple silicon Mac 实例上的软件更新

在 Apple silicon Mac 实例上,您必须完成几个步骤才能执行就地操作系统更新。首先,使用具备 VNC(虚拟网络计算)客户端的 GUI 访问实例的内部磁盘。此过程使用内置 VNC 客户端中的 macOS 屏幕共享。然后以 aws-managed-user 身份登录 Amazon EBS 卷,以将所有权委派给管理用户 (ec2-user)。

完成此过程后,您将创建两个密码。一个密码适用于管理用户 (ec2-user),另一个密码适用于特殊管理用户 (aws-managed-user)。请记住这些密码,因为您将在完成该过程后使用它们。

注意

在 macOS Big Sur 上执行该过程后,只能进行次要更新,例如从 macOS Big Sur 11.7.3 更新到 macOS Big Sur 11.7.4。对于 macOS Monterey 或更高版本,可以执行主要软件更新。

访问内部磁盘
  1. 在本地计算机上的终端中,使用以下命令通过 SSH 连接到 Apple silicon Mac 实例。有关更多信息,请参阅 使用 SSH 连接到您的实例

    ssh -i /path/key-pair-name.pem ec2-user@instance-public-dns-name
  2. 使用以下命令安装并启动 macOS 屏幕共享。

    [ec2-user ~]$ sudo launchctl enable system/com.apple.screensharing sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.screensharing.plist
  3. 使用以下命令设置 ec2-user 的密码。请记住该密码,因为您稍后会用到它。

    [ec2-user ~]$ sudo /usr/bin/dscl . -passwd /Users/ec2-user
  4. 键入 exit 并按 return,与实例断开连接。

  5. 在本地计算机上的终端中,使用以下命令,通过通往 VNC 端口的 SSH 隧道重新连接到实例。

    ssh -i /path/key-pair-name.pem -L 5900:localhost:5900 ec2-user@instance-public-dns-name
    注意

    在完成以下 VNC 连接和 GUI 步骤之前,请勿退出该 SSH 会话。实例重启后,连接会自动关闭。

  6. 在本地计算机上,使用以下步骤连接到 localhost:5900

    1. 打开查找器并选择前往

    2. 选择连接到服务器

    3. 服务器地址字段中,输入 vnc://localhost:5900

  7. 在 macOS 窗口中,使用您在步骤 3 中创建的密码,以 ec2-user 身份连接到 Apple silicon Mac 实例的远程会话。

  8. 使用以下选项之一访问名为 InternalDisk 的内部磁盘。

    1. 对于 macOS Ventura 或更高版本:打开系统设置,在左侧窗格中选择常规,然后选择窗格右下角的启动磁盘

    2. 对于 macOS Monterey 或更低版本:打开系统偏好设置,选择启动磁盘,然后选择窗口左下角的锁定图标以解锁窗格。

    故障排除技巧

    如需安装内部磁盘,请在终端中运行以下命令。

    APFSVolumeName="InternalDisk" ; SSDContainer=$(diskutil list | grep "Physical Store disk0" -B 3 | grep "/dev/disk" | awk {'print $1'} ) ; diskutil apfs addVolume $SSDContainer APFS $APFSVolumeName
  9. 选择名为 InternalDisk 的内部磁盘,然后选择重新启动。出现系统提示时,再次选择重新启动

    重要

    如果内部磁盘名为 Macintosh HD 而不是 InternalDisk,则需要停止实例然后重新启动,才能更新专属主机。有关更多信息,请参阅 停止并终止 Mac 实例

按照以下步骤操作可将所有权委派给管理用户。通过 SSH 重新连接到实例后,可使用特殊管理用户 (aws-managed-user) 从内部磁盘启动实例。aws-managed-user 的初始密码为空,因此您需要在首次连接时将其覆盖。然后,由于启动卷已更改,您需要重复安装和启动 macOS 屏幕共享的步骤。

将 Amazon EBS 卷的所有权委派给管理员
  1. 在本地计算机上的终端中,使用以下命令连接到 Apple silicon Mac 实例。

    ssh -i /path/key-pair-name.pem aws-managed-user@instance-public-dns-name
  2. 收到警告 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 后,使用以下命令之一解决该问题。

    1. 使用以下命令清除已知主机。然后重复上一步。

      rm ~/.ssh/known_hosts
    2. 将以下内容添加到上一个步中的 SSH 命令。

      -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
  3. 使用以下命令设置 aws-managed-user 的密码。aws-managed-user 的初始密码为空,因此您需要在首次连接时将其覆盖。

    1. [aws-managed-user ~]$ sudo /usr/bin/dscl . -passwd /Users/aws-managed-user password
    2. 收到提示 Permission denied. Please enter user's old password: 时,请按 Enter。

      故障排除技巧

      如您遇到 passwd: DS error: eDSAuthFailed 错误,请使用以下命令。

      [aws-managed-user ~]$ sudo passwd aws-managed-user
  4. 使用以下命令安装并启动 macOS 屏幕共享。

    [aws-managed-user ~]$ sudo launchctl enable system/com.apple.screensharing sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.screensharing.plist
  5. 键入 exit 并按 return,与实例断开连接。

  6. 在本地计算机上的终端中,使用以下命令,通过通往 VNC 端口的 SSH 隧道重新连接到实例。

    ssh -i /path/key-pair-name.pem -L 5900:localhost:5900 aws-managed-user@instance-public-dns-name
  7. 在本地计算机上,使用以下步骤连接到 localhost:5900

    1. 打开查找器并选择前往

    2. 选择连接到服务器

    3. 服务器地址字段中,输入 vnc://localhost:5900

  8. 在 macOS 窗口中,使用您在步骤 3 中创建的密码,以 aws-managed-user 身份连接到 Apple silicon Mac 实例的远程会话。

    注意

    当提示使用 Apple ID 登录时,选择稍后设置

  9. 使用以下选项之一访问 Amazon EBS 卷。

    1. 对于 macOS Ventura 或更高版本:打开系统设置,在左侧窗格中选择常规,然后选择窗格右下角的启动磁盘

    2. 对于 macOS Monterey 或更低版本:打开系统偏好设置,选择启动磁盘,然后选择窗口左下角的锁定图标以解锁窗格。

    注意

    重启之前,当系统提示输入管理员密码时,请使用上述为 aws-managed-user 设置的密码。此密码可能不同于您为 ec2-user 或实例上的默认管理员账户设置的密码。以下说明指定了何时使用实例的管理员密码。

  10. 选择 Amazon EBS 卷(启动磁盘窗口中未命名为 internalDisk 的卷),然后选择重新启动

    注意

    如果您的 Apple silicon Mac 实例上附加了多个可启动的 Amazon EBS 卷,则必须为每个卷使用唯一的名称。

  11. 确认重新启动,然后在出现系统提示时选择授权用户

  12. 在该卷上授权用户窗格中,确认是否已选择管理用户(默认为 ec2-user),然后选择授权

  13. 输入您在上一过程步骤 3 中创建的 ec2-user 密码,然后选择继续

  14. 出现系统提示时,输入特殊管理用户 (aws-managed-user) 的密码。

  15. 在本地计算机上的终端中,通过 SSH 和用户名 ec2-user 重新连接到实例。

    故障排除技巧

    如果收到警告 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!,请运行以下命令并通过 SSH 重新连接到实例。

    rm ~/.ssh/known_hosts
  16. 要执行软件更新,请使用 在 x86 Mac 实例上更新软件 下方的命令。