rcmdnk's blog

20250511_lume_200_200

Linuxであればdockerなどを使って簡単にテストなどを行える仮想環境を手に入れられますが、 macOSの仮想環境はどうなのか。

macOSのライセンス

Macを買うとその中でmacOSが使えて 新しいバージョンが出ても無料でアップデートできますが、 現状Windowsなどと違ってmacOSを単体で購入することはできません。

ソフトウェア自体は無料で入手することができますが、 ライセンスはどうなっているのか?

macOS(Sequoia 15.4.1)で メニューバーのアップルマークこのMacについて詳細情報使用許諾契約** を見てみると2.B項に以下のようなことが書いてあります。

(i)お客様が所有または管理する、macOS Sonoma、macOS Ventura、macOS Monterey、macOS Big Sur、macOS Catalina、macOS Mojave、またはmacOS High Sierra(以下「Macコンピュータ」といいま す)を実行している各Appleブランドのコンピュータで直接、Appleソフトウェアのコピーを1部、個人的な非 商用利用のためにダウンロードし、インストールし、使用し、実行するため。

(ii)お客様が営利企業または教育機関である場合、次のいずれかの用途でAppleソフトウェアのコピーを1部 ダウンロードし、インストールし、使用し、実行するため:(a)お客様が所有または管理する各Macコン ピュータでの単一の個人による使用、または(b)お客様が所有または管理する1台のMacコンピュータでの複 数の個人による使用。例えば、社員1人が、自身のデスクトップおよびラップトップのMacコンピュータの両方 でAppleソフトウェアを使用する場合、または複数の生徒が、リソースセンターもしくはライブラリに存在す るMacコンピュータ1台でAppleソフトウェアを順次使用する場合。ならびに

(iii)お客様が所有もしくは管理する、Appleソフトウェアをすでに実行しているAppleブランドの各コン ピュータ上の仮想オペレーティングシステム内で、Appleソフトウェア、または以前のmacOSもしくはOS Xオ ペレーティングシステムソフトウェアもしくはAppleソフトウェアの後続のリリースの、追加のコピーもしくは インスタンスを最大2部、次の目的のためにインストール、使用、実行するため:(a)ソフトウェア開発、 (b)ソフトウェア開発中のテスト、(c)macOS Serverの使用、または(d)個人的な非商用利用。

  • (i): 通常のMacでmacOSを使っても良いよ
  • (ii): 教育機関や営利企業なら1台のMac(およびその中に入ってるmacOS)を複数で使っても良いよ

があり、さらに

  • (iii): macOSが入ってるMacでテストなどのために仮想環境としてmacOSを最大2つまで使っても良いよ

ということが書いてあります。

つまり、macOSの仮想環境が欲しい場合はmacOSが入ってるMacの中になら作ることができる、ということです。 ただし商用で貸出したりみたいなことは許可されてません。 また、Macであってもいくらでも作ってよいわけではなく最大2つまで、ということです。

GitHub Actionsみたいなのは多分特別なライセンスが必要なんだと思います。

WindowsのVirtualBoxなどにmacOSをインストールするとかはライセンス違反です。 MacでもWindowsを入れてその中でmacOSを仮想環境として動かすのも駄目なようです。

ということで、Windowsしか持ってないけどmacOSの環境がほしい、というのは根本的に無理な話みたいです。

一方でMacを持っている場合は、macOSの中に仮想環境を作ることはライセンス的には問題ない、ということになります。

macOSの仮想環境を作る方法

VMwareなどの仮想マシンにmacOSをインストールして使うことは 上にも書いた通りMacで動かしているmacOSの中であれば合法です。

それ以外にも VirtualBuddyvirtualOSUTM みたいなソフトウェアがあります。

これらはちょっとセットアップが大変だったり 起動する際に時間がかかったりしますが、 Appleは Virtualization Framework というものを提供していて、 これだとXcodeが入っていれば別途ソフトウェアを入れずに仮想環境を作ることができます。

さらに、このVirtualization Frameworkを使いやすくした tart とか c/ua といったソフトウェアがあります。

tartのほうが前からあってよく使われていたようですが、 ライセンス ライセンスが Fair Source License なのでちょっと注意が必要です。(個人で普通に使う分には余裕な許容量ではありますが。)

c/uaの方は数ヶ月前に出てきたものみたいで、 特に最近のAI agentブームの中で AIが直接操作するようなこともできるようにしています。 ライセンスはMITです。 後発ということで色々と考えて作られてることもあるようで、 このc/ua、及びそのコマンドラインツールの lume が使って見た感じ今のところ一番手軽で良さげでした。

c/ua、lume

数ヶ月前にできたばかりのようで、簡易にnativeな環境にできるだけ近い仮想環境を作れるものとして作られています。

Show HN: Lume – OS lightweight CLI for MacOS and Linux VMs on Apple Silicon Hacker News 特にfor Computer-Use Agentということで、

Pythonで直接操作したり、LLMを使ったAgentが用意されたりしています。

ここでは lume というコマンドラインツールで仮想環境を立ち上げることについて簡単に。

lumeのインストール

インストールは公式スクリプトで

1
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/trycua/cua/main/libs/lume/scripts/install.sh)"

とするか、Homebrewで

1
$ brew install trycua/lume/lume

でインストールできます。

イメージの準備

使えるイメージは Packages · Cua にあるものです。

現状OSの種類としては2つ、macOS Sequoia (15)とUbuntu Noble Numbat (24.04) があり、それぞれ入っているパッケージなどの違いなど含め全部で8つイメージがあります。

なのでLinuxのいろいろなものを試してみたい、という場合は現状ではまだあまりできない状態ではあります。

とりあえず、適当にXcodeが入ったmacOSを用意。

1
$ lume pull macos-sequoia-xcode:latest

これでイメージがダウンロードされますが、20GB位あり、数分かかります。

ダウンロードが終わったらlume lsで確認してみます。

1
2
3
$ lume ls
name                        os      cpu     memory  disk            display   status   storage  shared_dirs  ip  vnc
macos-sequoia-xcode_latest  macOS   4       8.00G   22.5GB/50.0GB   1024x768  stopped  default  -            -   -

名前はmacos-sequoia-xcode:latestでもmacos-sequoia-xcode_latestでも通るみたいです。(:_と同値としている?)

とりあえず起動

準備ができたので起動:

1
$ lume run macos-sequoia-xcode:latest

これでウィンドウが出てきてmacOSが起動します。 初回だけいきなりログイン状態になる?ようです。 初期状態のユーザー名とパスワードはともにlumeになっています。

20250511_lume.png

これでmacOSの中で別のmacOSを動かせます。

ただいくつか制限はあるようで、 特にApp Storeにサインインすることができません。

なのでApp Store経由でのアプリのインストールなどが出来ません。 少し改善されてiCloudへはXcodeのβ版を使えばサインインできるようになったようです。

cannot use xcode since it requires app store sign-in (which is unsupported on virtualization) · Issue #138 · trycua/cua

それ以外だと特に出来ないことはないようには見えますが、実際の環境とは少し違うところがあるので注意です。

また、使っているmacOSとは別環境になるので、例えばネットワーク環境的に証明書をインストールする必要がある場合などは 仮想環境の中へも持っていってインストール必要があります。

Development — Homebrew-file documentation

止めるときは別のターミナルから

1
$ lume stop macos-sequoia-xcode:latest

で止めます。

これで色々と中で操作したことに関しては保存されます。

GUIなしで起動

いろいろなサービスやツールをチェックする場合にはGUIが不要な場合も多いですが、 lumeでは--no-displayオプションでGUIなしでも起動することができます。

1
$ lume run macos-sequoia-xcode:latest --no-display

これで起動しますが、ウィンドウは出てきません。 別のターミナルからチェックしてみると

1
2
3
$ lume ls
name                        os      cpu     memory  disk            display   status   storage  ip              vnc
macos-sequoia-xcode_latest  macOS   4       8.00G   22.5GB/50.0GB   1024x768  running  default  192.168.64.2    vnc://:[email protected]:56109

こんな感じの表示になっていて、ip192.168.64.2になってることがわかります。

ここへsshで接続することが出来ます。

1
2
3
$ ssh [email protected]
([email protected]) Password: # password is also 'lume'
lume@lumes-Virtual-Machine ~ %

ユーザー名lume, パスワードlumeでログインできます。

ディレクトリ共有

--shared-dirで元のmacOS側のディレクトリを仮想環境の中に共有することが出来ます。

1
$ lume run macos-sequoia-xcode:latest --shared-dir "$PWD:ro"

これで、起動した際にいたディレクトリ($PWD)が仮想環境の中に/Volumes/My Shared Filesという名前でマウントされます。

roはread onlyの意味で、書き込みはできません。 rwにすると書き込みもできるようになります。

ただし、マウントしたあとで、元のmacOS側でファイルを変更すると 変更したファイルは仮想環境の中ではPermission deniedになってアクセスできなくなります。

これはちょっと不便なところで変更したファイルを仮想環境内で使いたいと思うと一旦lumeを止めて改めて立ち上げる必要があります。

ちゃんと止める

lume runしたターミナルでCtrl-Cを押すと止まりますが、 正常終了にはならずに起動中に操作したことが保存されないことがあります。

他のところからrun stopすれば良いのですが、ちょっと面倒なので こんな感じのスクリプトを作っておくと便利です。

1
2
3
4
5
6
7
8
9
#!/usr/bin/env bash

IMAGE=macos-sequoia-xcode:latest
SHARED_DIR=$PWD

trap 'lume stop $IMAGE;exit 0' SIGINT SIGTERM
lume run "$IMAGE" --no-display  --shared-dir "$SHARED_DIR:ro" &
LUME_PID=$!
wait $LUME_PID

これでスクリプトを実行したディレクトリを仮想環境に共有します。

さらにCtrl-Cを押すとlume stopが実行されてただしく終了するようになります。

ただ、これでもたまにプロセスが残ってしまうことがあり、次に lume runしようとするとすでに走っているとのエラーが出ることがあります。

lume lsで確認してrunningになっているものがあればもう一度それに対してlume stopしてみます。

もしrunninではないのにlume runが失敗するときは

1
$ ps ' lume`

とかでlume runしたプロセスが残ってないか確認して残っていたらそのPIDをkillします。

現状ではここまですれば再度使えるようになっています。

Sponsored Links
Sponsored Links

« Neovim v0.11とGNU screen 5.0.0の組み合わせで`+q4D73`が表示され崩れるのを治す

}