WSL2にCentOS7のインストール

IT

Windows10 2004でWSL2が有効になりましたので、WSL2とCentOS7をインストールしました。

公式っぽいマイクロソフトのサイトの情報をもとに実施しました。
https://docs.microsoft.com/ja-jp/windows/wsl/install-win10

Windows Subsystem for Linuxのインストール

WSL2をインストールするためには、まずはWSLをインストールする必要があります。
管理者として PowerShellを開き、以下を実行。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

管理者は、スタートメニューからPowerShellを右クリックして「管理者として実行」を選べばよいです。

WSL2に更新

WSL2に更新するには、バージョン2004、ビルド19041以上に更新されたWindows10が必要です。

仮想マシンプラットフォームのオプションコンポーネント有効にする

WSL2をインストールする前に、仮想マシンプラットフォームオプション機能を有効にする必要があります。
管理者としてPowerShellを開き、以下を実行。

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

パソコンを再起動します。

と、ここまでは参照ページ通りでよいのですが、このままだと肝心のWSL2がインストールされません。
WSL2のインストールは、以下にアクセスして、最新のWSL2 Linuxカーネル更新プログラムパッケージをダウンロードしないといけません。
https://aka.ms/wsl2kernel

ダウンロードしたファイルを実行すると、管理者特権のアクセス許可の入力が求められますので承認してください。

インストールが完了したら、WSL2が使用可能となります。

WSL2を既定のバージョンとして設定しておいたほうが良いと思います。

wsl --set-default-version 2

CentOS7のインストール

以下のサイトを参考にWSL2にCentOS7をインストールしました。
https://qiita.com/ShikiSouma/items/8a47082e0067e102c5c4

CentOS7のファイルを下記のGitHubリポジトリよりダウンロード。
https://github.com/yuk7/CentWSL

ダウンロードしたZipファイルを解凍して、任意のディレクトリに設置。
私は、以下にコピー。
C:\Users\username\AppData\Local\Packages\CentOS7

ファイルを任意ディレクトリに設置したら、CentOS7.exeを実行してインストールを開始。
下記画像のように、Microsoft Defender SmartScreenによる警告が出ますが、詳細を押して、実行してください。

インストールが終わったら、先ほどインストールに使用したのと同じ、CentOS7.exeを実行すると、CentOS7が立ち上がります。
立ち上がった状態で、タスクバーでピン留めしておいたほうが、次回起動が楽になります。

インストール後の設定

rootパスワードが設定されていないようなので設定。

# passwd root

SoftwareCollections.orgリポジトリ設定

OS標準パッケージとは別に、RHELおよびCentOS向けに新しいバージョンのパッケージを使用できるようにSoftware Collectionsを使えるようにします。

# yum install centos-release-scl-rh -y

SSHServerの設定

TeraTermなどから、CentOS7にssh接続できたほうが便利なので設定します。

openssh-serverがインストールされていないためインストール

# yum install openssh-server -y

インストール完了後、sshd_configの設定でパスワード認証を有効に設定。

# vi /etc/ssh/sshd_config

#To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication yes

/usr/bin/systemctlを変更。systemctlは念のため、systemctl.oldとしてバックアップ

# mv /usr/bin/systemctl /usr/bin/systemctl.old
# curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py > /usr/bin/systemctl
# chmod +x /usr/bin/systemctl

RSAキーを作成

# ssh-keygen -A

サービスを再開

# service sshd restart
# systemctl enable sshd

TeraTermでlocalhostにsshアクセスできるようになりました。

ローカルユーザーの作成

デフォルトはrootユーザーとなっているので、自分用のユーザーを作成します。管理権限をsudoで実行できるようにwheelグループに登録。

# adduser <自分用のユーザー名>
# gpasswd -a <自分用のユーザー名> wheel

sudoコマンドでパスワードなしに実行できるよう/etc/sudoersを修正。

%wheel ALL=(ALL) NOPASSWD: ALL

CentOS7.exeを実行したときに、ここで作成したユーザーでbashが開くように、Windowsのコマンドプロンプトで、以下を設定。

C:\Users\username\AppData\Local\Packages\CentOS7> CentOS7 config --default-user <自分用のユーザー>

WSLのバージョンの確認

インストールしたLinuxディストリビューションがWSLなのかWSL2なのか確認する方法です。
PowerShellで以下を実行。

wsl --list --verbose

Windows10 2004であれば、wsl -l -vでもOKです。

ディストリビューションで使用される WSL のバージョンを変更するには、以下を実行します。
変更には数分かかります。

wsl --set-version <distribution name> <versionNumber>

コメント

タイトルとURLをコピーしました