Installing Ubuntu 20.10 on WSL

We do not publish interim releases of Ubuntu on the Microsoft Store for WSL. But you can still get in on the Groovy Gorilla goodness of Ubuntu 20.10.

Interim releases like Ubuntu 20.10, code named Groovy Gorilla, have the latest packages and enhancements, and get support from Canonical for nine months.

With LTS releases, like Ubuntu 20.04, packages don’t change so much, they tend to have broader support among third-party developer tools, and get updates and security patches from Canonical for five years.

But you want to live on the cutting edge, I get it, and you don’t mind upgrading again in six months to the next interim release. So here are a couple ways to give Ubuntu 20.10 a spin on WSL.

What is an “LTS”, the difference between LTS and non-LTS, and what do all these version numbers mean anyways? We have you covered.

The two approaches you have for giving 20.10 a spin on WSL are:

I recommend you read though both methods and then decide which is best for you.

Upgrading your current installation

Upgrading is nice because you can keep using that awesome Ubuntu Start Menu tile and Taskbar button. But you can encounter issues with third-party repositories if you have added those. Always make a backup of your existing working installation. If in doubt, follow the side-load method below as a test, install the packages you need, and if everything checks out, then you can consider upgrading your working environment.

First, make a backup of your existing installation:

wsl.exe --export Ubuntu C:\ubuntu-backup.tar.gz

If the upgrade fails or, the more likely scenario, you run into an incompatibility with a third-party repo, then you can use the wsl.exe --import method below to overwrite your install with your working one.

Second, run all available upgrades for your existing installation:

sudo apt update
sudo apt -y upgrade

Third, update your /etc/apt/sources.list file for 20.10, code-named Groovy Gorilla.

You can do this manually with nano:

sudo nano /etc/apt/sources.list

and then replacing references to ‘focal’ with ‘groovy’ with Ctrl - \, focal, groovy, A.

Or from the terminal using sed:

sudo sed --in-place 's/focal/groovy/g' /etc/apt/sources.list

If you have additional repos configured in /etc/apt/sources.list or /etc/apt/sources.list.d/ you may need to go manually tweak these for groovy. Note not all third-party repos will have added support for groovy and may not ever, see my note about LTS releases above. It is possible to leave those repos at focal but strange things can happen when mixing packages from different distros. You did make a backup, right? If you have not stop now and do so.

Finally, repeat running package updates to get all the latest good stuff:

sudo apt update
sudo apt -y upgrade

As an alternative to editing /etc/apt/sources.list, you can tweak update-manager settings to support interim releases and use do-release-upgrade which will handle it all for you going forward, including future releases:

sudo sed --in-place 's/Prompt=lts/Prompt=normal/' /etc/update-manager/release-upgrades
sudo do-release-upgrade

Download and manually import an image

It is possible to manually download and side-load rootfs images for WSL from outside of the Microsoft Store.

First, download a build of Ubuntu 20.10 for WSL:

aria2c -x 10 https://cloud-images.ubuntu.com/groovy/current/groovy-server-cloudimg-amd64-wsl.rootfs.tar.gz

On arm64 devices use:

aria2c -x 10 https://cloud-images.ubuntu.com/groovy/current/groovy-server-cloudimg-arm64-wsl.rootfs.tar.gz

Note the above uses aria2c which I like for speeding up big downloads (and I think you will too) but you may need to install it sudo apt -y install aria2 or you can simply substitute wget.

Second, copy the rootfs to somewhere on your Windows partition, say the Downloads folder of your current Windows user:

cp groovy-server-cloudimg-amd64-wsl.rootfs.tar.gz $(wslpath "$(wslvar USERPROFILE)")/Downloads

Third, create a folder to store the unpacked rootfs:

mkdir -p $(wslpath "$(wslvar USERPROFILE)")/WSL/Groovy

Finally, import the rootfs:

cmd.exe /C "wsl.exe --import Ubuntu-20.10 %USERPROFILE%\WSL\Groovy %USERPROFILE%\Downloads\groovy-server-cloudimg-amd64-wsl.rootfs.tar.gz --version 2"

You can optionally set the WSL version to import as, either 1 or 2, with --version n. Without --version, WSL will import as your default. You can set your default with wsl.exe --set-default 2. I keep both WSL 1 and 2 images and can never remember which is the default, so I just add --version n as a habit.

There is no Start Menu button for side-loaded WSL distros but they can be accessed with:

wsl.exe -d Ubuntu-20.10

and they will auto-populate in Windows Terminal after restarting WT:

image

When manually importing, you can then create a user and password:

adduser hayden

Add to sudo group:

usermod -a -G sudo hayden

And set as your default user in WSL:

echo -e "[user]\ndefault=hayden" >> /etc/wsl.conf

When you exit and re-enter Ubuntu-20.10 you should join as hayden or the username you picked, though if you went with hayden I am flattered and you have excellent taste in usernames.

As always report general WSL bugs here and Ubuntu-specific WSL bugs here.

Hayden

1 Like

I installed Ubuntu 20.10 amd64 on WSL following your guidance but I’m puzzled by the post boot Welcome message:

“Welcome to Ubuntu 20.10 (GNU/Linux 4.19.128-microsoft-standard x86_64)”

I expected a message indicating Kernel version 5.8

Is 4.19.128 a Microsoft specific version tracking number or is it actually an “Ubuntu 20.10” using an older Kernel ?

WSL2 uses a kernel configured and compiled by Microsoft (by default - you can supply your own if you wish). Currently this is using a 4.19 base. The Ubuntu distro you installed is a complete Ubuntu userland, which is run on the MS-built kernel inside a container-like environment.

Is it ok to use do-release-upgrade?

Yes, you can do that route as well.

Hi, I’ve edited the /etc/update-manager/release-upgrades as directed, but when I try sudo do-release-upgrade it terminates with exit status 1. There’s no other error message. Any ideas? I currently have 20.04, WSL2, always updated Windows 10 running in the Insiders Beta release.

1 Like

I am using Ubuntu 20.04 WSL2 on Windows 10 21H1 (Build 19043). I edited /etc/update-manager/release-upgrades and tried sudo do-release-upgrade and it crashed without any error message with exit status 1 (like that described by @gnarlygeek). Last several lines before the error are:

Reading cache

Checking package manager
Reading package lists... Done
Building dependency tree
Reading state information... Done
Hit https://opentuna.cn/ubuntu focal InRelease
Hit https://opentuna.cn/ubuntu focal-updates InRelease
Hit https://opentuna.cn/ubuntu focal-backports InRelease
Hit https://opentuna.cn/ubuntu focal-security InRelease
Fetched 0 B in 0s (0 B/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done

Restoring original system state

Aborting
Reading package lists... Done
Building dependency tree
Reading state information... Done
=== Command terminated with exit status 1 (Sat Jun 26 00:20:05 2021) ===

I have captured the trace file using strace and have uploaded it to GitHub Gist.

This is due to do-release-upgrade checking whether all the snaps are up-to-date or not before the upgrade. You can remove snapd in the WSL VM since snapd does not work in WSL.

Thanks for your reply! I applied the workaround for the snapd issue and do-release-upgrade now works again.

Thank you. This advice worked for me too! I want to XFCE via Ubuntu on WSL – title bars don’t show on XFCE on tightvncserver on Fossa, but start on Groovy.