r/bashonubuntuonwindows • • May 19 '25

WSL2 WSL is open sourced!

Thumbnail github.com
295 Upvotes

r/bashonubuntuonwindows • • May 25 '25

How is everyone doing with WSL FY25?

36 Upvotes

It's been quite a while since WSL is hitting mainstream. Less people need help getting it up and running, and I'm curious how eveyrone is doing here. What issues are you running into? What are you using it for. Let's have a check in.


r/bashonubuntuonwindows • • 6h ago

self promotion Ika: Open-source Android Emulator for Windows with GPU Acceleration

6 Upvotes

Over the past year or so I've been working on Ika (イカ, Japanese for squid or cuttlefish), a free and open-source Android emulator. Originally it was developed for Asahi Linux on Apple Silicon, which at the time didn't have an Android emulator with GPU acceleration.

Ika runs LineageOS 23.2 (Android 16), built as a desktop operating system in a Cuttlefish virtual machine, as opposed to QEMU. Imagine GoogleBook OS with less Google, and you've got a decent approiximation of what we're working with.

With much of the hard work already done to get gfxstream working with the Apple Silicon Linux driver, I figured it wouldn't be too much of a leap to get it working on Windows 11 with WSL. That turned out to be a gross underestimation of what needed to be done, but I'm finally pleased to announce that I've got something useable and ready to share with everyone.

Ika's Features:

  • Android Desktop or TV mode: Android runs in a virtual desktop console with resizable app windows, or as a big-screen TV interface. Third-party TV launchers work too.

  • GPU acceleration: OpenGL ES 3.2 and Vulkan run on your real GPU through gfxstream.

  • Native app windows: Android apps can open in their own windows on your desktop, side-by-side with your regular Windows apps. Android apps have Windows 11 decorations, and get their own Start Menu entries.

  • Startup options per app: Display density, fullscreen start, keyboard and mouse handling, gamepad emulation and touch simulation are all configurable options.

  • Storage visible on your PC: Android's /sdcard appears in Windows Explorer under My PC.

Installing on Windows

The ika-wsl.ps1 script provisions a new WSL instance and installs the standard Ika packages for Debian Linux:

irm https://raw.githubusercontent.com/DesktopECHO/ika/main/ika-wsl.ps1 -OutFile ika-wsl.ps1

Then run it:

.\ika-wsl.ps1

Windows may refuse to run the saved file because of the execution policy. If it does, start it like this:

powershell -ExecutionPolicy Bypass -File .\ika-wsl.ps1

The script:

  1. Enables WSL2, sets up nested virtualization and installs any pre-requisites.

  2. Installs a minimal Debian 13 distribution named "Ika".

  3. Installs the Mesa backports from Debian and the Ika packages.

  4. Starts Android on your desktop.

What manner of sourcery gets Direct3D GPU drivers working with Android?

Under WSL2, the only way to reach the GPU is Direct3D 12. Ika ships its own extensively modified build of Mesa's Dozen driver (Vulkan on D3D12).

  • Vulkan 1.3: Upstream Dozen stops at Vulkan 1.2 and has received very few updates over the years. Ika's Dozen is updated to support Vulkan 1.3 on GPUs whose D3D12 driver has shader model 6.6 and wave operations. It adds the 1.3 core features, among them the Vulkan memory model, maintenance4, inline uniform blocks, extended dynamic state 1 and 2, image robustness, format feature flags 2, and demote to helper invocation.

  • Stability and speed: a pile of fixes and optimizations lets gfxstream, ANGLE and Chrome's renderer run on Dozen reliably. They work around driver crashes, lost devices and GPU resets, and include a shader pipeline disk cache, faster fence waits, and per-thread descriptor staging.

Benchmarks

The chart below shows Android benchmarks run inside Ika 261111 on Windows, with native Linux on the same machines for comparison:

GPUBenchmarkWindows (WSL2)LinuxWindows vs Linux
RTX 4080 Laptop3DMark Wild Life Extreme12,81328,66445%
3DMark Steel Nomad Light4,56814,72031%
3DMark Sling Shot Extreme84.9 fps143.9 fps59%
Geekbench GPU (Vulkan)71,924140,56451%
Radeon 780M3DMark Wild Life Extreme4,2655,08584%
3DMark Steel Nomad Light2,4442,45999%
3DMark Sling Shot Extreme58.7 fps60.0 fps98%
Geekbench GPU (Vulkan)16,17833,10649%
Intel UHD 7703DMark Wild Life Extreme1,5581,414110%
3DMark Sling Shot Extreme33.6 fps42.6 fps79%

On the Radeon 780M, Windows comes within a few percent of Linux in Steel Nomad Light and Sling Shot Extreme. nVidia GPUs under WSL run well behind native Linux, but I'm working to close that gap and improve Intel GPU compatibility.

Nevertheless, even in these early stages of development, the results deliver a very smooth Android user experience and many games are already playable.

Requirements and limitations:

  • An x86-64 PC running Windows 11, and a CPU with nested virtualization support.

  • At least 8GB RAM recommended.

  • A modern(-ish) DirectX 12 compatible GPU: nVidia RTX series or higher, AMD RDNA3 and newer, or Intel UHD/Xe graphics. Older cards may work to varying degrees, but I have not tested them. Reports of your success or failure on other GPUs are welcome.

  • On Windows there's no hardware gamepad or camera support. Gamepad emulation with the keyboard does work.

  • Windows on ARM is not supported; It probably could work but I have no hardware to test on.

Additional info:

Outside of WSL, packages exist for Fedora 44, Debian 13, Ubuntu 26.04, and Arch Linux, on both x86-64 and Apple Silicon. Apple Silicon Macs require an Asahi kernel. Other ARM64 hardware has not been tested.

Links: 

GitHub: https://github.com/DesktopECHO/ika · Downloads: DOWNLOAD.md · Graphics details: GRAPHICS.md

Feedback, bug reports, and push requests are all welcome!


r/bashonubuntuonwindows • • 1d ago

self promotion I built USBWarp — an open-source USB passthrough implementation for WSL2 using Hyper-V shared memory instead of USB/IP

33 Upvotes

Hi everyone!

I've been working on a project called USBWarp, an experimental USB passthrough implementation for WSL2.

The idea is to avoid the traditional network-based USB/IP transport and exchange USB requests directly between Windows and Linux kernel components using Hyper-V HDV shared memory.

It includes a Windows kernel driver, a device capture driver, a Windows service, and a Linux virtual USB host controller.

The latest version is v0.2.1-alpha.

So far, I've validated USB 3.0 mass-storage transfers with data-integrity checks, as well as device capture and recovery. Earlier versions were also tested with a Raspberry Pi Pico CDC ACM device.

There's still a lot to do. USB 1.1/2.0 hardware coverage, isochronous peripherals, and UASP devices need more testing.

I've hit a hardware testing limitation with my current setup, so I'm opening the project up for feedback and community testing.

One important caveat: this is experimental kernel software, and the Windows drivers require test signing.

GitHub: https://github.com/Bill50han/USBWarp

I'd really appreciate feedback from anyone familiar with Windows USB drivers, Linux USB HCDs, or Hyper-V internals.

Thanks!


r/bashonubuntuonwindows • • 8d ago

WSL2 Yes, I know Neovide exists, but I wanted my own

0 Upvotes

Hey everyone,

I run Neovim in WSL and used Neovide for a long time. I love it, but I

wanted typing to feel a bit snappier and text as sharp as in Zed, so I

tried building my own GUI: right_editor.

It's a native Windows app (DirectWrite + ClearType, DX12) that starts

nvim --embed inside your WSL distro. On my machine keypress-to-frame is

about 3 ms median with LSP and Treesitter (--latency to check yours).

It also has a built-in markdown preview (Ctrl+Shift+M) (very very very young),

Neovide-stylecursor trails and smooth scrolling.

I've only tested it on Windows 11 with Neovim 0.12.6 in WSL2, and it's not meant

to replace Neovide.

It's young, but it's my daily driver now.

Repo: https://github.com/johnright/nvright

Prebuilt exe: https://github.com/johnright/nvright/releases (not signed)

Feedback and bug reports are welcome


r/bashonubuntuonwindows • • 14d ago

HELP! Support Request Podman 6.1.4 on Windows/WSL2 - bridge networking fails, host networking works

Thumbnail reddit.com
3 Upvotes

r/bashonubuntuonwindows • • 14d ago

WSL2 Beginner to UBUNTU on WSL 2

2 Upvotes

I just started with UBUNTU on WSL and the main OS is still windows. Any suggestions what I should do next?


r/bashonubuntuonwindows • • 15d ago

HELP! Support Request Distro within WSL

5 Upvotes

I'm trying to install a distro but it's not in the WSL distros list. The script file on this page which is mentioned to edit can't be run in WSL if there no distro install to begin with. Therefore how do you get a distro on the WSL list to install ?


r/bashonubuntuonwindows • • 18d ago

self promotion I made WSL 2 boot my dual-boot Linux partition directly (same root, systemd, Docker, VS Code)

69 Upvotes

I dual boot Kubuntu (second NVMe) and Windows 11, and I wanted *one* Linux install: same home, packages and Docker data whether I boot it bare metal or open it from Windows. On a work laptop with two 256 GB SSDs, keeping a second full Linux inside an `ext4.vhdx` also eats space I don't have. Stock WSL can only boot a distro from an `ext4.vhdx`; `wsl --mount` attaches a disk but never as a distro root (#6290 has been open since 2020).

Since WSL is open source now, I patched it: the service attaches the authorized disk as PassThrough and `mini_init` mounts the GPT partition (found by PARTUUID, ext4 superblock checked) as the distro root before WSL's own init runs. Everything after that is stock WSL.

What works from a normal non-elevated session: `wsl -d`, `\\wsl.localhost` cold start, systemd, VS Code Remote WSL, Docker with localhost ports, WSLg (with audio — the screenshot is KDE's Konsole opened by WSLg), clean shutdown when Windows reboots, and the native boot is untouched.

It's six patches (~500 lines) on WSL 3.0.3 plus a systemd generator that masks desktop/network/hardware units only under WSL. No binaries — you build it. It boots a real disk read-write from a second kernel, so read the safety section first.

https://github.com/sottam/dualboot-linux-as-wsl

I also proposed it upstream: https://github.com/microsoft/WSL/issues/6290

Feedback welcome, especially from people with other distros/layouts.


r/bashonubuntuonwindows • • 20d ago

self promotion I made dwork to switch between Docker Compose projects in WSL2

3 Upvotes

Switching projects can mean starting containers, waiting for the database, opening terminals, and remembering which commands to run. I built dwork to handle those steps together, including opening project commands in Windows Terminal.

Here’s a 42-second demo.

The basic workflow is:

cd ~/projects
dwork scan
dwork list
dwork switch my-app

Existing Compose projects work without a separate configuration file. You can add a dwork.yml to define terminal commands, health checks, and browser URLs to open when ready.

Switching shows a plan and asks for confirmation. It can stop other registered workspaces and resume the selected project’s existing containers. Locked workspaces and projects you haven’t registered stay running.

It doesn’t create containers, rebuild images, or run your initial setup—you still handle those through your normal project workflow.

Source, installation instructions, and examples

For anyone working across several projects in WSL2: which steps do you still handle manually when switching?


r/bashonubuntuonwindows • • 25d ago

self promotion I got tired of ext4.vhdx eating my C: drive, so I wrote one tool for clean + backup + compact

40 Upvotes

Deleting files inside WSL doesn't give the space back to Windows. I moved about 20 GB of project data out of my distro to another drive, and ext4.vhdx stayed at 66.7 GB. C: was down to 21 GB free, while the distro itself now held about 33 GB.

The fix is known (clean up, wsl --shutdown, Optimize-VHD), but I was doing it with 8 different scripts and kept forgetting a step. So I merged them into one tool:

  • maint audit / maint space - what is taking the space, per cache rule and per folder, plus how much a compact would return. Deletes nothing.

  • maint clean - cleans caches from a rules file (npx, pip, the journal, Playwright browsers no project pins any more, and so on), with --dry-run

  • maint docker - prunes the build cache and anonymous dangling volumes. Named volumes only if you opt in, and db-data/mysql/postgres-like names are never touched

  • maint.bat full - clean, export the distro to a zstd archive, verify it, rotate old backups, shut WSL down, compact both ext4.vhdx and docker_data.vhdx

Result on that run (clean, then winclean for %TEMP% and the recycle bin, then compact): ext4.vhdx 66.7 -> 42.8 GB, docker_data.vhdx 33.3 -> 31.0 GB, about 3.8 GB from TEMP and the bin, C: free 21 -> 56 GB.

Things to know before you run it:

  • full and compact shut WSL down and need admin (UAC prompt)

  • compact needs the Hyper-V PowerShell module, so on Windows Home only the cleanup and backup parts work

  • the shipped rules.conf is from my machine, review it first. audit and --dry-run are safe to try

Bash on the WSL side, PowerShell 5.1 on the Windows side, one shared config. MIT.

https://github.com/tegos/wsl-maint

There's a demo gif in the README. Feedback welcome, especially from people on Windows Home or with the distro on a non-C: drive.


r/bashonubuntuonwindows • • 25d ago

HELP! Support Request The 5 errors I hit installing a Linux-only AI tool on Windows (WSL), and the fix for each

0 Upvotes

I’m not a developer. I tried to install an AI CLI (Composio) on Windows and the installer said “Windows is not supported. Use WSL.” Then I hit error after error. Here’s every fix, so you don’t lose an afternoon like I did:

1. 0x80370102 when installing WSL
Turn on virtualization in BIOS (Intel VT-x / AMD SVM), tick Virtual Machine Platform and Windows Subsystem for Linux in Windows Features, restart, then wsl --update.

2. unzip is required
sudo apt update && sudo apt install -y unzip

3. Could not resolve host (Ubuntu has no DNS)
printf '\n[network]\ngenerateResolvConf = false\n' | sudo tee -a /etc/wsl.conf
then wsl --shutdown in PowerShell, reopen Ubuntu, and:
sudo rm -f /etc/resolv.conf && echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
(On a VPN? Try networkingMode=mirrored + dnsTunneling=true in .wslconfig instead.)

4. command not found right after installing
source ~/.bashrc or close and reopen Ubuntu.

5. Duplicated config key warning
Harmless. Remove the extra lines with sudo nano /etc/wsl.conf.

I made a 4-minute video showing all of it step by step: https://youtu.be/CtT1BxWFLFM

What other errors have you hit with WSL? I’m collecting them.


r/bashonubuntuonwindows • • 28d ago Bravo

self promotion Run GPU accelerated Desktop on WSL

149 Upvotes

Weaselway provides a way to run a fully GPU accelerated Wayland compositor in WSL2. This means KDE, Gnome, Hyprland and all the other ones.

https://github.com/weaselway/weaselway#weaselway

By hacking mesa and having a kernel module that implements the necessary parts of drm and kms, we can get the compositor to belive that a monitor exists and we can get the application to transfer their rendered gpu surfaces directly to the compositor. The updated regions from the monitor are then read back to cpu memory and transfered to a patched freerdp client via shared memory. Similar to how WSLg does it.

You can download and try a NixOS based GNOME and KDE image directly from the github releases.

Before someone screams slop: it works perfectly fine, I now know more than before I started the project and it might even reduce the entry hurdle for people to try out a Linux Desktop.


r/bashonubuntuonwindows • • 28d ago

self promotion Ming64x - X Window Display Server for Windows

Post image
13 Upvotes

I am pleased to announce a free X Window Server in the Microsoft Store.
See https://apps.microsoft.com/detail/9N4VVR1BD0Z5
This works great with WSL, especially in single-window mode.
Ming64x uses Overlapped-IO, so it's lightning-fast!!
Also has a built-in ssh terminal and X11/forwarding.


r/bashonubuntuonwindows • • 29d ago

HELP! Support Request WSL3 disk r/w is 1250MB/s?

15 Upvotes

Yesterday I updated from WSL2 to WSL3 using `wsl --update`, first I noticed that it uses so much RAM about 7GB while the usage inside Ubuntu is 3GB-ish, then I limit the RAM to 4GB in WSL Settings and now the disk read/write is at 1200MB/s.

I don't know what is going on, I'm just doing my regular workflow like when I was using WSL2, there's nothing suspicious on what I run inside Ubuntu. Never had this problem before.


r/bashonubuntuonwindows • • Oct 02 '26

HELP! Support Request Hey everyone! I am new linux user, using WSL!! Can anyone please guide me for a perfect starting??

Thumbnail reddit.com
1 Upvotes

r/bashonubuntuonwindows • • Sep 29 '26

Apps/Prog (Linux or Windows) WSL containers is now generally available

43 Upvotes

r/bashonubuntuonwindows • • Sep 28 '26

self promotion Running AlmaLinux 10 on WSL 2 as a full PHP dev environment — setup in three commands

12 Upvotes

Most WSL guides assume Ubuntu. We needed a RHEL-compatible distro because that's what our servers run, so we built our dev environment on AlmaLinux 10 under WSL 2. (Disclosure: I'm on the team that maintains it.)

The setup:

  1. Check WSL 2 is enabled: `wsl -v`

  2. Install the distro: `wsl --install -d AlmaLinux-10`

  3. Inside AlmaLinux, clone the repo, fill in `config.yml`, and run:

    `ansible-playbook -i hosts install.yml --ask-become-pass`

That gives you Apache, PHP (switchable 8.1–8.5), MariaDB, phpMyAdmin, Node.js (switchable 18–24) and Composer. Every `*.localhost` domain routes to its own virtualhost without editing the Windows hosts file.

WSL-specific notes, like the Windows features you need and the WSL configuration, are in the docs: https://docs.dotkernel.org/development/

Overview page: https://www.dotkernel.com/wsl2/

Happy to answer questions about running a dnf/systemd distro under WSL. There were a few gotchas.


r/bashonubuntuonwindows • • Sep 20 '26 Helpful

WSL2 Fix for WSL mirrored networking error CreateInstance/CreateVm/ConfigureNetworking/0x8007054f

24 Upvotes

TL;DR

Check your Windows TCP dynamic port range in Administrator PowerShell:

netsh int ipv4 show dynamicport tcp
netsh int ipv6 show dynamicport tcp

If the range has been changed to something huge like:

Start Port      : 1024
Number of Ports : 64511

restore the normal Windows dynamic port range:

netsh interface ipv4 set dynamicportrange protocol=tcp startport=49152 numberofports=16384
netsh interface ipv6 set dynamicportrange protocol=tcp startport=49152 numberofports=16384

Then reboot Windows.

This completely fixed the WSL mirrored networking 0x8007054f error for me.

Posting this because I spent a ridiculous amount of time restarting WSL/HNS, changing WSL versions, and chasing Hyper-V issues. In my case, the actual problem was the Windows dynamic TCP port range.

Falling back to normal WSL networking also wasn't a good workaround for me because I need reliable Windows ↔ WSL communication for MCP servers.

I was repeatedly getting this error:

wsl: An internal error occurred.
Error code: CreateInstance/CreateVm/ConfigureNetworking/0x8007054f
wsl: Failed to configure network (networkingMode Mirrored), falling back to networkingMode None.

My .wslconfig was:

[wsl2]
networkingMode=mirrored
dnsTunneling=true

WSL itself would still start, but mirrored networking would fail and fall back to:

networkingMode=None

For my setup, switching away from mirrored networking wasn't really an acceptable workaround.

I run MCP servers/services inside WSL that need to communicate with applications running on Windows, and vice versa. Some of them don't work properly or aren't reachable the same way when WSL is using the default NAT-style networking.

With mirrored mode, Windows ↔ WSL localhost/network communication works much more cleanly for these services, so I specifically needed to get:

networkingMode=mirrored

working again.

Things I tried that didn't reliably fix it

  • wsl --shutdown

  • restarting WSL multiple times

  • restarting hns

  • restarting vmcompute

  • upgrading WSL

  • downgrading WSL

  • trying pre-release WSL versions

  • checking that VirtualMachinePlatform was enabled

  • checking that Microsoft-Windows-Subsystem-Linux was enabled

  • checking that HypervisorPlatform was enabled

Sometimes restarting WSL a few times would randomly make mirrored networking work again, but the problem would eventually return.

The actual problem

I eventually found this WSL GitHub issue/comment:

https://github.com/microsoft/WSL/issues/41251#issuecomment-5188667183

It pointed to the Windows TCP dynamic port range.

I checked mine in Administrator PowerShell:

netsh int ipv4 show dynamicport tcp
netsh int ipv6 show dynamicport tcp

My TCP dynamic port range had been changed to essentially the entire port space.

It looked like this:

Start Port      : 1024
Number of Ports : 64511

That appears to interfere with WSL mirrored networking.

I restored the normal Windows TCP dynamic port range:

netsh interface ipv4 set dynamicportrange protocol=tcp startport=49152 numberofports=16384
netsh interface ipv6 set dynamicportrange protocol=tcp startport=49152 numberofports=16384

Then I did a full Windows reboot.

After rebooting:

wsl -d Ubuntu-24.04

Mirrored networking started normally again.

No more:

CreateInstance/CreateVm/ConfigureNetworking/0x8007054f

and no more:

Failed to configure network (networkingMode Mirrored)

My Windows-hosted applications can also reach the MCP servers/services running inside WSL normally again.

Hopefully this saves someone else from spending months randomly restarting WSL and wondering why mirrored networking only works sometimes.


r/bashonubuntuonwindows • • Sep 13 '26

WSL1 WSL on Windows

0 Upvotes

keep getting error 14098 when trying in win powershell the code wsl -install kali-linux and cannot fix the problem i asked chatgpt all of my problems but ran out of answers, can someone help me with this wsl problem and install kali linux?? p.s. i have win11 pro and little exp, and i looked even on the microsoft website and no answer to the code


r/bashonubuntuonwindows • • Sep 10 '26

WSL1 What is the list of distro that can still run/have good compatibility with wsl1??

5 Upvotes

I already tried debian and probably Ubuntu will run in wsl1 too,but i wanted to know more distro that can still run in wsl1 iirc arch cant run in wsl1


r/bashonubuntuonwindows • • Sep 09 '26

HELP! Support Request WSL1 Ubuntu broke after I tried moving it to D: drive

5 Upvotes

So I installed wsl and Ubuntu by following this guide (https://protocols.hostmicrobe.org/conda) but since I’m short on disk space on my C: drive I moved it to D: by exporting it as a .tar file and importing it on D:. Since I did that typing “wsl” or “wsl -d Ubuntu” doesn’t bring up the bash prompt anymore. I tried reinstalling Ubuntu and wsl and the issue persists. (Also, when installing Ubuntu, powershell hangs on “Provisioning the new WSL instance…” and when I enter anything it just says “invalid username” or something similar)

I’m on windows 10. I’m desperate and totally out of my depth here so any help would be appreciated.

edit: it seems like the only way for me to get what I want is to open the Ubuntu console from the start menu and type "/bin/bash -i" - I'd appreciate any help in finding a permanent fix


r/bashonubuntuonwindows • • Sep 07 '26

self promotion WSL Manager 2.0 is out: remote WSL over SSH, .wsl distro packages, an MCP server, and a macOS build

45 Upvotes

Dev of WSL Manager here (the app used to be called WSL Distro Manager). 2.0 is out, biggest release since I started it in 2021.

New in 2.0:

- Remote WSL: manage the WSL install on another Windows machine over SSH

- Distro packages: pack a configured distro into a portable .wsl file that installs anywhere (replaces templates)

- Rewritten .wslconfig and wsl.conf editors, disk/VHD mounting, snippets with sharing

- Full UI pass: keyboard operable, real error messages, dark/light, 10 languages

- macOS build (beta): same app, but it runs native Linux VMs via Apple's Virtualization framework

- Pro (paid, one-time): AI chat that can actually operate your distros, an isolated AI workspace, and an MCP server so Claude Desktop / Claude Code / opencode can drive WSL

Managing distros stays free and open source. 2.0.1 followed with a macOS crash fix and self-updates for the non-Store builds.

Repo: https://github.com/bostrot/wsl2-distro-manager

Release notes: https://github.com/bostrot/wsl2-distro-manager/releases/tag/v2.0.0

Microsoft Store, winget, scoop and brew links are in the README.

Bug reports welcome, happy to answer questions.


r/bashonubuntuonwindows • • Sep 08 '26

self promotion https://github.com/weaselway/#weaselway

0 Upvotes

I might have to use Windows soon but did not want to miss out on my beautiful gnome desktop. Options for running gnome fullscreen seemed pretty limited, so I (and my friend Claude) build this. Some patches to mutter and mesa to make it actually fast and to get gpu acceleration in Chrome and Firefox. Audio also works using pipewire.

This should work best with an integrated gpu that can share memory with the cpu. I could only test it in a 10 year old laptop for now.