Surface Pro X （ARM版Windows10）への WSL2 （＋開発ツール）インストール 

[Surface Pro X](https://www.microsoft.com/ja-jp/p/surface-pro-x/8vdnrp2m6hhc)を買ったので、必要な環境整備を行ったメモです。
購入を検討している人の参考になれば。

ほかの方も書かれてました。→ [ARMベースのSurface Pro X買って開発環境構築](https://qiita.com/mfunaki/items/1dc47ab4edb60cef6416)

## Surface Pro X

技術仕様は[このあたり](https://www.microsoft.com/ja-jp/p/surface-pro-x/8vdnrp2m6hhc?activetab=techspecs)。

CPUがARM64で、x64なアプリケーションは動きません。x86(ia32)はエミュレーションで動きます。エミュレーションなので速くはないです。なので、ARM64用ビルドがあればそれを使い、ないものはx86用のものを使う方針となります。

![Microsoft SQ1 3.0GHz](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7000/edfeeff3-6ad5-c2de-d961-f59790a2602c.png)


## 結論から

- VSCodeはx86エミュレーションで動きます。
- Kindle for PCはx86エミュレーションで動きます。
- WSL2動きます。ARM64でLinux動きます。
- Docker動きます。ARM64でコンテナ動きます。
  - ただしARM64用のDockerイメージが提供されていないことが多いです。

## 目次

- WSL2
- Docker on WSL2
- VSCode
- Kindle for PC

追記予定

### WSL2

手順は以下の通り。通常のx64と変わりなく、[公式のドキュメント](https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-install)通りです。

1. Windows Insider Program を有効にする（スローを選択）
2. Windowsの機能「Linux 用 Windows サブシステム」「仮想マシンプラットフォーム」を有効にする
3. WSLのデフォルトバージョンを `2` にする
4. Windows Store から Ubuntu をインストールする
5. Ubuntu を起動する

#### Windows Insider Program を有効にする（スローを選択）

[設定] => [更新とセキュリティ] => [Windows Insider Program] => [開始する] => [スロー（推奨）]
再起動後、Windows Update で適用できます。

![2020-02-03 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7000/2aa5cc26-1042-92e3-ce1c-9fb27da46011.png)

![2020-02-03 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7000/46e2223d-ec61-7c45-2a26-53d2020adbe0.png)

![2020-02-03 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7000/ec8419f5-e268-4162-8d37-cb06fc92ceaa.png)

#### Windowsの機能「Linux 用 Windows サブシステム」「仮想マシンプラットフォーム」を有効にする

PowerShell を管理者権限で起動して、次のコマンドを実行、マシンを再起動します。

```powershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```

![2020-02-03 (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7000/75c03854-9dcd-e2f2-d25f-fd08e06e1346.png)

### WSLのデフォルトバージョンを `2` にする

WSLのディストリビューションごとに使用するWSLのバージョンは選べますし、後から変更することもできますが、私はWSL2しか使わないので、はじめからWSL2で初期化してくれた方がありがたいです。

コマンドプロンプトで次を実行します。

```
wsl --set-version <Distro> 2
```

![2020-02-03 (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7000/a65510db-5e18-84f3-9781-42071101c290.png)

#### Windows Store から Ubuntu をインストールする

「Ubuntu」「Ubuntu 16.10」「Ubuntu 18.04」とありますが、特にこだわりがなければ「Ubuntu」でよいと思います。これはその時点の最新のLTS版、つまり現在は「18.04」ということです。新しいLTSが出たら、新規インストールする際にはその版が、インストール済みのものは `sudo do-release-upgrade` でアップグレードすることになります。

![2020-02-03 (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7000/27472e98-f2ca-a99c-4b24-9f583410f2b1.png)

#### Ubuntu を起動する

起動すると初期セットアップが実行され、それが終わると使うことができます。
ARM64(AArch64)で動いていることを確認できます。

![Ubuntu on WSL2 (ARM64)](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7000/d0b8f9bb-7cf7-c229-d366-29591ca62def.png)

![uname -a](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7000/7ea85670-1c86-fde6-468f-8efa3fb88021.png)

### Docker on WSL2

通常通り、Ubuntu 18.04 へのDockerインストール方法そのままです。

[Get Docker Engine - Community for Ubuntu](https://docs.docker.com/install/linux/docker-ce/ubuntu/)

WSL2で動かすとき特有のはまりどころとして初回 `/etc/init.d/docker start` が必要です。
Docker Composeはこだわりがなければ `apt-get install docker-compose` しちゃうのが楽です。

一点注意として、ARM64で動いているLinuxなので、DockerコンテナもARM64で動きます。
コンテナ中でx64用のバイナリを使ってたりすると失敗するので、気をつけてください。
僕はEntryKitで `wget https://github.com/progrium/entrykit/releases/download/v0.4.0/entrykit_0.4.0_Linux_x86_64.tgz` してるものがあり、これについては自前でARM64用にビルドする必要がありました。（[こちら](https://github.com/takeyuweb/rails-firebase-sample/pull/4)）

![Docker on WSL2 ARM64](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7000/50653676-aee2-3211-91d2-69cf3d10fcc1.png)

### VSCode

[Issueは立っている](https://github.com/microsoft/vscode/issues/81854)ようですが、現状ではARM用のビルドは提供されていません。
[VSCodeのサイト](https://code.visualstudio.com/)の「Other platforms」にある32bit版（IA32）インストーラをダウンロードしてインストールします。

![VSCodeバージョン情報](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7000/cc00cd90-4e06-a695-a409-f7beea4c58ff.png)

#### WSL2に接続

「Remote - WSL」アドオンをインストールすると、「WSL TARGETS」にインストール済みのWSLディストリビューションが表示されるので、接続します。
こちらも問題なく利用できました。

![2020-02-03 (20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7000/eb360815-aa99-0e91-73dd-1c43e283832c.png)

![2020-02-03 (22).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7000/0e056beb-5840-7806-69ec-cea32de0040f.png)

### Kindle for PC

開発ツール？技術書読むのとか･･･
iPad版などと比べると使い勝手悪いですが、タブレットモードでもまぁまぁ使えます。

[Kindle無料アプリ](https://www.amazon.co.jp/kindle-dbs/fd/kcp/ref=sv_nav_ebook_8)の「PC & Mac」より。

![Kindle for PC](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7000/6023673b-5272-8073-60ed-01e47c7cc0fb.png)