Windowsで動作するUbuntuをメインで使うようになってくると、Ubuntuの提供するDockerやcronやサーバといった機能を使うようになってくる。そうなると、Windowsにサインインしたときや、Windowsが起動したときには同時にUbuntuも実行されていてほしくなってくる。今回はそんな場合の設定方法を取り上げる。→連載「WindowsでUbuntuをはじめる」のこれまでの回はこちらを参照。
常にUbuntuが動いていてほしい
WSLで実行されるUbuntuをよく使う場合、常に背後でUbuntuが動作しておいてほしいと考えるようになる。しかしながら、Ubuntu/WSLは明示的に起動しない限り動作しない。Windowsにサインインした直後に次のようにコマンドを実行すると、Ubuntuが動作していないことを確認することができる。
Ubuntuをよく使うユーザーとしては、WindowsにサインインしたときにUbuntuも同時に起動してくれると便利だ。以下、その設定方法を紹介していこう。
Windowsサインイン時にUbuntuを起動する設定
かといって、特別な設定をするわけではない。タスクスケジューラでWindowsサインイン時にwsl.exeが実行されるようにすればよいだけだ。まず、wsl.exeのフルパスを調べる。
wsl.exeのフルパスが「C:\WINDOWS\system32\wsl.exe」であることがわかる。wsl.exeのフルパスがわかったら、タスクスケジューラを起動して新しいタスクを追加する。
新しいタスクを作成し、まずは名前を入力する。
次にトリガーで、サインイン時に動作するように設定する。
どのユーザーを対象とするかなどの設定は、用途に応じてオプションを変更していただきたい。
次に、「操作」でwsl.exeを起動するように設定を行う。
最後に、「設定」でタスクを停止するまでの時間などに関する設定を必要に応じて変更しておく。
これで、タスクの追加は完了だ。
作成したタスクがリストに追加されており、状態が「準備完了」になっていることを確認したら、いったんサインアウトするかシステムを再起動して動作を確認する。
WindowsにサインインしてUbuntuの起動を確認
設定が適切に行われていれば、Windowsにサインインした直後にUbuntuが起動する。次のようなターミナルアプリケーションが起動してくるはずだ。
これで、デフォルトの設定よりもUbuntuの応用範囲がちょっと広がった。
注意: 最近のアップデートで挙動変更
これまでは、今回説明した方法で問題なかったのだが、最近この部分に関する挙動が変更され、ターミナルアプリケーションを終了するとそのターミナルにひもづいたWSLの仮想環境が自動的にシャットダウンするようになった。
要は、wsl.exeを利用しているターミナルが一つでもないと、自動的にUbuntuが終了してしまう。これでは背後でサーバやcronが動作していてほしいユーザーとしては、困ったことになる。
今回の変更が永続的なものなのか、ユーザーの反応によってはもとの挙動に戻るのか、ターミナルが終了してもWSL仮想環境が動作し続けるようにオプションが追加されるのか、現状では今後の動きはわからない。
本稿執筆時点で確実なことは、Ubuntuを背後で動かしておきたい場合はwslを実行したターミナルを終了せずに保持しておく必要があるということだ。
Ubuntuを常に背後で動かしておいてシステム開発を行うような使い方をしていた開発者などは、今回の変更の影響を受けるので、Microsoftから何らかの対応があると考えられる。今後の動向を待つ必要がある状況だ。
参考
- Windows Subsystem for Linux Documentation | Microsoft Docs
- What is Windows Subsystem for Linux | Microsoft Docs
- Install Linux on Windows with WSL | Microsoft Docs
- Basic commands for WSL | Microsoft Docs
- Run Linux GUI apps with WSL | Microsoft Docs
- Get started using VS Code with WSL | Microsoft Docs
- Set up Node.js on WSL 2 | Microsoft Docs
- Advanced settings configuration in WSL | Microsoft Docs
- Add or connect a database with WSL | Microsoft Docs
- Comparing WSL 1 and WSL 2 | Microsoft Docs
- Manual installation steps for older versions of WSL | Microsoft Docs
- Set up a WSL development environment | Microsoft Docs
- Install Linux Subsystem on Windows Server | Microsoft Docs
- Troubleshooting Windows Subsystem for Linux | Microsoft Docs
- FAQ's about Windows Subsystem for Linux | Microsoft Docs