Skip to content

Marine on Windows

snakazawa edited this page Jul 2, 2021 · 13 revisions

概要

このページでは、Windows の上で Marine を動作させ、問題作成のための環境構築をする方法について説明します。

Windows 上で Marine を動作させるためには、VirtualBoxを利用した手法WSLを利用した手法の二種類の方法があります。快適に作問するため、WSL での環境構築を推奨いたします。これらの長所と短所は以下にまとめられます。

Virtual Box WSL (推奨)
長所 ・イメージのエクスポート・インポートにより容易に環境構築ができます。
・明確に Windows 側から分離しているため、消すことが容易です。
・Windows 1809 以前のバージョンでも動作します。
・計算資源に対するオーバヘッドが少なく、ストレージの圧迫が少ないです。
短所 ・WSL と比較して計算資源的にも重く、ストレージも圧迫します。
・作問を行う場合において、イメージ内にエディターなどをインストールしていく必要があります。
・環境構築が煩雑です。
・イメージの削除に手間がかかります。
・Windows 1909 以降のバージョンでのみ動作します。
用途 ・Marine を試しに使いたい場合。
・Windows 1809 以前のバージョンの Windows で開発したい場合。
・快適に作問をしたい場合。

目次

Virtual Box

この節では、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 以上を推奨します。プロセッサー数が変更できない場合は、下記トラブルシューティングの節を参照してください。
      • ディスプレイ: ビデオメモリーを緑色の範囲で大きな値を設定してください。

トラブルシューティング

  • 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+)
  • 画面が小さい場合、以下を試してください。

    • Ubuntuの画面の上にある「デバイス」→「Guest Addition CDイメージの挿入」をクリックしてください。Ubuntuが自動的に挿入されたイメージの中にある実行ファイルを見つけ、これが実行されます。

起動

インポートされたイメージを起動するためには、VirtualBoxマネージャーのメイン画面のmarineをクリックしてください。

デフォルトのユーザーはgivery、パスワードはrootです。

起動時にmarineが自動的に起動するように設定をしています。そのため、Ubuntuの起動後すぐに、Firefox を起動してlocalhost:39000にアクセスすることで Marine にアクセスできます。ブックマークツールバーに登録しているので、そちらをクリックすることもできます。

問題は、~/Documents/marine/contents/で管理されます。この中に問題を追加することで、カスタム問題を作ることができます。デフォルトではエディタなどの環境構築はなされていないため、好きなエディタなどを入れてください。

WSL

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