

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 更新 Amazon EC2 Mac 執行個體上的作業系統和軟體
<a name="mac-instance-updates"></a>

下列主題說明如何更新 Apple 晶片 Mac 執行個體 (Mac2、Mac2-m1ultra, Mac2-m2, Mac2-m2pro, Mac-m4 和 Mac-m4pro) 和 x86 Mac 執行個體 (Mac1) 上的作業系統與軟體。

**警告**  
只有 Apple 晶片 Mac 執行個體才能安裝 Beta 版或預覽 macOS 版本。Amazon EC2 不符合 Beta 版或預覽版 macOS 版本的資格，且無法確保執行個體在更新至生產前 macOS 版本後仍能正常運作。  
嘗試在 Amazon EC2 x86 Mac 執行個體上安裝 Beta 版或預覽版 macOS 版本，會導致停止或終止執行個體時，EC2 Mac 專用執行個體降級，並且會阻止您在該專用執行個體上開始或啟動新的執行個體。

**注意**  
若您在 AWS 發行官方 AMI 之前執行就地 macOS 更新，則更新僅適用於選取的主機。若您有其他主機，或啟動新的主機，也必須在這些主機上執行相同的更新程序。每個 macOS 版本在基礎 Apple Mac 硬體上都需要最低韌體版本。就地更新僅會更新所選主機上的韌體，而不會傳輸至其他現有或新的主機。要檢查哪些 macOS 版本與您的 Amazon EC2 Mac 專用主機相容，請參閱[為您的 Amazon EC2 Mac 專用主機尋找支援的 macOS 版本](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/macos-firmware-visibility.html)。

**Topics**

## 在 Apple 晶片 Mac 執行個體上更新軟體
<a name="mac2"></a>

### 先決條件
<a name="mac2-ena-update"></a>

由於網路驅動程式組態中的更新，ENA 驅動程式 1.0.2 版與 macOS 13.3 或更新版本不相容。如果您要安裝 Beta 版、預覽版或生產 macOS 13.3 版或更新版本，且尚未安裝最新的 ENA 驅動程式，請使用下列程序安裝新的驅動程式版本。

**安裝 ENA 驅動程式的新版本**

1. 在「終端機」視窗中，使用 [SSH](connect-to-mac-instance.md#mac-instance-ssh) 連線至 Apple 晶片 Mac 執行個體。

1. 使用下列命令更新 Homebrew 並將 ENA 應用程式下載到 `Applications` 檔案中。

   ```
   [ec2-user ~]$ brew update
   ```

   ```
   [ec2-user ~]$ brew install amazon-ena-ethernet-dext
   ```

1. 輸入 **exit** 並按 return，斷開與執行個體的連線。

1. 使用 VNC 用戶端啟動 ENA 應用程式。

   1. 使用 [連線至您的執行個體的圖形使用者介面 (GUI)](connect-to-mac-instance.md#mac-instance-vnc) 設定 VNC 用戶端。

   1. 使用「螢幕共用」應用程式連線至執行個體後，請前往**應用程式**資料夾並開啟 ENA 應用程式。

   1. 選擇**啟用**

   1. 若要確認驅動程式已正確啟動，請在終端視窗中執行下列命令。命令輸出顯示舊驅動程式處於終止狀態，並且新驅動程式處於啟動狀態。

      ```
      systemextensionsctl list;
      ```

   1. 重新啟動執行個體後，只會出現新的驅動程式。

### 執行軟體更新
<a name="mac2-software-update"></a>

在 Apple 晶片 Mac 執行個體上，您必須完成數個步驟才能執行就地作業系統更新。其中包括將 Amazon EBS 根磁碟區的所有權委派給 EBS 根磁碟區管理使用者。您可選擇使用 Amazon EC2 API 自動執行此操作，也可以在執行個體上執行命令來手動執行此操作。

------
#### [ Automated volume ownership delegation (Recommended) ]

**考量事項**
+ 完成磁碟區的所有權委派任務可能需要 30 到 90 分鐘。在此期間，該執行個體將處於無法存取的狀態。
+ 以下為可支援的 macOS 版本：
  + **Mac2 \$1 Mac2-m1ultra** – macOS Ventura (13.0 版或更新版本)
  + **Mac2-m2 \$1 Mac2-m2pro** – macOS Ventura (13.2 版或更新版本)
  + **Mac-m4 \$1 Mac-m4pro** – macOS Sequoia (15.6 版或更新版本)
+ 執行個體只能有一個可啟動磁碟區，而且每個連接的磁碟區只能有一個額外的管理員使用者。

**步驟 1：設定密碼，並啟用 EBS 根磁碟區管理使用者的安全字符**

您必須設定密碼，並為 Amazon EBS 根磁碟區管理使用者 (`ec2-user`) 啟用安全權杖。
**注意**  
密碼和安全字符在您第一次使用 GUI 連接到 Apple 晶片 Mac 執行個體時設定。若您之前[使用 GUI 連接到執行個體](connect-to-mac-instance.md#mac-instance-vnc)，則**不**需要執行這些步驟。

1. [使用 SSH 連線至執行個體](connect-to-mac-instance.md#mac-instance-ssh)。

1. 設定 `ec2-user` 使用者的密碼。

   ```
   $ sudo /usr/bin/dscl . -passwd /Users/ec2-user
   ```

1. 為 `ec2-user` 使用者啟用安全字符。對於 `-oldPassword`，指定與上一個步驟相同的密碼。對於 `-newPassword`，請指定不同的密碼。下列命令假設您已將舊密碼與新密碼儲存在 `.txt` 檔案中。

   ```
   $ sysadminctl -oldPassword `cat old_password.txt` -newPassword `cat new_password.txt`
   ```

1. 確認安全字符已啟用。

   ```
   $ sysadminctl -secureTokenStatus ec2-user
   ```

**步驟 2：將 Amazon EBS 根磁碟區的所有權委派給 EBS 根磁碟區的管理使用者**

若要委派所有權，您必須建立磁碟區所有權委派任務。

1. 使用 [ create-delegate-mac-volume-ownership-task](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-delegate-mac-volume-ownership-task.html) 命令建立任務。對於 `--instance-id`，指定執行個體 ID。對於 `--mac-credentials`，請指定下列憑證：
   + **內部磁碟的管理使用者**
     + **使用者名稱** – 僅支援預設的管理使用者 (`aws-managed-user`)，並且預設會使用。您無法指定其他管理員使用者。
     + **密碼** – 若您未變更 `aws-managed-user` 的預設密碼，請指定預設密碼，即*空白*。否則，請指定您自訂的密碼。
   + **Amazon EBS 根磁碟區管理使用者**
     + **使用者名稱** – 若您未變更預設管理使用者，請指定 `ec2-user`。否則，為您的管理使用者指定使用者名稱。
     + **密碼** – 指定您在上述步驟 1 中為根磁碟區管理員使用者設定的密碼。

   ```
   aws ec2 create-delegate-mac-volume-ownership-task \
   --instance-id i-1234567890abcdef0 \
   --mac-credentials file://mac-credentials.json
   ```

   之前範例中所參考 `mac-credentials.json` 檔案的內容如以下所示。

   ```
   {
     "internalDiskPassword":"internal-disk-admin_password",
     "rootVolumeUsername":"root-volume-admin_username",
     "rootVolumepassword":"root-volume-admin_password"
   }
   ```

1. 等待磁碟區所有權委派任務完成，並等候執行個體恢復至良好運作狀態。使用 [ describe-mac-modification-tasks](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-mac-modification-tasks.html) 命令。針對 `--mac-modification-task-id`，指定上一個步驟的磁碟區所有權委派任務 ID。

   ```
   aws ec2 describe-mac-modification-tasks \
   --mac-modification-task-id task-id
   ```

1. 磁碟區所有權委派任務完成後，繼續執行步驟 3。

**步驟 3：更新軟體**  
在您委派 Amazon EBS 根磁碟區的所有權之後，請依照 [在 x86 Mac 執行個體上更新軟體](#x86-mac1) (下方) 中所述的步驟更新軟體。

------
#### [ Manual volume ownership delegation ]

當您執行此程序時，會建立兩個密碼。一個密碼用於 Amazon EBS 根磁碟區管理使用者 (`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 晶片 Mac 執行個體。如需詳細資訊，請參閱[使用 SSH 連線到您的執行個體](connect-to-mac-instance.md#mac-instance-ssh)。

   ```
   ssh -i /path/key-pair-name.pem ec2-user@instance-public-dns-name
   ```

1. 使用下列命令，安裝並啟動 macOS Screen Sharing。

   ```
   [ec2-user ~]$ sudo launchctl enable system/com.apple.screensharing
   sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.screensharing.plist
   ```

1. 使用以下命令設定 `ec2-user` 的密碼。記住密碼，供以後使用。

   ```
   [ec2-user ~]$ sudo /usr/bin/dscl . -passwd /Users/ec2-user
   ```

1. 輸入 **exit** 並按回車鍵，斷開與執行個體的連線。

1. 從本機電腦的「終端」中，使用下列命令透過 VNC 連接埠的 SSH 通道重新連線至執行個體。

   ```
   ssh -i /path/key-pair-name.pem -L 5900:localhost:5900 ec2-user@instance-public-dns-name
   ```
**注意**  
在完成下列 VNC 連線和 GUI 步驟之前，請勿結束此 SSH 工作階段。重新啟動執行個體時，連線會自動關閉。

1. 從您的本機電腦，使用下列步驟連線到 `localhost:5900`：

   1. 開啟 **Finder**，並選取**開始**。

   1. 選取**連線至伺服器**。

   1. 在**伺服器地址**欄位中，輸入 `vnc://localhost:5900`。

1. 在 macOS 視窗中，使用您在[步驟 3](#passwd-step) 中建立的密碼以 `ec2-user` 身分連線至 Apple 晶片 Mac 執行個體的遠端工作階段。

1. 使用下列其中一個選項存取名為 **InternalDisk** 的內部磁碟。

   1. 對於 macOS Ventura 或更高版本：開啟**系統設定**，在左窗格中選取**一般**，然後選取窗格右下角的**啟動磁碟**。

   1. 對於 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
   ```

1. 選擇名為 **InternalDisk** 的內部磁碟，然後選取**重新啟動**。出現提示時再次選取**重新啟動**。
**重要**  
如果內部磁碟名為 **Macintosh HD** 而非 **InternalDisk**，則您的執行個體必須停止並重新啟動，才能更新專用執行個體。如需詳細資訊，請參閱[停止或終止 Amazon EC2 Mac 執行個體](mac-instance-stop.md)。

使用下列程序將擁有權委派給管理使用者。當透過 SSH 重新連線至執行個體時，可以使用特殊管理使用者 (`aws-managed-user`) 從內部磁碟開機。`aws-managed-user` 的初始密碼為空白，因此您需要在第一次連線時覆寫它。然後，由於開機磁碟區已變更，因此您需要重複以下步驟來安裝和啟動 macOS Screen Sharing。

**將擁有權委派給 Amazon EBS 磁碟區上的管理員**

1. 從本機電腦的「終端機」中，使用下列命令連線至 Apple 晶片 Mac 執行個體。

   ```
   ssh -i /path/key-pair-name.pem aws-managed-user@instance-public-dns-name
   ```

1. 當您收到警告 `WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!` 時，請使用下列其中一個命令來解決此問題。

   1. 使用以下命令清除已知主機。然後，重複上一個步驟。

      ```
      rm ~/.ssh/known_hosts
      ```

   1. 將下列命令新增到上一個步驟的 SSH 命令。

      ```
      -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
      ```

1. 使用下列命令設定 `aws-managed-user` 的密碼。`aws-managed-user` 初始密碼為空白，因此您需要在第一次連線時覆寫它。

   1. 

      ```
      [aws-managed-user ~]$ sudo /usr/bin/dscl . -passwd /Users/aws-managed-user password
      ```

   1. 當您收到 `Permission denied. Please enter user's old password:` 提示時，請按 Enter 鍵。
**疑難排解秘訣**  
如果發生 `passwd: DS error: eDSAuthFailed` 錯誤，請使用下列命令。  

      ```
      [aws-managed-user ~]$ sudo passwd aws-managed-user
      ```

1. 使用下列命令，安裝並啟動 macOS Screen Sharing。

   ```
   [aws-managed-user ~]$ sudo launchctl enable system/com.apple.screensharing
   sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.screensharing.plist
   ```

1. 輸入 **exit** 並按回車鍵，斷開與執行個體的連線。

1. 從本機電腦的「終端」中，使用下列命令透過 VNC 連接埠的 SSH 通道重新連線至執行個體。

   ```
   ssh -i /path/key-pair-name.pem -L 5900:localhost:5900 aws-managed-user@instance-public-dns-name
   ```

1. 從您的本機電腦，使用下列步驟連線到 `localhost:5900`：

   1. 開啟 **Finder**，並選取**開始**。

   1. 選取**連線至伺服器**。

   1. 在**伺服器地址**欄位中，輸入 `vnc://localhost:5900`。

1.  在 macOS 視窗中，使用您在[步驟 3](#amu-passwd) 中建立的密碼以 `aws-managed-user` 身分連線至 Apple 晶片 Mac 執行個體的遠端工作階段。
**注意**  
當系統提示您使用 Apple ID 登入時，請選取**稍後設定**。

1. 使用下列其中一個選項，存取 Amazon EBS 磁碟區。

   1. 對於 macOS Ventura 或更新版本：開啟**系統設定**，在左窗格中選取**一般**，然後選取窗格右下角的**啟動磁碟**。

   1. 對於 macOS Monterey 或較早的版本：開啟**系統偏好設定**，選取**啟動磁碟**，然後使用視窗左下角的鎖定圖像來解鎖窗格。
**注意**  
在重新開機之前，當系統提示輸入管理員密碼時，請使用您上面設定的 `aws-managed-user` 密碼。此密碼可能與您為 `ec2-user` 或執行個體上的預設管理員帳戶設定的密碼不同。下列說明指定何時使用執行個體的管理員密碼。

1. 選取 Amazon EBS 磁碟區 (**啟動磁碟**視窗中未命名為 **InternalDisk** 的磁碟區)，然後選擇**重新啟動**。
**注意**  
如果您將多個可開機的 Amazon EBS 磁碟區連接至 Apple 晶片 Mac 執行個體，則請務必為每個磁碟區使用唯一的名稱。

1. 確認重新啟動，然後在出現提示時選擇**授權使用者**。

1. 於**在此磁碟區授權使用者**窗格中，確認已選取管理使用者 (預設為 `ec2-user`)，然後選取**授權**。

1. 輸入您在上一個程序的[步驟 3](#passwd-step) 中建立的 `ec2-user` 密碼，然後選取**繼續**。

1. 出現提示時，請輸入特殊管理使用者的密碼 (`aws-managed-user`)。

1. 從本機電腦的「終端」中，使用 SSH 與使用者名稱 `ec2-user` 重新連線到執行個體。
**疑難排解秘訣**  
如果收到警告 `WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!`，則請執行下列命令，然後使用 SSH 重新連線至執行個體。  

   ```
   rm ~/.ssh/known_hosts
   ```

1. 若要執行軟體更新，請使用 [在 x86 Mac 執行個體上更新軟體](#x86-mac1) 下的命令。

------

## 在 x86 Mac 執行個體上更新軟體
<a name="x86-mac1"></a>

在 x86 Mac 執行個體上，您可以使用 `softwareupdate` 指令從 Apple 安裝作業系統更新。

**若要在 x86 Mac 執行個體上從 Apple 安裝作業系統更新**

1. 使用以下命令列出具有可用更新的套件。

   ```
   [ec2-user ~]$ softwareupdate --list
   ```

1. 安裝所有更新或僅特定更新。若要安裝特定更新，請使用下列命令。

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

   若要安裝所有更新，請使用下列命令。

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

系統管理員可以使用 AWS Systems Manager 在 x86 Mac 執行個體上推出預先核准的作業系統更新。如需詳細資訊，請參閱[「AWS Systems Manager 使用者指南」](https://docs.aws.amazon.com/systems-manager/latest/userguide/)。

您可以使用 Homebrew 將套件更新安裝於 EC2 macOS AMI，因此您在執行個體上可以擁有這些套件的最新版本。您也可以使用 Homebrew 在 Amazon EC2 macOS 上安裝和執行常用的 macOS 應用程式。如需詳細資訊，請參閱 [Homebrew 文件](https://docs.brew.sh/)。

**使用 Homebrew 安裝更新**

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

   ```
   [ec2-user ~]$ brew update
   ```

1. 使用以下命令列出具有可用更新的套件。

   ```
   [ec2-user ~]$ brew outdated
   ```

1. 安裝所有更新或僅特定更新。若要安裝特定更新，請使用下列命令。

   ```
   [ec2-user ~]$ brew upgrade package name
   ```

   若要安裝所有更新，請使用下列命令。

   ```
   [ec2-user ~]$ brew upgrade
   ```