🐑

Windows 10 HomeでWSL2 Ubuntuを使えるようにする

2023/04/09に公開

TL;DR 要約

  1. Powershellを管理者権限で起動
  2. wsl --install
  3. Windows再起動
  4. 自動でUbuntuが起動してユーザ登録を促されるので入力
  5. おしまい

目的

WindowsでLinux開発環境を作りたい。その過程で調べたことを(自分用に)残しておく。
WindowsOS側は趣味のゲームやら何やらのアプリがごちゃ混ぜなので、開発OSと明確に分けたいなと思った。
Linux環境のほうが開発には向いてるらしいし。

WSL2とは

WSL2なるものを使うことで、Windows上でLinux環境を作れるらしい。
ということで、まずはWSL2について調べる。

概略

Windows Subsystem for Linux 2の略。Windows上でLinuxを動かすための仕組み。
前身にあたるWSL1があり、バージョン2とのこと。
Windows10の9回目の大型アップデート「May 2020 Update」にて使えるようになった。
Hyper-Vアーキテクチャを用いることで、メモリ消費量が少なく、高速で起動可能という点がウリ。

Hyper-Vとは

Microsoftの仮想化ソフト(ハイパーバイザ)製品であり、ハードウェアの仮想化を提供する。
これにより、複数の仮想ハードウェアを起動でき、それぞれの上で異なるOSを実行することができる。
つまり、1台の物理端末で複数のOSを動かすことを可能となる。これにより、以下のようなことが実現できる。

  • 古いバージョンのWindows動作させ、それでしか動かないソフトウェアを実行する
  • 他のOSを動作させ、そのOSでのソフトウェア動作をテストする

また、これらの仮想マシンをエクスポートし、その他の任意の Hyper-V システム (Azure など) にインポートすることができる。

Windows 10 HomeでHyper-Vを使えない=WSL2は使えない?

Hyper-V は、64 ビット版の Windows 10 Pro、Enterprise、および Education で使用できます。 Home Edition では使用できません。

https://learn.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/about/#system-requirements

使えないのかと思ったが、WSL2に必要なのは「Hyper-Vアーキテクチャ」とのこと。
これ自体は「仮想マシン プラットフォーム」 のオプションで使用できるということで一安心。

WSL 2 は、Windows 10 HomeやWindows 11 Homeなど、WSL が使用可能なすべてのデスクトップ SKU で使用できます。

https://learn.microsoft.com/ja-jp/windows/wsl/faq#wsl-2---hyper-v-------------windows-10-home-windows-11-home---------

WSL2の導入

Powershellよりwslコマンドでインストールする。
Microsoft Storeよりポチポチやる方法もあるみたいだが、wslコマンドに慣れておいた方が後々良さそうなので、コマンドの方を選択。

  1. Powershellを管理者で起動し、インストールするディストリビューションを確認
    wsl --list --online
    
    wsl list
    ディストリビューション一覧
  2. ディストリビューションを指定してインストール
    wsl --install -d Ubuntu
    
    wsl install
    Ubuntuのインストール
  3. Windows再起動、初期ユーザの設定を行う(完了!)
    ubuntu setup
    初期ユーザ設定
    設定したユーザがデフォルトのLinux管理ユーザとして扱われる。
    ユーザ設定する前に、間違えて閉じてしまった(設定し損ねた)ら・・・

初期設定

いくつかやっておいた方が良さそうな設定を記載する。

Windows Terminalの導入

Windows 11の標準ターミナルのようなので、導入。見た目も色々設定できていい感じ。
https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701?hl=ja-jp&gl=jp&icid=en_US_Store_UH_apps_Win

ホスト名の変更

デフォルトだとデバイス名が表示されるため、個人名が出たり、長々しく表示されたりと、嫌に思うところである。
WSL設定ファイル(/etc/wsl.conf)に下記を追記して、Ubuntuを再起動(※)することで変更可能。
※Ubuntuを閉じて暫く放置(8秒ぐらい)しないと停止しないので注意

[network]
hostname=#好きなホスト名#

ホスト名変更
ホスト名変更(ubuntu)

パスワードなしsudo設定

Linux管理ユーザでも、sudo実行しようとするとパスワード入力を求められる。
sudoersファイルを編集して、パスワード入力をスキップして実行できるように設定する。

sudo visudo

GNU nanoエディタが起動するので @indludedir ~の上に(※) 以下を追記する。
※%sudo Groupより前に定義を追記すると、Groupの定義が優先されてしまい、NOPASSWDを追記しても適用されない

ユーザ名 ALL=(ALL:ALL) NOPASSWD: ALL

sudoパスワードなし
sudoでパスワード不要に

些末な話

Windows ハイパーバイザ プラットフォームとは

WSL2をインストールすると「Windowsの機能の有効化または無効化」で関係のある機能がONとなる。
しかし、関係がありそうな名前なのにOFFのままの「Windows ハイパーバイザ プラットフォーム」という機能がある。
インストール前後
インストール前(←) 後(→)
どうやら、Hyper-Vアーキテクチャを使用するだけ(WSL2を使用するだけ)ならば、この機能は不要らしい。
では、こいつは何なのか。実は、WSL2のデメリット(の一つ)を解消する機能のようだ。
WSL2のデメリットとは、Hyper-Vアーキテクチャを使用することで、Hyper-Vを用いない他のVMソフトウェア(VirtualBox等)が動作しなくなってしまう。というものだ。
この問題点を解消したい場合(つまり、WSL2もVirtualBoxも使いたい場合)、この機能をONにすることで実現できるらしい。

参考

https://www.pc-koubou.jp/magazine/40465

Discussion