目次
記事の内容
Windows の WSL では既定で Ubuntu の Linux ディストーションがインストールされますが、本記事は WSL で Red Hat 系の CentOS 8 を使いたいユーザーに向けてインストール手順を示します。
前提条件
本記事で動作確認した環境は以下のとおりです。
- Windows10
- WSL 2 導入済み
作業の流れ
- 作業フォルダの作成(任意)
- CentOS のアーカイブファイルをダウンロード
- CentOS アーカイブファイルの展開
- rootfs インポート先のフォルダを作成
- WSL に CentOS の rootfs をインポート
WSL に rootfs をインポートするという作業ポイントが分かれば、将来異なるバージョン などが出ても同様な手順で応用できると思います。
Windows PowerShell の起動
Windows PowerShell を起動します。特権ユーザーの起動は不要です。起動方法は任意ですが、「Windows + X」を押して「I(アルファベットのアイ)」ボタンで Windows PowerShell を起動することができます。
作業フォルダの作成(任意)
この作業は任意です。扱うファイルやファイルパスなどが把握できる場合は、この作業をしなくてもかまいません。ですが、手順の中にあるアーカイブファイルを展開する作業でいくつかのファイルが展開されて散らばりますので、作業フォルダの中での操作がお勧めです。本記事では、ダウンロードフォルダの中に作業フォルダ(CentosWork)を作成し、その中に CentOS アーカイブファイルをダウンロードして作業をします。
New-Item $env:USERPROFILE\\Downloads\\CentosWork -ItemType Directory
cd $env:USERPROFILE\\Downloads\\CentosWork
CentOS アーカイブファイルのダウンロード
最新の CentOS 8 アーカイブファイルをダウンロードします。たとえば、64bit 環境の場合は以下のファイルをダウンロードします。
curl.exe -O https://cloud.centos.org/centos/8/x86_64/images/CentOS-8-Container-8.4.2105-20210603.0.x86_64.tar.xz
なお、このファイルは更新されることがあるので、最新版を使う場合は下記リンク先にある Last modified が新しい日付のファイルを利用ください。CentOS 8(64bit)の場合は、ファイル名が「*.x86_64.tar.xz」というものを使用します。
CentOS アーカイブファイルの展開
ダウンロードした CentOS のアーカイブファイルを展開します。CentOS 8 は、ファイルが *.tar.xz という形式で圧縮されており、Windows の標準機能では解凍できないようです。7-zip というアプリケーションで解凍するか、もしくは、WSL に既に他の Linux が入っている場合は tar コマンドで以下のように解凍してみてください。
tar xvfJ CentOS-8-Container-8.4.2105-20210603.0.x86_64.tar.xz
ファイルを展開すると、以下のようなフォルダやファイルが見えます。この展開されたファルダの中にある layer.tar というアーカイブファイルに CentOS のルートファイルシステム(以後 rootfs と呼称)が入っているため、これを後述の手順で WSL にインポートします。なお、フォルダは ls コマンドの出力にある Mode が d(directory) となっているものになります。
PS C:\\Users\\admin\\Downloads\\CentosWork> ls
ディレクトリ: C:\\Users\\admin\\Downloads\\CentosWork
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2021/06/03 14:04 c2b7bbb1c753a5e543b5061145a6b8c0ad6cb253af5c8df81d2cbf9f4ca45e3b
-a---- 2022/01/24 14:08 54621176 CentOS-8-Container-8.4.2105-20210603.0.x86_64.tar.xz
-a---- 2021/06/03 14:04 129 repositories
PS C:\\Users\\admin\\Downloads\\CentosWork> cd .\\c2b7bbb1c753a5e543b5061145a6b8c0ad6cb253af5c8df81d2cbf9f4ca45e3b\\
PS C:\\Users\\admin\\Downloads\\CentosWork\\c2b7bbb1c753a5e543b5061145a6b8c0ad6cb253af5c8df81d2cbf9f4ca45e3b> ls
ディレクトリ: C:\\Users\\admin\\Downloads\\CentosWork\\c2b7bbb1c753a5e543b5061145a6b8c0ad6cb253af5c8df81d2cbf9f4ca45e3b
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2021/06/03 14:04 873 json
-a---- 2021/06/03 14:04 254208000 layer.tar
-a---- 2021/06/03 14:04 3 VERSION
PS C:\\Users\\admin\\Downloads\\CentosWork\\c2b7bbb1c753a5e543b5061145a6b8c0ad6cb253af5c8df81d2cbf9f4ca45e3b>
rootfs インポート先のフォルダを作成
WSL に CentOS の rootfs(≒ layer.tar ファイル)をインポートするフォルダを作成しておきます。
New-Item $env:LOCALAPPDATA\\wsl\\CentOS\\8 -ItemType Directory
この後のコマンドで相対パスを扱うため、念のため作業フォルダの位置に戻ります(ファイルパスや状況が分かっている人は不要な手順です)。
cd $env:USERPROFILE\\Downloads\\CentosWork
WSL に CentOS の rootfs をインポート
次のコマンドで WSL の新しいディストリビューションとして CentOS8 の rootfs(≒ layer.tar ファイル)をインポートします。コマンドの書式は「wsl.exe -import <Distro> <InstallLocation> <FileName>」となりますが、詳細は「wsl.exe —help」で確認ください。
wsl.exe --import CentOS8 $env:LOCALAPPDATA\\wsl\\CentOS\\8 .\\c2b7bbb1c753a5e543b5061145a6b8c0ad6cb253af5c8df81d2cbf9f4ca45e3b\\layer.tar
WSL ディストリビューションの確認
以下のコマンドでディストリビューションの一覧を表示します。
wsl.exe -l -v
指定したディストリビューションを実行するには、-d オプションで指定します。
wsl.exe -d CentOS8 cat /etc/redhat-release
既定 WSL ディストリビューションの変更
WSL をお気に入りのディストリビューションで毎回起動するようにするには、以下のコマンドで既定ディストリビューションを変更します。
wsl.exe --set-default CentOS8
作業フォルダを削除(操作注意)
作業で使用したフォルダやファイルは不要なので削除しておきます。コマンドで手順を示しますが、使い慣れたファイルエクスプローラーで該当フォルダ(本記事では CentosWork)を削除しても問題ありません。コマンドで実行する場合は、誤ったフォルダを削除しないように慎重にフォルダ指定をしてください。
Remove-Item -Recurse $env:USERPROFILE\\Downloads\\CentosWork\\
WSL に CentOS 8 を導入する手順は以上です。以降の情報は参考情報です。
WSL ディストーションの削除方法(実行注意)
ちなみに WSL のディストリビューションを削除するには「—unregister」オプションでディストリビューション名を指定します。これを実行するとディストリビューションと関連するファイルシステムが全て消えるので注意してください。実行時に「本当に削除しますか?」という確認もなくサッと消えてしまうので実行する際は慎重に操作してください。
wsl.exe --unregister CentOS8
rootfs(layer.tar ファイル)とは
手順の中にあった rootfs(layer.tar ファイル)について少し深堀りをしておきます。実際に layer.tar ファイルを展開してみると分かりやすいです。layer.tar ファイルを展開すると、以下のように Linux のディストリビューションでよく見かけるルート「/」のマウントポイントにマウントされるファイルシステムのディレクトリ構成が見えてきます。つまり、WSL にこのディレクトリ構造をインポートするのが作業ポイントとなっています。
$ ls
json layer.tar VERSION
$ tar xf layer.tar
$ ls
bin etc json lib lost+found mnt proc run srv tmp var
dev home layer.tar lib64 media opt root sbin sys usr VERSION
$