In some circumstances, you may want to automatically start your WSL2 (Windows Subsystem for Linux) services on Windows startup such as Apache2, Nginx, and MySQL. Follow along below to learn how to start your services when you boot your machine.
Create a startup script
The first step is to create a startup script. This is the script that will be executed when you turn your machine on.
From the terminal, create and open a new shell script file:
You may require elevated privileges, so use sudo if needed.
Within the new file, copy the following commands. You can add more commands for other services.
#!/bin/sh service apache2 start service mysql start
After creating and saving the script you will need to make it executable:
chmod +x /etc/init.sh
Create a new Windows Task
From the start menu in Windows, search and open Task Scheduler.
In the right-hand panel, select Task Scheduler Library.
In the left-hand panel under Actions, select “Create Task…”. This will open a new window with the “General” tab selected.
Enter a name and description for your task.
Under security options within the “General” tab, select “Run whether user is logged on or not” and “Run with highest privileges”.
Next, select the “Actions” tab > “New…”. This will open another window.
Enter the following in the Program/script input field.
wsl -d Ubuntu-18.04 -u root /etc/init.sh
Ensure you replace the Ubuntu version with the correct Ubuntu version.
Finally, select the Conditions tab. From here you can configure the criteria that best suits you.
You have successfully created a new task to start WSL2 services on Windows startup. To make sure things are working correctly, reboot your machine.
For help setting up WSL for web developers, check out The ULTIMATE guide to setup Windows Subsystem for Linux (WSL) with Ubuntu, Apache2, MySQL and PHP