====== WSL2 Ubuntu の手動インストール ======
--- //[[http://www.y2sunlight.com|y2sunlight]] 2020-12-12//
[[wsl2:top|WSL2に戻る]]
関連記事
* [[wsl2:install|WSL2 インストール]]
* [[wsl2:command|WSL2 コマンドリファレンス]]
* [[wsl2:interop|WSL2 LinuxとのWindowsの相互運用性]]
* [[wsl2:clone|WSL2 ディストリビューションの複製]]
* [[wsl2:terminal|Windows ターミナル]]
リンク
* [[https://docs.microsoft.com/ja-jp/windows/wsl/install-manual|WSL ディストリビューション パッケージを手動でダウンロードする]] --- Microsoftドキュメント
* [[http://cloud-images.ubuntu.com/]] --- Ubuntu 公式クラウドイメージ
* [[https://level69.net/archives/27563|WSL(2)でOSを手動で無限に追加(インポート)する方法]] --- 技術的になにか。
本章では、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イメージを公開しているサイトからそれをダウンロードします。本章では、以下のサイトからダウンロードします。
* Microsoftのサイト
* [[https://docs.microsoft.com/ja-jp/windows/wsl/install-manual|WSL ディストリビューション パッケージを手動でダウンロードする]]
* Ubuntuのサイト
* [[http://cloud-images.ubuntu.com/focal/current/|Ubuntu Server 20.04 (Focal Fossa) Daily Builds]]
=== (2)rootfsイメージのインポート ===
PowerShell または コマンドプロンプトで、次のようにして rootfsイメージのインポートします。
wsl --import
* '''' --- 任意のディストリビューション名を指定できます。
* '''' --- インストールするフォルダ
* '''' --- インポートするtarファイルのファイル名
以下では、PowerShell を使用して説明します。
\\
===== 手動インストールの例 =====
本章では、次の2つのサイトからUbuntuのrootfsイメージをダウンロードしてインストールします:
* [[https://docs.microsoft.com/ja-jp/windows/wsl/install-manual#downloading-distros|Microsoftのサイト]]
* [[http://cloud-images.ubuntu.com/focal/current/|Ubuntuのサイト]]
どちらの例でも、最終的に以下のディストリビューション名でUbuntuをインストールします:
* ''Ubuntu-20.04-2''
\\
==== Microsoft のサイトから ====
=== ダウンロード ===
以下のサイトにアクセスして、''ubuntu 2004'' をダウンロードして下さい。
* [[https://docs.microsoft.com/ja-jp/windows/wsl/install-manual#downloading-distros|WSL ディストリビューション パッケージを手動でダウンロードする]] \\ --- ディストリビューションのダウンロード
直接以下のクリックしてもダウンロードできます。
* https://aka.ms/wsl-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'' をダウンロードして下さい。
* [[http://cloud-images.ubuntu.com/focal/current/|Ubuntu Server 20.04 (Focal Fossa) Daily Builds]]
直接以下のクリックしてもダウンロードできます。
* http://cloud-images.ubuntu.com/focal/current/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-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)
\\
===== 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/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'' でログインして操作します。
\\
===== Windowsの初期設定 =====
==== PowerShellからの起動 ====
PowerShellから起動するには以下のようにします。
PS C:\> wsl -d Ubuntu-20.04-2 -u y2sunlight
* ''-d'' でディストリビューション名を指定してす。
* ''-u'' でユーザ名を指定してす。
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"
}
* ''"commandline"'' --- 起動コマンドを指定します。\\ ここでは、''-d'' でディストリビューション名を、''-u'' でユーザ名を指定してす。
* ''"startingDirectory"'' --- シェル起動時の開始ディレクトリを指定します。
\\
===== 登録解除 =====
インポートした Ubuntu を登録解除(アンインストール)するには、''wsl --unregister'' コマンドを使います。
PS C:\> wsl --unregister Ubuntu-20.04-2
このコマンドには、実行の確認がないので、注意して下さい。実行されると直ぐに、登録解除され、Ubuntu のイメージは削除されてしまいます。
\\