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⁼Ubuntu
、version=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。