前回まではSynologyのNASにリモートアクセスする方法を紹介してきました。
今回からは話題を変えてWindowsとUbuntuの話題です。
ちなみに以前にDebianをWindows 10上で動かすネタと、Ubuntu 20.04 LTSをWindows 11上で動かすネタを記事にしたことがあります。
この頃から比べると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/11上で動かすためのサブシステムです。
以前は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以上)」であるか「Windows 11」である必要があります。
実はこれより古いWindows 10 (1903以降)でもWSL2は利用できますが、必要な準備が多くなります。
古いWindows 10での手順は下記を参照してみてください。
ビルド番号は、Windowsキー+Rを押して「winver」を実行すると確認できます。
Windows 10のサポート終了も近づいているということもあり、多くの方がWindows 11に移行していると思うので、Windowsのバージョンについては問題ないと思います。
Windows Subsystem for Linuxの有効化 ← 不要になりました
WSLを導入するためには以前は、Windows Subsystem for Linuxの有効化する(仮想マシン機能を有効にする)という少々面倒な手順が必要でした。
しかし、Windows 11やWindows 10 Version 2004以上なら、このステップは不要になりました。
この改善はWSLの敷居をさらに下げるのではないかと思います。
WSL2とUbuntu 24.04 LTSのインストール
WSL2のインストールには管理者権限のPowerShellを利用します。
管理者権限のPowerShellを起動するには、Windows 11の場合は、Windowsアイコンを右クリックして「ターミナル (管理者)」を選択します。
PowerShellが起動したら、下記のコマンドを入力します。
wsl --list --online
これでインストール可能なLinuxディストリビューションの一覧が表示されます。
私が試したときは次のようになりました。
「NAME」の列がWSLをインストールするときに指定するディストリビューションの名前です。「FRIENDLY NAME」の列はそのディストリビューションをもう少し詳しく説明した内容になります。
これを見ると「Ubuntu」に「*」が付いているのがわかると思います。これはUbuntuがデフォルトであることを示しています。
Ubuntuについては「18.04 LTS」「20.04 LTS」「22.04 LTS」「24.04 LTS」の4つのバージョンもリストに含まれています。特定のバージョンをインストールしたいときにはそのバージョンのNAMEを指定する必要がありますが、「Ubuntu」を指定した場合は、この中で最新の「24.04 LTS」がインストールされることになります。
Ubuntuがデフォルトであることを確認したら、下記のコマンドを実行します。
wsl --install
Ubuntu以外を利用したい場合は次のようにします。
wsl --install -d ディストリビューション名
ディストリビューション名は先ほどの「NAME」の列に表示されたものです。
「wsl –install」コマンドではインターネットから必要なデータをダウンロードするので、インターネットと通信できる状態で実行しましょう。
これだけで面倒な設定はすべてやってくれます。私が試したときには「wsl –install」により次のものがインストールされました。
- 仮想マシンプラットホーム
- Linux用Windowsサブシステム
- Ubuntu
私の環境では5分もかからず処理が終わり次のようになりました。
ここまで来ればWSL2とUbuntuのインストールは完了です。
あとはWindows PCを再起動します。
Ubuntu 24.04 LTSの初期設定
Windowsを再起動するとUbuntuのコンソールが開きます。自動的に起動しない場合はスタートメニュー内のUbuntuを選択してください。
次のように「WslRegisterDistribution failed with error: 0x80370102」と表示されてWSL2の有効化に失敗する場合があります。
公式のトラブルシューティング情報は下記になります。
ここでエラーコードの「0x80370102」で検索すると次のような記述があります。
インストールがエラー 0x80070003 またはエラー 0x80370102 で失敗した
- コンピューターの BIOS 内部で仮想化が有効になっていることを確認してください。 これを行う方法の手順は、コンピューターによって異なりますが、最も可能性が高いのは CPU 関連のオプションの下です。
- WSL2 を使用するには、CPU で Second Level Address Translation (SLAT) 機能がサポートされている必要があります。これは Intel Nehalem プロセッサ (Intel Core 第 1 世代) と AMD Opteron で導入されました。 以前の CPU (Intel Core 2 Duo など) では、仮想マシン プラットフォームが正常にインストールされていても、WSL2 を実行できません。
確かにBIOS画面を表示させて確認すると、仮想化機能(私のマザーボードの場合はSVMモード)が無効になっていました。
これを「有効」にして再起動し直しましょう。
圧縮されたデータを展開するためにしばらく待つようにメッセージが表示されますのでしばらく待ちましょう。
Ubuntu用ユーザの作成
データの展開が終わると、Ubuntu用に作成するユーザ名を入力するように言われます。
ここで作成するユーザはWindowsのユーザとは関係ないので、Windowsのユーザ名とは関係ない名前を利用できます。
WSL1/WSL2で複数のLinuxディストリビューションをインストールしている場合は、Linux上のユーザはLinuxディストリビューションごとに別々に管理されます。
ユーザ名を入力すると次はパスワード入力するように要求されます。
使用したいパスワードを設定しましょう。パスワードは確認を含めて2回入力する必要があります。
なお、ここで作成したユーザは
- デフォルトのユーザ: スタートメニューからLinux環境を起動したときに自動的にログインするユーザ
- Linux環境の管理者: sudoグループのメンバー
となります。
ユーザの作成に成功すると次のようにbashのプロンプトとなります。
環境の確認
これでbashが使えるようになったのでちょっと試してみました。
まずはUbuntuとしてのバージョンです。これは「24.04.1 LTS」でした。
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.1 LTS
この記事作成時点では、wslコマンドでディストリビューションを指定しない場合、あるいは、単に「ubuntu」を指定した場合は24.04.1 LTSがインストールされます。
Linuxカーネルは5.15.167.4でした。以前、WSL1を試したときには4.4.0だったのでかなり新しくなっていることがわかります。
$ cat /proc/version
Linux version 5.15.167.4-microsoft-standard-WSL2 (root@f9c826d3017f) (gcc (GCC) 11.2.0, GNU ld (GNU Binutils) 2.37) #1 SMP Tue Nov 5 00:21:55 UTC 2024
メモリは合計で31GBが利用可能で、804MBを利用中という状況でした。
$ free -h
total used free shared buff/cache available
Mem: 31Gi 804Mi 30Gi 3.0Mi 305Mi 30Gi
Swap: 8.0Gi 0B 8.0Gi
WSL1ではWindowsのメモリ全体が見えたのですが、WSL2では上限(実メモリの約半分?)が設定されているようです。
WSL2が常時31GBのメモリを占有している訳ではありません。
また使用中のメモリがWSL1のときは非常に多かった(当時の実績では3.6GBだった)ですが、ぐっと小さくなっている(というかLinuxが実際に使っていると思われる量)になっているのもWSL2とWSL1の違いです。
HDDを確認すると、Cドライブは/mntの下にマウントされてます。このためWSL2側からWindows上のファイルに簡単にアクセスできます。
$ df -h
Filesystem Size Used Avail Use% Mounted on
none 16G 0 16G 0% /usr/lib/modules/5.15.167.4-microsoft-standard-WSL2
none 16G 4.0K 16G 1% /mnt/wsl
drivers 1.9T 136G 1.8T 8% /usr/lib/wsl/drivers
/dev/sdc 1007G 1.2G 955G 1% /
none 16G 80K 16G 1% /mnt/wslg
none 16G 0 16G 0% /usr/lib/wsl/lib
rootfs 16G 2.2M 16G 1% /init
none 16G 504K 16G 1% /run
none 16G 0 16G 0% /run/lock
none 16G 0 16G 0% /run/shm
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
none 16G 76K 16G 1% /mnt/wslg/versions.txt
none 16G 76K 16G 1% /mnt/wslg/doc
C:\ 1.9T 136G 1.8T 8% /mnt/c
tmpfs 3.2G 16K 3.2G 1% /run/user/1000
ちなみに、WSL1の頃はファイルシステムはWindowsのものをそのまま使っていたのですが、WSL2になってからディスクイメージファイルを使うようになりました。
WindowsからはLinuxのファイルシステム全体が1つのファイル(イメージファイル)に見えます。
CPUを確認してみると使用しているCPUがそのまま見えています。
$ cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 25
model : 33
model name : AMD Ryzen 7 5700X 8-Core Processor
stepping : 2
microcode : 0xffffffff
cpu MHz : 3393.672
cache size : 512 KB
physical id : 0
siblings : 16
core id : 0
cpu cores : 8
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
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 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves clzero xsaveerptr arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq rdpid fsrm
bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass srso
bogomips : 6787.34
TLB size : 2560 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 48 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の列に表示されるものを指定します。
WSL2の情報
ついでにWSL2の情報を確認しておきましょう。
WSL2の情報を表示するにはWindows PowerShellで「wsl –version」を実行します。
wsl --version
私の場合は次のように表示されました。
WSL バージョン: 2.3.26.0
カーネル バージョン: 5.15.167.4-1
WSLg バージョン: 1.0.65
MSRDC バージョン: 1.2.5620
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.26100.2605
まとめ
今回はWindows Subsystem for Linux (WSL2)を使ってWindows 11にUbuntu 24.04 LTSをインストールしてみました。
WSLを利用するためには以前は複数のステップが必要でしたが、現在ではwslコマンド一発で導入できるようになっています。WSLを使う敷居がますます低くなったように感じます。
次回はインストールしたUbuntu環境を整備します。
コメント