Windows install wsl and set default wsl 2

Step 1:
Open the below link and READ IT!

https://learn.microsoft.com/en-za/windows/wsl/install

1: Open PowerShell and Start the install process
wsl --install

2: Result shows you available distros: 
Ubuntu             Ubuntu
Debian             Debian GNU/Linux
kali-linux         Kali Linux Rolling
SLES-12            SUSE Linux Enterprise Server v12
SLES-15            SUSE Linux Enterprise Server v15
Ubuntu-18.04       Ubuntu 18.04 LTS
Ubuntu-20.04       Ubuntu 20.04 LTS
OracleLinux_8_5    Oracle Linux 8.5
OracleLinux_7_9    Oracle Linux 7.9

3: Install your selected distro. In my case I am choosing Ubuntu.
wsl --install Ubuntu

4: Wait for the install to finish.
Enter username and password in the ubuntu termainal and proceed.

5: Switch back to PowerShell and Check that your wsl version. 
wsl -l -v

6: Run the below command.
sudo apt update && sudo apt upgrade

7: Set default wsl version to version 2
wsl --set-default-version 2

8: If you manually installed WSL prior to the wsl --install command being available, you may also need to enable the virtual machine optional component used by WSL 2 and install the kernel package if you haven't already done so.
--
https://learn.microsoft.com/en-za/windows/wsl/install-manual#step-3---enable-virtual-machine-feature

Windows General Fix

In the Administrator: Command Prompt window, type the following commands.
Press Enter key after each command:

DISM.exe /Online /Cleanup-image /Scanhealth

DISM.exe /Online /Cleanup-image /Restorehealth

Important: When you run this command, DISM uses Windows Update to provide the files that are required to fix corruptions.
To close the Administrator: Command prompt window, type Exit, and then press Enter.
Restart your computer.

New Dev Setup PHP & Ubuntu – For Windows

Useful for Debugging :
https://old.garthbaker.co.za/re-install-ubuntu-windows-11/

Install PHP 8 (Ubuntu Terminal cd ~)

sudo apt update
sudo apt -y upgrade
--
sudo apt update
sudo apt install lsb-release ca-certificates apt-transport-https software-properties-common -y
sudo add-apt-repository ppa:ondrej/php
--
sudo apt update
sudo apt install php8.0
--
php -v

Installing Required Extensions (Ubuntu Terminal cd ~)

The below command should be enough. But if you missing extensions, check below

sudo apt install php8.0-curl php8.0-cli php8.0-xml php8.0-mbstring php8.0-zip php8.0-pdo php8.0-mysql php8.0-gd

If you want to list all PHP 8.0 loaded modules use the command:
php -m

sudo apt install php8.0-

php8.0-amqp       php8.0-common     php8.0-gd         php8.0-ldap       php8.0-odbc       php8.0-readline   php8.0-sqlite3    php8.0-xsl
php8.0-apcu       php8.0-curl       php8.0-gmp        php8.0-mailparse  php8.0-opcache    php8.0-redis      php8.0-sybase     php8.0-yac
php8.0-ast        php8.0-dba        php8.0-igbinary   php8.0-mbstring   php8.0-pgsql      php8.0-rrd        php8.0-tidy       php8.0-yaml
php8.0-bcmath     php8.0-dev        php8.0-imagick    php8.0-memcached  php8.0-phpdbg     php8.0-smbclient  php8.0-uuid       php8.0-zip
php8.0-bz2        php8.0-ds         php8.0-imap       php8.0-msgpack    php8.0-pspell     php8.0-snmp       php8.0-xdebug     php8.0-zmq
php8.0-cgi        php8.0-enchant    php8.0-interbase  php8.0-mysql      php8.0-psr        php8.0-soap       php8.0-xhprof
php8.0-cli        php8.0-fpm        php8.0-intl       php8.0-oauth      php8.0-raphf      php8.0-solr       php8.0-xml

Install Composer (Ubuntu Terminal cd ~)

//Update your packages:
sudo apt-get update

//Install Curl to get the composer library:
sudo apt-get install curl

//Installing composer:
sudo curl -s https://getcomposer.org/installer | php

//Move the composer file to bin path :
sudo mv composer.phar /usr/local/bin/composer

//Verify composer installation :
composer

Install NPM (Ubuntu Terminal cd ~)

sudo apt install npm

Activate WSL 2 and Virtual Machine Platform
(Run as Admin in powershell ~)

NB!!! Don't forget to install the kernel for wsl2 :
https://docs.microsoft.com/en-za/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package

//Enable the WSL2 without reboot 
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 

//Enable the Virtual Machine Platform 
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Set WSL2 Default (Run as Admin in powershell ~)

wsl --set-default-version 2