Windows 10 HomeでWSL2 Ubuntuを使えるようにする
TL;DR 要約
- Powershellを管理者権限で起動
wsl --install
- Windows再起動
- 自動でUbuntuが起動してユーザ登録を促されるので入力
- おしまい
目的
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 では使用できません。
使えないのかと思ったが、WSL2に必要なのは「Hyper-Vアーキテクチャ」とのこと。
これ自体は「仮想マシン プラットフォーム」 のオプションで使用できるということで一安心。
WSL 2 は、Windows 10 HomeやWindows 11 Homeなど、WSL が使用可能なすべてのデスクトップ SKU で使用できます。
WSL2の導入
Powershellよりwslコマンドでインストールする。
Microsoft Storeよりポチポチやる方法もあるみたいだが、wslコマンドに慣れておいた方が後々良さそうなので、コマンドの方を選択。
- Powershellを管理者で起動し、インストールするディストリビューションを確認
wsl --list --online
ディストリビューション一覧 - ディストリビューションを指定してインストール
wsl --install -d Ubuntu
Ubuntuのインストール - Windows再起動、初期ユーザの設定を行う(完了!)
初期ユーザ設定
設定したユーザがデフォルトのLinux管理ユーザとして扱われる。
ユーザ設定する前に、間違えて閉じてしまった(設定し損ねた)ら・・・
初期設定
いくつかやっておいた方が良さそうな設定を記載する。
Windows Terminalの導入
Windows 11の標準ターミナルのようなので、導入。見た目も色々設定できていい感じ。
ホスト名の変更
デフォルトだとデバイス名が表示されるため、個人名が出たり、長々しく表示されたりと、嫌に思うところである。
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でパスワード不要に
些末な話
Windows ハイパーバイザ プラットフォームとは
WSL2をインストールすると「Windowsの機能の有効化または無効化」で関係のある機能がONとなる。
しかし、関係がありそうな名前なのにOFFのままの「Windows ハイパーバイザ プラットフォーム」という機能がある。
インストール前(←) 後(→)
どうやら、Hyper-Vアーキテクチャを使用するだけ(WSL2を使用するだけ)ならば、この機能は不要らしい。
では、こいつは何なのか。実は、WSL2のデメリット(の一つ)を解消する機能のようだ。
WSL2のデメリットとは、Hyper-Vアーキテクチャを使用することで、Hyper-Vを用いない他のVMソフトウェア(VirtualBox等)が動作しなくなってしまう。というものだ。
この問題点を解消したい場合(つまり、WSL2もVirtualBoxも使いたい場合)、この機能をONにすることで実現できるらしい。
参考
Discussion