LoginSignup
5
11

More than 3 years have passed since last update.

HighSierra/Mojave の検証環境をワンライナーで一発構築する(Vagrant+VirtualBox)

Last updated at Posted at 2019-04-04

Vagrant のゲストOS に HighSierra や Mojave で動作検証や開発環境を簡単に構築したい。

  • 「新しい Mac を購入したが Mojave 入りなので HighSierra を新規インストールできない1ため、アプリの動作検証ができない」
  • 「サポートの問い合わせが来たが、macOS の画面まわりがわからない」
  • 「『Mac 対応?それ美味しいの?』と言われたので検証してみたい」
  • 「プレーンな macOS でビルドやテストをしたい」

TL; DR (今北産業)

VirtualBox と Vagrant がインストールされていて OS 1 つぶん(50 GB)以上の空き容量があれば簡単です。

mojaveをGUIモードで起動する例@Bash
$ mkdir mojave && cd $_
$ curl -o Vagrantfile https://KEINOS.github.io/Vagrantfile_for_macOS/Vagrantfiles/Vanilla_GUI_v10.14.1
$ vagrant up

🐒   ブート時の UEFI 画面で "mapping table error" が出で Shell> で止まる場合は、どのパーティション(FS1:FS2: など)にある boot.efi を選んで良いのかわからない状態になっています。

スクリーンショット 2021-03-23 12.44.52.png

Shell> FS1: もしくは Shell> FS2: と打ってから ls コマンドで /System/ があるパーティションを選び、cd \System\Library\CoreServices に移動(バックスラッシュに注意)して boot.efi があるか確認したら、boot.efi を実行してください。/EFI しかない場合はハズレのパーティションなので exit コマンドで抜けて、再度 continue を選んで振り出しに戻ってください。

TS; DR (HighSierra/Mojave の開発環境のベースをゲスト OS に)

VirtualBox と Vagrant がインストール2されていれば、(ダウンロードに時間かかるけど)以下のワンライナーで日本語の macOS が CUI モードで起動します。もちろん GUI モードでも起動できますが、macOS で自作コマンドが動くかといった検証であれば CUI の方が軽いです。

なお、下記の各々のワンライナーは、Vagrant Cloud から Box イメージをダウンロード&起動して ssh 接続します。

以下は、10.13.6 へアップデートだけ済んだバニラ状態の日本語 HighSierra です。

GuestOSがHighSierraの構築ワンライナー
vagrant init -m KEINOS/macOS.10.13.6_Japanese && vagrant up && vagrant ssh

以下は、ほぼバニラ(git だけ入った)状態の日本語 Mojave です。

GuestOSがMojaveの構築ワンライナー
vagrant init -m KEINOS/macOS.10.14.1_Japanese && vagrant up && vagrant ssh

Vagrantfile のサンプル集

各々を Vagrantfile として保存し、$ vagrant up で起動します。

  • ヘッドレス(CLI モード)で Mac を起動させて、他のマシンから VNC アクセス(Mac だと画面共有)可能なサンプル
  • ローカルのファイル/ディレクトリを、ヘッドレス(CLI モード)の Mac にマウントして起動させるサンプル
    • Mojave @ GitHub
    • 注意事項:マウントするタイミングで親機のパスワード入力を求められます。
  • Homebrew 入りのヘッドレス(CLI モード)の Mac を起動するサンプル
  • Wineskin 入りのヘッドレス(CLI モード)の Mac を起動するサンプル

  • その他の Vagrantfile のサンプル集 @ GitHub

基本仕様

HighSierra の Vagrant BOX イメージ

  • ゲスト OS:macOS HighSierra(OSX 10.13.6)
Boxイメージ検索
$ vagrant cloud search highsierra
| NAME                          | VERSION | DOWNLOADS | PROVIDERS  |
+-------------------------------+---------+-----------+------------+
| KEINOS/macOS.10.13.6_Japanese | 0.0.4   |        13 | virtualbox |
+-------------------------------+---------+-----------+------------+
ダウンロード(時間かかるよっ)
$ vagrant box add KEINOS/macOS.10.13.6_Japanese
CUIモードで起動
$ mkdir highsierra && cd $_
$ vagrant init -m KEINOS/macOS.10.13.6_Japanese
$ ls
Vagrantfile
$ vagrant up
$ vagrant ssh

CI などでの用途を前提としているため、デフォルトではヘッドレス起動(CLI モード:gui=false)になっています。デスクトップの通常起動(GUI モード)で起動させたい場合は Vagrantfile で .guitrue に設定します。vagrant ユーザーのパスワードは vagrant です。

Vagrantfile(GUIモードで起動する設定)
Vagrant.configure("2") do |config|
  config.vm.box = "KEINOS/macOS.10.13.6_Japanese"
  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
  end
end
GUIモードのVagrantfile編集が面倒な人向け
mkdir highsierra && cd $_
curl -o Vagrantfile https://KEINOS.github.io/Vagrantfile_for_macOS/Vagrantfiles/Vanilla_GUI_v10.13.6
vagrant up

Mojave の Vagrant BOX イメージ

  • ゲスト OS:macOS Mojave(OSX 10.14.1)
    • 日本語、アップデートおよび git 以外の追加インストールなし
  • イメージサイズ: 8.68 GB
  • 想定ダウンロード時間: 1.5時間(SpeedTest CLI: Download = 93.14 Mbit/s)
Boxイメージ検索
$ vagrant cloud search mojave
| NAME                          | VERSION | DOWNLOADS | PROVIDERS      |
+-------------------------------+---------+-----------+----------------+
| ashiq/osx-10.14               | 0.1     |       878 | virtualbox     |
| yzgyyang/macOS-10.14          | 10.14.4 |       463 | virtualbox     |
| scoreyou/baseMac              | 0.1     |        20 | virtualbox     |
| KEINOS/macOS.10.14.1_Japanese | 0.0.3   |        17 | virtualbox     | ← これ
| msl/macos_mojave_10.14        | 1.1.0   |        15 | vmware_desktop |
| adasilva/Mojave               | 1.0     |         7 | virtualbox     |
+-------------------------------+---------+-----------+----------------+
ダウンロード(時間かかるよっ)
$ vagrant box add KEINOS/macOS.10.14.1_Japanese
CUIモードで起動
$ mkdir mojave && cd $_
$ vagrant init -m KEINOS/macOS.10.14.1_Japanese
$ ls
Vagrantfile
$ vagrant up
$ vagrant ssh

CI などでの用途を前提としているため、デフォルトではヘッドレス起動(CLI モード:gui=false)になっています。

そのため、通常起動(GUI モード)で起動させたい場合は Vagrantfile で vb.guitrue に設定します。vagrant ユーザーのパスワードは vagrant です。

Vagrantfile(GUIモードで起動する設定)
Vagrant.configure("2") do |config|
  config.vm.box = "KEINOS/macOS.10.14.1_Japanese"
  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
  end
end
GUIモードのVagrantfile編集が面倒な人向け
mkdir mojave && cd $_
curl -o Vagrantfile https://KEINOS.github.io/Vagrantfile_for_macOS/Vagrantfiles/Vanilla_GUI_v10.14.1
vagrant up

  1. 【HighSierra に OS をダウングレードできない】

    Mac マシンは、購入時にプリインストールされている macOS より低いバージョンの macOS はインストールできない仕様になっています。
    そのため古いソフトや現在利用しているソフトのバージョンが、新しい macOS に対応していない場合、ハード(マシン)が壊れた場合は中古マシンを買わざるを得なくなります。新しいマシンを使いたい場合は、基本的に古いソフトを諦めるか、新しいバージョンのソフトを購入する必要があります。Adobe や CAD ソフトなどが、昔のように買い切りでなく、月々払いになったのも、買い替えを半ば強要する Apple のエコ・システムに便乗したとも言えます。問題は、開発側はサポートのために古いマシンをキープし続ける必要があることです。 
  2. 【VirtualBox と Vagrant のインストール】

    macOS の場合、Homebrew がインストールされていれば、brew cask install virtualbox および brew cask install virtualbox-extension-pack コマンドで VirtualBox がインストールできます。
    Vagrant も brew cask install vagrant コマンドでインストールできます。
    VirtualBox とは
    Oracle 社の仮想化アプリ。
    仮想的にマシンを作り、そこに OS をインストールすることで異なる OS 上でも特定の OS を使えるようにするためのアプリ。VirtualBox (の仮想マシン)上で動く OS をゲスト OS と呼び、VirtualBox アプリ自体がインストールされている OS をホスト OS と呼んでいる。似たような仮想化アプリには、手法や技術は異なるが VMware, Hyper-V, Docker などがある。仮想とはいえマシンではあるので、そこに OS をインストールする場合、OS (のライセンス)によっては別途シリアル番号やライセンスキーが必要だったり、利用制限があるので注意が必要である。「VirtualBox」@ Wikipedia,
    Vagrant とは
    HashiCorp 社の各種仮想アプリを管理するツール。
    VirtualBox/VMware/Docker などの仮想化アプリをコマンドで操作することができるツール。仮想化アプリ自身もコマンドで操作可能だがアプリごとにコマンドが異なるため、Vagrant を通すことで操作を一本化できる。例えば、ゲスト OS の立ち上げ、コピー、クローン、削除、スナップショットだけでなく、ゲスト OS 上でのスクリプト実行といった操作が行える。これにより各々の仮想化アプリのメリットを活かして(適材適所で)使えるため、CI といったテストやビルドや自動化に使われる。このような総括的なツールやアプリを使い、自動化することをオーケストレーションという。「Vagrant(ソフトウェア)」@ Wikipedia 
5
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
11