refactor: finish moving ssh-* scripts to own installers
[webi-installers/.git] / wsl2 / README.md
index ac29c54b5a2265e3f8f7439432b087168e0f90fb..e292fc2157837857bde094725e52d19e97c87b3a 100644 (file)
@@ -2,89 +2,56 @@
 title: WSL 2 (Hyper-V)
 homepage: https://docs.microsoft.com/en-us/windows/wsl/wsl2-index
 tagline: |
-  WSL2 (Windows Subsystem for Linux 2) runs a true Linux kernel via Hyper-V emulation.
+  WSL2 (Windows Subsystem for Linux 2) runs a true Linux kernel via Hyper-V virtualization.
 ---
 
-## Cheat Sheet
-
-> WSL 2 uses `VirtualMachinePlatform` and Hyper-V to run a full Linux kernel
-> with 100% syscall compatibility.
-
-After installing WSL and **Rebooting** you will be able to install Linux
-variants from the Windows 10 Store:
-
-- [Ubuntu Linux 20.04](https://www.microsoft.com/store/apps/9n6svws3rx71)
-- [Alpine WSL](https://www.microsoft.com/store/apps/9p804crf0395)
-
-### Admin Privileges Required
+## Read Carefully!
 
-It is not possible to install WSL without Admin privileges.
+1. WSL is a **system** service which **requires Admin privileges** to install.
+2. A **System Reboot** is required **inbetween** install steps.
 
-You _will_ need to allow the installer to run as Admin when asked.
+## Cheat Sheet
 
-### Reboot Required
+> WSL 2 uses `VirtualMachinePlatform` and Hyper-V to run a full Linux kernel
+> with 100% syscall compatibility. However, it does not work on all computers
+> and may not work in nested Virtual Machines - such as if running Windows in
+> VirtualBox or Parallels on Mac or Linux.
 
-You will not be able to use WSL without rebooting.
+This will install **WSL 1 and WSL 2 ONLY**.
 
-### How to Install Linux Bash
+**Most people** want [WSL 1 + WSL 2 + Linux](https://webinstall.dev/wsl). \
+(WSL 2 is NOT a replacement for WSL 1, it's just another _layer_ of WSL)
 
-You can download Linux from the Windows Store, or from the Command Line:
+See the **Full Cheat Sheet** at <https://webinstall.dev/wsl>.
 
-```pwsh
-curl.exe -L -o Ubuntu_2004_x64.appx https://aka.ms/wslubuntu2004
-powershell Add-AppxPackage Ubuntu_2004_x64.appx
-```
+### How to Install Linux
 
-See also <https://docs.microsoft.com/en-us/windows/wsl/install-manual>.
+Once WSL is installed you can download Linux from the Windows Store. We
+recommend:
 
-### How to Launch Linux
+- [Ubuntu Linux 20.04](https://www.microsoft.com/store/apps/9n6svws3rx71)
+- [Alpine WSL](https://www.microsoft.com/store/apps/9p804crf0395)
 
-To Launch the default Linux:
+### How to Switch to WSL 2 Manually
 
-```pwsh
-wsl.exe
-```
+To set WSL 2 for a specific Linux installation:
 
-To Launch a specific Linux:
+1. List all installed Linux versions
+   ```pwsh
+   wsl --list --verbose
+   ```
+2. Set the desired version to WSL 2 with `--set-version`. For example:
+   ```pwsh
+   wsl --set-version Ubuntu-20.04 2
+   ```
 
-```pwsh
-wsl.exe --list
-wsl.exe Ubuntu
-```
-
-### How to Set or Reset Root Password
-
-```pwsh
-wsl -d Ubuntu -u root
-```
-
-### How to Switch Between WSL 1 and WSL 2
-
-Despite the name, WSL 2 is neither a "better" version of nor a replacement for
-WSL 1. Rather WSL 1 uses a syscall wrapper (much like WINE) whereas WSL 2 uses
-Hyper-V virtualization.
-
-After rebooting you can set WSL 2 as the default:
+If WSL 2 works on your computer, you may set it as the default:
 
 ```pwsh
 wsl --set-default-version 2
 ```
 
-You can list your existing WSL Linuxes:
-
-```pwsh
-wsl --list --verbose
-```
-
-And you can switch between using WSL and WSL 2 without an issues:
-
-```pwsh
-wsl --set-version Ubuntu 2
-```
-
-See also <https://docs.microsoft.com/en-us/windows/wsl/wsl2-index>.
-
-### Raw PowerShell Install Commands
+### How to install WSL 2 with PowerShell
 
 If you'd like to install manually, or create your own script, this is how we do
 it:
@@ -96,15 +63,39 @@ dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux
 # Install VirtualMachinePlatform
 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
 
-# Download and Install WSL Update (contains Microsoft Linux kernel)
+# Download and Install the WSL 2 Update (contains Microsoft Linux kernel)
 & curl.exe -f -o wsl_update_x64.msi "https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi"
-powershell -Command "Start-Process msiexec -Wait -ArgumentList '/a wsl_update_x64.msi /qb TARGETDIR=""$env:TEMP""'"
+powershell -Command "Start-Process msiexec -Wait -ArgumentList '/a ""wsl_update_x64.msi"" /quiet /qn TARGETDIR=""C:\Temp""'"
 Copy-Item -Path "$env:TEMP\System32\lxss" -Destination "C:\System32" -Recurse
+
+# Also install the WSL 2 update with a normal full install
+powershell -Command "Start-Process msiexec -Wait -ArgumentList '/i','wsl_update_x64.msi','/quiet','/qn'"
 ```
 
-See also <https://github.com/microsoft/WSL/issues/5014>
+See also <https://github.com/microsoft/WSL/issues/5014#issuecomment-692432322>
+
+### Error: Required Feature Not Installed
+
+> Installing, this may take a few minutes...
+>
+> Error: 0xXXXXXXXX The virtual machine could not be started because a required
+> feature is not installed.
+
+It may be that your computer does not support virtualization because:
+
+- it lacks hardware support in the CPU for VTx
+- VTx is disabled in the BIOS or EFI
+- Virtualization has disabled in Windows 10
+
+You should switch back to WSL 1 until you solve this problem:
+
+```pwsh
+wsl --set-default-version 1
+wsl --list --verbose
+wsl --set-version Ubuntu-20.04 1
+```
 
-### Nested VMs
+### Error: Nested Virtual Machines
 
 WSL2 may not work properly if you are already running Windows inside of a
 Virtual Machine, especially if MacOS or Linux is the VM Host.