目的
- WindowsからOSXを使った開発環境を整える
おおまかな流れ
- WindowsにWSL2・Linux GUIアプリを動かす環境をインストール
- WSL2にDockerをインストール
- Dockerコンテナ:sickcodes/docker-osx(参考)を立ち上げ
- 3.で立ち上げたコンテナにWindowsのVSCodeから接続・操作
検証した環境
- Windows11 (22000.1098)
- こちらに下記の記述あり
You must have Windows 11 installed with build 22000+ (21H2 or higher).
手順
※ 長文回避のためWSL2、VSCodeなどのインストール手順については割愛。それらを含んだ手順詳細はこちらを参照ください
OSXを実行するコンテナのセットアップ
- WSL2をインストール(割愛)
- .wslconfigファイルを作成
-
C:/Users/<Your_Name>
に.wslconfigというファイルを作成(<Your_Name>
の部分はWindowsのユーザーネーム) - .wslconfigに下記の内容を追加して保存
[wsl2] nestedVirtualization=true
-
- Windows Subsystem for Linux Previewをインストール
- こちら からインストール可能
- WSL2のUbuntuを起動
- .wslconfigはWSL2起動時に反映されるため、必要なら再起動する
- WSL2でDockerをインストール(割愛)
- WSL2で下記コマンドを実行
- タグ(
auto
の部分)を変更することでバージョンなどを変更できる -
auto
はCatalinaがプレインストールされたイメージ
$ docker run -it \ --device /dev/kvm \ -p 50922:10022 \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -e "DISPLAY=${DISPLAY:-:0.0}" \ sickcodes/docker-osx:auto
- タグ(
- WindowsでQEMUが起動し下記の画面が表示される
WindowsのVSCodeから接続
- 前節で立ち上げたコンテナ上のMacOSXのディレクトリをどこかにマウントしてコーディング・コンテナにssh接続してコマンド操作 ができると効率的と思われるため、下記はそのための手順
- 前節7.の画面が表示されている状態で、VSCodeのWSLウインドウを開き、VSCodeのターミナルで作業する想定(この状態へはこちらの「VSCodeの準備と動作確認」を参照)
ファイルマウント
- 下記コマンドを実行し、sshfsをインストール
$ sudo apt update
$ sudo apt install sshfs
- 下記コマンドでマウントを実行
$ sshfs user@localhost:<path-on-OSX> -p 50922 <path-on-WSL>
-
<path-on-OSX>
にOSXのパスを<path-on-WSL>
にWSLのパスを設定する - こだわりがなければ
<path-on-OSX>
にOSXのパスはとりあえず/
と書いておけば全部マウントされる - Passwordはデフォルトでalpine
-
ssh接続
- 下記コマンドを実行
$ ssh user@localhost -p 50922
- 初回実行時は、
Are you sure you want to continue connecting (yes/no/[fingerprint])?
と聞かれるのでyesを入力 - Passwordはデフォルトでalpine
- 初回実行時は、
-
user@users-iMac-Pro ~ %
と表示されることを確認- この状態でVSCodeのターミナルからGUI関連の処理も実行できる
例)% open -a Safari
を実行すると、前節7.の画面でSafariが立ち上がる
- この状態でVSCodeのターミナルからGUI関連の処理も実行できる