-
Notifications
You must be signed in to change notification settings - Fork 5
Marine on Windows
このページでは、Windows の上で Marine を動作させ、問題作成のための環境構築をする方法について説明します。
Windows 上で Marine を動作させるためには、VirtualBoxを利用した手法とWSLを利用した手法の二種類の方法があります。快適に作問するため、WSL での環境構築を推奨いたします。これらの長所と短所は以下にまとめられます。
Virtual Box | WSL (推奨) | |
---|---|---|
長所 | ・イメージのエクスポート・インポートにより容易に環境構築ができます。 ・明確に Windows 側から分離しているため、消すことが容易です。 ・Windows 1809 以前のバージョンでも動作します。 |
・計算資源に対するオーバヘッドが少なく、ストレージの圧迫が少ないです。 |
短所 | ・WSL と比較して計算資源的にも重く、ストレージも圧迫します。 ・作問を行う場合において、イメージ内にエディターなどをインストールしていく必要があります。 |
・環境構築が煩雑です。 ・イメージの削除に手間がかかります。 ・Windows 1909 以降のバージョンでのみ動作します。 |
用途 | ・Marine を試しに使いたい場合。 ・Windows 1809 以前のバージョンの Windows で開発したい場合。 |
・快適に作問をしたい場合。 |
この節では、Virtual Box で Marine を Windows の上で動かすためのシステム要求要件と手順について説明します。
Ubuntu を仮想環境上で動かすため、少なくとも以下のマシンスペックが必要です。VirtualBox のオーバヘッドがあるため、快適な作問のためにはこれよりも高いスペックが要求されます。
- 2 GHz dual core processor
- 4 GiB RAM (system memory)
- 25 GB of hard-drive space (or USB stick, memory card or external drive but see LiveCD for an alternative approach)
- VGA capable of 1024x768 screen resolution
空きストレージは、配布イメージを使う場合 32 GB が必要です。
- Step 1: VirtualBoxの導入
- VirtualBox v6.1をダウンロード、インストールをします。VirtualBox は他の OS を Windows の上で仮想化して動かすソフトウェアです。
- Step 2: 仮想イメージのダウンロード・インポート
- Marine が既にインストールされている Ubuntu 仮想イメージ (5 GB) をダウンロードします。
- 仮想イメージをインポートします。
- VirtualBox マネージャーを起動し、左上の「ファイル」→「仮想アプライアンスのインポート」を選択します。
- 先ほどダウンロードした marine.ova を選択してインポートします。
- Step 3: インポートした仮想イメージの設定と起動、動作確認
- VirtualBoxマネージャーのメイン画面に
marine
という名称のイメージが現れます。 - 快適に作問するためのイメージ設定のため、
marine
イメージを右クリックし、設定
をクリックします。- システム > マザーボード > メインメモリー: 4 GB 以上かつ緑色の範囲を指定してください。
- システム > プロセッサー > プロセッサー数・使用率制限: 緑色の範囲に変更してください。プロセッサー数は 2 以上を推奨します。プロセッサー数が変更できない場合は、下記トラブルシューティングの節を参照してください。
- ディスプレイ: ビデオメモリーを緑色の範囲で大きな値を設定してください。
- VirtualBoxマネージャーのメイン画面に
-
Virtual Box でプロセッサ数の変更オプションがグレーアウトしており変更できない場合、上から順に試してください。
- ゲスト OS の設定で IO APIC を有効化してください。
marine
イメージの設定 > Virtual Box > Marine > 設定 > システム > マザーボード > I/O APICを有効化 をチェックすることで可能です。 - ホスト側の BIOS から VT-x を有効化してください。BIOS > Security > VT-x を有効化 することで可能です。
- Windows から HyperV を有効化してください。コントールパネル > コントロール パネル\プログラム\プログラムと機能 > Windows の機能の有効化または無効化 > HyperV をチェック > OK を押すことで可能です。(バージョン 1809+)
- ゲスト OS の設定で IO APIC を有効化してください。
-
画面が小さい場合、以下を試してください。
- Ubuntuの画面の上にある「デバイス」→「Guest Addition CDイメージの挿入」をクリックしてください。Ubuntuが自動的に挿入されたイメージの中にある実行ファイルを見つけ、これが実行されます。
インポートされたイメージを起動するためには、VirtualBoxマネージャーのメイン画面のmarine
をクリックしてください。
デフォルトのユーザーはgivery
、パスワードはroot
です。
起動時にmarineが自動的に起動するように設定をしています。そのため、Ubuntuの起動後すぐに、Firefox を起動してlocalhost:39000
にアクセスすることで Marine にアクセスできます。ブックマークツールバーに登録しているので、そちらをクリックすることもできます。
問題は、~/Documents/marine/contents/
で管理されます。この中に問題を追加することで、カスタム問題を作ることができます。デフォルトではエディタなどの環境構築はなされていないため、好きなエディタなどを入れてください。
WSL2が動作する環境であることが前提です。実質的にWindows 10のみに限られると思っています。ライターはWindows10 Homeを利用してこれを書いているため、ProやEnterprise等の環境において全く同じである保証はありません。その点ご了承ください。
-
Step 1: WSLの導入
- 公式の解説が分かりやすいかと。ライターは後半にある「manual setup」をしています。
- 入れるディストリビューションは何でも構いませんが、以降Ubuntuであることを想定しています。
-
Step 2: Docker Desktopの導入(本当に必要かは要確認のため、参考程度に)
- このタイミングで、一度入れたディストリビューションを起動してください。Microsoft Storeでインストールした段階ではまだインストールが終わっていません。
- Docker Desktopをダウンロードし、インストールします。インストール時にWSL関連のチェックマークは外さないでおいてください。
-
Step 3: marineリポジトリのclone、docker-composeからの起動
- Step 2でcmd/powershell上でdockerが扱えるようになりました。marineからリポジトリをcloneするなりzipファイルをダウンロードするなりして、ローカルにmarineを用意してください。以下gitを用いた場合です。
PS > git clone https://github.com/givery-technology/marine
Cloning into 'marine'...
remote: Enumerating objects: 79, done.
remote: Counting objects: 100% (79/79), done.
remote: Compressing objects: 100% (55/55), done.
remote: Total 740 (delta 23), reused 53 (delta 14), pack-reused 661 eceiving objects: 96% (711/740), 12.84 MiB | 6.38 MiB/s
Receiving objects: 100% (740/740), 16.41 MiB | 7.00 MiB/s, done.
Resolving deltas: 100% (271/271), done.
PS > cd .\marine\
PS > docker-compose up -d
WARNING: The PWD variable is not set. Defaulting to a blank string.
Creating marine_writer_1 ... done
- ここで、
http://localhost:39000
にアクセスすればmarineは見られるのですが、WARNINGに出ている通り$PWD
が設定されていないために問題が見れません。docker-compose.yml
の$PWD
の内容を書き換えるのが一番手っ取り早い対処法だと思います。
PS > notepad .\docker-compose.yml
writer:
image: givery/marine:latest
ports:
- "39000:9000"
volumes:
- [marineディレクトリまでのディレクトリパスを入れる。例: C:\Users\givery\marine]/contents:/opt/docker/contents
Q. VirtualBoxなら起動時、WSLならdocker-compose up -d
をしたけど、上手くmarine起動してないみたいなんですが?
A. 元々コンテナ(仮想環境)が残っているために上手く動作していない可能性があります。以下の内容を試してみてください。VirtualBox環境をご利用の場合、VirtualBox内のUbuntu上でCtrl+Alt+Tでターミナルを起動し、そこで以下のコマンドを試してください。
PS > docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4d9d824fd463 givery/marine:latest "/opt/docker/bin/mar…" 13 minutes ago Exited (143) 2 seconds ago marine_writer_1
このようにExitしたコンテナが残っている場合、「一度コンテナを消してから再生成する」してください。
PS > docker rm marine_writer_1
marine_writer_1
PS > docker-compose up -d
Creating marine_writer_1 ... done