あづみのメモ帳

rootfsイメージからWSL1のUbuntuをインストールしてみた

ダウンロードしたrootfsイメージからWSL1を設定する手順の自分向けメモ。Microsoft Storeから入れるのに対し、複数同じディストリビューションを使える、実体を置く場所を選べるなどの利点がある。WSLとして提供されてないディストリビューションを使うこともできるっぽい? また、WSL1にはWindows側ファイルシステムへのアクセスが速い、ネットワーク周りがキモくない、メモリを馬鹿食いしない、技術的に面白い(、あんまよくないらしいけどWindows側から直接ファイルを覗ける)などの利点がある。

WSLをセットアップする

使わないWSL2のカーネルが降ってこないようにWindows Updateの「その他のMicrosoft製品の更新プログラムを受け取る」をオフにする。

WSLを有効にするには「Linux用Windowsサブシステム」と「仮想マシンプラットフォーム」を有効にする。

イメージをダウンロードする

公式ページからWSL向けrootfsをダウンロードする。24.04 LTSのならInvoke-WebRequest -Uri https://cloud-images.ubuntu.com/wsl/noble/current/ubuntu-noble-wsl-amd64-wsl.rootfs.tar.gz -OutFile Ubuntu.tar.gzとかで落ちてくる。

インストールする

ディストリビューション名、ディレクトリ名やファイル名は例。ヘルプには「tarファイル」と書いてあるが.tar.gzのままでいける。たぶんここのバージョン指定以外はWSL2でも同じようにいける。

wsl --import Ubuntu D:\WSL\Ubuntu D:\Downloads\Ubuntu.tar.gz --version 1

お好みでwsl -s Ubuntuなどとしてデフォルトに設定する。

ユーザ作成

WSLに入って作業する。デフォルトにしてない場合はwsl -d Ubuntuなどと指定する。rootしかユーザがいない状態なので作る。ここはディストリビューションによって異なることがある気がする。ユーザ名はusernameとした例。

useradd -m username
passwd username
usermod -aG sudo username

次に、WSLのデフォルトユーザを作ったユーザにする。/etc/wsl.confに以下のように追記する。

[user]
default=username

これを反映するためにexitで抜け、wsl -t Ubuntuで終了し、wslでもう一度入る。成功していれば作ったユーザでログインされる。

もろもろ設定

なぜかシェルがshになっているので直す。

chsh -s /usr/bin/bash

aptのリポジトリのミラーを設定する。24.04からはdeb822形式になってくれたおかげで書き換えるのは1行でよく、呪文を唱える必要はない。

sudo nano /etc/apt/sources.list.d/ubuntu.sources
# URIsの行を書き換える
sudo apt update
sudo apt upgrade

日本語化する。

sudo apt install language-pack-ja
sudo update-locale LANG=ja_JP.utf8

プロンプトがカラフルなほうがたのしいので.bashrcforce_color_prompt=yesのコメントアウトを外す。

あとは何か思いついたら追記する。