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

UbuntuをWindows 11上で動かす その1: 準備とインストール Ubuntu
スポンサーリンク

前回まではAliExpress等で購入したケーブルなどを紹介してきました。

今回からは話題を変えて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上で動かすためのサブシステムです。

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以上)」であるか「Windows11」である必要があります。

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

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ターミナル(管理者)」を選択します。

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

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

wsl --list --online

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

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

wsl --list --online

「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」により次のものがインストールされました。

  1. 仮想マシンプラットホーム
  2. Linux用Windowsサブシステム
  3. WSLカーネル
  4. GUIアプリサポート
  5. Ubuntu

私の環境では5分もかからず処理が終わり次のようになりました。

wsl --install

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

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

Ubuntuの初期設定

Windowsを再起動するとUbuntuのコンソールが開きます。

私の場合は再起動後、自動的にUbuntuが起動しましたが、自動的に起動しない場合はスタートメニュー内のUbuntuを選択してください。

圧縮されたデータを展開するためにしばらく待つようにメッセージが表示されますのでしばらく待ちましょう。

 データの展開中

Ubuntu用ユーザの作成

データの展開が終わると、Ubuntu用に作成するユーザ名を入力するように言われます。

ユーザ名の入力

ここで作成するユーザはWindowsのユーザとは関係ないので、Windowsのユーザ名とは関係ない名前を利用することができます。

WSL1/WSL2で複数のLinuxディストリビューションをインストールしている場合は、Linux上のユーザはLinuxディストリビューションごとに別々に管理されます。

ユーザ名を入力すると次はパスワード入力するように要求されます。

パスワードの設定

使用したいパスワードを設定しましょう。パスワードは確認を含めて2回入力する必要があります。

なお、ここで作成したユーザは

  • デフォルトのユーザ ・・・ スタートメニューからLinux環境を起動したときに自動的にログインするユーザ
  • Linux環境の管理者 ・・・ sudoグループのメンバー

となります。

ユーザの作成に成功すると次のようにbashのプロンプトとなります。

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

wsl -l -v

「Stopped」ではなく「Running」であった場合は、Ubuntuはまだ生きています。

その場合は、次のコマンドで終了させることができます。

wsl -t Ubuntu

「-t」のあとに指定する名前は、「wsl –l -v」でNAMEの列に表示されるものを指定します。

まとめ

今回はWindows Subsystem for Linux (WSL2)を使ってWindows11にUbuntuをインストールしてみました。

WSLを利用するためには以前は複数のステップが必要でしたが、ついにwslコマンド一発で導入できるようになりました。WSLを使う敷居がますます低くなったように感じます。

次回はインストールしたUbuntu環境を整備していきます。

コメント

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