— y2sunlight 2020-12-12
関連記事
リンク
本章では、WSLのLinuxディストリビューションを手動でインストールする方法について説明します。
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
)する方法を説明します。
WSL用のrootfsイメージを公開しているサイトからそれをダウンロードします。本章では、以下のサイトからダウンロードします。
PowerShell または コマンドプロンプトで、次のようにして rootfsイメージのインポートします。
wsl --import <Distro> <InstallLocation> <FileName>
<Distro>
— 任意のディストリビューション名を指定できます。<InstallLocation>
— インストールするフォルダ<FileName>
— インポートするtarファイルのファイル名以下では、PowerShell を使用して説明します。
本章では、次の2つのサイトからUbuntuのrootfsイメージをダウンロードしてインストールします:
どちらの例でも、最終的に以下のディストリビューション名でUbuntuをインストールします:
Ubuntu-20.04-2
以下のサイトにアクセスして、ubuntu 2004
をダウンロードして下さい。
直接以下のクリックしてもダウンロードできます。
ダウンロードしたファイル:
Ubuntu_2004.2020.424.0_x64.appx
ダウンロードした 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
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
が追加されているのが分かります。
以下のサイトにアクセスして、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
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-2
を wsl -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)
この段階では、ユーザは 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)
開発用のローカルサーバなので、rootで運用しても良いですが、sudo
の設定もしておきます。visudo
を実行して /etc/sudoers
の sudo
グループの箇所を書き換え、sudo
でパスワードが不要になるように設定します:
$ visudo
# ... # 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
でログインして操作します。
PowerShellから起動するには以下のようにします。
PS C:\> wsl -d Ubuntu-20.04-2 -u y2sunlight
-d
でディストリビューション名を指定してす。-u
でユーザ名を指定してす。Windowsターミナルをご利用の場合は、[プルダウンメニュー]から[Ubuntu-20.04-2]を選択できます。
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" }
"commandline"
— 起動コマンドを指定します。-d
でディストリビューション名を、-u
でユーザ名を指定してす。"startingDirectory"
— シェル起動時の開始ディレクトリを指定します。
インポートした Ubuntu を登録解除(アンインストール)するには、wsl –unregister
コマンドを使います。
PS C:\> wsl --unregister Ubuntu-20.04-2
このコマンドには、実行の確認がないので、注意して下さい。実行されると直ぐに、登録解除され、Ubuntu のイメージは削除されてしまいます。