目次

WSL2 Ubuntu の手動インストール

y2sunlight 2020-12-12

WSL2に戻る

関連記事

リンク

本章では、WSLのLinuxディストリビューションを手動でインストールする方法について説明します。


手動インストールの方法

rootfsイメージ

rootfs とは Linuxファイルシステムの / そのものに対する概念で、そこに初期起動時の実デバイス(以降、rootfs イメージと呼びます)をマウントします。

Linuxを起動するためには、bootfs(boot file system) と rootfs(root file system)が必要になります。bootfs はブートローダーとカーネルが格納されておりブートプロセスが終わるとアンマウントされます。その後、rootfsに /dev, /proc, /bin, /etc, /lib, /usr, /tmp などが含まれたrootfs イメージがマウントされ、プロセスID=1 の初期プロセス(SysV init または Systemd などが有名)が起動されることになります。

WSL2 へ Linuxディストリビューションを追加するためには、この rootfs のイメージが必要となります。通常は、Linux の rootfs を Microsoft Store から入手して自動でインストールするというのが一般的かもしれませんが、ここでは、rootfs を手動でダウンロードして rootfs のイメージをインポート(wsl –import)する方法を説明します。


一般的な手順

(1)rootfsイメージのダウンロード

WSL用のrootfsイメージを公開しているサイトからそれをダウンロードします。本章では、以下のサイトからダウンロードします。

(2)rootfsイメージのインポート

PowerShell または コマンドプロンプトで、次のようにして rootfsイメージのインポートします。

wsl --import <Distro> <InstallLocation> <FileName>

以下では、PowerShell を使用して説明します。


手動インストールの例

本章では、次の2つのサイトからUbuntuのrootfsイメージをダウンロードしてインストールします:

どちらの例でも、最終的に以下のディストリビューション名でUbuntuをインストールします:


Microsoft のサイトから

ダウンロード

以下のサイトにアクセスして、ubuntu 2004 をダウンロードして下さい。

直接以下のクリックしてもダウンロードできます。

ダウンロードしたファイル:

Ubuntu_2004.2020.424.0_x64.appx

rootfsイメージの準備

ダウンロードした Ubuntu_2004.2020.424.0_x64.appx の拡張子を .zip に変更して、それを解凍します。

AppxMetadata\
Assets\
install.tar\
install.tar.gz
AppxSignature.p7x
resources.pri
[Content_Types].xml
AppxBlockMap.xml
AppxManifest.xml
ubuntu2004.exe

解凍したフォルダの中でインポートで使用するのは、install.tar.gz だけです。本章では、install.tar.gz を以下の場所に名前を変えて設置します。

D:\WSL2\Exports\Ubuntu_2004.2020.424.0_x64.tar.gz

rootfsイメージのインポート

wsl –import コマンドを使って、先に保存した .tar.gz ファイルをインポートします。

PS C:\> wsl --import Ubuntu-20.04-2 D:\WSL2\Packages\Ubuntu-20.04-2 D:\WSL2\Exports\Ubuntu_2004.2020.424.0_x64.tar.gz
既に同じ名前のディストリビューションがある場合は上の名前(Ubuntu-20.04-2)を変更して下さい。

wsl -l -v でディストリビューションの一覧を表示し、インポートを確認します。

PS C:\> wsl -l -v
  NAME              STATE           VERSION
* CentOS7.6         Stopped         2
  Ubuntu-20.04      Stopped         2
  Ubuntu-20.04-2    Stopped         2

新しいディストリビューション Ubuntu-20.04-2 が追加されているのが分かります。


Ubuntu のサイトから

ダウンロード

以下のサイトにアクセスして、focal-server-cloudimg-amd64-wsl.rootfs.tar.gz をダウンロードして下さい。

直接以下のクリックしてもダウンロードできます。

ダウンロードしたファイル:

focal-server-cloudimg-amd64-wsl.rootfs.tar.gz

ダウンロードしたファイルはrootfsイメージなのでそのままインポートできます。本章ではこのファイルの名前を変えて、以下のように設置します。

D:\WSL2\Exports\Ubuntu_focal-server-cloudimg-amd64-wsl.rootfs.tar.gz

rootfsイメージのインポート

wsl –import コマンドを使って、先に保存した .tar.gz ファイルをインポートします。

PS C:\> wsl --import Ubuntu-20.04-2 D:\WSL2\Packages\Ubuntu-20.04-2 D:\WSL2\Exports\Ubuntu_focal-server-cloudimg-amd64-wsl.rootfs.tar.gz
既に同じ名前のディストリビューションがある場合は上の名前(Ubuntu-20.04-2)を変更して下さい。

wsl -l -v でディストリビューションの一覧を表示し、インポートを確認します。

PC C:\> wsl -l -v
  NAME              STATE           VERSION
* CentOS7.6         Stopped         2
  Ubuntu-20.04      Stopped         2
  Ubuntu-20.04-2    Stopped         2

新しいディストリビューション Ubuntu-20.04-2 が追加されているのが分かります。


起動

先にインポートした Ubuntu-20.04-2wsl -d コマンドで起動します。

PS C:\> wsl -d Ubuntu-20.04-2

この時、Power Shell が bash に切り替わりUbuntuが利用できるようになります。Windowsターミナルをお使いの方は、[プルダウンメニュー]から[Ubuntu-20.04-2]を選択することもできます。

インストール直後の最初の起動では、root ユーザでログインしています。

以下のコマンドでUbuntuのバージョンとユーザ情報を確認してみましょう:

# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04 LTS"
# id
uid=0(root) gid=0(root) groups=0(root)


Ubutuの初期設定

この段階では、ユーザは root しか存在しません。以下は全てrootユーザから設定している例になります。

管理者(root)のパスワード設定

rootユーザのパスワードが分からないので、最初に設定しておきます:

# passwd


新しいユーザの追加

ユーザを作成します:

# adduser --shell /bin/bash y2sunlight

作成したユーザにグループを追加します:

# usermod -G adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev y2sunlight

ここで、追加したこれらのグループは、Microsoft Store から Ununtu をインストールした時に、初期ユーザが所属してるグループです。必要に応じて追加・削除して下さい。

ユーザ情報を確認します:

# id y2sunlight
uid=1000(y2sunlight) gid=1000(y2sunlight) groups=1000(y2sunlight),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),117(netdev)


/etc/sudoers

開発用のローカルサーバなので、rootで運用しても良いですが、sudo の設定もしておきます。visudo を実行して /etc/sudoerssudo グループの箇所を書き換え、sudo でパスワードが不要になるように設定します:

$ visudo
sudoers
# ...
 
# Allow members of group sudo to execute any command
- %sudo   ALL=(ALL:ALL) ALL
+ %sudo   ALL=(ALL) NOPASSWD:ALL
 
# ...

この設定で sudo グループに入っているユーザは、sudo でパスワードが不要になります。


パッケージの更新

パッケージを最新の状態に更新します:

$ apt update     # 最新のパッケージ情報の取得
$ apt upgrade -y # パッケージを最新に更新する

これ以降、Ubuntu には ユーザ y2sunlight でログインして操作します。


Windowsの初期設定

PowerShellからの起動

PowerShellから起動するには以下のようにします。

PS C:\> wsl -d Ubuntu-20.04-2 -u y2sunlight

Windowsターミナルをご利用の場合は、[プルダウンメニュー]から[Ubuntu-20.04-2]を選択できます。


Windows ターミナルの設定

Windowsターミナルを起動し、[プルダウンメニュー]から[設定]を選択します。

setting.json を開き、“name” がインポート時に指定したディストリビューション名( “Ubuntu-20.04-2” ) と同じターミナルを探し、その設定を以下のように変更して下さい。

{
    "guid": "{048a85e4-0278-5ae1-8add-531a3d3eb4ac}",
    "hidden": false,
    "name": "Ubuntu-20.04-2",
    "source": "Windows.Terminal.Wsl",
+   "commandline": "wsl.exe -d Ubuntu-20.04-2 -u y2sunlight",
+   "startingDirectory": "//wsl$/Ubuntu-20.04-2/home/y2sunlight"
}


登録解除

インポートした Ubuntu を登録解除(アンインストール)するには、wsl –unregister コマンドを使います。

PS C:\> wsl --unregister Ubuntu-20.04-2

このコマンドには、実行の確認がないので、注意して下さい。実行されると直ぐに、登録解除され、Ubuntu のイメージは削除されてしまいます。