Posted at

WSL+LxRunOfflineでシステムドライブ外に環境構築

WSLの環境を壊してしまったときに実施するけど、よく忘れるのでメモ

前提として、


  • Windows 10(Homeでも可)

  • WSLは有効化済みとする


何がしたいか

WSLは便利だけど、システムドライブにインストールされるので、容量が肥大化したとき辛い。


外部ドライブに独自のWSLボリュームを作って有効化させたい。


LxRunOffline

独自のWSLボリュームを生成することができる。


インストール

Chocolateyがインストールされていれば、

$ choco install lxrunoffline

なければReleaseページからダウンロードする。


Linuxイメージのダウンロード

https://lxrunoffline.apphb.com/download/{distro}/{version}にアクセスし、Linuxイメージをダウンロードする。

種類としては、Wikiページにリストされているので、{distro}、{version}を選ぶ。


Ubuntu 18.04の場合、distro⁼Ubuntuversion=bionicとしてダウンロードできる。


独自ボリューム生成

$ LxRunOffline i -n Ubuntu -d D:\wsl -f ubuntu-bionic-core-cloudimg-amd64-root.tar.gz

とする。


  • nオプション(Ubuntu)は作成するボリューム名

  • dオプション(D:\wsl)はボリュームの生成先

  • fオプション(ubuntu-bionic-core-cloudimg-amd64-root.tar.gz)はダウンロードしたLinuxイメージファイル

である。


作成したWSLボリュームの有効化

WSLでは、UbuntuやFedora等、複数の環境をインストールできるようにするため、既定のボリュームを変更できるようになっている。

wslconfig /listでWSLボリュームの一覧を見ることができる。


wslconfig /setdefault <ボリューム名>とすると、既定のボリュームを変更することができる。


作成したWSLボリュームの起動

既定のボリュームに指定した後は、wslコマンドで起動することが可能。


初期起動時にやること


ユーザ作成

作成した直後は、ユーザはrootのみで、このまま使うのは危険なので、下記コマンドを実行してユーザを作成する。

$ apt update

$ apt upgrade
$ apt install sudo vim-tiny
$ adduser <ユーザ名>
$ gpasswd -a <ユーザ名> sudo

ユーザ追加以外に、sudoをインストールし追加したユーザにsudo権限を付けるところまでやっている。


ログインユーザの設定

WSLを起動したとき、デフォルトだとrootで入ってしまうので、ログインユーザを変更する。

WSL上で、

$ login <ユーザ名>

$ id

を実行し、作成したユーザのuidを覚えておく。

続いて、いったんWSLを終了しコマンドプロンプト上で、

> LxRunOffline su -n Ubuntu -v <UID>

を実行することで、ログイン時のuidを指定できる。


Hyperの設定

Hyperはターミナルエミュレータで、Windows上でもそれっぽい操作ができる。

chocolateyでもchoco install hyperでインストールできる。

インストール後はコマンドプロンプトが綺麗になるだけなので、デフォルトでWSLが開くように設定する。


Hyper起動中にCtrl+,を押すと、.hyper.jsという設定ファイルが開くので、shellに関する項目を以下のように書き換える。

shell: 'C:\Windows\System32\\wsl.exe',

shellArgs: ['~'],

これで、Hyperを起動するだけでWSLが立ち上がる。


ボリュームを削除する

やらかして環境を壊してしまったときは、

LxRunOffline ui -n Ubuntuでボリュームを削除することができる。


同じように作り直せばOK。