こんばんにちは
うちのWindowsにようやくバージョン2004のビルド19041が降ってきました.
WSL2でCentOSが動かせることを知ったので色々試してみました.というか,Linuxカーネルを使うシステムならほとんど動かせそうですね.
今回はMicrosoft StoreからインストールするUbuntuなどのディストリビューションではなく,直接インポートします.
目次
rootfsの準備
本当はここが一番大変だったりするのですが,UbuntuもCentOSも公式に用意されているものがあるので,それを使用します.
用意されていないディストリビューションやバージョンでも,自分で用意することができますが,今回は割愛.
Ubuntu
本記事執筆時の最新LTSバージョンである20.04 LTSを採用します.
https://ubuntu.comより辿り着けるこのページに,なんとwsl用のrootfsがあります.
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/より辿り着けるこのページに,コンテナ用のイメージファイルがあります.
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' が存在しないため検出できません。
最後に
インストールさえできれば,あとは通常通りにパッケージをインストールしたり,ユーザーを作成したりします.
コメント