Edited at

Windows Subsystem for Linuxを設定する


前書き

Windows Subsystem for Linux(WSL)はとてもありがたい。Bush on Ubuntu on Windowsが発表されたときから、Windows(というよりMicrosoft office)で仕事せざるを得ない私にとっては衝撃的なシステムだった。WSL2のニュースも出ており、積極的な姿勢に期待している。WSLの初期設定に関する記事は山のようにあるが、それぞれの目的にあわせて作業が異なるので、自分むけのメモを残しておく。

WSLが最初に出たときから、X Windows Systemが使えたらな、と思っていた。自分は昔からLinuxのEmacs+YaTeXで文章を書くことに慣れており、Windows環境に移らなければならない事情ができてからずっと困っていた。WindowsのEmacsはどうも使いづらい。AtomやVS Codeでなんかで誤魔化してきた。LaTeXの執筆+コンパイルはCLI環境でもできるが、最終的なPDFなんかはX上のビューアーで見たい。というわけでとりあえずWSLでX Window Systemを動かす。最終ゴールはEmacsでLaTeX執筆環境を整えること。


前提

Windows 10 version 1709以降?WSLが公式にサポートされているバージョン。Linuxの操作に関しては、CLIをそれなりに使えるぐらい。コマンドやオプションを覚えてないけどググれば解決できるぐらい。ArchWikiを読んで必要な設定やコマンドがわかるぐらい。


WSLの導入

これは簡単だし紹介記事もたくさんある。例えばWindows 10でLinuxプログラムを利用可能にするWSLをインストールする(バージョン1803以降対応版)などがわかりやすい。

1. 「設定」の「アプリと機能」、関連設定の「プログラムと機能」からコントロールパネルに飛ぶ。コントロールパネルにすぐアクセスできるなら少し楽。

2. 「Windows機能の有効化または無効化」から「Windows Subsystem for Linux」にチェックを入れてOKをクリック。

3. 再起動する。

4. Microsoft Storeで「wsl」なり「linux」なりで検索すればWSLに対応したディストリビューションが見つかるので好みのものを入れる。Ubuntuの場合、複数のLTSが提供されていることがあるが、バージョンアップしても使いたいので標準の「Ubuntu」を選択することをお勧めする。

5. インストールが済めば、あとは通常のアプリケーションと同様にスタートメニューから選択するだけ。コンソールが現われるのでユーザー名などを設定すれば使えるようになる。

6. sudo apt update && sudo apt upgradeで最新版にアップデートしておく。


LTSのアップグレードをしたい場合

記事執筆時のLTSは18.04。WSLのUbuntuを選んでインストールした場合も18.04がインストールされる。自分は以前WSLをインストールしたまま放置していた時期があり、16.04が入っているPCもあったので18.04にアップグレードした。また、将来新しいバージョンへ移りたいかもしれないのでメモしておく。

apt upgradeで最新版になっているとしてupdate-manager-coreをインストールし、/etc/update-manager/release-upgradesを開いてPrompt=ltsとする。下記の参照先によると標準でここまでできているようだし、実際そうだった。

sudo do-release-upgrade -d

を実行して待つ。sshdについて聞かれたり古いパッケージを削除したりと1時間程度時間がかかる。最後にWSLを一旦終了する。


参照

WSL版Ubuntuのアップグレード~16.04から18.04へ~


ホームディレクトリはどこに

WSLは

%AppDataLocal%\Packages\CanonicalGroupLimited.UbuntuonWindows_[適当な文字列?]\LocalState\rootfs

にrootディレクトリ、その下.\home\[username]にhomeディレクトリがある。また、WindowsのCドライブ以下はWSLから見ると

/mnt/c/

にあるため、ユーザーのホームは

/mnt/c/Users/[username]

にある。これは不便だが、WindowsとLinuxのファイルパーミッションの扱いや今後のアップデートでどうなるかわからないことを考えると、これをいじるのは賢明ではない。なので、頻繁にアクセスしたいフォルダにはシンボリックリンクを貼るのがよい。例えばユーザーホームのドキュメントなら

ln -s /mnt/c/Users/[username]/Documents ~/Documents

などしておく。


参照

Windows 10のWindows Subsystem for Linux(WSL)を日常的に活用する


ビープ音を止める

デフォルトではシェルからビープ音が鳴るので止める

/etc/inputrcを開き、set bell-style noneのコメントを無効にする。


参照

azukipochette's weblog: Ubuntu (Ubuntu 18.04 with WSL) でビープ音を止める


shellをfishにする

fishをインストールするだけなら簡単。fish - ArchWikiによると、Arch Linuxではデフォルトのシェルをfishにすることは推奨されていない。Ubuntuでも同じような状況だと思うので、ArchWikiに従って.bashrcexec fishを追記する。

fishのプロンプトや色設定はfish_configでウェブブラウザをつかって対話的に可能だし、様々なプラグインがあるので便利にカスタマイズできる。後でX windows systemが使えるようにしてからブラウザでカスタマイズしようと思っているので今は何もしない。


参照

将来予定のカスタマイズも含め

fish shellが結構良かった話

WSLでお手軽にオシャレfish環境構築

Windows10で快適なfishシェル環境構築

fish - ArchWiki


bashとの違い

fishだと&&||といったコマンドが使えず、それぞれ; and; orを使う。また少し調べた範囲では$_に相当するコマンドはないらしい。fish 3.0からは&&||にも対応(どちらの表記も可)だそうだが、現時点のUbutuntu 18.04は2.7.1だった。


参照

全訳!fishシェル普及計画

全訳!fishシェル普及計画: and:他シェルの「&&」相当!直前コマンドが正常終了時に実行

全訳!fishシェル普及計画: or:【要注意】fishでは「||」じゃなくて「or」を使うんよ

fishシェルでmkdir hoge && cd $_したかったけど面倒だった

fish 3.0がやってきた


日本のリポジトリを追加

Ubuntuの日本語環境を整えるために、Japanese Teamのリポジトリを追加する。

LTS 18.04の場合

wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -

wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
sudo wget https://www.ubuntulinux.jp/sources.list.d/bionic.list -O /etc/apt/sources.list.d/ubuntu-ja.list
sudo apt update

また、パッケージリポジトリのミラーサーバーも国内のものに換えておくとメンテナンス時間が減るかもしれない。

Ubuntu Japanese Teamがメンテナンスしているのは富山大学のサーバーらしい(http://ubuntutym.u-toyama.ac.jp/ubuntu/)。

Ubuntu: 日本国内のダウンロードサイト

更新したらもちろんapt updateapt upgradeを実行しておく。


メモ

今回は手で更新したが、sedを使って変更すると楽。作業の前にバックアップはとっておく。

Windows Subsystem for LinuxでUbuntuによると、jp.archive.ubuntu.comが上記富山大学のエイリアスだそうなので、このサイトにあるsedをそのまま実行してもいい。将来富山大学のサーバーじゃなくなってもこのエイリアスは活きてそうなので、こっちのほうがいいかもしれない。

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


参照

Ubuntuの日本語環境

Windows Subsystem for LinuxでUbuntu

apt-getの利用リポジトリを日本サーバーに変更する


日本語環境設定(メモ)

自分の場合は英語環境のまま(LANG=en_US.UTF8)のままでもいいのでやらなかったが、日本語環境のほうがよい場合もあるのでメモを残しておく。

日本語パッケージをインストール

sudo apt install language-pack-ja

日本語ロケールにする。

sudo update-locale LANG=ja_JP.UTF-8

WSLを再起動して、日本語になったことを確認。

echo $LANG

あるいは

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

タイムゾーンを変更

sudo dpkg-reconfigure tzdata

からアジア -> 東京を選択。

manコマンドを日本語化したい場合は以下

sudo apt install manpages-ja manpages-ja-dev


参照

WSLのUbuntu環境を日本語化する

【Windows10/WSL Ubuntu】日本語のロケールとタイムゾーンの変更

Windows Subsystem for Linux(WSL)に「Ubuntu 18.04 TLS」を入れたときに最初にしたこと

Windows Subsystem for LinuxでUbuntu


X Windows Systemを導入する

Windows上で動くXのクライアントは有料・無料でいくつかある。現時点の無料ソフトではVcXsrvがお勧めらしいので使ってみた。

1. VcXsrv公式サイトに行って最新版をダウンロード&インストール。

2. 初回起動時はWindowsのファイアウォールに関する注意が出る。外部と通信しないので、「キャンセル」でいい。

2. Multiple Window、no clientで起動する。ここは個人の好みでもいい。

起動はスタートメニューの[VcXsrv] -> [XLanch]。ショートカットをつくる、タスクバーにピン留めするなどご自由に。


WSL側の設定


  1. X window Sytemを揃える。テスト用にx11-appsをインストールするぐらいでもいいし、GnomeやLXDEなど好きなデスクトップ環境をインストールしておいてもいい。

  2. WSLコンソールでexport DISPLAY=:0.0でVcXsrvに接続する。


  3. xeyesのような簡単なソフトを起動してテストする。もちろんlxpanelなどでもいい。

  4. 恒久的に使うには、.bashrcに設定を書いておいた方が楽。fishを起動する前がいいのかな。


参照

WSL上にXサーバをインストールしてGUIを実現する(VcXsrv編)

WSLでwindows上にLinuxのGUI環境を作る[メモ]

Ubuntu 18.04のWSL上へのインストールと初期設定

X Window on WSL (Ubuntu) on Windows 10 Pro

Windows Subsystem for Linux + X Windowを1.024倍くらい使いこなすための方法


必要なソフトウェアインストール


最新のEmacs

Ubuntu公式が配布するよりも新しいバージョン(執筆時は26)がほしい場合はレポジトリを追加してインストールする。

sudo add-apt-repository ppa:kelleyk/emacs

sudo apt update
sudo apt install emacs26

それ以外も必要に応じて適宜。自分の場合はとりあえずこれ

sudo apt install texlive-lang-japanese texlive-latex-extra texlive-latex-recommended texlive-luatex cmigemo aspell

X Windows System 導入後ならばブラウザなどあるかもしれない。Google Chromeを入れたい場合は少し作業が必要。

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
sudo apt update
sudo apt install google-chrome-stable


参照

How to Install GNU Emacs 26.1 in Ubuntu 18.04, 16.04, 18.10 - UbuntuHandbook

Ubuntu Linux 18.04 LTSで、Google Chromeをapt repositoryからインストールする


続く

まだまだ日本語入力関係やEmacsの設定などやることがあるが長くなってきたのでここで一旦終わり。


続き(2019.09.15)

Windows Subsystem for Linuxを設定する 2 - Qiita