前回まではAliExpress等で購入したケーブルなどを紹介してきました。
今回からは話題を変えてWindowsとUbuntuの話題です。
ちなみに以前にDebianをWindows10上で動かすネタを記事にしたことがあります。
この頃から比べるとWSLの状況も大きく変わっているので、改めて記事にしたいと思います。
Ubuntuについて
UbuntuはLinuxのディストリビューションの1つです。最近ちょっと人気に陰りがあるようですが、それでもなお最も人気のあるディストリビューションの1つと言えると思います。
公式サイトは下記になります。
私はLinuxを使い始めた頃からDebianを使ってきたのですが、人気ではUbuntuの方が上で、Webサイト上の情報もUbuntuの方が多いように感じています。
そこでそろそろDebianだけでなくUbuntuを試してみようかなと思った次第です。
パッケージ管理システムなどはUbuntuはDebianを元にしており、親和性も高いと考えたのもの理由の1つです。
Windows Subsystem for Linux
Windows Subsystem for Linux (WSL)はLinuxアプリケーション(ELFバイナリ)をWindows 10上で動かすためのサブシステムです。
以前は、これまでWindows上でLinuxに近い環境をそろえようとすると、VirtualBoxのような仮想マシンを使うか、Cygwinという互換環境を使う必要がありました。
しかしWSLが登場して状況は一変しました。2017年からWindowsの正式機能となり、Linux環境をWindows上で構築するにはWSLが最もお手軽になったと思います。
そのWSLも、LinuxカーネルをWindowsでエミュレーションする形のWSL1に加え、本物のLinuxカーネルを利用するWSL2も登場しています。
WSL1とWSL2の違いは下記にまとめられています。
前回の記事ではWSL1を使ったのですが、今回はWSL2で環境を構築してみたいと思います。
インストールまでの準備
Windows Subsystem for Linuxを使うためのステップは以前に比べ削減されています。
もはや重要なのはWindowsのバージョンが要件を満たしていることだけだと思います。
なお、公式の案内は下記になります。
Windowsのバージョンの確認
WSLを利用するためにはWindowsのバージョンが「Windows 10 version 2004以上 (ビルド19041以上)」であるか「Windows11」である必要があります。
実はこれより古いWindows 10 (1903以降)でもWSL2は利用することができますが、必要な準備が多くなります。
古いWindows 10での手順は下記を参照してみてください。
ビルド番号は、Windwsキー+Rを押して「winver」を実行すると確認できます。
私のPCはWindows11にアップデートしてるため、バージョンとしては問題ありません。
古いWindows 10を利用している方は、Windows Updateの適用を検討してみましょう。
Windows Subsystem for Linuxの有効化 ← 不要になりました!
WSLを導入するためには以前は、Windows Subsystem for Linuxの有効化する(仮想マシン機能を有効にする)という少々面倒な手順が必要でした。
しかし、Windows 11やWindows 10 version 2004以上なら、このステップは不要になりました。
この改善はWSLの敷居をさらに下げるのではないかと思います。
WSL2とUbuntuのインストール
WSL2のインストールには管理者権限のPowerShellを利用します。
管理者権限のPowerShellを起動するには、Windows 11の場合は、Windowsアイコンを右クリックして「Windowsターミナル(管理者)」を選択します。
PowerShellが起動したら下記のコマンドを入力します。
wsl --list --online
これでインストール可能なLinuxディストリビューションの一覧が表示されます。
私が試したときは次のようになりました。
「NAME」の列がWSLをインストールするときに指定するディストリビューションの名前です。「FRIENDLY NAME」の列はそのディストリビューションをもう少し詳しく説明した内容になります。
これを見ると「Ubuntu」に「*」が付いているのがわかると思います。これはUbuntuがデフォルトであることを示しています。つまり何も指定しなければUbuntuがインストールされます。
また、Ubuntuについては16.04・18.04・20.04とバージョンが選べます。特定のバージョンが欲しい場合はこれらのNAMEを指定する必要があります。
Ubuntuがデフォルトであることを確認したら、下記のコマンドを実行します。
wsl --install
Ubuntu以外を利用したい場合は次のようにします。
wsl --install -d ディストリビューション名
ディストリビューション名は先ほどの「NAME」の列に表示されたものです。
「wsl –install」コマンドではインターネットから必要なデータをダウンロードするので、インターネットと通信できる状態で実行しましょう。
これでだけで面倒な設定は全てやってくれます。私が試したときには「wsl –install」により次のものがインストールされました。
- 仮想マシンプラットホーム
- Linux用Windowsサブシステム
- WSLカーネル
- GUIアプリサポート
- Ubuntu
私の環境では5分もかからず処理が終わり次のようになりました。
ここまで来ればWSL2とUbuntuのインストールは完了です。
あとはWindows PCを再起動します。
Ubuntuの初期設定
Windowsを再起動するとUbuntuのコンソールが開きます。
私の場合は再起動後、自動的にUbuntuが起動しましたが、自動的に起動しない場合はスタートメニュー内のUbuntuを選択してください。
圧縮されたデータを展開するためにしばらく待つようにメッセージが表示されますのでしばらく待ちましょう。
Ubuntu用ユーザの作成
データの展開が終わると、Ubuntu用に作成するユーザ名を入力するように言われます。
ここで作成するユーザはWindowsのユーザとは関係ないので、Windowsのユーザ名とは関係ない名前を利用することができます。
WSL1/WSL2で複数のLinuxディストリビューションをインストールしている場合は、Linux上のユーザはLinuxディストリビューションごとに別々に管理されます。
ユーザ名を入力すると次はパスワード入力するように要求されます。
使用したいパスワードを設定しましょう。パスワードは確認を含めて2回入力する必要があります。
なお、ここで作成したユーザは
- デフォルトのユーザ ・・・ スタートメニューからLinux環境を起動したときに自動的にログインするユーザ
- Linux環境の管理者 ・・・ sudoグループのメンバー
となります。
ユーザの作成に成功すると次のようにbashのプロンプトとなります。
環境の確認
これでbashが使えるようになったのでちょっと試してみました。
まずはUbuntuとしてのバージョンです。これは20.04LTSでした。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04 LTS"
この記事作成時点では、wslコマンドでディストリビューションを指定しない場合、あるいは、単に「ubuntu」を指定した場合は20.04LTSがインストールされます。
Linuxカーネルは5.10.16でした。以前、WSL1を試したときには4.4.0だったのでかなり新しくなっていることがわかります。
$ cat /proc/version Linux version 5.10.16.3-microsoft-standard-WSL2 (oe-user@oe-host) (x86_64-msft-linux-gcc (GCC) 9.3.0, GNU ld (GNU Binutils) 2.34.0.20200220) #1 SMP Fri Apr 2 22:23:49 UTC 2021
メモリは合計で3.6GBが利用可能で、238MBを利用中という状況でした。
$ free -h total used free shared buff/cache available Mem: 3.6Gi 238Mi 3.3Gi 0.0Ki 135Mi 3.3Gi Swap: 1.0Gi 0B 1.0Gi
WSL1ではWindowsのメモリ全体が見えたのですが、WSL2では上限が設定されているようです。
WSL2が常時3.6GBのメモリを占有している訳ではありません。
また使用中のメモリがWSL1のときは非常に多かった(当時の実績では3.6GBだった)ですが、ぐっと小さくなっている(というかLinuxが実際に使っていると思われる量)になっているのもWSL2とWSL1の違いです。
HDDを確認すると、Cドライブは/mntの下にマウントされてます。このためWSL2側からWindows上のファイルに簡単にアクセスすることができます。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sdc 251G 1.1G 238G 1% / none 1.9G 28K 1.9G 1% /mnt/wslg none 1.9G 4.0K 1.9G 1% /mnt/wsl tools 238G 59G 179G 25% /init none 1.9G 0 1.9G 0% /dev none 1.9G 0 1.9G 0% /run none 1.9G 0 1.9G 0% /run/lock none 1.9G 0 1.9G 0% /run/shm none 1.9G 0 1.9G 0% /run/user tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup drivers 238G 59G 179G 25% /usr/lib/wsl/drivers lib 238G 59G 179G 25% /usr/lib/wsl/lib none 1.9G 76K 1.9G 1% /mnt/wslg/versions.txt none 1.9G 76K 1.9G 1% /mnt/wslg/doc drvfs 238G 59G 179G 25% /mnt/c
ちなみに、WSL1の頃はファイルシステムはWindowsのものをそのまま使っていたのですが、WSL2になってからディスクイメージファイルを使うようになりました。
WindowsからはLinuxのファイルシステム全体が1つのファイル(イメージファイル)に見えます。
CPUを確認して見ると使用しているCPUがそのまま見えています。
$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 126 model name : Intel(R) Core(TM) i5-1035G4 CPU @ 1.10GHz stepping : 5 microcode : 0xffffffff cpu MHz : 1497.603 cache size : 6144 KB physical id : 0 siblings : 8 core id : 0 cpu cores : 4 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 27 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm flush_l1d arch_capabilities vmx flags : vnmi invvpid ept_x_only ept_ad ept_1gb tsc_offset vtpr ept vpid unrestricted_guest ept_mode_based_exec tsc_scaling bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit bogomips : 2995.20 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 126 model name : Intel(R) Core(TM) i5-1035G4 CPU @ 1.10GHz stepping : 5 microcode : 0xffffffff cpu MHz : 1497.603 cache size : 6144 KB physical id : 0 siblings : 8 core id : 0 cpu cores : 4 apicid : 1 initial apicid : 1 fpu : yes fpu_exception : yes cpuid level : 27 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm flush_l1d arch_capabilities vmx flags : vnmi invvpid ept_x_only ept_ad ept_1gb tsc_offset vtpr ept vpid unrestricted_guest ept_mode_based_exec tsc_scaling bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit bogomips : 2995.20 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: (以下省略)
このためWSL2からCPUの全能力が引き出せることが期待できます。
WSL2の終了
いったんここでWSL2の終了方法を確認しておきましょう。
Ubuntuのターミナルで「exit」を入力するとターミナルのウィンドウはクローズされます。
バックグラウンドで何も動かしてなければこれでOKみたいなのですが、念のためWindows PowerShellでWSLの状態を確認してみましょう。
wsl -l -v
これで次のように「Stopped」と表示されればWSL2(起動したUbuntu)は終了しています。
「Stopped」ではなく「Running」であった場合は、Ubuntuはまだ生きています。
その場合は、次のコマンドで終了させることができます。
wsl -t Ubuntu
「-t」のあとに指定する名前は、「wsl –l -v」でNAMEの列に表示されるものを指定します。
まとめ
今回はWindows Subsystem for Linux (WSL2)を使ってWindows11にUbuntuをインストールしてみました。
WSLを利用するためには以前は複数のステップが必要でしたが、ついにwslコマンド一発で導入できるようになりました。WSLを使う敷居がますます低くなったように感じます。
次回はインストールしたUbuntu環境を整備していきます。
コメント