【Windows】Windows 10 に Windows Subsystem for Linux 2(WSL 2)をインストールして Linux(CentOS)が使えるようにする手順

AWS CLI は Linux でも Windows でも利用できますが、Windows で「コマンドプロンプト」「PowerShell」から AWS CLI を利用しようとするとそれなりの学習コストがかかります。

また、普段 Linux で運用管理をしている場合、バージョンアップのたびに Windows のコマンドやスクリプトを動作検証したり調査する必要があります。

 

実は Windows 10 で Bash が利用できるようになったので、そこで今回は Windows 10 に Bash をインストールして AWS CLI を利用できるように設定する手順を解説します。

 

 

 

 

Windows Subsystem for Linux 2(WSL 2)とは何か

今までの Windows 上で Linux を使えるサービスはいろいろありました。

例えば、VMware Wordstation Player や VirtualBox などと言った仮想マシンを構築するタイプや、1台のコンピュータに Windows と Linux をインストールしてデュアルブートするです。

デュアルブートするタイプの場合は、ハッキリ言ってすぐに Windows しか利用しなくなります。

OS を停止して Linux に切り替えるのが面倒になるからです。

 

 

VMware Wordstation Player や VirtualBox などと言った仮想マシンを構築するタイプの場合ですが、例えば、Linux を使用したい場合はその都度仮想マシンを起動することになります。(Windows 起動時に自動的に仮想マシンを起動することもできますが)

 

当然 1つのコンピュータ上に 2つの OS が起動しているため、2台分のリソースを消費するので、スペックの低いノートパソコンでは十分なリソースを割り当てることができません。

 

しかし Windows Subsystem for Linux(WSL)の場合はコマンドや Bash や Python などをネイティブで実行可能になるのでリソースも効率よく利用できます。

 

ちなみに WSL の CentOS7 に pip や AWS CLI をインストールすることもできました。

 

 

 

 

現在 WSL 2 で使用できる Linux ディストリビューション

2020年1月現在、以下の Linux ディストリビューションを利用できます。

嬉しいことに新たに CentOS も加わりました。

今回は CentOS7 を購入して設定します。

 

※日々新しいバージョンやディストリビューションがアップデートされているので、都度 Microsoft Store にて確認してください。

 

 

 

 

Windows Subsystem for Linux(WSL)を導入するための前提条件

Windows Subsystem for Linux を導入するための前提条件があります。

 

下図のように 32 bit OS の場合は、そもそも Windows Subsystem for Linux が表示されません。

 

 

 

 

Windows Subsystem for Linux(WSL)の導入手順

Windows Subsystem for Linux(WSL)の導入手順です。

 

Windows 10 のスタートボタンをクリックして「Windowsシステムツール」「コントロールパネル」をクリックします。

 

 

 

 

「プログラムと機能」をクリックします。

 

 

 

 

 

左側ペインの「Windows の機能の有効化または無効化」をクリックします。

 

 

 

 

 

「Windows の機能の有効化または無効化」画面が表示されたら「Windows Subsystem for Linux」にチェックを入れて「OK」ボタンをクリックします。

 

 

 

 

「Windows Subsystem for Linux」機能が追加されたら「今すぐ再起動」ボタンをクリックして OS を再起動します。

 

 

 

 

 

 

 

OS 再起動後に Windows のスタートボタンをクリックして「Microsoft Store」を起動します。

 

 

 

 

 

Microsoft Store 画面が表示されたら検索欄に「WSL」と入力して検索します。

 

 

 

 

アプリが表示されたら「すべて表示」をクリックします。

 

 

 

 

 

 

「CentOS7」をクリックします。

 

 

 

 

 

「購入」ボタンをクリックします。

 

 

 

ちなみに「CentOS7」を利用するにあたり各種情報を事前確認できます。

 

■概要

 

 

 

 

 

■システム必要条件

OS の要件は「Windows 10 バージョン 16215.0」以降と説明があります。

 

 

 

ちなみにですが、Windows のバージョンの調べ方です。

Windows スタートボタンをクリックして「Windows システムツール」「コマンドプロンプト」をクリックします。

 

 

ver コマンドを実行すると以下のように Windows の「バージョン」「ビルド番号」を確認できます。

C:\>ver 
 
Microsoft Windows [Version 10.0.18363.535] 
 
C:\> 

 

 

 

2020年1月現在の最新バージョンであることがわかります。

 

 

■追加情報

追加情報を確認すると、何台のコンピュータにインストールできるかが確認できます。

CentOS7 の場合は 10台のコンピュータにインストール可能です。

 

 

 

購入手続きを進めますが「購入」ボタンをクリックすると下図のようにユーザー確認の画面が表示されるので「PIN」を入力します。

 

 

 

 

 

下図の画面が表示されたら「開始するにあたり、支払い方法を追加してください。」をクリックします。

 

 

 

 

「支払方法の選択」画面で「クレジットカードまたはデビットカード」をクリックします。

※PayPal でも支払い可能です。

 

 

 

 

 

必要事項を入力後、「保存」ボタンをクリックします。

 

 

 

 

先ほど入力したクレジットカード情報を確認し「確認」ボタンをクリックします。

 

 

 

 

 

クレジットカードの確認ができると下図のように「インストール」のボタンが表示されるのでクリックしてインストールします。

 

 

 

 

 

 

インストールに10分弱程度時間がかかりますが、Windows のスタートボタンをクリックしてメニューよりインストールの進捗状況を確認することができます。

 

 

 

 

インストールが完了すると右下に通知が表示されます。

Windows のスタートボタンより「CentOS7」をクリックして起動することもできます。

 

 

 

 

 

最初に起動する際も少々時間がかかります。

 

 

 

 

最初に Linux ディストリビューションが起動する際に「ユーザー名」を入力します。

※Windowsのログインユーザー名と異なっていても問題ありません。

また、ユーザー名を入力をすると自動的にアップデートが実行されます。

Installing, this may take a few minutes... 
Please create a default UNIX user account. The username does not need to match your Windows username. 
For more information visit: https://aka.ms/wslusers 

Enter new UNIX username: test ← 最初にユーザー名を入力します。(Windowsのログインユーザー名と異なっていても問題ありません。) 
Loaded plugins: fastestmirror 
Loading mirror speeds from cached hostfile epel/x86_64/metalink   | 6.1 kB  00:00:00 
 * base: ftp.tsukuba.wide.ad.jp 
 * epel: ftp.jaist.ac.jp 
 * extras: ftp.tsukuba.wide.ad.jp 
 * updates: ftp.tsukuba.wide.ad.jp 
base                                                               | 3.6 kB  00:00:00 
epel                                                               | 5.4 kB  00:00:00 
extras                                                             | 2.9 kB  00:00:00 
updates                                                            | 2.9 kB  00:00:00 
(1/7): base/7/x86_64/group_gz                                      | 165 kB  00:00:07 
(2/7): epel/x86_64/group_gz                                        |  90 kB  00:00:13 
(3/7): epel/x86_64/updateinfo                                      | 1.0 MB  00:00:17 
(4/7): extras/7/x86_64/primary_db                                  | 153 kB  00:00:08 
updates/7/x86_64/primary_db    FAILED                              ] 219 kB/s | 7.4 MB  00:00:59 ETA 
http://ftp.tsukuba.wide.ad.jp/Linux/centos/7.7.1908/updates/x86_64/repodata/43681f7ca37e073d87d9fb91ddd175f56f5335f10c71db26ab3d71f95f6e7989-primary.sqlite.bz2: [Errno 14] curl#18 - "transfer closed with 5258039 bytes remaining to read" 
Trying other mirror. 
(5/7): base/7/x86_64/primary_db                                    | 6.0 MB  00:00:52 
(6/7): updates/7/x86_64/primary_db                                 | 5.9 MB  00:01:18 
(7/7): epel/x86_64/primary_db                                      | 6.9 MB  00:02:10 
Resolving Dependencies 
--> Running transaction check 
---> Package epel-release.noarch 0:7-11 will be updated 
---> Package epel-release.noarch 0:7-12 will be an update 
--> Finished Dependency Resolution 
 
Dependencies Resolved 
 
================================================================================================ 
 Package              Arch             Version           Repository           Size 
================================================================================================ 
Updating: 
 epel-release         noarch           7-12               epel                 15 k 
 
Transaction Summary 
================================================================================================ 
Upgrade  1 Package 
 
Total download size: 15 k 
Downloading packages: 
Delta RPMs disabled because /usr/bin/applydeltarpm not installed. epel-release-7-12.noarch.rpm   |  15 kB  00:00:19 
Running transaction check 
Running transaction test 
Transaction test succeeded 
Running transaction 
  Updating   : epel-release-7-12.noarch                   1/2 
  Cleanup    : epel-release-7-11.noarch                   2/2 
  Verifying  : epel-release-7-12.noarch                   1/2 
  Verifying  : epel-release-7-11.noarch                   2/2 
 
Updated: 
  epel-release.noarch 0:7-12 
 
Complete! 
Loaded plugins: fastestmirror 
Loading mirror speeds from cached hostfile 
 * base: ftp.iij.ad.jp 
 * epel: epel.mirror.angkasa.id 
 * extras: ftp.iij.ad.jp 
 * updates: ftp.iij.ad.jp 
Package wget-1.14-18.el7_6.1.x86_64 already installed and latest version 
Package git-1.8.3.1-20.el7.x86_64 already installed and latest version 
Package htop-2.2.0-3.el7.x86_64 already installed and latest version 
Resolving Dependencies 
--> Running transaction check 
---> Package dnf.noarch 0:4.0.9.2-1.el7_6 will be installed 
--> Processing Dependency: python2-dnf = 4.0.9.2-1.el7_6 for package: dnf-4.0.9.2-1.el7_6.noarch 
--> Running transaction check 
---> Package python2-dnf.noarch 0:4.0.9.2-1.el7_6 will be installed 
--> Processing Dependency: dnf-data = 4.0.9.2-1.el7_6 for package: python2-dnf-4.0.9.2-1.el7_6.noarch 
--> Processing Dependency: python2-libdnf >= 0.22.5 for package: python2-dnf-4.0.9.2-1.el7_6.noarch 
--> Processing Dependency: python2-libcomps >= 0.1.8 for package: python2-dnf-4.0.9.2-1.el7_6.noarch 
--> Processing Dependency: python2-hawkey >= 0.22.5 for package: python2-dnf-4.0.9.2-1.el7_6.noarch 
--> Processing Dependency: libmodulemd >= 1.4.0 for package: python2-dnf-4.0.9.2-1.el7_6.noarch 
--> Processing Dependency: python2-libdnf for package: python2-dnf-4.0.9.2-1.el7_6.noarch 
--> Processing Dependency: python-enum34 for package: python2-dnf-4.0.9.2-1.el7_6.noarch 
--> Processing Dependency: deltarpm for package: python2-dnf-4.0.9.2-1.el7_6.noarch 
--> Running transaction check 
---> Package deltarpm.x86_64 0:3.6-3.el7 will be installed 
---> Package dnf-data.noarch 0:4.0.9.2-1.el7_6 will be installed 
--> Processing Dependency: libreport-filesystem for package: dnf-data-4.0.9.2-1.el7_6.noarch 
---> Package libmodulemd.x86_64 0:1.6.3-1.el7 will be installed 
---> Package python-enum34.noarch 0:1.0.4-1.el7 will be installed 
---> Package python2-hawkey.x86_64 0:0.22.5-1.el7_6 will be installed 
--> Processing Dependency: libdnf(x86-64) = 0.22.5-1.el7_6 for package: python2-hawkey-0.22.5-1.el7_6.x86_64 
--> Processing Dependency: libsolvext.so.0(SOLV_1.0)(64bit) for package: python2-hawkey-0.22.5-1.el7_6.x86_64 
--> Processing Dependency: libsolv.so.0(SOLV_1.0)(64bit) for package: python2-hawkey-0.22.5-1.el7_6.x86_64 
--> Processing Dependency: libsolvext.so.0()(64bit) for package: python2-hawkey-0.22.5-1.el7_6.x86_64 
--> Processing Dependency: libsolv.so.0()(64bit) for package: python2-hawkey-0.22.5-1.el7_6.x86_64 
--> Processing Dependency: librepo.so.0()(64bit) for package: python2-hawkey-0.22.5-1.el7_6.x86_64 
--> Processing Dependency: libdnf.so.2()(64bit) for package: python2-hawkey-0.22.5-1.el7_6.x86_64 
---> Package python2-libcomps.x86_64 0:0.1.8-12.el7 will be installed 
--> Processing Dependency: libcomps(x86-64) = 0.1.8-12.el7 for package: python2-libcomps-0.1.8-12.el7.x86_64 
--> Processing Dependency: libcomps.so.0.1.6()(64bit) for package: python2-libcomps-0.1.8-12.el7.x86_64 
---> Package python2-libdnf.x86_64 0:0.22.5-1.el7_6 will be installed 
--> Running transaction check 
---> Package libcomps.x86_64 0:0.1.8-12.el7 will be installed 
---> Package libdnf.x86_64 0:0.22.5-1.el7_6 will be installed 
---> Package librepo.x86_64 0:1.8.1-7.el7 will be installed 
---> Package libreport-filesystem.x86_64 0:2.1.11-43.el7.centos will be installed 
---> Package libsolv.x86_64 0:0.6.34-4.el7 will be installed 
--> Finished Dependency Resolution 
 
Dependencies Resolved 
 
======================================================================================== 
 Package              Arch            Version             Repository            Size 
======================================================================================== 
Installing: 
 dnf                  noarch          4.0.9.2-1.el7_6      extras               357 k 
Installing for dependencies: 
 deltarpm             x86_64         3.6-3.el7            base                  82 k 
 dnf-data             noarch          4.0.9.2-1.el7_6      extras                51 k 
 libcomps             x86_64          0.1.8-12.el7         extras                75 k 
 libdnf               x86_64          0.22.5-1.el7_6       extras               533 k 
 libmodulemd          x86_64          1.6.3-1.el7          extras               141 k 
 librepo              x86_64          1.8.1-7.el7          base                  81 k 
 libreport-filesystem x86_64          2.1.11-43.el7.centos base                  40 k 
 libsolv              x86_64          0.6.34-4.el7         base                 329 k 
 python-enum34        noarch          1.0.4-1.el7          base                  52 k 
 python2-dnf          noarch          4.0.9.2-1.el7_6      extras               414 k 
 python2-hawkey       x86_64          0.22.5-1.el7_6       extras                68 k 
 python2-libcomps     x86_64          0.1.8-12.el7         extras                47 k 
 python2-libdnf       x86_64          0.22.5-1.el7_6       extras               608 k 
 
Transaction Summary 
======================================================================================================================== 
Install  1 Package (+13 Dependent packages) 
 
Total download size: 2.8 M 
Installed size: 11 M 
Downloading packages: 
(1/14): dnf-data-4.0.9.2-1.el7_6.noarch.rpm                         |  51 kB  00:00:03 
(2/14): libcomps-0.1.8-12.el7.x86_64.rpm                            |  75 kB  00:00:04 
(3/14): libmodulemd-1.6.3-1.el7.x86_64.rpm                          | 141 kB  00:00:02 
(4/14): libreport-filesystem-2.1.11-43.el7.centos.x86_64.rpm        |  40 kB  00:00:00 
(5/14): deltarpm-3.6-3.el7.x86_64.rpm                               |  82 kB  00:00:06 
(6/14): dnf-4.0.9.2-1.el7_6.noarch.rpm                              | 357 kB  00:00:08 
(7/14): libsolv-0.6.34-4.el7.x86_64.rpm                             | 329 kB  00:00:03 
(8/14): librepo-1.8.1-7.el7.x86_64.rpm                              |  81 kB  00:00:04 
(9/14): python2-libcomps-0.1.8-12.el7.x86_64.rpm                    |  47 kB  00:00:00 
(10/14): libdnf-0.22.5-1.el7_6.x86_64.rpm                           | 533 kB  00:00:10 
(11/14): python2-hawkey-0.22.5-1.el7_6.x86_64.rpm                   |  68 kB  00:00:01 
(12/14): python2-libdnf-0.22.5-1.el7_6.x86_64.rpm                   | 608 kB  00:00:01 
(13/14): python-enum34-1.0.4-1.el7.noarch.rpm                       |  52 kB  00:00:04 
(14/14): python2-dnf-4.0.9.2-1.el7_6.noarch.rpm                     | 414 kB  00:00:04 
------------------------------------------------------------------------------------------- 
Total                                                                218 kB/s | 2.8 MB  00:00:13 
Running transaction check 
Running transaction test 
Transaction test succeeded 
Running transaction 
  Installing : libmodulemd-1.6.3-1.el7.x86_64                        1/14 
  Installing : librepo-1.8.1-7.el7.x86_64                            2/14 
  Installing : libsolv-0.6.34-4.el7.x86_64                           3/14 
  Installing : libdnf-0.22.5-1.el7_6.x86_64                          4/14 
  Installing : python2-libdnf-0.22.5-1.el7_6.x86_64                  5/14 
  Installing : python2-hawkey-0.22.5-1.el7_6.x86_64                  6/14 
  Installing : libcomps-0.1.8-12.el7.x86_64                          7/14 
  Installing : python2-libcomps-0.1.8-12.el7.x86_64                  8/14 
  Installing : libreport-filesystem-2.1.11-43.el7.centos.x86_64      9/14 
  Installing : dnf-data-4.0.9.2-1.el7_6.noarch                      10/14 
  Installing : python-enum34-1.0.4-1.el7.noarch                     11/14 
  Installing : deltarpm-3.6-3.el7.x86_64                            12/14 
  Installing : python2-dnf-4.0.9.2-1.el7_6.noarch                   13/14 
  Installing : dnf-4.0.9.2-1.el7_6.noarch                           14/14 
  Verifying  : libsolv-0.6.34-4.el7.x86_64                           1/14 
  Verifying  : python2-libdnf-0.22.5-1.el7_6.x86_64                  2/14 
  Verifying  : python2-libcomps-0.1.8-12.el7.x86_64                  3/14 
  Verifying  : dnf-data-4.0.9.2-1.el7_6.noarch                       4/14 
  Verifying  : deltarpm-3.6-3.el7.x86_64                             5/14 
  Verifying  : libmodulemd-1.6.3-1.el7.x86_64                        6/14 
  Verifying  : python2-hawkey-0.22.5-1.el7_6.x86_64                  7/14 
  Verifying  : python-enum34-1.0.4-1.el7.noarch                      8/14 
  Verifying  : python2-dnf-4.0.9.2-1.el7_6.noarch                    9/14 
  Verifying  : libdnf-0.22.5-1.el7_6.x86_64                         10/14 
  Verifying  : libreport-filesystem-2.1.11-43.el7.centos.x86_64     11/14 
  Verifying  : librepo-1.8.1-7.el7.x86_64                           12/14 
  Verifying  : libcomps-0.1.8-12.el7.x86_64                         13/14 
  Verifying  : dnf-4.0.9.2-1.el7_6.noarch                           14/14 
 
Installed: 
  dnf.noarch 0:4.0.9.2-1.el7_6 
 
Dependency Installed: 
  deltarpm.x86_64 0:3.6-3.el7                              dnf-data.noarch 0:4.0.9.2-1.el7_6 
  libcomps.x86_64 0:0.1.8-12.el7                           libdnf.x86_64 0:0.22.5-1.el7_6 
  libmodulemd.x86_64 0:1.6.3-1.el7                         librepo.x86_64 0:1.8.1-7.el7 
  libreport-filesystem.x86_64 0:2.1.11-43.el7.centos       libsolv.x86_64 0:0.6.34-4.el7 
  python-enum34.noarch 0:1.0.4-1.el7                       python2-dnf.noarch 0:4.0.9.2-1.el7_6 
  python2-hawkey.x86_64 0:0.22.5-1.el7_6                   python2-libcomps.x86_64 0:0.1.8-12.el7 
  python2-libdnf.x86_64 0:0.22.5-1.el7_6 
 
Complete! 
Changing password for user test. 
New password:  ← 先ほど設定した CentOS 用のユーザーパスワードを設定します。パスワードの定義は緩いので8文字以下でも警告は出ますが問題なく設定できます。
BAD PASSWORD: The password is shorter than 8 characters 
Retype new password: 
Sorry, passwords do not match. 
New password: 
BAD PASSWORD: The password is shorter than 8 characters 
Retype new password: 
passwd: all authentication tokens updated successfully. 
Installation successful! 
[test@DELL-NOTE ~]$ 

 

 

 

 

test ユーザーなのでログインディレクトリは /home/test です。

[test@DELL-NOTE ~]$ pwd
/home/test

 

 

 

df コマンドでファイルシステムの構造を確認します。

Windows の C: ドライブを /mnt/c にマウントしていることがわかります。

[test@DELL-NOTE /]$ df -h 
Filesystem      Size  Used Avail Use% Mounted on 
rootfs          466G   73G  393G  16% / 
none            466G   73G  393G  16% /dev 
none            466G   73G  393G  16% /run 
none            466G   73G  393G  16% /run/lock 
none            466G   73G  393G  16% /run/shm 
none            466G   73G  393G  16% /run/user 
cgroup          466G   73G  393G  16% /sys/fs/cgroup 
C:\             466G   73G  393G  16% /mnt/c

 

 

 

/mnt/c に移動してファイル構造を確認しました。

Windows の各種フォルダがあることを確認できます。

[test@DELL-NOTE /]$ cd /mnt/c/ 
[test@DELL-NOTE c]$ ls 
ls: cannot read symbolic link Documents and Settings: Permission denied 
ls: cannot access hiberfil.sys: Permission denied 
ls: cannot access pagefile.sys: Permission denied 
ls: cannot access swapfile.sys: Permission denied 
dell                    Intel         ProgramData          Recovery      System Volume Information 
Documents and Settings  pagefile.sys  Program Files        $Recycle.Bin  Users 
hiberfil.sys            PerfLogs      Program Files (x86)  swapfile.sys  Windows 
[test@DELL-NOTE c]$

 

 

 

sudo コマンドで root にスイッチできるか確認です。

/etc/sudoers ファイルに nopassword の設定がされていないため、パスワードを入力する必要があります。

[test@DELL-NOTE c]$ sudo su - 
 
We trust you have received the usual lecture from the local System 
Administrator. It usually boils down to these three things: 
 
    #1) Respect the privacy of others. 
    #2) Think before you type. 
    #3) With great power comes great responsibility. 
 
[sudo] password for test: 
Sorry, try again. 
[sudo] password for test: 
Deleted DELL-NOTE 
DELL-NOTE-wsl not found in /etc/hosts 
Added DELL-NOTE-wsl -> 127.0.0.1 (On) 
genie: already inside the bottle; cannot start shell! 
[root@DELL-NOTE ~]#

 

 

 

 

 

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください