Ubuntu 24.04 LTSをWindows 11上で動かす その1 準備とインストール

Ubuntu
スポンサーリンク

前回まではSynologyのNASにリモートアクセスする方法を紹介してきました。

今回からは話題を変えてWindowsとUbuntuの話題です。

スポンサーリンク

Ubuntuについて

UbuntuはLinuxのディストリビューションの1つです。最近ちょっと人気に陰りがあるようですが、それでもなおもっとも人気のあるディストリビューションの1つと言えると思います。

公式サイトは下記になります。

Ubuntu
Ubuntuは、デスクトップPCやクラウド、インターネットに接続されたあらゆる機器まで、すべての環境において動作可能なオープンソースのソフトウェアオペレーティングシステムです。

私は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 Subsystem for Linux に関するドキュメント
Linux 用 Windows サブシステムに関するドキュメントの概要。
Windows Subsystem for Linux - Wikipedia

以前はWindows上でLinuxに近い環境をそろえようとすると、VirtualBoxのような仮想マシンを使うか、Cygwinという互換環境を使う必要がありました。

しかしWSLが登場して状況は一変しました。2017年からWindowsの正式機能となり、Linux環境をWindows上で構築するには、WSLがもっともお手軽になったと思います。

そのWSLも、LinuxカーネルをWindowsでエミュレーションする形のWSL1に加え、本物のLinuxカーネルを利用するWSL2も登場しています。

以前の記事ではWSL1を使ったのですが、今回はWSL2で環境を構築してみたいと思います。

インストールまでの準備

Windows Subsystem for Linuxを使うためのステップは以前に比べ削減されています。

もはや重要なのはWindowsのバージョンが要件を満たしていることだけだと思います。

なお、公式の案内は下記になります。

WSL のインストール
コマンド wsl --install を使用して Linux 用 Windows サブシステムをインストールします。 Windows コンピューター上で、好みの Linux ディストリビューションによって実行される Bash ターミナルを使用します。Ubuntu、Debian、SUSE、Kali、Fedora、Pengwin、Alpine などを使用できます。

Windowsのバージョンの確認

WSLを利用するためにはWindowsのバージョンが「Windows 10 version 2004以上 (ビルド19041以上)」であるか「Windows 11」である必要があります。

ビルド番号は、Windowsキー+Rを押して「winver」を実行すると確認できます。

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アイコンを右クリックして「ターミナル (管理者)」を選択します。

Windowsアイコンの右クリックメニュー

PowerShellが起動したら、下記のコマンドを入力します。

wsl --list --online

これでインストール可能なLinuxディストリビューションの一覧が表示されます。

私が試したときは次のようになりました。

wsl --list --online

「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分もかからず処理が終わり次のようになりました。

wsl --install

ここまで来ればWSL2とUbuntuのインストールは完了です。

あとはWindows PCを再起動します。

Ubuntu 24.04 LTSの初期設定

Windowsを再起動するとUbuntuのコンソールが開きます。自動的に起動しない場合はスタートメニュー内のUbuntuを選択してください。

次のように「WslRegisterDistribution failed with error: 0x80370102」と表示されてWSL2の有効化に失敗する場合があります。

WSL2の有効化に失敗

公式のトラブルシューティング情報は下記になります。

Windows Subsystem for Linux のトラブルシューティング
Windows Subsystem for Linux で Linux を実行しているときに発生する一般的なエラーと問題について詳しく説明します。

ここでエラーコードの「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プロンプト

環境の確認

これで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)は終了しています。

wsl -l -v

「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環境を整備します。

コメント

タイトルとURLをコピーしました