Help us understand the problem. What is going on with this article?

WSLでCentOS7をインストールする

VPSを含めたZabbix監視環境を作成するためCentOS7の環境が必要になり仮想マシンを作成するより、
WSLを使用して構築したほうがいいのでは、と思いやってみた。

要るもの

Windows10 PC (homeでもproでもどっちでも)

初期セットアップ

最初にコントロールパネル〉プログラムと機能〉Windows の機能の有効化または無効化Linux用Windows サブシステムを有効化します。
追加完了後PCを再起動します。

もし、上の作業を実行しているのにも関わらずCentOS7をインストール後起動しない場合、
管理者としてPowerShellで下記のコマンドを実行します。

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

実行後、pcを再起動します。

CentOS7のファイルのインストール

CentOS7のファイルを下記のGitHubリポジトリよりダウンロードします。
yuk7/CentWSL

ダウンロード後ファイルを解凍し任意のディレクトリに設置しますが、個人的にstoreからインストールするディストリビューションと同じく
C:\Users\username\AppData\Local\Packagesのディレクトリに設置したほうがいいかもしれません。
上のディレクトリに設置する場合のバッチファイルを作成してみました。
何台も設定する人向けですが使ってみてください。
CentOS7Setup.bat

batファイルの使い方
ダウンロード後、解凍したCentOS7のファイルに保存して実行してください。
実行後、"C:\Users\username\AppData\Local\Packages"ディレクトリにファイルの転送と転送後CentOS7.exeが実行され
CentOS7.exeがインストールされます。

ファイルを任意ディレクトリに設置したら、CentOS7.exeを実行してインストールを開始します。

Installing... 
Installation Complete! 
Press any key to continue... 

*Press any key to continue... *と表示されましたらインストール完了です。
CentOS7.exeのショートカットをデスクトップに作成したほうが楽です
なお、バッチファイルを使用した場合もしくは"C:\Users\username\AppData\Local\Packages"に設置した場合は
下記のパスでショートカットを作成できます。

%userprofile%\AppData\Local\Packages\CentOS7\CentOS7.exe

ショートカット作成後、正しく実行できれば成功です。
実行できずにエラーで"Error:0x80040154"が発生した場合は初期セットアップで記載しているコマンドを実行してください。

また、コマンドプロンプト側で以下のコマンドでインストールされているディストリビューションを確認できます。

C:\Users\username>wsl -l
Linux 用 Windows サブシステム ディストリビューション:
CentOS7 (既定)

インストール後の設定

rootパスワード
インストール後はrootのパスワードは設定されていないポイです。
rootのパスワードを以下のように設定します。

[root@DESKTOP ~]# passwd root
Changing password for user root.
New password:
BAD PASSWORD: The password fails the dictionary check - it does not contain enough DIFFERENT characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@DESKTOP ~]#

通常のCentOS7と同じく脆弱なパスワードを入力すると警告が出ます。
設定するパスワードを入力して完了です。

SoftwareCollections.org リポジトリ設定

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

yum install centos-release-scl-rh -y

SSHServerについて

別端末よりssh接続してWSL環境を操作したい場合があると思います。
ストアから入手できるUbuntuの場合でもCentOS7でも、インストール後ではWSL環境へssh接続を使用することができません。
今回はCentOS7でssh接続してWSL環境を操作する方法を記載します。

openssh-serverのインストール
最初の段階でopenssh-serverがインストールされていないためインストールしていきます。

[root@DESKTOP ~]# yum install openssh-server -y

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

[root@DESKTOP ~]# vi /etc/ssh/sshd_config
#To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication yes

サービスを再開させますが以下のエラーが発生して起動に失敗すると思われます。

[root@DESKTOP-8QR1L4E ~]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
Failed to get D-Bus connection: Operation not permitted
[root@DESKTOP-8QR1L4E ~]#

この場合は以下のようにコマンドを実行して対策します。
なお実行する前に/usr/bin/systemctlを別名でバックアップします。

[root@DESKTOP ~]# mv /usr/bin/systemctl /usr/bin/systemctl.old
[root@DESKTOP ~]# curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py > /usr/bin/systemctl
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  196k  100  196k    0     0   182k      0  0:00:01  0:00:01 --:--:--  182k
[root@DESKTOP ~]# chmod +x /usr/bin/systemctl
[root@DESKTOP ~]#

次はRSAキーを作成

[root@DESKTOP ~]# ssh-keygen -A
ssh-keygen: generating new host keys: RSA1 RSA DSA ECDSA ED25519
[root@DESKTOP ~]#

上のコマンドを実行したら再度service sshd restartを実行します。

[root@DESKTOP-8QR1L4E ~]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
[root@DESKTOP-8QR1L4E ~]# systemctl enable sshd
[root@DESKTOP-8QR1L4E ~]#

上のコマンドを実行すると画像のようにWindowsセキュリティ警告が出てきたら、アクセスを許可するを押して完了です。

image.png

あとはteratermでlocalhostかWindows機のIPアドレスを指定して接続できるか確認して完了です。

参考にしたサイト

敬略称
torutkのブログ:WSLでCentOSが利用できたかも?(CentOS 7)
GEEkFEED:wsl2上で無料でCentOS8を動かそう
@ezmscrap:Windows Subsystem for Linuxにssh接続する
@mzmiyabi:WSL(CentOS7)でsystemctlを実行するとFailed to get D-Bus connection: Operation not permittedになる
Windows 10のコマンドプロンプトからWSL上のLinuxコマンドを呼び出す(バージョン1803対応版)
Windows Subsystem for Linux に関するドキュメント

おまけ

手動インストールした環境のアンインストール方法

以下のコマンドを実行して設置したファイルを削除します。

wsl --unregister CentOS7
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした