メモ@inudaisho

君見ずや出版 / 興味次第の調べ物置き場

BashOnWindows(WSL)のUbuntuを16.04にする

 如題。といっても複雑なことは何もしてない。マイクロソフトに膝を折って軍門に降り、Insider Program の一員となってスローリングに登録すると Insider Preview ビルド14986が落ちてきてデフォルトで Ubuntu16.04 になるという寸法である。アップグレードは面倒ではなかったか、という疑問があるかもしれないが、BashOnWindows 環境を愛惜しているのであれば別だが無理にアップグレードするよりは全部入れなおした方が楽だ。

lxrun /uninstall /full
lxrun /install

 コマンドプロンプトでこれだけ打てばまたマイクロソフトのストアとやらから Ubuntu が落ちてきて 16.04 になっているはずだ。ファーストリングに登録してビルド15025とか体験してもよかったのだが、それでバッテリーが死んだり頻繁に大量のダウンロードと更新があったりするといやなのでやめた。BashOnWindows の Ubuntu が16.04になればそれでよい。
 BashOnWindows を操作するのに

ターミナル GitHub - goreliu/wsl-terminal: Terminal emulator for Windows Subsystem for Linux (WSL)
ターミナル GitHub - mintty/wsltty: Mintty as a terminal for Bash on Ubuntu on Windows / WSL (2017/12/10 今使ってるのはこっち)
Xサーバ VcXsrv Windows X Server download : SourceForge.net

 の組み合わせをつかっているが、lxrun でUbuntuをインストールしなおしてもそのまま使えるのでこちらは何もしなくてよい。Ubuntu側でやることはまずフォントの節約のために

sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/WindowsFonts
sudo fc-cache -fv

 をやればあとは適宜

sudo apt-get install gimp geeqie ....

 などと必要なものをいれていけばよい。こういうのは全部シェルスクリプトにして wsl-terminal のディレクトリにいれとくと環境再構築も楽だ。
 Anniversary Update の BashOnWindows だとファイルの入ったフォルダ(Windows側)を mv しようとするとそこで固まってしまっていた。それ以外にもファイルを壊してるんじゃないかと思うときがあったりよく固まってしまって Windows を再起動したりと冷や汗ものでつかっていたが、ビルド14986 では mv の問題は直っていたし前よりキビキビ動くようになっている。しかし USBHDD をつなげても認識してくれない。これは Virtual Box でも怪しいところでいつ実現するのかよくわからんので vmware は捨てられなさそうだ。

 あとウィンドウズのバイナリも実行さすことができた。Windows 側のパスも通っているのでたとえばメモ帳なら notepad.exe とうてば動くようになっている。このへんはそのうち悪用されそうなのでまた複雑な方法で塞がれそうな気もする。

 ちなみにすこし前にいろいろ探しているとこういうのをみつけた。
 GitHub - RoliSoft/WSL-Distribution-Switcher: Scripts to replace the distribution behind Windows Subsystem for Linux with any other Linux distribution published on Docker Hub.
 まぁしかし Anniversary Update のWSLは mv すらまともにできないベータ版で作業すればするほどデータを壊している可能性がありとにかく早くもっとましなバージョンに更新したかった事もあってこういうことになった。Windowsのアップグレードを一日千秋の思いで待ちつづけることなどそうそうないと思う。