WSL 2 に CentOS をインストールする手順について

5 min 2,983 views

記事の内容

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
$
関連記事