Ubuntu
Windows10
WindowsSubsystemForLinux

Windows Subsystem for LinuxでUbuntu

Windows 10をversion 1809にアップグレードした際に、Windows Subsystem for Linux (WSL)もインストールし直したので、Windows 10の次期アップグレードの際にWSLを再インストールすること想定して、作業内容をメモ。メモとしてまとめるに当たり、いつもは手順に従って淡々と作業するだけでなく、作業内容に関わる情報について、関連ページを記載。

作業にあたってはMicrosoftの公式ページを参照。なおMicrosoft Docsの内容はまだ最新バージョン向けに更新されていなかったので、ブログの最新情報も合わせて参照。


Windows Subsystem for Linuxを有効にする

WSLは現在デフォルトで無効になっているのでまず有効化。PowerShellを管理者権限で立ち上げて次のコマンドを実行。

> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

終了すると再起動するか尋ねられるので、"Y"を入力。

この操作を完了するために、今すぐコンピューターを再起動しますか?

[Y] Yes [N] No [?] ヘルプ (既定値は "Y"):

入力すると直ちに再起動されるので、他に開いているものがあれば事前に閉じておく。


Ubuntuのインストール


Ubuntu 18.04ストアアプリのインストール

WSLでは複数のディストリビューションが選択可能だが、後にインストールするアプリケーションの関係でUbuntu 18.04を選択する。Ubuntuインストールするため、再度PowerShellを管理者権限で立ち上げて、次のコマンドを実行。

> Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile ~/Ubuntu.appx -UseBasicParsing

> Add-AppxPackage -Path ~/Ubuntu.appx

1行目のコマンドでUbuntu 18.04のアプリケーションパッケージがダウンロードされ、2行目のコマンドを実行することでWindowsストアアプリとしてインストールされる。Microsoft DocsではWindowsストアから導入する方法が解説されているが、ブログでPowerShellのコマンドラインで実行する方法が解説されていたので、今回はその方法を実行。コマンドの意味については、Microsoft Technetの解説を参照。


Ubuntuの初期設定

ブログだと、PowerShellから初期設定を続けるやり方で解説されていたが、Ubuntuのターミナルを立ち上げて初期設定を続けることとする。


ユーザ名とパスワードの設定

Ubuntuターミナルの初回起動時にはインストールが継続して実行され、完了後にユーザ名とパスワードの入力が求められるので、適宜入力。

Installing, this may take a few minutes...

Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.


タイムゾーンの設定

タイムゾーンを日本標準時(JST)に設定する。Ubuntuの時刻設定に関しては、以下のページを参照。

以下のコマンドを実行すると、インタラクティブにタイムゾーンを選択する画面が表示されるので、ゾーンでは"Asia"、サブゾーンとして"Tokyo"を選択。

$ sudo dpkg-reconfigure tzdata

選択したタイムゾーンの値は、"Zone/Subzone"という形式で/etc/timezoneに書き込まれるが、直接値を書き込んでコマンドラインのみで設定する方法もUbuntuTimeで解説されている。

$ echo "Asia/Tokyo" | sudo tee /etc/timezone

Asia/Tokyo
$ sudo dpkg-reconfigure --frontend noninteractive tzdata

タイムゾーンの設定では、timedatectlコマンドによる方法も解説されることもあるが、このコマンドはD-Bus依存なのでデスクトップ環境が設定されていない今回では利用できない。

$ timedatectl set-timezone Asia/Tokyo

Failed to create bus connection: No such file or directory


APTパッケージアーカイブを国内サイトに変更

Ubuntuのパッケージアーカイブリポジトリは、既定でarchive.ubuntu.comおよびsecurity.ubuntu.comに存在する。ただこのリポジトリをホストしているサイトは英国に存在し、日本からアクセスするとかなり遅い。そこで日本国内のミラーサーバであるjp.archive.ubuntu.comに変更する。なお、変更するに当たりバックアップをとっておく。

$ sudo sed -i.bak 's/\/archive\.ubuntu/\/jp\.archive\.ubuntu/' /etc/apt/sources.list

このサイト、Ubuntu Desktopなどで日本国内のミラーとして指定される名前だが、公式ページのアーカイブミラー一覧には掲載されていない。

このドメイン名は、Ubuntu Japanese Teamが保守しているubuntutym.u-toyama.ac.jpのエイリアスだとされているが、hostコマンドで確認すると確かにそのとおり。

$ host jp.archive.ubuntu.com

jp.archive.ubuntu.com is an alias for ubuntutym.u-toyama.ac.jp.
ubuntutym.u-toyama.ac.jp is an alias for ubuntutym3.u-toyama.ac.jp.
ubuntutym3.u-toyama.ac.jp has address 160.26.2.187


ロケールを日本語に変更

WSLでの利用目的によっては、日本語化する必要がないか、もしかすると日本語化しないほうが良いが、とりあえず使える環境は構築しておく。

まずは日本語の言語パックをインストールする。

$ sudo apt install language-pack-ja

次にデフォルトのロケールをja_JP.UTF-8に変更する。

$ sudo update-locale LANG=ja_JP.UTF-8

ターミナルを一旦閉じて、再度開いてからロケールが変更されたことを確認する。

$ locale

LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"

次のコマンドで英語環境に戻す。

$ sudo update-locale LANG=en_US.UTF8