WSL2で複数のUbuntuやCentOSを使う

  • LINEで送る

こんばんにちは

うちのWindowsにようやくバージョン2004のビルド19041が降ってきました.

WSL2でCentOSが動かせることを知ったので色々試してみました.というか,Linuxカーネルを使うシステムならほとんど動かせそうですね.

今回はMicrosoft StoreからインストールするUbuntuなどのディストリビューションではなく,直接インポートします.

rootfsの準備

本当はここが一番大変だったりするのですが,UbuntuもCentOSも公式に用意されているものがあるので,それを使用します.

用意されていないディストリビューションやバージョンでも,自分で用意することができますが,今回は割愛.

Ubuntu

本記事執筆時の最新LTSバージョンである20.04 LTSを採用します.

https://ubuntu.comより辿り着けるこのページに,なんとwsl用のrootfsがあります.

.tar.gzを使います.

PowerShellや既存のwsl環境等で適当な場所にダウンロードし,展開してtarballにしておきます.

Ubuntu /mnt/d/Users/k-san/MEGA/wsl % wget http://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64-wsl.rootfs.tar.gz
Ubuntu /mnt/d/Users/k-san/MEGA/wsl % ls -l focal-server-cloudimg-amd64-wsl.rootfs.tar.gz
-rwxrwxrwx 1 k-san k-san 465290544  8月 15 07:20 focal-server-cloudimg-amd64-wsl.rootfs.tar.gz*
Ubuntu /mnt/d/Users/k-san/MEGA/wsl % gunzip focal-server-cloudimg-amd64-wsl.rootfs.tar.gz
Ubuntu /mnt/d/Users/k-san/MEGA/wsl % ls -l focal-server-cloudimg-amd64-wsl.rootfs.tar
-rwxrwxrwx 1 k-san k-san 1083934720  8月 15 07:20 focal-server-cloudimg-amd64-wsl.rootfs.tar*

CentOS

本記事執筆時の最新バージョンである8.2 2004を採用します.

https://www.centos.org/より辿り着けるこのページに,コンテナ用のイメージファイルがあります.

8.2.2004の.tar.xzを使用します.

PowerShellや既存のwsl環境で適当な場所にダウンロードし,目的のtarballを取り出します.

Ubuntu /mnt/d/Users/k-san/MEGA/wsl % wget http://cloud.centos.org/centos/8/x86_64/images/CentOS-8-Container-8.2.2004-20200611.2.x86_64.tar.xz
Ubuntu /mnt/d/Users/k-san/MEGA/wsl % ls -l CentOS-8-Container-8.2.2004-20200611.2.x86_64.tar.xz
-rwxrwxrwx 1 k-san k-san 46459604  6月 11 11:36 CentOS-8-Container-8.2.2004-20200611.2.x86_64.tar.xz*
Ubuntu /mnt/d/Users/k-san/MEGA/wsl % tar xJf CentOS-8-Container-8.2.2004-20200611.2.x86_64.tar.xz
Ubuntu /mnt/d/Users/k-san/MEGA/wsl % ls -l 84a5eb5aec87c0ec5cd558dd38d71af54efc1c5876866961e5085cf49d3a3167/
合計 227636
-rwxrwxrwx 1 k-san k-san         3  6月 11 11:36 VERSION*
-rwxrwxrwx 1 k-san k-san       873  6月 11 11:36 json*
-rwxrwxrwx 1 k-san k-san 233093120  6月 11 11:36 layer.tar*

このlayer.tarが目的のtarballです.

インストール先作成

ディストリビューションのインストール先を作成します.

今回は,Microsoft StoreからインストールしたUbuntuなどがインストールされる場所へ同様にインストールすることにします.

PS C:\Users\k-san> cd $env:LOCALAPPDATA/Packages
PS C:\Users\k-san\AppData\Local\Packages> mkdir Ubuntu2


    ディレクトリ: C:\Users\k-san\AppData\Local\Packages


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2020/08/17      5:41                Ubuntu2

PS C:\Users\k-san\AppData\Local\Packages> mkdir CentOS


    ディレクトリ: C:\Users\k-san\AppData\Local\Packages


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2020/08/17      5:43                CentOS

ここではディレクトリ名をUbuntu及びCentOSとしました.

rootfsのインポート

wsl.exeコマンドを用いてrootfsをインポートします.

PS C:\Users\k-san\AppData\Local\Packages> wsl --import Ubuntu2 .\Ubuntu2 D:\Users\k-san\MEGA\wsl\focal-server-cloudimg-amd64-wsl.rootfs.tar --version 2
PS C:\Users\k-san\AppData\Local\Packages> wsl --import CentOS .\CentOS D:\Users\k-san\MEGA\wsl\84a5eb5aec87c0ec5cd558dd38d71af54efc1c5876866961e5085cf49d3a3167\layer.tar --version 2
PS C:\Users\k-san\AppData\Local\Packages> wsl -l -v
  NAME         STATE           VERSION
* Ubuntu       Running         1
  CentOS       Stopped         2
  Ubuntu2      Stopped         2

これだけで,準備は完了です.

UbuntuはMicrosft Storeからインストールしたものです.

実行

wsl.exeを引数なしに実行すると,デフォルトのディストリビューション(ここではUbuntu)が起動します.

他のディストリビューションを起動する時は以下のようにします.

PS C:\Users\k-san> wsl -d Ubuntu2
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.51-microsoft-standard-WSL2+ x86_64)

** 省略 **

root@K-san:/mnt/c/Users/k-san# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
root@K-san:/mnt/c/Users/k-san# uname -a
Linux K-san 5.4.51-microsoft-standard-WSL2+ #2 SMP Fri Aug 14 12:05:12 JST 2020 x86_64 x86_64 x86_64 GNU/Linux
root@K-san:/mnt/c/Users/k-san# exit
logout
PS C:\Users\k-san> wsl -d CentOS
[root@K-san k-san]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
[root@K-san k-san]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"

[root@K-san k-san]# uname -a
Linux K-san 5.4.51-microsoft-standard-WSL2+ #2 SMP Fri Aug 14 12:05:12 JST 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@K-san k-san]# exit
logout

ディストリビューションの削除

インストールしたディストリビューションを削除するには,コマンドを実行した後,作成したディレクトリが残ったままになるので,削除します.

PS C:\Users\k-san\AppData\Local\Packages> ls CentOS


    ディレクトリ: C:\Users\k-san\AppData\Local\Packages\CentOS


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2020/08/17      5:52      300941312 ext4.vhdx


PS C:\Users\k-san\AppData\Local\Packages> wsl --unregister CentOS
登録を解除しています...
PS C:\Users\k-san\AppData\Local\Packages> ls CentOS
PS C:\Users\k-san\AppData\Local\Packages> rm CentOS
PS C:\Users\k-san\AppData\Local\Packages> ls CentOS
ls : パス 'C:\Users\k-san\AppData\Local\Packages\CentOS' が存在しないため検出できません。

最後に

インストールさえできれば,あとは通常通りにパッケージをインストールしたり,ユーザーを作成したりします.

  • LINEで送る

SNSでもご購読できます。

コメントを残す

*