-
-
Save ScriptAutomate/f94cd44dacd0f420fae65414e717212d to your computer and use it in GitHub Desktop.
<# | |
- BIOS of host machine also needs to be configured to allow hardware virtualization | |
- Windows 10 Pro or otherwise is needed; Windows 10 Home Edition CANNOT get WSL | |
- This gist WSLv2, but can use WSLv1 instead. I needed v1 as I run Windows 10 in a VM in Virtualbox. | |
- WSLv2 has been giving me problems in Virtualbox 6.1, but WSLv1 works properly. | |
- vbox has issues with the GUI settings when it comes to nested virtualization on certain systems, | |
so run the following if needing to give a VM this enabled setting: | |
VBoxManage modifyvm <vm-name> --nested-hw-virt on | |
#> | |
## IN AN ELEVATED SHELL | |
## Right-click PowerShell -> Run As Administrator | |
# Enable Needed Virtualization | |
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart | |
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart | |
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All | |
# Download Ubuntu 20.04 Focal Fosa | |
# Uncomment if wanting 20.04 instead of latest | |
# Invoke-WebRequest -Uri https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64-wsl.rootfs.tar.gz -OutFile $ENV:HOMEDRIVE$ENV:HOMEPATH\Downloads\ubuntu-20.04-focal-wsl.tar.gz -UseBasicParsing | |
# Download Ubuntu 22.04 Jammy Jellyfish | |
# Invoke-WebRequest -Uri https://cloud-images.ubuntu.com/wsl/jammy/current/ubuntu-jammy-wsl-amd64-wsl.rootfs.tar.gz -OutFile $ENV:HOMEDRIVE$ENV:HOMEPATH\Downloads\ubuntu-22.04-jammy-wsl.tar.gz -UseBasicParsing | |
# Download Ubuntu 24.04 Noble Numbat | |
Invoke-WebRequest -Uri https://cloud-images.ubuntu.com/wsl/noble/current/ubuntu-noble-wsl-amd64-wsl.rootfs.tar.gz -OutFile $ENV:HOMEDRIVE$ENV:HOMEPATH\Downloads\ubuntu-24.04-noble-wsl.tar.gz -UseBasicParsing | |
# Setup reserved directory path for WSL VM | |
# mkdir c:\UbuntuFocal # If doing Focal | |
# mkdir c:\UbuntuJammy # If doing Jammy | |
mkdir c:\UbuntuNoble # If doing Noble | |
# Configure WSL for incoming VM | |
# For more information about WSL: https://docs.microsoft.com/en-us/windows/wsl/about | |
wsl --set-default-version 2 # Change to '1' if not able to support 2 | |
# Import into WSL | |
# wsl.exe --import UbuntuFocal C:\UbuntuFocal $ENV:HOMEDRIVE$ENV:HOMEPATH\Downloads\ubuntu-20.04-focal-wsl.tar.gz | |
# wsl.exe --import UbuntuJammy C:\UbuntuJammy $ENV:HOMEDRIVE$ENV:HOMEPATH\Downloads\ubuntu-22.04-jammy-wsl.tar.gz | |
wsl.exe --import UbuntuJammy C:\UbuntuJammy $ENV:HOMEDRIVE$ENV:HOMEPATH\Downloads\ubuntu-24.04-noble-wsl.tar.gz | |
wsl # Drops straight into default VM. Will be UbuntuFocal is WSL alternate VM didn't already exist | |
## BONUS: Docker Desktop | |
# Checkout the Install-ChocoStarterPackages gist for setting up choco (and other things): | |
# - https://gist.github.com/ScriptAutomate/02e0cf33786f869740ee963ed6a913c1 | |
# Once chocolatey / choco is installed, and WSL is already configured with Ubuntu, | |
# run the following command from PowerShell, and not from within WSL: | |
# choco install docker-desktop -y |
libcurl4-openssl-dev libssl-dev
Potentially adding to your list, sir!
Something else that may be useful for folks installing WSL on their Windows systems:
PS C:\Users\torresan\Downloads> Invoke-WebRequest -Uri https://cloud-images.ubuntu.com/releases/jammy/release/ubuntu-22.04-server-cloudimg-amd64-wsl.rootfs.tar.gz -OutFile $ENV:HOMEDRIVE$ENV:HOMEPATH\Downloads\ubuntu-22.04-jammy-wsl.tar.gz -UseBasicParsing
Invoke-WebRequest :
404 Not Found
Not Found
The requested URL was not found on this server.
Apache/2.4.29 (Ubuntu) Server at cloud-images.ubuntu.com Port 443
At line:1 char:1
+ Invoke-WebRequest -Uri https://cloud-images.ubuntu.com/releases/jammy ...
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebExc
eption
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
Guess they removed the image...
PS C:\Users\torresan\Downloads> Invoke-WebRequest -Uri https://cloud-images.ubuntu.com/releases/jammy/release/ubuntu-22.04-server-cloudimg-amd64-wsl.rootfs.tar.gz -OutFile $ENV:HOMEDRIVE$ENV:HOMEPATH\Downloads\ubuntu-22.04-jammy-wsl.tar.gz -UseBasicParsing Invoke-WebRequest : 404 Not Found Not Found The requested URL was not found on this server. Apache/2.4.29 (Ubuntu) Server at cloud-images.ubuntu.com Port 443 At line:1 char:1 + Invoke-WebRequest -Uri https://cloud-images.ubuntu.com/releases/jammy ... + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebExc eption + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
Guess they removed the image...
Whoa! It does look like it is removed. They look like they don't have any *wsl*
files listed for 22.04.
They do still have 20.04:
Invoke-WebRequest -Uri https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64-wsl.rootfs.tar.gz -OutFile $ENV:HOMEDRIVE$ENV:HOMEPATH\Downloads\ubuntu-20.04-focal-wsl.tar.gz -UseBasicParsing
I'm not sure why Canonical has done that. They seem to have a dedicated landing page for WSL, but all the directions they provide (just like in places like the MSFT docs) are for how to manually do so via the GUI:
I'll ask around and see what I can figure out. May to be manually done in the meantime by following the above Ubuntu documentation of the Microsoft Docs on WSL
@andrestoga Jammy and newer WSL images have now been moved here:
- https://cloud-images.ubuntu.com/wsl/
- Information found here when I asked on Ask Ubuntu: https://askubuntu.com/questions/1439745/has-the-wsl-rootfs-tar-gz-been-removed-from-ubuntu-22-04-jammy-releases-websi
I've updated the gist to work with latest Jammy location!
Add instructions on how to make a user account. It boots as root by default.
For a quick bootstrap when it comes to Python development (and being able to contribute to projects that use Sphinx for docs, which is Python based), the following can be done within the WSL instance. It also adds bash-git-prompt to their shell profile.
Things like
git
andvim
are already installed on base Ubuntu 20.04 WSL instances.Projects like
salt
requirepre-commit
andnox
, which can be setup viapipx
:pipx installs packages into their own, isolated virtualenvs using the system Python 3, and then has them accessible in your PATH. pyenv is also highly recommended, and may require additional packages as dependencies (which may be needed when working with other Python-based projects):
If wanting to learn more about Python virtualenvs, refer to the RealPython article Python Virtual Environments: A Primer