環境
- Windows10 Home
- バージョン1903 (OSビルド 18362.295)
背景
- クラウドサービスを使ってサーバー構築するときにローカルでテストしたい
- サーバー構築するときにDockerを使うのでローカルでDockerを使えるようにしたい
- Windows10 HomeでDockerを入れるのは非常に大変なのでWSL2を使う
今回やること
- WSL2(Windows Subsystem for Linux2)を使ってubuntu18.04LTS環境を構築
- windows環境からファイルを操作できるようにホームディレクトリを変更する
- Dockerを使えるようにする
- SSHで接続できるようにする
- suコマンドを使えるようにする
環境構築手順
1. WSL2(Windows Subsystem for Linux2)を使ってubuntu18.04LTS環境を構築
WSLでubuntu18.04LTS環境を構築
手順①「スタートボタン」を右クリック
手順②「アプリと機能」をクリック
手順③「プログラムと機能」をクリック
手順④「Windowsの機能の有効化または無効化」をクリック
手順⑤「Windows Subsystem for Linux」をクリック
手順⑥「microsoft store」を起動
手順⑦「ubuntu」を検索
手順⑧ 18.04LTSを選択してインストール
手順⑨ 初回起動で「ユーザ名」と「パスワード」を入力する
OSビルドを18917以上にする
手順① 「設定 > 更新とセキュリティ > Windows Insider Program」で「開始する」を押す
手順② Insiderの設定でスローにする
手順③ 再起動をする
手順④ Windows Updateをする
手順⑤ 再起動をする
手順⑥ 「Ctrl+R」で「winver」と入力し、OSビルドが18917以上かどうか確認する
WSLをWSL2に変更する
手順① 管理者権限でPowerShellを起動して以下コマンドを実行する
> Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Path :
Online : True
RestartNeeded : False
手順② 管理者権限で再起動する
手順③ バージョンの確認
> wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Running 1
手順④ バージョンの変更
> wsl --set-version Ubuntu-18.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。
手順⑤ バージョンの確認
> wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Running 2
2. windows環境からファイルを操作できるようにホームディレクトリを変更する
なぜ必要?
windows環境からubuntu環境にアクセスする方法はあるが、windows環境からubuntu環境配下で何か変更してしまうとubuntu環境が壊れてしまう。
ubuntu環境にはwindows環境の固定ドライブがマウントされている。
「C:」ドライブなら「/mnt/c」でubuntu環境からwindows環境へアクセスできる。
そこで、ubuntu環境での作業をwindows環境下で行うことでwindows環境から操作できるようにする
今回の例
- windowsのDocumentsに「ubuntu」というディレクトリを作成し、そこを新ホームディレクトリとする
-
<username1>
: windows のユーザ名- デスクトップまでのパスの例だと以下部分
C:\Users\<username1>\Desktop
-
<username2>
: ubuntu のユーザ名(初回起動時に設定した名前)
手順
手順① ubuntuを起動して、デフォルトのホームディレクトリにあるファイル(設定ファイル)をwindows環境の新ホームディレクトリに移動する
$ cd
$ cp -p .* /mnt/c/Users/<username1>/Documents/ubuntu/
手順② 設定ファイルを開く
$ sudo vim /etc/passwd
手順③ 記載内容の変更
※変更前
<username2>:x:1000:1000:,,,:/home/<username2>:/bin/bash
※変更後
<username2>:x:1000:1000:,,,:/mnt/c/Users/<username1>/Documents/ubuntu:/bin/bash
手順④ ubuntuを再起動
3. Dockerを使えるようにする
手順① ubuntuを起動してDockerをインストール
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
$ 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-get install docker-ce
$ sudo usermod -aG docker $USER
$ sudo /etc/init.d/docker start
手順② docker-composeをインストール
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
※ubuntuを再起動する
手順③ windows起動時にdockerを自動起動するように設定する
以下ファイルを作成する。
※passwordはubunt初回起動時に設定したパスワード
@echo off
C:\Windows\System32\bash.exe -c "echo '<password>' | sudo -S /etc/init.d/docker start"
手順④ このファイルをwindowsのスタートアップフォルダに置く。
C:\Users\<username1>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
4. SSHで接続できるようにする
なぜ必要?
正直なくても問題ないが、リモートサーバーに接続しているターミナルエミュレーターと同様に操作できるようにするため
手順
手順① ubuntu環境でopenssh-serverを立ち上げる
2018/07/16時点では既にインストールされているopenssh-serverをそのまま使うとエラーになるので、一度アンインストールする
$ sudo apt-get remove --purge openssh-server
$ sudo apt-get update --fix-missing
$ sudo apt-get install openssh-server
$ sudo service ssh start
手順② windows起動時にsshを自動起動するように設定する
以下ファイルを作成する。
※passwordはubunt初回起動時に設定したパスワード
@echo off
C:\Windows\System32\bash.exe -c "echo '<password>' | sudo -S /etc/init.d/ssh start"
手順③ このファイルをwindowsのスタートアップフォルダに置く。
C:\Users\<username1>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
5. suコマンドを使えるようにする
初期設定状態だとrootユーザに変更するためのパスワードが設定されていない。
初期設定で設定したユーザのパスワードでrootユーザに変更することもできるが、rootユーザのパスワードも設定しておく。
手順① ubuntuを起動して初期設定したユーザのパスワードでrootユーザに変更
$ sudo su -
手順② rootユーザのパスワード設定
※上記コマンドでrootユーザに変更した後で設定する
passwd
今後は su -
で設定したパスワードを入力するとrootユーザにログインできる
各種ライブラリのインストール
$ su -
$ apt-get -y update && apt-get -y upgrade && apt-get install -y \
build-essential make \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*