UTM のヘッドレスモードで仮想サーバーを起動する方法
UTM とは?
UTM とは、macOS用の仮想環境構築ソフトウェアのことで、1つのOS内で異なるOSを動かすことができます。
App Store で提供されてる有料版と無料版がありますが、機能に差分はないので、特に理由なければ、無料版を使いましょう。
ローカル環境の情報
PC: M3 Mac
OS: macOS 14.5
仮想環境の設定
今回は、以下で設定します。
- OS: AlmaLinux
- メモリ: 2GB
- サイズ: 64GB
- 名前: AlmaLinux(後ほど使用するので、個別で設定)
詳細な設定については、今回は割愛しますが、設定方法については、以下の記事がおすすめです。
注意点としては、今回は AlmaLinux を使用しましたが、このOSを使う場合は、「Apple 仮想化を使用」「Rosettaを有効にする」をチェックします。
(設定しないと、正常に起動しないです。。)
前提条件
ここから先の内容は、以下の設定ができてることを前提に説明します。
- 一般ユーザの作成(今回は仮名で
alma
とします) -
sudo dnf update -y
が実行されていること - 一般ユーザ
alma
でローカルマシンから仮想マシンへ ssh ログインができること
本題: UTM ヘッドレスモードを使用して、仮想マシンを起動する
さて、本題に入ります。
最近のアップデートで導入された、ヘッドレスモードを使用して、サーバー起動します。
公式の docs には、こう書かれていました。
To setup headless mode, open the virtual machine configuration and delete any display device as well as any serial device that is set to “Built-in Terminal” mode. It is highly recommended that you set up at least one serial device in one of the other modes so that you can communicate with the virtual machine. See this page for more details.
内容としては、
- まず、ディスプレイデバイスとシリアルデバイスを削除する
-
utmctl
コマンド 使用して、サーバー起動する
という感じです。
ディスプレイデバイスとシリアルデバイスを削除する
その状態で、以下の操作を行います。
- 左側のサーバー一覧で、作成したサーバーを右クリックして、「編集」をクリック
- サーバーの設定画面が表示されるので、左側のメニューで「ディスプレイ」を右クリックして「削除」
- シリアルデバイスがある場合は「シリアル」という項目が表示されてるので、先程と同様の操作で削除する
- 最後に保存する
utmctl
コマンドを使用できるようにする
次にローカルマシンで utmctl
というコマンドラインツールを使用できるようにします。
ターミナルで、こちらのドキュメントにあるコマンドを実行します。
$ sudo ln -sf /Applications/UTM.app/Contents/MacOS/utmctl /usr/local/bin/utmctl
最後に utmctl --help
を実行して、以下が表示されたら準備完了です。
$ utmctl --help
OVERVIEW: CLI tool for controlling UTM virtual machines.
USAGE: utmctl <subcommand>
OPTIONS:
-h, --help Show help information.
SUBCOMMANDS:
list Enumerate all registered virtual machines.
status Query the status of a virtual machine.
start Start a virtual machine or resume a suspended virtual machine.
suspend Suspend running a virtual machine to memory.
stop Shuts down a running virtual machine.
attach Redirect the serial input/output to this terminal.
file Guest agent file operations.
exec Execute an application on the guest.
ip-address List all IP addresses associated with network interfaces on the guest.
clone Clone an existing virtual machine.
delete Delete a virtual machine (there is no confirmation).
usb USB device handling.
See 'utmctl help <subcommand>' for detailed help.
utmctl
で仮想マシンを起動する
ターミナルで utmctl list
を実行して、先程作ったサーバー AlmaLinux
があるか確認します。
$ utmctl list
UUID Status Name
F38C0C45-4769-4D0E-AE62-D58322A706E8 stopped AlmaLinux
サーバーがあることがわかったので AlmaLinux
を起動します。
$ utmctl start "AlmaLinux"
これで、サーバーが起動します。
再度 utmctl list
を実行すると Status
が started
になっています。
$ utmctl list
UUID Status Name
F38C0C45-4769-4D0E-AE62-D58322A706E8 started AlmaLinux
ターミナルから ssh ログインできるか確認しましょう。
$ ssh alma@{仮想マシンのIPアドレス}
Last login: Mon Jul 15 20:53:15 2024 from 10.211.56.1
[alma@localhost ~]$
無事ログインできたら、完了です 🎉
Discussion