

# Amazon EC2 Mac インスタンス上のオペレーティングシステムとソフトウェアの更新
<a name="mac-instance-updates"></a>

次のトピックでは、Apple シリコン Mac インスタンス (Mac2、Mac2-m1ultra、Mac2-m2、Mac2-m2pro、Mac-m4、and Mac-m4pro) および x86 Mac インスタンス (Mac1) でオペレーティングシステムとソフトウェアを更新する方法について説明します。

**警告**  
ベータ版またはプレビュー版の macOS バージョンのインストールは、Apple シリコン Mac インスタンスでのみ可能です。Amazon EC2 は macOS のベータ版やプレビュー版をサポートしていないため、実稼働前の macOS バージョンに更新した後もインスタンスが機能し続けることは保証されません。  
ベータ版またはプレビュー版の macOS バージョンを Amazon EC2 にインストールすると、インスタンスの停止または終了時に、x86 Mac インスタンスが Amazon EC2 Mac 専有ホストのパフォーマンスを低下させるため、そのホストで新しいインスタンスを開始または起動できなくなります。

**注記**  
AWS が公式 AMI をリリースする前にユーザーがインプレース macOS 更新を実行すると、その更新は選択したホストにのみ適用されます。他のホストがある場合、または新しいホストを起動する場合は、それらのホストでも同じ更新プロセスを実行する必要があります。macOS の各バージョンでは、基盤となる Apple Mac ハードウェアでファームウェアの最小バージョンが必要です。インプレース更新では、選択したホストのファームウェアのみが更新され、他の既存または新しいホストには反映されません。Amazon EC2 Mac 専有ホストと互換性がある macOS バージョンを確認するには、「[Amazon EC2 Mac 専有ホストでサポートされている macOS バージョンを特定する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/macos-firmware-visibility.html)」を参照してください。

**Topics**

## Apple Silicon Mac インスタンスでソフトウェアを更新する
<a name="mac2"></a>

### 前提条件
<a name="mac2-ena-update"></a>

ネットワークドライバー設定が更新されたため、ENA ドライバーバージョン 1.0.2 は macOS 13.3 以降と互換性がありません。ベータ版、プレビュー版、または実稼働版の macOS バージョン 13.3 以降をインストールする必要があり、最新の ENA ドライバーをインストールしていない場合は、次の手順を使用して新しいバージョンのドライバーをインストールします。

**ENA ドライバーの新しいバージョンをインストールするには**

1. ターミナルウィンドウで、[SSH](connect-to-mac-instance.md#mac-instance-ssh) を使用して Apple Silicon 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. 画面共有アプリケーションを使用してインスタンスに接続したら、**Applications** フォルダーに移動して ENA アプリケーションを開きます。

   1. [**Activate**] を選択してください。

   1. ドライバーが正しくアクティブ化されたことを確認するには、ターミナルウィンドウで次のコマンドを実行します。コマンドの出力は、古いドライバが終了状態で、新しいドライバがアクティブ状態であることを示しています。

      ```
      systemextensionsctl list;
      ```

   1. インスタンスを再起動すると、新しいドライバーのみが表示されます。

### ソフトウェア更新を実行する
<a name="mac2-software-update"></a>

Apple Silicon 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 つだけあることが前提です。アタッチされた各ボリュームには、それぞれ管理ユーザーを 1 人追加できます。

**ステップ 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 ]

この手順を進めると、2 つのパスワードが作成されます。1 つのパスワードは Amazon EBS ルートボリューム管理ユーザー (`ec2-user`) 用で、もう 1 つのパスワードは内部ディスクの管理ユーザー (`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 を使用したインスタンスへの接続](connect-to-mac-instance.md#mac-instance-ssh)を参照してください。

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

1. 次のコマンドを使用して macOS スクリーン共有をインストールして起動します。

   ```
   [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** と入力して return キーを押して、インスタンスとの接続を切断します。

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. **[検索]** を開いて、**[移動]** を選択してください。

   1. **[サーバーに接続]** を選択してください。

   1. **[サーバーアドレス]** フィールドに、`vnc://localhost:5900` と入力してください。

1. macOS ウィンドウで、[ステップ 3](#passwd-step) で作成したパスワードを使用して、`ec2-user` として Apple Silicon 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** という名前の内部ディスクを選択し、**[再起動]** を選択してください。メッセージが表示されたら、もう一度 **[再起動]** を選択してください。
**重要**  
内部ディスクの名前が **InternalDisk** ではなく **Macintosh HD** の場合は、専有ホストを更新できるようにインスタンスを停止して再起動する必要があります。詳細については、[Amazon EC2 Mac インスタンスを停止または終了する](mac-instance-stop.md)を参照してください。

管理ユーザーに所有権を委任するには、次の手順に従います。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
   ```

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 スクリーン共有をインストールして起動します。

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

1. **exit** と入力して return キーを押して、インスタンスとの接続を切断します。

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. **[検索]** を開いて、**[移動]** を選択してください。

   1. **[サーバーに接続]** を選択してください。

   1. **[サーバーアドレス]** フィールドに、`vnc://localhost:5900` と入力してください。

1.  macOS ウィンドウで、[ステップ 3](#amu-passwd) で作成したパスワードを使用して、`aws-managed-user` として Apple Silicon Mac インスタンスのリモートセッションに接続します。
**注記**  
Apple ID でサインインするように求めるメッセージが表示されたら、**[後でセットアップ]** を選択してください。

1. Amazon EBS ボリュームには、次のいずれかのオプションを使用してアクセスします。

   1. macOS Ventura 以降の場合: **[システム設定]** を開き、左側のペインで **[一般]** を選択し、ペインの右下で **[起動ディスク]** を選択してください。

   1. macOS Monterey 以前の場合: **[システム環境設定]** を開き、**[起動ディスク]** を選択し、ウィンドウの左下にあるロックアイコンを使用してペインのロックを解除します。
**注記**  
再起動するまで、管理者パスワードの入力を求められたら、上記で設定した `aws-managed-user` 用のパスワードを使用してください。このパスワードは、`ec2-user` 用に設定したパスワードやインスタンスのデフォルトの管理者アカウントとは異なる場合があります。以下の手順では、インスタンスの管理者パスワードをいつ使用するかを指定します。

1. Amazon EBS ボリューム (**[起動ディスク]** ウィンドウの **InternalDisk** という名前が付いていないボリューム) を選択し、**[再起動]** を選択してください。
**注記**  
Apple Silicon Mac インスタンスに複数の起動可能な Amazon EBS ボリュームがアタッチされている場合は、必ず各ボリュームにそれぞれ固有の名前を使用してください。

1. 再起動を確認してから、プロンプトが表示されたら **[ユーザーの認可]** を選択してください。

1. **[このボリュームのユーザーを認可]** ペインで、管理者ユーザー (デフォルトでは `ec2-user`) が選択されていることを確認し、**[認可]** を選択してください。

1. 前の手順の[手順 3](#passwd-step) で作成した `ec2-user` パスワードを入力し、**[続行]** を選択してください。

1. プロンプトが表示されたら、特別管理ユーザー `aws-managed-user`のパスワードを入力してください。

1. ローカルコンピュータからターミナルで、`ec2-user` ユーザー名で SSH を使用してインスタンスに再接続します。
**トラブルシューティングのヒント**  
`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 アプリケーションをインストールして実行することもできます。詳細については、[Homwbrew ドキュメント](https://docs.brew.sh/)を参照してください。

**Homebrew を使用して更新プログラムをインストールするには**

1. 次のコマンドを使用して Homwbrew を更新します。

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

1. 次のコマンドを使用して、利用可能な更新プログラムを含むパッケージを一覧表示します。

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

1. すべての更新プログラムをインストールするか、特定の更新プログラムのみをインストールします。特定の更新プログラムをインストールするには、次のコマンドを使用します。

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

   すべての更新プログラムをインストールするには、次のコマンドを使用します。

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