トップ 一覧 置換 検索 ヘルプ RSS ログイン

Windows上にUnix環境を構築するの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!参考
sudo dpkg -i docker-ce_17.09.0\~ce-0\~debian_amd64.deb
https://www.glamenv-septzen.net/view/1422
https://i.loveruby.net/ja/rhg/cd/win.html

!!!概要
,,WSL2, WSL, VirtualBox,Cygwin, Msys2
,動作条件, 1903 以降、ビルド 18362 以上, Windows10なら動くと思う, あまり気にしなくていい, あまり気にしなくていい, あまり気にしなくていい
,Linuxカーネル, あり, なし, あり(LinuxOSを使えば),なし,なし
,Dockerの実行,  可能, 動くけど不具合が多い, 可能, 不可, 不可
,ローカルサービスへの{{br}}ポートフォワードの必要性, 不要{{br}}.wslconfig に localhostForwarding=True, 不要, 不要{{br}}ホストネットワークのNICを追加して別IPを降る, 不要, 不要
,バックアップ(スナップショット), export、importが可能, export、importが可能, スナップショットもバックアップも可能, ディレクトリ丸ごとコピー, ディレクトリ丸ごとコピー
,Windows実行体のコンパイル, MinGW, MinGW, MinGW, gcc、MinGW, MinGW
,おすすめ,◎{{br}}動作条件を満たすならこれが一番いい, X{{br}}dockerがまともに動作しないのでおすすめしない, ◎{{br}}WSL2より起動は遅いけど何かと使いやすい, ○{{br}}sshクライアントとかちょっとコンパイルするだけならあり,  ○{{br}}sshクライアントとかちょっとコンパイルするだけならあり
Windows上でUnix環境を利用するには大きく2つの方法がある。
* Windows上でLinuxを動作させる
* Windows上でUnix互換環境(UnixのコマンドをWindows用に移植したもの)を使う
個人的にはWSL2が使い勝手が良くて、動作の安定性も高いと思う。

!!!Unix仮想環境
!!WSL2
[[WSL2の設定]]

!!WSL
WSL単独でのdockerの動作に問題が多々ある。hello-world程度の簡単なコンテナであれば動作可能。
!設定手順
+ WSL起動
++ 管理者権限でコマンドプロンプトを実行(wslは管理者権限を使わないとdockerサービスが起動しない)
++ wsl -d Ubuntu-20.04 -u user
+ apt アップデート
++ sudo apt update
+ docker-ceの設定(最新版だと正常に動作しないので古いものをダウンロードする)
++ curl -O https://download.docker.com/linux/debian/dists/stretch/pool/stable/amd64/docker-ce_17.09.0~ce-0~debian_amd64.deb
++ sudo dpkg -i docker-ce_17.09.0\~ce-0\~debian_amd64.deb
+ dockerグループに追加設定
++ sudo gpasswd -a user docker
++ ログインしなおす(id で dockerグループが追加されていればOK)
+ サービス起動とhello-world実行
++ sudo service docker start
++ docker run --rm hello-world

!!WSL2
[[WSL2の設定]]

!!Virtualbox
WSL2が使えないときはこちらの方法がおすすめ。
OSのインストールが面倒なときは https://www.osboxes.org/ からイメージをダウンロードする。

!Ubuntu Server
+ キーボードの設定
++ sudo dpkg-reconfigure keyboard-configuration
+ SSHを使う場合
++ ホストオンリーアダプタを追加して、ホストOSとゲストOSを通信できるようにする必要がある
+++ ゲストOSの設定画面 -> ネットワーク -> アダプタ2 -> 割当 をホストオンリーアダプタにする
++ 起動後にアダプタ2にDHCPを設定する
+++ sudo vim /etc/netplan/00-installer-config.yaml
 network:
  ethernets:
    enp0s3:
      dhcp4: true
    enp0s8:
      dhcp4: true
+++ 上記のように追加したデバイスのdhcpを有効にする
+ dockerの設定
++ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
++ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
++ sudo apt update
++ sudo apt install docker-ce docker-compose
++ sudo gpasswd -a ユーザ名 docker
++ 追加したグループを反映させるためにログオフして、ログインしなおし
+ hello-world実行
++ docker run --rm hello-world

!!!Unix互換環境
Windows上にUnix互換環境を構築するには、Msys2やCygwinを使う必要がある。

UnixとWindowsではパスの区切文字(\と/)やデバイスの指定方法(c:\Usersと/home)が異なるため、Unix互換ツールを利用するには、その違いを意識せず利用するための仕組み(POSIXエミュレーション)が必要となる。

,ツール,説明
,Cygwin, Unix互換環境として優秀。パッケージも多く、X関連も動作させることができる。
,Msys2, Cygwinから派生し、必要なツールを必要最低限使えるようにして、Mingwの利用を目的として作られた。

!!MinGW
WindowsのGCCコンパイラ。POSIXエミュレーションはなく、普通のWindowsアプリケーションであり、パスの指定も通常のパス(c:\data\src\test.c)が使える。
CygwinやMsys2と一緒に使われることが多いが、CygwinやMsys2にもgccが存在するので区別して利用する必要がある。

例えば、Cygwinのgccでコンパイルしたexeの実行には、Cygwin1.dllが必要。
同様にMsys2のgccでコンパイルしたexeの実行には、msys-2.0.dllが必要。
MinGWのgccでコンパイルしたexeの実行は、そのまま実行できるし、内部で利用するパスもWindowsのパス指定が利用できる。

!!使い分け
個人的には、
,ツール,用途
,Cygwin,Windows上にがっつりUnix互換環境を構築する。またはMsys2で動かなかったものを動かしたい。(WSLや仮想マシンでもいい気がするけど・・・)
,Msys2, Xとかは必要なく、CUIのUnix互換環境を構築したい。MinGWでWindows上にgccの環境が欲しい。

!!!環境設定
!!Cygwin
[[Cygwin の設定]]

Cygwinはアーカイブを展開後すぐに使えるCygwin環境。ただし、2018年以降更新されていない。
[[gnupack の設定]]

!!Msys2
[[MSYS2 Portableの環境を作成する]]

{{category2 OS,Windows}}
{{category2 ツール,Cygwin}}
{{category2 ツール,Msys2}}
{{category2 仮想化,WSL}}