====== 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 のイメージは削除されてしまいます。 \\