====== WSL2 CentOS7のインストール ====== --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-12-08// [[wsl2:top|WSL2に戻る]] 関連記事 * [[wsl2:install|WSL2 インストール]] * [[wsl2:command|WSL2 コマンドリファレンス]] * [[wsl2:interop|WSL2 LinuxとのWindowsの相互運用性]] * [[wsl2:clone|WSL2 ディストリビューションの複製]] * [[wsl2:terminal|Windows ターミナル]] リンク * https://github.com/wsldl-pg/CentWSL --- WSL用のCentOSダウンロードサイト(GitHub) 本章では、WSL2でのCentOS7のインストールについて説明します。現時点(2020-12-08)で、WSL用の CentOS は Microsoft Store で公開されているにも関わらず、有償でしかも公式でもなく、レビューもついていません。従って、[[https://github.com/wsldl-pg/CentWSL|GitHub]]から入手してインストールします。 本章でインストールするCentOS7は以下の通りです: * CentOS 7.6 ----- ===== ダウンロード ===== 以下のサイトにアクセスします: * https://github.com/wsldl-pg/CentWSL/releases ここではWSL用の各種CentOSが配布されています(感謝です!!)。 本章では、WSL2にCentOS7を設置するので、[[https://github.com/wsldl-pg/CentWSL/releases/tag/7.0.1907.3|7.0.1907.3]] をダウンロードします。 [{{:wsl2:centos7:wsl2-centos701.png?nolink}}] ■ ''CentOS7.zip'' をクリックしてzipファイルをダウンロードします。 === インポート用のファイルの作成 === zipファイルの中には、以下のファイルが含まれています: CentOS7.exe rootfs.tar.gz ''wsldl-pg/CentWSL'' のドキュメントによれば CentOSのインストールは、''CentOS7.exe'' で行うようになってますが、本編では、''wsl'' コマンドを使ってインポートします。これは、他のLinuxディストリビューションと同じ運用方法にしたいからで、それ以外の理由はありません。 ダウンロードしたzipファイルを解凍して ''rootfs.tar.gz'' を取り出し、分かり易い名前に変更して、所定のフォルダに移動します。本章では、以下のファイルをWSL用のCentOS7のインポートファイルとします。 D:\WSL2\Exports\CentOS7.6.1907.tar.gz > ''wsl'' コマンドは ''tar.gz'' もインポートしてくれるようなので、tar-ballに変換せず、このままで使用します。 \\ ===== インポート ===== ''wsl --import'' コマンドを使って、先に保存した tar.gz ファイルをインポートします。 PS C:\> wsl --import CentOS7.6 D:\WSL2\Packages\CentOS7.6.1907 D:\WSL2\Exports\CentOS7.6.1907.tar.gz ''wsl --import'' コマンドに関しては本編の「[[wsl2:clone#インポート|WSL2 ディストリビューションの複製]]」を参照して下さい。 ''wsl -l -v'' でディストリビューションの一覧を表示し、インポートを確認します。 NAME STATE VERSION * Ubuntu-20.04 Stopped 2 CentOS7.6 Stopped 2 \\ ===== 起動 ===== 先にインポートした ''CentOS7.6'' を ''wsl -d'' コマンドで起動します。 PS C:\> wsl -d CentOS7.6 この時、Power Shell が bash に切り替わりCentOSが利用できるようになります。 以下のコマンドでCentOSのバージョンを確認してみましょう: $ cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) PowerShell に戻るには、''exit'' または ''logout'' コマンドを使います。 $ exit \\ ===== CentOSの初期設定 ===== この段階では、ユーザは root しか存在しません。以下は全てrootユーザから設定している例になります。 ==== 管理者(root)のパスワード設定 ==== rootユーザのパスワードが分からないので、最初に設定しておきます: # passwd \\ ==== 新しいユーザの追加 ==== ユーザを作成します: # adduser --shell /bin/bash y2sunlight 作成したユーザにグループを追加します: # usermod -G adm,wheel,dialout,cdrom,floppy,audio,video y2sunlight これらのグループは、必要に応じて追加・削除して下さい。''wheel'' グループは ''/etc/sudoers'' の設定で必要なグループです。 ユーザ情報を確認します: # id y2sunlight uid=1000(y2sunlight) gid=1000(y2sunlight) groups=1000(y2sunlight),4(adm),10(wheel),11(cdrom),18(dialout),19(floppy),39(video),63(audio) \\ ==== /etc/sudoers ==== 開発用のローカルサーバなので、rootで運用しても良いですが、''sudo'' の設定もしておきます。''viduso'' を実行して ''/etc/sudoers'' の ''wheel'' グループの箇所を書き換え、''sudo'' でパスワードが不要になるように設定します: $ visudo ## Allows people in group wheel to run all commands - # %wheel ALL=(ALL) ALL + %wheel ALL=(ALL) ALL ## Same thing without a password - # %wheel ALL=(ALL) NOPASSWD: ALL + %wheel ALL=(ALL) NOPASSWD: ALL この設定で ''wheel'' グループに入っているユーザは、''sudo'' でパスワードが不要になります。 ==== パッケージの更新 ==== パッケージを最新の状態に更新します: $ yum -y update # パッケージを最新に更新する これ以降、Ubuntu には ユーザ ''y2sunlight'' でログインして操作します。 \\ ===== Windowsの初期設定 ===== ==== PowerShellからの起動 ==== PowerShellから起動するには以下のようにします。 PS C:\> wsl -d CentOS7.6 -u y2sunlight * ''-d'' でディストリビューション名を指定してす。 * ''-u'' でユーザ名を指定してす。 Windowsターミナルをご利用の場合は、[プルダウンメニュー]から[CentOS7.6]を選択できます。 \\ ==== Windows ターミナルの設定 ==== Windowsターミナルを起動し、[プルダウンメニュー]から[設定]を選択します。 ''setting.json'' を開き、"name" がインポート時に指定したディストリビューション名( "CentOS7.6" ) と同じターミナルを探し、その設定を以下のように変更して下さい。 { "guid": "{3d07c9ba-2e59-5661-841e-864e56bf1b8e}", "hidden": false, "name": "CentOS7.6", "source": "Windows.Terminal.Wsl", + "commandline": "wsl.exe -d CentOS7.6 -u y2sunlight", + "startingDirectory": "//wsl$/CentOS7.6/home/y2sunlight" }, * ''"commandline"'' --- 起動コマンドを指定します。\\ ここでは、''-d'' でディストリビューション名を、''-u'' でユーザ名を指定してす。 * ''"startingDirectory"'' --- シェル起動時の開始ディレクトリを指定します。 \\ ===== 登録解除 ===== インポートした CentOS を登録解除(アンインストール)するには、''wsl --unregister'' コマンドを使います。 PS C:\> wsl --unregister CentOS7.6 このコマンドには、実行の確認がないので、注意して下さい。実行されると直ぐに、登録解除され、CentOS のイメージは削除されてしまいます。 \\ ===== この後について ===== 本章では、この後に、Apache と Docker を CentOS7 で動作させる予定でした。しかし、いざ向き合ってみると systemctl が正常に起動しないという問題に出くわしました: # systemctl status httpd Failed to get D-Bus connection: Operation not permitted この問題の原因は、WSL2がLinuxのブートシーケンスの中で、初期プロセス(''プロセスID = 1'')を ''Systemd'' でなくて、''SysV init'' を使っていることに起因します。従って、この問題の解決には2つの方法があります: - systemctl を Systemd に依存しないものに置き換える - 初期プロセス を ''Systemd'' に置き換える この問題の解決方法についは、ネットのいろいろなサイトで説明されていますが、筆者としては、「ここまでしてCentOSで構築する必要があるのか」という疑問が湧いてきました。 従って、開発環境の一部としてWSL2を利用するという観点では、現時点で、Ubuntu を利用し CentOS は用いないというのが筆者の結論です。しかし、CentOS などの RedHat系Linuxは、運用で実績も多く、開発環境と同じ運用環境を使用したいニーズもあると思いますので、今後も、WSL2でのCentOSの導入に関しては注視することにしたいと思っています。 \\